Welcome to Repopulate DevLog 2!
Firstly, and I’ll mention this in the first few posts; I am writing this about 5 months into development. So, these first few posts are more retrospective, looking back at key stages up to here. Anyways, onto the post!
So, here I am. Starting again fresh. Considering it was the gameplay area that led to my restart, I decided to focus more on that for now and come back to my living creatures later. Lets give them a space to live in before we give them life!
I initially started with the same general layout idea as my 2D game, but translated into 3D. That meant a central circular room, with modules attached around the exterior. This soon evolved slightly to add an extra stage; instead of just a big central room, I switched to a central pillar, which connected to a larger ring, and that ring could have modules attached. This way I could have different sized rings up the station depending on what the player built, which gave better upgrade paths and resource sinks. This was an idea I’d briefly considered in the 2D stages too, but it felt more natural now.
I liked the direction it was going in, and then I had another idea; what if instead of prefab modules the player selected between, I just made empty modules in various shapes and sizes and added a Minecraft-style building system within each module? This way the player gets to make their own decisions about how individual modules are laid out – some might put all their algae farms into one module and dedicate that as the “oxygen construction” module, while others might just tuck one algae farm in the corner of every module as part of their decoration style. It gave a lot more freedom and personality to the players individual stations, and so that’s the idea I went with.
I implemented a grid system and made a few sample blocks. My modules were relatively small, 3m high and about 8×20 horizontally, but the player has a lot of them available so that’s not a big problem.
I was starting to piece things together now. I made a little gravity lift, so players could move up and down between the stacked layers forming the central pillar. Players could interact with a “computer” to add a ring, and then interact with “control panels” in those rings to create the modules. It was starting to feel like a barebones game prototype!
But, as always when things are going well, my brain disagreed. Things worked but I really didn’t like the design. The modules sticking out the side made it look almost like a cog, and certainly nothing like a space ship. I started researching shapes of ships which use rings, and it led me to a realization. Something I’d known the entire time but never actually considered; ship rings aren’t an aesthetic choice; they’re there to simulate gravity. Which means my player walking around the ring is technically walking on what would be the wall, if I was to use realistic gravity. They should instead be walking along the curved part where my modules are currently attached.
The problem here was I’d never seen a ship utilise gravity rings and a modular design together. The closest example I could find was the Endurance from Interstellar, which technically does exactly that – but you move through each module as part of the ring. I wanted the modules to be attached to give the player the most possible space. Plus, with this design, gravity would have been pulling towards the end of each module, making them effectively vertical in design.
Armed with this information and the lack of useful inspiration sources, I did what any struggling creative does. Asked AI! Most of what it created was pretty terrible. ChatGPT had saved me a few times in this project but Dalle was… less helpful. But there was one, just one, image that it generated that struck me. It was a great design, perfect for what I was trying to do. And here is that lovely computer-generated image in all its high-detail glory:
Technically the image wasn’t actually what I wanted. DALLE had basically just taken the Endurance and stacked two of them with a pole in the middle, and I think those are supposed to be supports along the back. But it was enough to inspire me. I decided to have a double-ring system, so what was originally one ring would now be two, with the modules bridging between them. The player could move through the central pillar (how wasn’t decided yet), and travel through tunnels into the rings. From there, they could go into the modules and then the game worked as normal.
This is where I realised I had a lot of work ahead of me! Work that I would’ve had to tackle at some point, but is now significantly more challenging… gravity.
In Unity, gravity is a directional force. You can change that force in the project settings – but its still just a flat direction. For my original ship design that was probably enough; assuming I could change that force on the fly with a script I could just make the base of my ship the gravitational plane and be done. But that’s no good anymore – gravity entirely depends on where you are in the ring. so, I was going to have to implement my own entirely custom version of gravity.