Ten recent wins
This week it will be technically 3 months since I first officially started working on Rocket & Research!
However it’s only really been in the last 4 weeks that I’ve finally been able to dedicate myself full time to the project. In that time, I’ve completed two full “sprints”. While it’s still early days yet, I feel that it’s important to celebrate one’s “wins”, however small, so without any futher ado, here are some recent ones I’m quite pleased with…
1: “Random solar system generation
This now works pretty well. I’m particularly pleased with the way I’m able to assign different kinds of random distribution to each parameter (e.g. uniform / normal / lognormal etc)
2: Automated tests
These trigger every time I push code to the main
branch in GitHub. Still need to actually write a few more of those tests though…
3: Basic “UI layout”
Including collapsable panels and tabs along with vector-based icons etc. I’m still getting my head around how Godot handles this stuff quite differently to what I’m used to with UE4, but it’s pretty close to the initial design:
4: Basic “timeline widget”
This shows the current simulation time and has a horizontally scrollable and “zoomable” window with tick marks and the ability to show instruction widgets. This took quite a while to get right tbh!
5: Object selection system
Including “object list” and “object info” widgets which can be used to select various things in the simulation and view info about them respectively.
6: Custom “orbital zones” material
I’m quite used to doing custom materials in UE4 but I’m pleased to have at least started getting my head around how they work in Godot. Each celestial body now has a visual representation of the “bounds” of its gravitational sphere of influence in terms of a min/max radius around the celestial body that it’s orbiting in a way that I think looks quite pleasing.
This takes into account the eccentricity of the celestial body’s orbit was actually predominantly for testing purposes for the system generation stuff. To simplify the maths I’m going to need for working out which gravity well should be used as the reference point at any particular moment, I’ve instigated a rule that these “orbital zones” cannot overlap each other unless there is a direct parent/child (aka orbital center/satellite) relationship between the two orbital bodies.
7: Basic save / load functionality
This was kind of working before but I managed to track down and fixed a bunch of memory leak issues with my first implementation. At the moment it only saves/loads the “generated system”, but in time I’ll get it to save other stuff as well
8: Started adding the “player actions” and “timeline instructions” systems
It’s important to do this in a way that clearly separates the two and also allows for undo/redo on a per-player-action basis. This is something that I really regret not having added to Ozymandias right from the start, since I was later unable to add it in after the fact without creating a whole bunch of edge cases and UI bugs etc.
While I’ve got a “version 1” of this working, I’ve quickly realised that I need to refactor it a fair bit to ensure I don’t end up having to write tons of boiler-plate code covering every single combination of the two, which is going ok so far, I believe!
9: Fixed a bug in Godot itself relating to sampling baked curves.
This was my first ever contribution to a major open source project, so I’m particularly proud of getting that merged!
10: Got automated web builds working & uploaded to fly.io with a single script.
This involved a fair bit of getting my head around Godot4’s issues with “cross origin policy” headers (which I still only partially understand tbh). It’s not perfect yet, there are definitely some performance issues (my Mac sounded like it was about to take off when I tested it in Chrome!) and there are a whole bunch of console error messages I should try to fix. Plus I can’t seem to get it to load at all in Safari on my phone or Mac, though I was able to get it running on one of the new “Mac Studios” running in the new local Battersea Power Station Apple Store…
If you’ve read this far and are feeling particularly brave, you can even go ahead and see if it works in your browser but be warned that there isn’t really much of a “game” there just yet!
Conclusion
There’s still a little ways to go before there’s enough of a “game” to ask people to test, but that’s ok, game development takes time! Especially when working alone from home, it can be all to easy to feel like one is way behind so I feel it’s particularly important to celebrate these kinds of little victories along the way :-)