2019-05-18 Build (preview-14)
A short changelog for a whole bunch of work! Saving and loading functionality is finally in (although there's no main menu to drive it, so you're stuck with shortcuts for now)!
This particular task ate up the past couple of days, and it's probably the least enjoyable part of game development for me. Even though saving and loading are pretty essential features, they don't really contribute anything that is intrinsically a part of the game experience.
There's a lot of maintenance work involved in this kind of code, since anything that's added to the game is likely to need to be added to save/load code, or at least cleared before loading. For this reason, it's hard to front-load save/load work at the beginning of a project, and as a result, by the time I get to it, I've usually made a lot of decisions that didn't really take into account or prioritise persistent saving/serialisation.
It's usually not difficult, but it is long, slow, tedious work, which usually requires a few changes here and there that aren't necessarily in the best interests of what the game itself is doing. A degree of focus is needed to keep track of everything and a lot of extra testing is needed to make sure that bugs don't creep in (last night, I spotted and fixed a bug that I only spotted by chance that would only occur after loading a save that have been saved from a previously loaded game).
Godot has some documented patterns for serialising, instantiating and restoring its nodes, which is nice, but as noted in the docs, doesn't scale to scene trees more than one node deep. The pattern of
for i in current_line.keys(): new_object.set(i, current_line[i]) for populating newly created instances with saved data is nice, but the moment you want to do extra munging/processing on the way in or out, it ends up requiring as much work as writing manual import/export functions for every class you care about. These approaches are a good start, and are great to have documented, but they don't meaningfully simplify the work for me.
For me, save/load code is like the fish of gamedev (apologies to my vegan/vegetarian friends) - you have to eat it slowly and be constantly wary of bones, otherwise you risk choking to death. Chewing for bones isn't really that hard, it just isn't any fun, and that's really not the relationship I want to have with food or with games :D
Anyway, enough rambling about the bits I don't enjoy. Time to get back onto the bits I do enjoy!
P.S. Ignore the "-dirty" on the end of the version number. I forgot to commit the removal of some whitespace before uploading and didn't think it was worth cutting new builds for.
- Added initial implementation of saving/loading games
- Added temporary interface events for saving/loading
- Added save shortcut (S)
- Added load shortcut (L)
- Removed forced-perspective scaling for bees leaving the hive
- Fixed effects not being cleared after starting a new game/loading (resolves those cheeky nanobees)
- Fixed unbuilt cells list not being cleared when starting a new hive
- Fixed stock multiplier effects being added instead of multiplied
- Fixed stock not being rounded after effect multipliers and offsets are applied
- Fixed Queen move and turn speed not being set correctly
Get Hive Time
Leave a comment
Log in with itch.io to leave a comment.