// you’re reading...

Video Game Development

12 Computer science game project ideas

Most high school computer programming classes end in an ISP, ISU, or a science fair type of a design project. A good computer science project topic could be a challenge to come up with, though it usually ends up involving some video game ideas. So if you want to impress your friends, get a killer grade, or simply want to pass that programming course you were too late to drop – read on for suggestions.

Beginner video game project ideas

Vanilla flavoured, basic game ideas – classic, easy to make, perfect to get that project over with:

  • Making tic tac toe in Visual Basic is easy
  • Tic Tac Toe – easiest way out, especially with Java or Visual Basic. Drag and drop a few buttons into a form, have players take turns clicking on them, and add a few if statements to check for wins. Start to finish in 30 minutes of work, just grab your laptop to that washroom break upon the realization that the due date is today.
  • pong
  • Pong – another easy project idea. Being one of the first video games made, today’s technology clearly requires minimal programming on your part. Bounce the ball around, and possibly add a couple more if statements than in the previous title. Watch out for the keyboard input, that could be new.
  • Generic quiz game project
  • Who wants to be a millionaire? – or any other flavour of a quiz game. It could be simple, fully text based, and it’s arguably the only educational game on the block. The trick is to write a function to read all the questions from a datafile, instead of copying the same blocks of source code all over the place. Remember, it’s a game with 15 questions, not 15 “one question” games stuck together.

Intermediate computer programming projects

Chocolate flavour – common ideas that are still popular. You should probably consider one of the following titles:

  • pacman
  • Pacman – an icon of a video game, this programming project is going to be “choose your own adventure” style. The wall collision might be tricky at first, but there are plenty of approaches to try: reading colour information off screen, math, tile maps… You could totally get away with just letting the ghosts run around in random directions, smacking against the walls (because you got that collision detection working, right?), but if you are interested and have enough time – each ghost could have a unique AI, just like in the original game.
  • tetris
  • Tetris – you are the master of arrays, and know how to figure out if there’s enough space under a block to continue falling. That’s about it really. Your code ninja skills can further be sharpened with graphic effects, combo points schemes, and having your computer scream TETRIS! when that long stick comes at just the right time.
  • bomberman
  • Bomberman clone – another fun idea. Your friends from the Beginner Projects will gladly start testing bugs out as soon as you get that multiplayer working. Idea is very similar to that in Pacman, but it’s 42% more fun when you have power ups! Super Power Glove!. Just don’t scream “bomb” in class, it could be taken the wrong way…

Advanced computer science project topics

This is the Vanilla Bean Chocolate Chips Frappucino Blended Creme type of a game design project, with a cherry on top.

  • mario
  • Mario clone – meaning a platformer. Kind of like Bomberman, but you broke out of a confined box. More space = more possibilities. You get to attempt to catch that scrolling screen’s edge. You get to jump. You get to jump on your enemies’ heads! Well actually you could still keep all those bombs and powerups to mix the gameplay up a bit and make it unique.
  • overhead shooter
  • Overhead shooter – technically another platformer programming project, but turned on its side and with more firepower. It could be shoot-em-up, down, or sideways style. Mario has gotten a jet fighter, in futile hopes of taking a shortcut to another castle. Now it’s kind of like Tetris, but falling boxes have been replaced with moving tanks… or shiny polygons. Think Supersize! Think ridiculously overpowered upgrades with stunning graphical effects. Now that’s a project.
  • RPG
  • RPG – if you hate your life (and some apparently do), this obviously final year attempt at video game programming glory is likely to end badly. The game engine itself is often fairly spread out (world travel, town travel, shops, fights, etc) and requires an ungodly amount of effort. That leaves you with practically no time to design any plot or story for this project. Though some students chose to concentrate on a limited part of the game, putting together a demo segment to salvage such game design project into something more presentable.

Best computer project examples

