Difficult design direction decisions (Part 2)

OK, I’ll now try and expand on each of the game areas I outlined in the previous post, first let’s look at the core sandbox stuff:-

Construction mechanic

This is the absolute meat of the game experience, and if it isn’t right, the rest doesn’t really matter.  I’m happy with the way you build by putting parts together in the first person view, I do think it feels natural and intuitive.  So I’m definitely going to stay with this approach, but there are many problems with it currently, such as (among others):-

  • Positioning parts is awkward, it’s hard to tell where a part will attach, and hard to make small adjustments to positioning.
  • Orientating parts is difficult – the rotation controls are tricky, and the orientation auto-snapping can go crazy and flip awkwardly, particularly if there are multiple contacted parts.
  • Once a part is attached, you can’t adjust it’s position without detaching it and reattaching.
  • When detaching a part, it breaks all connections to that part, i.e. you can’t choose to break only one connection.
  • When attaching parts that connect with joints rather than rigidly (e.g. blocks to axles), and if there are multiple attachment points, then you have to put the parts together in a certain order otherwise not all joints will be created.
  • It’s possible to attach parts which results in them inter-penetrating.

My plan is to scrap the current implementation which uses contact points calculated when the player touches one part to another to determine attachment positioning and orientation.  Instead, I think I’ll use the contacts only initially to determine which two parts to consider for attachment and then switch over to a different control scheme to actually position the part.  The details of this I still need to work out.

Player controls and behaviour

This area considers all aspects of the player interaction other than the core construction mechanic.  As such it is secondary to the construction mechanic, but still very important.  Specifically, we’re talking about the following:-

  • Controls (walking, running, crouching), these have to feel “right”, things like weighting, speed and acceleration are important here.
  • First person camera (response to impact, jumping, camera bob / sway, mouse smoothing and acceleration), the current FP camera is very basic and “dry”, it doesn’t have the organic feel you’d expect in a decent FPS.
  • Interaction with physics – players should move things when they bump into them, and player weight when standing on objects should have an effect.
  • Construction tool.  Currently there is nothing to give a sense of agency for the player, of course in an FPS you’d typically have an arm holding a gun in front of the camera, I need some equivalent of this.  It would be difficult to make the players arms convincingly appear to directly hold the parts they pick up, so in place of the usual FPS gun I think I need some kind of beam effect manipulator tool (much like the physics gun in Garry’s Mod).
  • Health / death state, in sandbox mode this isn’t strictly necessary but will be needed later to support other game modes.

Networked multi-player

Although you could certainly conceive of a single-player only construction game, I consider networked multi-player to be key to the basic sandbox experience because this type of game is so ideally suited to player collaboration and competition.  An open world game without linear goals or story led game-play really benefits from multi-player I think, where the players can essentially create their own stories within the game.  The main things left to do are client side prediction for player position, and improvements to reduce network bandwidth (as I discussed in a previous post).  I also need to make a dedicated server build as I’m thinking rented servers are the way to go to allow for larger numbers of players.  There’s also other minor stuff to do including having better player animations, and an improved chat interface.

Construction parts

This area covers the implementation of all the different types of parts you can build with, along with their behaviours.  There are some improvements and bug fixes that need to be made to the existing parts, but mainly I just need to add more part types to expand the scope of what you can build.  The good thing is that I don’t need to add all of these right away, I can keep adding them throughout the lifetime of the game.  My hope is to eventually open up the game for modding so that players can add their own parts too.

If I can get all this done, I should end up with a really solid multi-player sandbox experience, but it still won’t truly be a game.  This is were the other areas come in, next up in part 3…