Finally, I’m gonna go through the areas that I’m hoping will build on the basic sandbox and actually make it into a game:-
Game modes
I have a couple of ideas for game modes that could build on the core construction experience:-
- Challenge mode. This would be something a bit like Junkyard Wars / Scrapheap Challenge, where each player (or team of players) is given a set allocation of parts and they have to build something to achieve an objective (e.g. build a car then race to a checkpoint, or build a tank then try and destroy the opposing teams tank, or make a catapult and see who can fling stuff the furthest, and so on). I think this could be a lot of fun, but would work best as a multi-player experience. I don’t want to go down the route of implementing a complex AI that replicates a human player, so in single-player I think only objectives with simple outcomes (that could be measured in terms of times, distances etc.) would work. This would be OK but not as fun.
- Survival & exploration mode. This would be along the lines of Minecraft and other similar games, where you would gather resources, craft parts, and then build with them. The beauty of this is that it is still a really compelling experience in single-player, and is just made even better in multi-player. It gives the player a whole level of strategy (which resources to gather, and how to allocate them to craft parts) that just isn’t there if the game simply randomly gives out parts to the player as they progress. It also gives the player a reason to keep exploring the environment and to keep building new constructions.
At the moment I’m not sure if I’ll go with one or both of these options, or maybe something else. As I mentioned before, this is the big design decision that I’ve be wrestling with of late.
Crafting mechanic
If I do go for the survival / explore game mode, a crafting mechanic would need to be added. I’ve only just started digging into this, but this is what I’m thinking so far:-
- Ability to harvest raw materials from the environment (trees, vegetation, rocks, etc.)
- Then you can craft raw materials into parts that you have blueprints for.
- Inventory size would be limited, but you can perhaps store raw materials and parts in storage boxes (which can be attached to constructions – buildings, vehicles etc.)
- You can find data-sticks and download new blueprints to allow creation of new part types.
- Ability to add your construction designs to your inventory, and then spawn these complete constructions later (if you have the required parts).
World / environment
Also required for the survival & exploration mode, are a bunch of improvements to the terrain and environment:-
- Extend procedural terrain generation to create various biomes, with rocks, trees and vegetation, partly this is to make the environment more interesting, but it’s also necessary so as to provide different resource types in different areas for harvesting.
- Dynamically re-spawn resources (e.g. rocks, trees and vegetation) as they get harvested for crafting.
- Dynamically spawn creatures / animals, which can be killed for resources, but can also attack the player and can damage construction parts. This would bring about interesting scenarios where you have to defend yourself and your resources by building a base with armaments or build a vehicle to simply outrun your enemies.
- Dynamic time of day – simple to do, and as well adding life to the environment, it forces the player to use lights if they want to keep building and exploring at night, and creature behaviours could change based on time of day.
- Expand terrain size, currently it’s 4km x 4km, I’d like to take it up to 16km x 16km. This requires breaking up the terrain into tiles and procedurally generating only the tiles that are local to the player in a streaming fashion, a little tricky but not too hard to do. The real problem is the insufficient floating point precision at world co-ordinates beyond about 2 or 3km from the origin, I think I’d need to shift the whole world so that the terrain tile the player is currently occupying is always centered at the origin. This gets gnarly with multi-player though because the network server has to deal with players in potentially totally different locations on the map.
Well, that’s it for now. I need to continue refining the design / plan further, but I’m hoping this pretty much covers everything I need to consider for the game. Any suggestions or comments are always welcome!