NOTE: This originally appeared as a limited distribution message to a small number of readers. It is reproduced here for historical completeness.
Original Publication Date: 2024-05-10
Dear Reader[s] (or Listeners if you have screen-reader enabled),
The last week has been challenging. There are some real-life things occurring for me at the moment; which have made the time I have blocked out for this project a more scattered collection of distracted moments. But you’re not reading this for those details, you’re (hopefully) reading this for the project update. So let’s delay briefly and then get to it.
Design Update:
Been looking for videos of people playing Portal for the first time. The goal is to see how people discover the path to a solution and understand what kinds of things slow their investigation. So far I’m dividing it into two kinds of challenges:
> Technical (The path is simple but requires skill to produce)
> Understanding (The path is obscured but unfolds before you)
Some of the most difficult puzzles in the game require both. I don’t have a real-time aspect so for this scripting game we’re looking at almost entirely Understanding based puzzles. A fact that I’m glad to know, but feel uncertain what to do with. Overall, I think the best thing to do at this point is decide on
a set of basic puzzle pieces and make some “Test Chambers.” Theory, it seems, will get me no further at the moment.
Technical Update:
I’m stumped. Not in any meaningful way, where I must stare out upon the sea of my problem as the waves crash upon the rock as I hopelessly attempt to tame it. Rather I’m caught up in an implementation
detail with the variables system. My scripting system is built out of nodes, which can have an arbitrary number of input and output spots. When you form a connection request between two nodes, it invokes a
callback in Godot where you can setup any potential linkages between each of the nodes. Each node contains a AddToStack
function and an InvokeNext
signal, and when you connect the nodes they are connected. The AddToStack
function performs whatever function the node typically does (It was named in reference to putting actions in the agent’s Action List), and then at the end it’s InvokeNext
is emitted to progress the sequence.
That’s where the convention breaks down, as then afterwards it depends on what each node is what it’s next I/O point in index is. That is to say, for a loop it’s output spots are [0: InvokeNext, 1:InvokeLoop]
. This is also true for it’s input, where [0:AddToStack]
. But if I want to have a node to make the numbers do math (Say add up or count down for example), I need to have an input such that [0:AddToStack, 1:ValOne, 2:ValTwo]
. At time of connection I’m having a hard time distinguishing between index 1,2 with that verses other potential 1 or 2 index items. I’m sure it might seem blindingly obvious to you, but me from the past is stuck. Don’t bother to write-in, I’ll have solved it by the time you’re likely seeing this.
Tech & Design Debt Update:
I still hate the buttons. I don’t have a better idea about what to replace them with. I’ll likely dig around for an Icons set to see if I can make something satisfactory.
Thanks for reading!
– Harris Sinclair