Welcome to my second installment of Friday Fun, where I just generally ramble on about my game development week, hopefully in an interesting way.
Refactoring Rabbit Holes
This week brought some substantial architectural improvements to Dehoarder 2. It’s hard to capture the essence of what goes on in code evolution in screenshots or other visual ways. But some of you out there will understand the importance of good SOLID code as a foundation for efficient future development.
To that end, I have eliminated the worst of the “static cling” smell from the Dehoarder 2 codebase. All access to anything substantially important is now resolved properly through a service. What does this do to improve the game? Perhaps that is the wrong question. Such modularization facilitates and enables future improvement to the game, so really it does everything to improve the game. It reduces the amount of glue (duct tape, really) between subsystems. A great example of what this enables is the asynchronous loading of the game. Before everything was properly modularized via service references, the first difficulty that I encountered with asynchronous loading was that nothing had a guarantee any more that the global game and database references would be valid at any given point. Instead, by making everything that needs the game or database be passed a reference to the game or database, or by making it request the game or database from a service (via a promise – a mechanism by which a contract is formed in which a requested resource may be returned immediately or at some future time), All code receiving a database or game reference can be sure that those references are already valid.
I had already implemented the asynchronous loading, and was forced to refactor toward the result I achieved this week to some degree in order to get things working to some degree. But this week, I paid off the rest of that tech debt and the whole game and development process moving forward is better for it.
Cooking the Scenario Sauce
Speaking of moving forward, all new games are now properly instanced from a Scenario object. The UI to actually select a starting scenario is still in-progress, though. The most important piece of a scenario is its incorporated save state. This save state becomes the basis for the new game’s save.
Once scenarios are selectable, it should, in theory, be possible to create and play a scenario with a completely different landscape, house, etc. with the tools that are currently available. Of course, without a proper save editor, we’re currently left copying and pasting tags in an XML file and guessing at coordinates and rotations. A save editor will, hopefully, come in time.
For anyone who has been closely following the game’s progress at expos, etc., you might note some updates to the UI’s look and feel. This is by no means final (EVERYTHING is on the table for change), so I am taking some time to experiment with the UI to see what looks and feels good.
Prepare For Release
My last playtest session for Prepare For Warp was the first session of substantial length from which I did not identify any changes or adjustments to be made. I still have testing to do, so this is not to say the game is currently in its final form, but it seems to be getting very close.
Need to Feed the Beast
I am a big fan of Ed Catmull’s book, “Creativity, Inc.” where he talks about the meteoric success of Pixar, and the factors that helped Pixar arrive there. In the book, he talks about the need to “feed the beast”, which is essentially a colloquialism for doing what is needful to keep the bills paid, books balanced, and electricity on.
I am now three months into my full-time venture with Smiling Cat. So far I’ve done what I’d planned to do, laying the groundwork, bringing Prepare For Warp to completion, and reviving Dehoarder 2 in a big way. However, these activities do not in themselves generate revenue, and the beast is now indeed hungry, as proceeds for Vintage Pachinko and Prepare For Warp are not enough to live on. It would be nice to just focus on my own projects indefinitely, but barring some extremely providential event, that is not a reasonable expectation. To this end, in the very near future I will need to more actively seek out contract work. Hopefully this can take the form of game development contract work.
The key here is going to be to strike a balance between feeding the beast and nurturing my internal projects. Too much feeding the beast, and the internal projects will atrophy as they have in the past. Too much focus on internal projects, and I go bankrupt.
Dehoarder 2 Closed Alpha?
Every day I am actively pondering the question of what needs to be accomplished before I can start showing it properly to the world at large. I want to reach this point sooner rather than later. I’m confident that I already have a good core concept, as it has shown well at expos over the years.
I don’t really have a feel as to a date for this yet, nor do I have an exact scope for this milestone beyond “when modding is more fleshed out and more of the architectural concerns are addressed.”
When I do reach this point, I think I want to do a closed alpha test, hopefully with some of the fans that have been anticipating the game the most.