Hello to everyone following along! Sorry that it's been so long between posts, but I've been working really hard and haven't had much time for anything else. Progress is most definitely being made.
A lot of what I've been doing these last few weeks is cleaning up all of my existing features. Things like unique weather and seasons, and creatures for each of my four existing planet types. Began adding to some simple AI and how the game interacts with itself as well as with the player.
I've also continued working on gravity, atmosphere, and planet building. I am starting to get really excited about the planet building mechanics! Each planet block contains the code for it's planet atmosphere and weather, so mixing and matching blocks from different planets is starting to look really cool! I think there's a lot of fun to be had there, and I can't wait to explore and expand the mechanics further. Despite the crude state of the graphics at this stage in development I'll include a screenshot of that so you can get a basic idea of what I'm going for.
One issue that I've been struggling with since the creation of Rocket Boy is memory management. Every time I get it under control in one place I see it sprout up in another. The latest instance of that fresh hell was found while building planets. Planet building thus far has been an automated process at the start of the game, so managing active instances was easy to control. I've had to build subtle limits into the planet building logic to keep memory consumption at an optimal level. Enter the core block! The core block is the first block placed. Every planet must have one and the player cannot build a planet without starting with a core block to build off of. The core block manages the data for all of the other planet block objects while they're out of memory, and also decides when they are in or out of memory based on distance to the player. All planet block data is dumped into the core block when taken out of memory, and then injected back in when the planet block is added back into memory. The core block's data is dumped into a file upon saving the game to exit or when the player reaches a certain distance away from the core, and pulled back later as needed.
Another issue I had started to wrestle with was how to keep track of changes to a planet as the player takes blocks from one and moves them to others. How does one planet core know when a planet block no longer belongs to it? How does a planet core know when it has a new planet block? First I outlined the exact scope of the block moving mechanic. I found that planet block objects can only belong to, or be contained by core objects or the player's inventory. I began tracking block data in 2d arrays for both the core and inventory. These arrays are updated by the block instance itself anytime the block is placed or destroyed. Placing a block in inventory or on a planet updates both the blocks old container and the new one of the change.
After I finish working all of this out I'm gearing up for what is coming next. In the not so distant future I'll be implementing the network functions and multiplayer game features. I've been thinking a lot about that and considering my knowledge and existing experience in the technology industry I've decided that I'll be adding hosted Rocket Boy servers as well as the ability for players to host their own. I am still working out exactly how I'll host and what that will mean, but I do know that I will definitely be hosting servers.
Along with the networking functions I'll be implementing a feature that I honestly have wanted to see in a game, but really haven't found. I'm talking about game sync between all supported platforms. Hearthstone does it actually now that I am thinking about it, but nothing else that I've played. The idea of playing Rocket Boy on an iPad on the train ride home from work and then picking it back up right where I left off on my desktop at home is something I want to see happen. Since I'm using GameMaker Studio this is actually something I can do easily enough. As of now I know I'll be releasing for iOS, Android, PC, Mac, and Ubuntu. The Xbox and Playstation ports are definitely on the list as well, but I'm still working out the extra steps needed to develop for those platforms.
Also thinking about media. I have some youtube videos in the works as well as a few really nice screenshots I'll be saving for a big media push in the coming months. I'll be putting some effort into getting together a nice media package that showcases Rocket Boy's features and mechanics.
I've noticed that I'm getting a lot of reads, but no comments yet. I want you to feel free to chime in any time. I'll start working on posts that involve reader input, but I'd like readers to know that they are welcomed to get involved anytime!
Here are a few screenshots I just snapped real quick. Nothing special, but want to get more content out there. The graphics are starting to get better, but I have some nice ideas for them that I'll get out in the next post.
I did include one shot of Rocket Boy character design. That's still REALLY new, but I think it's going to end up really cool... More on that later as well.
EARLY ACCESS WITH ITCH.IO REFINERY
Now available at Itch.io Refinery Early Access!!!