Game Programmer's Rite of Passage

Started by
9 comments, last by SonicD007 11 years, 10 months ago
Hey everyone, I was just wondering what games you guys think a programmer should have under their belt. For instance, most people say do a text based game, then pong, then tetris, then ........ so I would like to know what games you guys think should be made and in what order you would do them. If you could list concepts that would be learned from making each game that would also be great.

Thanks.
Advertisement
I'd probably suggest making a text based game*, then pong, then Tetris, etc... I can't think of any specific concepts you would learn from a particular example. It's just that practice is critical in becoming a good programmer (and in becoming a good game designer), and these are fun ways to practice.

[size=2]*Actually, I'd suggest doing several of these, slowly building up in complexity. Don't worry about graphics until you have a decent understanding of your language.
[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]
Here's basically my path of game programming.

When I was learning, I wrote text based games, and had fun with it. I moved to simple graphical games, like connect four, or checkers. Then I made an arkanoid/break out clone. These were done in BASIC or Turbo Basic. I started learning C, and I then tried to make a shoot'em up, and I did OK, but I was missing some understanding of loading levels from a file, etc. (realize this was back in 1992/3 before the internet). Soon after I went to college.

Eventually, I got back to making that space shoot'em up (in 2000), and I was pretty happy with it. I was able to load the levels, enemies, and other objects from external files. From there I made an AI engine, which tried to learn to win using a neural-net type process by playing simple games (tic-tac-toe, connect four, etc.). I then made a Multiplayer engine (MUNE: http://mune.will.jennings.name), and used it to make an RTS type game.

Finally, I've been making action games using 2d physics engines, and I wish I had found out about them earlier.

My Gamedev Journal: 2D Game Making, the Easy Way

---(Old Blog, still has good info): 2dGameMaking
-----
"No one ever posts on that message board; it's too crowded." - Yoga Berra (sorta)

I have to agree with Cornstalks. Don't use graphics until you have a very thorough understanding of how your language of choice works. Otherwise you end up getting hung up on issues, unsure of whether they are from syntax, or implementation. Or at least that's how it went for me.

Take it from someone who did it wrong. :)

Hey everyone, I was just wondering what games you guys think a programmer should have under their belt. For instance, most people say do a text based game, then pong, then tetris, then ........


IMHO it is better to have games you actually enjoy making under your belt. Personally, I would have been bored to death and given up a long time ago if I force myself to follow that list. My progress was like this:

1. When I was in my early teens, "choose-your-own-adventure" books were all the rage. My first games were such books written in BASIC, which I would pass to friends to play around.

2. Later on, I got interested in drawing and picked up Flash to animate my comics. Turns out that it is really easy to program games in Flash, so I had a vertically scrolling shoot'em up with RPG elements. Because I was hooked to similar games like Solar Winds, Tyrant2k, and Raptor.

3. I tried to learn C++ and go through the "text game -> pong -> tetris -> ..." route but got bored and quit lol.

4. Was hooked to persistent browser based kingdom management games and decided to try making one of my own. Picked up PHP + MySQL. Realized that I could do something more advanced if I switched to node.js/socket.io and HTML5. And thats how I end up writing a multiplayer browser based RPG from scratch. Most of the coding is done, its now at the polishing stage (art, music, features etc). ^__^

My (newbie) advice would be to design a game you would like to make, something that you enjoy playing/making. Strip it down to the basic elements, see if it is a realistic project. Then try doing it!

Good luck. :)
It's not that you need to complete specific games it's that there's certain things you should try to learn. And if you don't recognize that there are prerequisites to a certain style of game odds are you're going to have a tough time on a project and probably just get yourself frustrated. Doing projects like ones people suggest really isn't anything more than a test for yourself. Everyone knows what those games are supposed to look, feel and sound like. So when you've completed such a project it's easy to look at it and know whether or not you got it right.

But a general path that I'd suggest...

A text game because text is ~usually~ the easiest thing to output. A simple Guess the Number game can help get used to some basic stuff like conditionals, loops, user input and basic output.

A buy low sell high game could make for an interesting text based game without needing to go into too many advanced concepts.

A navigate the maze game seems to me the next step as it doesn't yet require you to continuously update the display. It also may be an appropriate opportunity to try to get some simple graphics on the screen but can still be done with just text. When I first tried something like this, I think the maze was just 1s & 0s in an array that I entered by hand (not procedurally generated) and I think I tracked the player's x,y co-ordinates. If the player presses right, check the location at x+1 and if there's an empty space (0) then move the player.

A Pong game is likely the first sort of game a programmer might try involving collision checking and a continuously changing display. Up until now, probably everything else has been turn based. I don't think I ever got any sort of Pong style game to work.

Tetris follows as the next step because it has a continuously updating display. The well in which the blocks fall is usually a simple array not unlike the maze game described earlier.

Probably next would be some game that involves enemies of some kind that require some sort of AI or simple set of behavior rules. Something as simple as an enemy moving towards the player on a big empty screen, possibly with a wall in the middle.

Doing up some sort of demo project involving frame by frame animation would make sense about here.

Pac-man can be pretty hard to put together but probably tempting to try at this point. A person wouldn't be wrong to try but odds are that their first shot at it probably won't be like the original.

Personally, I didn't try Pac-man until I've been programming for many years just because I figured I knew enough and it'd be easy so I never bothered. When forced myself to give it a go I found that it was a pretty tough project and realized I still had a lot to learn.

Six years after my attempt at Pac-man, I'm working on a scrolling platform style game. The main reason for such slow progress on my part is my hobbyist approach.
This is my opinion on the subject.

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

I think everyone should try doing something with procedural generation at least a few times. You can really put your code and hardware through a lot of different scenarios because it's pretty easy to scale how much stuff you're generating or how sophisticated the simulation is. I also think that exploring applications of noise functions should be something to try out a few times too.

My (newbie) advice would be to design a game you would like to make, something that you enjoy playing/making. Strip it down to the basic elements, see if it is a realistic project. Then try doing it!


I'd have to agree with this without a doubt!

Most people struggle to grasp concepts or retain information because they are doing something that doesn't interest them or doesn't keep their attention.

I'm a complete noob and have only made one game, so take my advice with a grain of salt. I also wrote an article about going ambitious from the start, if you'd like to check it out.

No matter what you do, I wish you luck and can't wait to see some finished stuff that you make.
I think one advantage we older programmers have over younger ones is that we had simple computers like the C64 to get started on. There wasn't really a need to start with text, though of course first programs would have been like that too, because with the help of hardware sprites it took a line or two (without the concept of library or framework) to get a sprite on your screen. One or two more lines to actually move it. On the downside BASIC was way too slow to code a useful game with and assembler forced itself upon you.
The lack of hardware sprites made me shun PC's during almost the entire nineties and I desperately clung to my Amiga. LOL

This topic is closed to new replies.

Advertisement