top of page
kkalaw41

Major Project Reflection

Hello,


I have not mentioned this in my previous posts, but the decision to make three small games in Godot was because of a university project that I must focus on for a semester. That semester is done, and I’m supposed to write a reflection post here.


I’ll be honest and say that I feel like I wasted a lot of time when developing these games, especially when I was developing both puzzle and rhythm games. This is because I had no idea what I was doing, I’ve never coded in GDScript (despite my experience in coding), the puzzle game I had in mind was purely imaginative, and there were very few existing documentations on coding rhythm games in Godot.


I’ll start from the beginning. When I was writing my proposal, I had a set and very strict development schedule for developing all three games. That is, after three weeks, one game should be finished. One week spent on planning and prototyping, the second week dedicated to making and gathering assets for the game, then polishing and debugging the game on the third week. I did not follow this schedule at all. When I first started out, I had to spend a week to learning the basics of how to use Godot. Also, the week before that, I had to get my computer repaired because my keyboard was not working.


I’ll admit I sound harsh on myself when I say that’s two weeks wasted. On the bright side, I did learn about Godot to an extent, and I got a cool gaming keyboard. However, despite learning how GDScripts are straightforward to code, when it came down to coding my puzzle game, nothing was working. It didn’t help that my idea for the game was from imagination. After spending too much time trying to figure out how to code my puzzle game, I decided to move on to developing my rhythm game instead.


For this game, I had two tutorials to follow. One was very enlightening as he was applying related articles on rhythm game theory onto his GDScript. Unfortunately, that tutorial was outdated as it was coded in Godot 3. The other tutorial was coded in Godot 4 but did not use any music. The code was all about setup and how to spawn arrows randomly. I tried to figure out how to combine these two tutorials to make my rhythm game, but none of it worked. Not even with help from Godot’s Discord server. The best I could do was just having the arrows spawn randomly just like the second tutorial I mentioned and just plugged in the piano cover of Cantina Band by AtinPiano playing in the background. Additionally, one bug I couldn’t figure out was why my arrows continue to stay green after pressing the keys on time. I made sure to have the variable turn false and that should have prompted the arrow to turn back to its default appearance, but that didn’t work, no matter how I rewrite the code differently or use ChatGPT to rewrite the code.


So, after moving on from my rhythm game, I was developing my space shooter next. It wasn’t until developing space shooter that I really understood how Godot worked. The full tutorial on how to develop space shooter games in Godot tremendously helped, with explanations on how the code is being processed in Godot. I made a few modifications while following the tutorial especially when adding a larger enemy (Star Destroyer) into the game. As the larger enemy, like a mini-boss, I coded it to have higher hit-points and have it move slowly compared to the basic enemies. I was also able to find a loophole in Godot about inherited scenes. Inherited scenes are like making a duplicate scene with the same nodes and script. Any changes made to the inherited scene will also affect the original scene it came from. I was able to prevent any changes made to the basic enemy scene while coding the inherited large enemy scene by exporting variables, where you can make changes outside of the code instead. I also had to make severable variables and nodes only for the larger enemy within the game script because the impacts it should have on the player should be larger than a basic enemy. Out of the three games I developed, space shooter was one I feel proud of.


Because of what I learned after developing my space shooter, I became confident in developing my puzzle game. Using references within the script and storage variables, I was able to code the player navigation around the puzzle. Sadly, I couldn’t code the event to tell players that they solved the puzzle. This is because I couldn’t restrict the number of rotations a player could make to one. Why this was important is because it’s possible that a player can go over one rotation when trying to solve the puzzle. Now that I think about it, I could have used modulo function so that the computer can calculate it as one rotation rather than restricting the number of rotations. Oh well, that’s another thing to test after this project. As I developed my puzzle game, I sometimes refer to ChatGPT to check if I have the right logical process of how the code should work. It was a thinking process of “Okay, this is how ChatGPT would write it, how can I rewrite it but still have the same solution?”


Reflecting on the process I initially started with, the changes I would make would be to switch making the assets first then moving on to prototyping. When using Godot, it doesn’t have ready to use primitive objects like Unity and Unreal engine would have. I needed something physical in order to see whether my code would work, so when I developed my games, I made the assets first. I also wished that I made the space shooter first because I found reliable resources to program with, and I learned more about Godot’s workflow than the basic Godot tutorials I watched when I started out my project.


Moving forward from the major project, I want to fix the bugs and errors that occurred in my rhythm and puzzle games. There was a tutorial I found that uses MIDI software. I initially decided not to use it because I’d have to learn how to use MIDI, but for the sake of making my rhythm game playable, I’ll have to consider watching it. As for my puzzle game, I’d like to think that it will be the first game where I can have my “original voice”. Even though it’s designed as a reference to R2-D2’s hacking sequence, there was never a correct interpretation of how it works, so I’m looking forward to fully developing it. I was told my space shooter game lacks player feedback, the small things like explosion and recoil to make the player feel like that they are destroying the enemies. To develop my career as an indie game designer, I should also work towards making my games visible on itch.io and twitter (when they won't be at risk of copyright). Overall, I’m grateful for the opportunity of doing a major project. It really pushed me to developing games despite the initial difficulty.


Thanks for reading.

2 views0 comments

Comments


bottom of page