Your rolled a 20 and looted the science fair prize money. Your game’s exceptional design is executed with computer engineering level of precision. Your uber attention to detail highlights how little time you have outside this computer project extensive knowledge of video game development.

  • Adam Bielinski's Forces
  • Adam Bielinski’s Forces is fun and unique. Part physics, part shooter, part powerups offers simple by addictive play. Was a featured game on the Great Games Experiment. Developed with Turing programming language.
  • Mazer's Evasive Maneuvers
  • Mazer’s Evasive Maneuvers is a very polished, multiplayer type of a space shooter. Upgrades, powerups, special weapons and abilities. In an attempt to score bonus project points, a special spaceship was designed to be unlocked just by the teacher, but I think the school had some rule about project marks being capped at 100%. Developed with Turing programming language.
  • Turing MMO
  • Celestial Conquest is a MMORPG game in development by Robert Taylor and James McLean. Clearly an overkill for any high school computer class, it is also exceedingly fun to play with classmates. And yes, just like any other RPG student project, it doesn’t have a story line. Also developed with Turing programming language.

Final thoughts

Pick an appropriate difficulty level to keep things interesting. Remember, it definitely helps to plan ahead. Get something basic working first, then start adding more features. Simple game’s source code could always be extended to make it more interesting, but if you end up with a mess of a complicated project – you’re in trouble. Finally, if you are ever stuck – seek help and tutorials, there are many resources available online.

Think you have a better idea for a computer science project (doesn’t really have to be a video game)? Share in the comments!

Read more

