I Had This Game Idea

Since I became more active in the game dev community (especially on reddit’s /r/GameDev and /r/Unity3d), I’ve noticed that a lot of people new to game developement often ask the same question : I had this perfect game idea, how do I get started?  My usual answer, regardless of the idea, is : start with a Pong clone (or Flappy Bird).  Your idea is very likely to be way too complicated for a first game.  You need to start as small as you can.  Examples of games/genres that are way too big : FPS, RPG, platformer, Tetris clones, Candy-Crush clones, Pacman, chess,  etc…  Like anything  that we’ve never done before, we have next to no idea how much work is involved.  The saying “the first 90% takes 10% of the time, the last 10% takes the remaining 90%” is doubly true for game developement, and even knowing that, we’ll still underestimate.

I suggest Pong because it is very easy to remember the mechanics.  We can hold all the mechanics in our head at the same time : a ball moves and bounces on walls.  2 paddles, 1 controlled by a player, one controlled by the computer, try to prevent the ball from getting past their respective paddle.  If it does get past, the opponent scores 1 point.  First to 10 points win.  It seems insultingly basic for new game developers, but I want to remind them that they’ve never done games before, and thus have no idea on the scope of the mechanic.  For instance, there’s a lot of subtlety that wasn’t said explicitly (ball accelerates faster and faster and resets if somebody scores, the ball bounces differently on a wall than on a paddle, screenshakes, sounds, etc…).  This is what is commonly refered to as the juicing-it-up of a game.  There’s 2 excellent talk for this : Vlambeer’s The Art of Screenshake and Grapefukt’s Juice It or Lose It.  Also, there’s a lot of stuff that is not related to the gameplay directly, but is still very important.  If you want to create games, and not just prototypes, you need all of the UI stuff like the Splash Screen, the Main menu, the Option menu, the high-scores, the loading screen, etc…

Here’s my suggestion on how to do a Pong game.  I highly suggest that you do them in this order : Gameplay, Para-Gameplay UI then Polishing/Juicing it up.

  • Gameplay (Bare minimum, where we lose the 1st wave of people)
    • Walls
      • Draw Walls
      • Draw the line in the middle
    •  Ball
      • Draw a ball
      • Make it move
      • Make it bounce on Walls
      • Reset on Score
    • Paddle
      • Draw a paddle
      • Input for moving 1 paddle
      • AI for moving the other paddle
      • Make the ball bounce on a paddle
    • Score
      • Draw Score for each player
      • Increment Score on miss
    • Win/Lose
      • Win/Lose condition
      • Win/Lose Screen
        • Restart Button
  • Para-Gameplay UI (Where we lose another wave of people.  If you don’t do it, you only have a prototype, not a game)
    • Splash Screen
    • Main Menu
      • New Game button
      • Options button
      • Highscore button
      • Credits button
    • Credits
      • Scrolling text
    • Loading Screen
      • Progression bar
  • Polishing/Juicing it up (Where we lose another wave of people.  What could be called “Production value” of a game.  It can make or break the game, or even make it more fun.  Pick and chose which element in this you want to make.)
    • Transitions between the various screen (fadeout for splash, loading screen, etc…)
    • Add Music
    • Add SFX on ball bounce
    • Option Screen
      • Option Button in Main Menu
      • Volume SFX
      • Volume Music
    • Screenshake on ball bounce
    • Paddle shake on ball bounce
    • Add ball acceleration over times(or how many times it bounced in this round)
    • Ball bounces differently on paddles/walls
    • Ball trail/particles
    • Harder AI
      • with choice when you start a new game/restart
    • Gamepad support
      • includes navigation in menu
    • Game mode
      • Endless
      • Local with 2 players
      • Harder AI
    • High Scores
      • Button in the Main Menu
      • High Scores at the end of a game with classic 3 letter entry.
      • New screen that shows a list of the last 10 High Score
      • Reset the Highscores in the option screen or in the High Scores screen.
    • Different arena/levels
    • Powerups
      • Bullets that affect the ball/paddle
      • Slowdown effect on near-miss
      • Multiple balls
      • etc…
    • The list goes on

It’s easier to polish a game, than to turn a prototype into a game.

Again, I highly recommend for people new to game development to follow the Gameplay/UI/Polish order.  Gameplay is always the 1st step because without that, you have nothing.  Experienced game developers might argue that polishing could happen right after the gameplay, as you need to validate some ideas before going full-mode into production, and they are right for experienced developers.  Beginners need one game completed to get the ball going, and I want to put emphasis on that : new game developers need one game completed.  If they do the gameplay, then the para-gameplay stuff, they have a game!  Not very pretty, and even boring, but it’s a game, and they have something to show for it.  The trap in doing the polishing before the UI is you’ll never be done with polishing.  There’s always a new mechanic to add, some values to tweak, some effect to perfect, etc…  If there is one thing I would like new game developers to retain, it is this : It is easier to polish an existing game, than to turn a prototype into a game.  If you complete the gameplay, then the UI flow, you’ll only be left with the (mostly) fun part of polishing.  You’ll also get experience, you’ll better understand the scope of the work involved, and as a nice side effect, you’ll have a better understanding of your tools, and you’ll have code and assets that you can reuse on your next game.  Now go make a breakout clone, and work your way up to your perfect game idea!

tl;dr; First get gameplay loop ASAP (bare minimum, no fluff at all).  Next get proper UI flow for Splash screen/MainMenu/Options/etc… TADA!  A game!  Now go have fun juicing it up.

Advertisements

One thought on “I Had This Game Idea

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s