Adding a feature to my game from start to finish
I thought it might be interesting to look at how a feature gets added to a game. In real life, the process is undoubtedly more involved; this is just a summary of the main steps.
The first step is to think it out. Having a good idea and plan of how to implement will save you a ton of work later on.
The game seemed a little too simple to me, with too many checkpoints. Failure had almost no consequence. So I got rid of the (too many) checkpoints and went with something akin to the bonfires in Souls-like games. I’ll call them “beacons” and they’ll resemble some kind of sci-fi antenna. Once discovered, you can activate it, and the next time you fall to your demise, you’ll respawn there. The game progress is still saved continuously, only the respawn point location is set.
When I first had the idea, I started with a few sketches on my phone. Later, at the computer, I drew some concept art after searching online for images to use as inspiration. Nothing too advanced, as I haven’t drawn in ages, still getting back into it.
Then, using Blender, I created a 3D model based on the concept art. I only did some rough UVs because it’s likely that the model will be tweaked a little more later.
Implementing gameplay functionality and testing it in game at this stage is critical since it frequently leads to the discovery of issues with the 3d model. For example, I realized I had forgotten about the collider mesh, so I created one before continuing. It’s the little orange outline visible in the screenshot below. This mesh is a simplified hull around the basic volume of the base 3d model.
Since the majority of the requirements were already in place, adding this feature was not too complex. I connected it to the interaction system so that the player could activate it by pressing a button when close to it. Once activated it sets the current respawn location near itself. This location is also saved on disk for use when the game is launched again.
Making it pretty
Now that the 3d model is done, and there likely wont be more big changes, its time to make it look good.
I started by refining the UVs in Blender. Around this time I also created a lower LOD version of the 3d model. You can’t really see much difference (between LOD0 and LOD1) in the screenshot below, but that’s the point! At runtime it will be used to render beacons that are too far away to notice small details and thus save performance.
Texturing was done in a mix of Substance Painter and Quixel Mixer.
And here’s the result in gameplay, spiced up with sound effects, UI and particle effects.
And then from here the feature will go to playtesting. Then based on the gathered player feedback it will be adjusted and balanced. In this case with the save-beacons what’s going to be adjusted is how frequently you find them and in which locations.
And that’s it (more or less)!