Discussion

  1. Posted by Keith Casey | February 14, 2007, 9:18 am

    In one of my couple CS classes as an undergrad (I was actually a EE), we did a network verison of checkers. I found it interesting since although there are a handful of various “official” or “house” rules, the game mechanics are very well known and most people have known how to play it since they were 8.

    On the other hand, unless you don’t want to have a life, I wouldn’t suggest going the RPG route. There are simply too many systems, rules, intricacies, etc that have to be dealt with or consciously ignored to do even the most basic things. Years ago, I was involved with Arianne RPG ( http://sourceforge.net/projects/arianne ) and the sheer amount of effort required to do much was daunting.

    Reply to comment

  2. Posted by Ilya Grigorik | February 14, 2007, 9:56 am

    RPG’s don’t have to be all that complex. Myself and several of my friends implemented a fairly simple, text-based / networked RPG for one of our courses (CS246). If anything, it was a great C programming exercise, just getting your head into that thinking mode and getting down and dirty with class layouts, evaluating predicates and network programming was a really good experience.

    In the end, we had several different classes of characters, which could walk around virtual rooms, pick up objects, talk to each other, etc. It’s definitely doable, and if you go into a higher language like python or ruby, it probably wouldn’t take all that long either!

    Reply to comment

  3. Posted by Tony | February 14, 2007, 1:17 pm

    Conflicting views Discussion, excellent!

    Ilya – no doubt that RPG’s level of complexity and involvement makes for a good experience, though to put things into perspective – you worked on a simple, text-based game with several 2nd year CS majors ;) Keith is absolutely right – there are simply too many systems and rules involved just to get the basics going. A high school student aiming to make the next Final Fantasy III-2 or Pokemon #4595D4 (they’ve got to be running out real colour names by now) is likely to be at a disadvantage. Out of a few such projects that I’ve seen finished, none really made it pass world/town travel.

    Keith – Electrical Engineering? Arianne RPG? You are a wealth of surprises ;)

    Reply to comment

  4. Posted by Keith Casey | February 16, 2007, 9:48 am

    Heh. Yeah, I’m full of surprises. ;)

    As long as you’re considering building an RPG, check out this article on slashdot: http://games.slashdot.org/article.pl?sid=07/02/15/2123239&from=rss

    Reply to comment

    Zack replied on: November 27th, 2009 at 5:02 am

    if i want to build a RPG, can u give me full source code of the example…pls?

    Reply to comment

    Tony replied on: December 4th, 2009 at 5:27 pm

    If you were given the full source code, then you wouldn’t really be building anything.

    Reply to comment

    Michael Hernandez replied on: December 16th, 2009 at 10:08 am

    Heres some advice, and i hope more people than just Zack get to read this, I have recently ventured into game programming(3D) mainly my advice is:
    1. Read Read Read: Read source code from probably the DirectX sdk, or any source code that uses advanced Object Oriented Programming. When you dont know what something is, research it or try to figure it out.
    2. Games primarily use alot of advance concepts, or advanced implementations of concepts.

    Some things you should study:
    C++ or Java
    PolyMorphism
    Pointers and references
    Math(VERY IMPORTANT)
    Math is the basis of everything in game programming and simulation programming.

    I have lots of source code for anyone interested and can even include you in some projects. And can give more detailed info on what to study and examples.

    Right now im studying for a Logical Circuit Design Course final(UGGHH!!!!)
    contact me at xfreakk@gmail.com
    Good luck on all your endeavors everyone :)

    Reply to comment

    Michael Hernandez replied on: December 16th, 2009 at 10:48 am

    quick example of some pseudo code. There may be Some bad programming practices in it so dont use this as your only source it is a learning tool and quickly written in this CommentText Box lol.


    class baseRpgCharacter
    {
    //some stuff
    //Serves as base template for all classes
    /*
    All Variables and Methods are virtual or const so create an abstract class(for use as a template)*/
    }


    class baseCasterCharacter : public baseRpgCharacter
    {
    //base of a Caster Character
    //Inherits from basRpgCharacter
    /*Holds All functions relative to a spellcaster type, these functions can be overridden in implementation classes*/
    /*This is where Polymorphism will be implemented, and object of type
    "baseCasterCharacter will be set = to an object of any class that inherits from this class*/
    }


    class Mage : public baseCasterCharacter
    {
    //inherits from baseCasterCharacter
    //overiddes default functionality of baseCasterCharacter
    }


    class CGameManager
    {
    bool run;
    Array* pCasters;
    /*We create a pointer to a Growable Array of type baseCasterCharacter and name it pCasters (these are for enemies)*/
    //we also do 1 for the player

    baseCasterCharacter* Player;

    }//end class Mage


    int main()
    {
    //Some pseudo code mixed with real code here

    CGameManger* gm_Manager = new CGameManger();

    On keyboard input "Enter"
    set gm_Manager->run to true;

    if(gm_Manager->run)
    {
    //create player
    gm_Manager->Player = new Mage()

    /*we set Player which is a baseCasterCharacter to a class Mage which inherited from baseCasterCharacter. This is PolyMorphism at work.*/

    //Populate game with enemies
    for(int i = 0; i pCasters.pushback(new Mage());
    /*
    here we say in the array pCasters we want to push an object of type Mage to the back of the array, so if the size of the array is 0, it is now 1, we do this till
    i is greater than numEnemies(which we would have declared somewhere in GameManager probably.
    */

    while(gm_Manager->run)
    {
    //Check for Player input
    //what does player want to do?
    /*
    assuming we have a function called getTask() inherited from baseRpgCharacter
    */
    /*
    getTask() might look something like this.

    int getTask()
    {
    return this->curTask;
    }
    it would be associated with a function called set task;

    void setTask(int id)
    {
    this->curTask = int id;
    }
    */

    //Player chooses to attack
    //Attack is defined somewhere as
    //#define _Attack 1
    //#define _Defend 2
    Player->setTask(keyboard input)
    switch(Player->getTask())
    {
    case _Attack:
    Player.doAttack(pCasters)
    Player->curTask = NULL;
    break;
    case _Defend:
    Player.doDefend()
    player->curTask = NULL;
    break;
    }

    //Check if Esc key was pressed
    if(keyboard input key ESC)
    {
    gm_Manger->run = false;
    }

    }//end while loop
    //end int Main()

    Reply to comment

  5. Posted by Victoria | March 28, 2007, 9:02 am

    Although this was a very interesting article, there aren’t really a lot of, erm, beginner interesting computer games for programming fun. :P I’m kind of desperate right now seeing as I have two months to come up with a good program for my CS class and I feel totally incompetant with Turing. I need something that won’t make me cry out in frustration, actually doable and pretty impressive. Any help? Thanks so much. :)

    Reply to comment

  6. Posted by Tony | March 28, 2007, 4:23 pm

    @Victoria – at first I would recommend solving that incompetency problem by reading up on some Turing Tutorials and asking questions in Turing Help forums. The more familiar you are with your programming language, the easier it is to complete an impressive project.

    Reply to comment

  7. Posted by Fernando | September 11, 2007, 4:19 pm

    Has anyone given thought to a hangman or snakes n’ ladders type of game? The implementation is relatively straightforward with uncomplicated game logic. Plus, both can be simple text-based games or rich in eye candy.

    Reply to comment

  8. Posted by Never were truer words spoken (or typed) — Possibility and Probability | December 31, 2007, 3:59 pm

    [...] other day I came across this really cool posting talking about school projects for computer science students. Basically it talks about the different “levels” of effort required to make a certain [...]

  9. Posted by venkateswarlu | January 7, 2008, 6:04 am

    Although this was a very interesting article, there aren’t really a lot of, erm, beginner interesting computer games for programming fun. I’m kind of desperate right now seeing as I have two months to come up with a good program for my CS class and I feel totally incompetant with Turing. I need something that won’t make me cry out in frustration, actually doable and pretty impressive. Any help? Thanks so much.

    give some language names which are useful to do these projects.E.mail:me at:havelookatme@yahoo.com

    Reply to comment

  10. Posted by Tony | January 7, 2008, 10:06 am

    If you feel totally incompetent with Turing, then pulling off any beginner level game will be pretty impressive. I think that the suggested projects draw a nice gradient of possibilities — games like pong and pacman are surprisingly similar (the latter has a 2D maze instead of a 1D maze, but it’s still about AI following the target). If you feel that beginner is too simple, look at another level, don’t let yourself be restricted by an arbitrary naming of groups.

    Reply to comment

  11. Posted by michaelp | January 9, 2008, 4:30 pm

    There are tons of games that you can make with simple text. Sure, a game that is just text is not always the greatest kind of game that you can make. But there are so many possibilities. Any kind of card game, text adventures, hangman, word search, crosswords, and more. You just need to use your imagination for a good text game.

    Reply to comment

  12. Posted by Darren | March 23, 2009, 5:27 pm

    I need some help and possible a source code for the Turing network modules.
    Its for a mutated 2D shooter still in the works with crappy PI’s that can hold there own and only three guns made.
    Once done it will have Sprites, Weapon lists, and Player customizable stats.
    PI : Pseudo Intelligence

    Reply to comment

    Tony replied on: March 24th, 2009 at 6:03 pm

  13. Posted by Daniel | March 23, 2009, 8:29 pm

    Hey im in year 12 and will need to start my major VB project nex term, i love the tetris idea but havbe one problem, the code i should be able to figure out but how do i do the gaphics and stuff, this is the only thing holding me back from so many game ideas in Visual basic, I am using VB 2005 and/or VB 2008. please help.

    Reply to comment

    Tony replied on: March 24th, 2009 at 6:04 pm

    Ask about that on the forums.

    Reply to comment

  14. Posted by Hex | November 27, 2009, 11:02 am

    You forgot roguelike. While not exactly an easy game to make, there are plenty of examples on which one can base the game (Qhack being a good starting point), and there’s always room for simple innovations.

    Reply to comment

    Tony replied on: December 4th, 2009 at 5:25 pm

    Wouldn’t the genre of RPG cover that as well? There are obviously many more examples for game projects to pursue, and it would not be practical to list and discuss all of them. That was attempted here with 160+ replies.

    Reply to comment

Post a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>