Unity3D – Implementation Roadmap

Unity3D – Implementation Roadmap (aka What Do I Need to Make a Game?)

Whether you are just getting started using Unity3D or a veteran Unity developer who started in the mid-noughties (get it?) there will inevitably be something you want to create which requires skills and techniques that you don’t yet have.  Thats just what tutorials are for!  There are a LOT of tutorials out there for Unity3D and in one of my other articles I am keeping track of some of them so that we can best leverage what they have to offer, however even with all of the resources that provides I feel like there is something missing …

What do you need to make a game?

You need implementations.  Pretend that you would like to make just one level of a Super Mario Bros style platform game.  You will need to know how to make Unity3D do a certain number of basic things before you can really expect to complete the game:

  • displaying your character, control of the character in 2d, walking, running, jumping, affecting movement in the air, friction on the ground, collision between the top of your character and the bottom of a block, death upon collision with an enemy unless you stomp on the enemy or unless you are temporarily invincible,
  • enemies roaming with varying movement patterns, growing your sprite or changing its colors when you get a power-up, popping power-ups out of blocks, moving the power-ups around in different ways, mushroom collisions with the environment, popping coins out of blocks, making question mark bricks shimmer,
  • timing the level, keeping track of score, death when falling into a pit, enemy death animations, character death animation,
  • stomped turtles turning into a shell, shell movement and physics, collisions between your feet and the shell, determination of which side of the shell your feet have collided with (to deterimine direction), collision with flagpole, sliding down flagpole, fireworks , animating dropping into pipes, switching to dungeon screens, animating crouch, shooting fireballs, fireball movement, fireball collision with enemies, etc.

That is just off the top of my head and there is undoubtedly more that I didn’t think of (and I didn’t get into sound or music at all).

Implementations + Content = Game

I’m going to start calling the ‘things’ above ‘implementations‘.   An implementation is something you need to know how to do in order to create a game.  Each of the actions, skills, tricks, simulations, activities, animations, collisions, conditions, sprites, characters, projectiles, or whatever is an ‘implementation‘ of something and when you combine some of these implementations with content to make it look and sound interesting you get a game.

The above list of implementations was targeting a Super Mario Bros. style platform game, but for every other type of game there will be a similar list of implementations.  Perhaps the list will be longer, perhaps it will be shorter. Perhaps the implementations will be more difficult to implement, perhaps they will be easier.  Perhaps there will be tutorials for them, perhaps not.  Perhaps you will wish to make new and original implementations for gameplay that hasn’t been done before, or combine existing implementations in new ways from which original or fun gameplay emerges.  In any of these cases you need implementations.

How to find implementations

One way (not recommended) is to overwhelm yourself with information.  You attempt to learn everything that anyone might ever need to know about Unity3D and then after you’ve ‘mastered’ it all you can begin to build your game since you will then know how to make all of the implementations on your own and you won’t need johnmcgarey.com anymore.  That is perhaps the slowest, least effective, and most frustrating way to approach game development.  Additionally if you ask 12 experts they will all have a different list of things you must learn before you start developing games in Unity.

Poppycock.

The way to find implementations and really make a game is to figure out what you need to do and then watch tutorials and read questions on forums and try stuff until you figure out the solution.  The rest of this article will help with that.

Implementations that I have found so far

  • Ending the game and allowing the player to restart the game
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Using coroutines to allow for wait times
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Adding a simple HUD with text
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Keeping track of score
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Adding audio to events
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Adding background music
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Making your player explode when it collides with an enemy
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Making the enemy explode when it collides with your bolt
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Making waves of enemies come in from outside of the screen
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Constraining the movement planes of enemies
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Physics Updates (FixedUpdate) vs Input Updates (Update)
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Deleting projectiles when they leave the playfield
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Getting random vector3 values
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Making an object rotate randomly
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Shooting a projectile in a straight line from where the player is facing
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Creating a cool laser bolt projectile
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Setting up a new project
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Packaging a game to publish to the web
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Make a player look like it is lit by a bright star
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Make a player look well lit
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Make a camera which doesn’t care about depth (orthographic)
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Writing, Compiling, and Running a Player Controller
    • http://johnmcgarey.com/2017/08/08/unity-5-animation-control-meta-tutorial/
  • Moving a player in 3D
    • http://johnmcgarey.com/2017/08/08/unity-5-animation-control-meta-tutorial/
  • Moving a player in 3D by mapping input values directly to velocity
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Exposing public variables to adjust values at runtime in the Unity inspector
    • http://johnmcgarey.com/2017/08/02/meta-tutorial-of-the-space-shooter-tutorial-using-unity3d-2017-1/
  • Limiting movement when the player isn’t being animated
    • http://johnmcgarey.com/2017/08/08/unity-5-animation-control-meta-tutorial/
  • Blending animations together to make them look smooth
    • http://johnmcgarey.com/2017/08/08/unity-5-animation-control-meta-tutorial/
  • Triggering a random animation from between several possiblities
    • http://johnmcgarey.com/2017/08/08/unity-5-animation-control-meta-tutorial/
  • 3D walking player animation
    • http://johnmcgarey.com/2017/08/08/unity-5-animation-control-meta-tutorial/
  • 3D running player animation
    • http://johnmcgarey.com/2017/08/08/unity-5-animation-control-meta-tutorial/
  • Making a character into a physics object (by adding a rigid body)
    • http://johnmcgarey.com/2017/08/08/unity-5-animation-control-meta-tutorial/
  • Passing parameters into an animator
    • http://johnmcgarey.com/2017/08/08/unity-5-animation-control-meta-tutorial/
  • Making something happen when a key is pressed
    • http://johnmcgarey.com/2017/08/08/unity-5-animation-control-meta-tutorial/
  • Downloading a character from the asset store
    • http://johnmcgarey.com/2017/08/08/unity-5-animation-control-meta-tutorial/
  • Assigning an animator to a character
    • http://johnmcgarey.com/2017/08/08/unity-5-animation-control-meta-tutorial/
  • Animation of objects using keyframes (in this case a title)
    • https://www.youtube.com/watch?v=ifvB_Cl3NIQ
  • Making great looking text with Text Mesh Pro
    • https://www.youtube.com/watch?v=UBf8YRBM5Ls

Levels

  • [Blender] Creating a simple terrain in Blender using a heightmap ( a greyscale picture) and the displace modifier

Leave a Reply

Your email address will not be published. Required fields are marked *