In the last two days I have been able to download the latest version of Godot and to add the new plug-in/extension/library from Endless Foundation enabling block-based programming. I have also been able to create a player-controlled character and an animation.
None of this has been obvious for a novice.
My scattered thoughts are: it requires a familiarity with Commercial Off The Shelf (COTS) game engine user-interfaces as prerequisite knowledge; it requires patience for trail-and-error exploration; it rewards (and maybe requires) an understanding of the conventions software packaging and delivery to seek a read-me file. It has, at least for me, a catch-22 condition. I had to seek it the Endless Foundation package on GitHub, where I surmised I could learn something from downloading the release to my hard disc. Indeed, navigating through three subdirectories of the unzipped downloaded package I found a ReadMe.md file. In it were the cursory steps to download the package within a Godot project. I didn’t see these instructions on an external web page.
The use of a .md, a Mark Down formatted file for the ReadMe, instead of a .txt file is also a more expert trait.
Okay, so I downloaded Godot, opened it, opened the Import tab visible in the upper left corner of the full screen user interface. I tried to figure out how to import something. Found an import dialogue window, and I don’t remember where. It had a search field. I typed “block” and “block programming” and it returned no results.
I then went to the link to the GitHub page and downloaded the latest release. I put the .zip archive into a new directory dedicated to Godot projects for this release. (I should have mentioned in the previous paragraph that the new Godot download did not overwrite the older version. This is unexpected good behavior. Newer versions of game engines might break projects created in older versions in hard to find ways). I explored the nested sub-directories to see if I could find any guidance.
I found the ReadMe.md file. I opened it with the TextEdit app on my mac. This is a dense amount of information. I did find a set of instructions that revealed that one has to first create a project, and then create a node, to then import/download and attach the block-programming plug-in.
I opened the Godot documentation and found the description of the game engine as a tree-node structure. This helps make sense of the logics, but it is also a form of required prerequisite knowledge.
So I created a 2D project, and I created a Node2D – a root node for a 2D project. I chose the 2D project over a 3D project because I want to keep it simpler. This is again, some knowledge I have from experience with the complexities of 3D projects.
I then selected the Node2D and right-clicked to bring up a sub-menu with the option to add a child-node. This
Okay, wait, I had to find the Asset-Library tab. I just spent fifteen minutes trying to re-find it. It must have been more obvious the first time. It is in the top window-frame for the project. Sigh.
The search for “block” yields Block Coding, and the ability to import this resource.
Now the ability to add a child-node to enable block coding on a given node.
I then explored the set of blocks available. These seemed incomplete. The have motion and looping logics, but no image logic beyond transforms. I figured out how to add a static 2D sprite by exploring the Godot interface. This is another child-node for the Node2D and necessary to attach an image. I found the instructions in the Godot docs.
I figured out how to run a preview build and wanted to know how to put player controls in.
I read a little deeper into the ReadMe.md file and found out that there is a demo project of Pong. I followed the steps to load the Pong. It’s not a standalone project but a collection of Scenes. Scenes are another core logic to Godot that I learned about from the intro Godot Docs. The structure of the individual scenes and the potential for dependencies is not discussed anywhere. I inferred there would be dependencies from the names of the scenes. One is named “ball”, one named “space”, one named “goal_area”, and one named “pong_game”. I imported each one in succession. The intro docs mentioned that Godot relies on Object Oriented Programming ideas. I have this prerequisite knowledge from working in Processing and in Java. I inferred that the pong_game scene would not function without the presence of the other scenes. This is not obvious.
The pong_game scene has child-nodes that are likely sub- or child-scenes that share names with these other imported scenes. It also has an implementation of two player controlled child-nodes. It’s by looking at these that I got a hint about how to invoke a player character in Godot and then attach block coding to it.
I’ve experimented with it a bit and was able to get the preview build to respond to WASD controls.
Next I’m curious about an animated player character with walk cycle. I have Juan & the Beanstalk art that is ready to use. I’ll try that next.