Making a game in Unity 3D

Contrary to what I planned before, I decided to go back to Unity and take on a 3D project this time.

The main reason I hadn’t decided to do this earlier was feeling like I would need to create 3D assets. Having dabbled with importing 3D assets before via the asset store, I was a little daunted by how I would even begin to integrate these into my own game. Therefore, I decided to make acquiring and using an asset package from the asset store a key goal for my next project so that 3D projects no longer felt as daunting to take on in the future. I decided to limit myself to the downloaded assets and try not to get tempted to start making any art of my own.

I eventually settled on downloading the 3D Platformer Game Kit as it seemed to have all the basic assets I would need for a classic 3D platforming game. On downloading, I was surprised at how much functionality was already included on top of the models and animations. In fact, I was a little disappointed as I was hoping to have to code some of the movement and physics myself as a learning exercise. As a direct consequence of this, I decided that a project goal should be to make significant changes to the movement logic already present within the package, if not replacing it all completely by the end.

Whilst thinking about how I could modify the movement logic, I had the idea of moving the character automatically around waypoints in the level, similar to something like Myst but from a third person perspective. Moving around the level could then be some kind of turn-based puzzle, where the player must avoid predictable enemy AI and collect items before making it to the exit. Since this would make most of the existing movement code obsolete (as it is designed for a freely moving platformer), I decided it would be an ideal mechanic to try and implement.

Although this idea meets all my personal goals, I am concerned about whether the final game will be fun to play. First of all, if the game is a puzzle game at heart, it may frustrate the players not to have a full view of the level at any one time so that they can formulate a plan for making it through. However, this obfuscation might also add to the fun, as some players may enjoy exploring the level and noting down routes. Secondly, I will need to be careful to make movement times between the waypoints fairly quick as it may be frustrating not to be able to execute puzzle solutions quickly as soon as the player knows exactly what they need to do.

My rough project plan is as follows:

  • Implement basic mechanics – adjust the existing asset code to implement movement between waypoints rather than free movement.
  • Refactor existing code – remove any code that has become unnecessary to the new movement system.
  • Implement enemies – add enemies and different kinds of enemy AI. The AI should never be random as the player should be able to puzzle their way through. Basic AI should include patrolling enemies and enemies who react to seeing you.
  • Implement items – add collectible items in levels. My current idea is to have the level complete-able having picked up only one collectible, but in order to unlock more levels the player will need more further down the line.
  • Implement game mechanics – add support for multiple levels and have a way to end levels. I want all levels to exist in the same world and be visible from other levels, but performance may be a limitation as the game grows larger.
  • Add some levels – design a small number of basic levels. Hopefully at this point this should just be a case of dragging and dropping prefabs into Unity, so the challenge here will be more of a puzzle design challenge, especially with so few core game mechanics.
  • Add UI and menus – add the finishing touches such as UI elements, music and a menu screen.

At this point I could probably end the project, but if I want to continue, I have some other ideas:

  • Implement advanced mechanics – keys and doors within levels, switches, moving platforms etc.
  • Add more levels – add more levels introducing the new mechanics gradually.
  • Re-skin the game – at this point I may have had a better idea for the general story/aesthetic of the game, so I may want to switch out the models/animations/textures I have for some that better fit in with this theme.
  • Play test – ask some friends to play the game and give feedback on all aspects. I will most likely do this at earlier points as well.

Of course my main goals here are still learning goals, but I’m excited to see whether a fun game can emerge out of that!

Leave a Reply