I am a second year, learning C/C++ and Java.

In our first year of university we did basic C++, no classes. This year we have been introduced to classes and inheritance. We have not yet done pointers, virtual functions, abstract classes, operator overloading, exception handling, linked lists, stacks, queues, binary trees, graphs, etc.

I am very curious, so I like to teach myself some things that we haven't yet done. I enjoy the technical side of things a lot, my friends think I am weird to want to learn more than I have to..

But heres my problem:

Our C++ lecturer has decided to take a different approach this term to learning. He said, form a group, think of a project you would like to do and implement it over the year.

Let me give you a break down of our group:

Theres five of us in the group. Myself and another member are much more experienced than the other three and we like the technical side of things, and are quite motivated to do something with an interesting challenge. Then we have a group member who has been extremely hard to motivate, and he was very unsure why he wanted to be a programmer. He did some thinking and decided he wanted to work towards becoming a game programmer. The next member of ours is not the most reliable and has let us down a few times. Finally we have a new member that is keen to learn, but his programming needs work, as do the previous two members.

We are all friends, of course -- which probably isn't the ideal solution to a good group.

The project idea:

Our lecturer gave us an initial idea for a project: a timetable scheduler. Of course this is no trivial task, but most of our members were not really interested in the project at all. So, then I thought -- one member wants to be a game programmer (the hardest member to motivate), most of us would probably enjoy the experience of doing a game, as it would be a big challenge, so why not give it a go?

So what is my question? Do you think that we should take on the task of making a game, or aim for something else?

Initially we thought of a 2D, top-down, ARPG. Then it became a 3D ARPG.

Obviously 3D would be harder, but as we have time to learn, it wouldn't be such a bad idea would it?

Personally I think that the learning will be the most fun part of this project, even if we don't end up with a great game, we should have learned a lot (including being forced to learn and implement new C++ topics).

  • 2
    \$\begingroup\$ Are you allowed to use external libraries as part of your project? \$\endgroup\$
    – Ray Dey
    Commented May 1, 2011 at 17:21
  • \$\begingroup\$ Start small, make a tetris or a puzzle bubble clone to begin. \$\endgroup\$
    – 5ound
    Commented May 1, 2011 at 17:39
  • \$\begingroup\$ @ Ray Dey - Yeah we can, theres no restrictions to that. \$\endgroup\$
    – Zac Blazic
    Commented May 1, 2011 at 18:01
  • 1
    \$\begingroup\$ Basic C++ without classes? Sorry, but if you didn't get to classes, you haven't even touched basic C++. \$\endgroup\$
    – corsiKa
    Commented May 1, 2011 at 23:57
  • 1
    \$\begingroup\$ Kind of... localized, isn't this? \$\endgroup\$
    – Cyclops
    Commented May 3, 2011 at 15:16

3 Answers 3


Honestly, in the space of time you've got where you have to factor in learning time as well, design a 2D game rather than 3D. As quoted a few times on this site, 3D is orders of magnitude harder than 2D.

It's definitely possible to make a game but you must make sure that you clamp your gameplay features right at the beginning. You don't want to situation of "Well wouldn't it be cool if we did X as well as Y?" 7-8 months down the line.

Just remember that it doesn't have to have fancy graphics or the polish of a AAA game.

Depending on your game idea and how complete you want it (and try to keep it as simple as possible, especially as some members are less experienced than others) you will need something for:

  • Graphics
  • Input
  • Audio - potentially optional
  • Collision Detection
  • Physics - depending on the idea, you can easily get away with your own physics for a Tetris clone, for example.
  • AI - completely optional

There are plenty of sites available that you can get free assets and content from.

I have heard good things regarding SDL and SFML so have a look at them to make your 2D implementation a lot easier.

If you really want physics, you could use Box2D but you should take note that it's a fine balance you're after. The more libraries you use the longer it will take to learn them and integrate them to a satisfactory degree. On the other hand, depending on the complexities of your game, you should make use of more libraries rather than reinvent the wheel.

You can simplify this headache just by keeping your game simple. There's nothing wrong with a Tetris, Mario or Asteroids clone.

Personally, I wouldn't bother with AI. You can have some enemies that move about randomly and that would be sufficient to make it a challenging game.

Just as a final note, I'd get used to using pointers and references at the very least, so I'd recommend learning a bit more about C++ too in your own time.

Good luck!


I am guessing that none of you have done a project like this. You should definitely use a game engine or some kind of third party library. Do not try to roll your own.

Use something like C4, Irrlicht, Horde3D, NeoAxis, or anything that looks like it will fit your needs (decent list here: Easy to use cross-platform 3D engines for C++ game development?). You should probably stick with C++ since this is a C++ class your talking about.

Also, consider content. Programming isn't the only thing that will go into this project. Some games need a lot of assets: sounds, music, models, meshes, textures, etc. Another important asset is game content like maps, items, etc (depending on the game). My foremost recommendation is to make a game that doesn't require too many assets so you guys can focus on the programming aspect. That's why I recommend you stay away from certain genres like RPGs (usually require vast amounts of game content like maps, items, monsters, art, sound, etc).

This isn't to say you can't make a game where art or sound is required, just be ready to use things that are already out there. This will save you vast amounts of time.

If you make a game, it should be a game that is focused on something programming wise. For instance: a game where you have to catch shapes as music plays. The varying pitches and other aspects of the music would change the flow of shapes. This game would be neat because it doesn't require a lot of assets (no maps and very minimal amount of art and sounds). You would also have to focus on programming tasks like manipulating and responding to the music your game is playing. Try to do a game that is neat, but also doesn't require a lot of content.

My core suggestion: Aim for a game that you think you can finish. Low amounts of content (or content from free/usable sources) is essential in my opinion for a first project like this. You should also develop other games before your "end game" project (clones like tic-tac-toe, break out, and tetris are good examples). Also, don't reinvent the wheel. Use other people's code! It'll save you time and it'll probably be better than your code if your doing this for the first time. Don't code an engine, code a game.

3D verse 2D isn't a huge deal in my opinion. The math is a bit more imposing, but it isn't like 3D is far harder than 2D. Yeah, your not going to make WoW, but you can make a decent-looking 3D game. It's all about where you set your sights.

Notes on your team: Your team is only as strong as it's weakest link. If you feel that certain team members will have troubles, than you should anticipate picking up the slack or making changes. Your team members should fully realize how hard making game can be. It's not an easy project by far.

Honestly, I think you guys can do it in a year. Five people can definitely learn and implement a game. It all depends on the game your making, set your sights just right and you'll hit your mark. Sorry for the horribly long answer, just my opinions from what I've learned in the past year.

  • \$\begingroup\$ Thanks for your answer it has definitely given me points to think about! \$\endgroup\$
    – Zac Blazic
    Commented May 1, 2011 at 18:41
  • \$\begingroup\$ Unity isn't possible here since it's scripting uses C#, Javascript or Boo and the OP is creating something for a C++ class and Ogre is just a graphics engine, not a complete games engine. \$\endgroup\$
    – Ray Dey
    Commented May 1, 2011 at 18:50
  • \$\begingroup\$ @Ray Dey: I was giving examples. I also provided a link to another question that supplied better alternatives. You are right that those examples could be better though... \$\endgroup\$ Commented May 1, 2011 at 18:54
  • \$\begingroup\$ That's fair enough, but the examples you've got in now are a lot better :) \$\endgroup\$
    – Ray Dey
    Commented May 1, 2011 at 19:10

I wrote a game for my final year project alone so it is possible with five of you.

I would advise you think about these things:

  1. check how lenient your professor is going to be. I nearly failed my first review because I used to much 3rd party code and they felt that I wasn't doing any real work.

  2. resources. I wasn't allowed to use any graphics or sounds that were copyrighted so its more difficult than just googleing it.

  3. plan to fail. the amount of times I thought I knew what I was doing and it turned out it wasn't as simple as that such as adding text to a graphic window.

and I cannot stress enough plan before you code, or two months in you will realise that should be a class. a good plan will save you time especially if there are 5 of you.

also dont feel bad if you dont create a big hit. a game is an incredibly big project. Though your classmates projects may look a lot better two thirds of a game will get you a better mark that all of a easier project.

I never made it past a demo world and still got the top grade in my class (first with honours)

  • \$\begingroup\$ A plan is good, but don't stress it too much or you'll never get done. \$\endgroup\$ Commented May 3, 2011 at 23:27
  • \$\begingroup\$ What type of game was it if I may ask? :) \$\endgroup\$
    – Zac Blazic
    Commented May 3, 2011 at 23:51
  • \$\begingroup\$ @Zac Blazic began as a straight copy of pokemon but changed the battle system to Olympic style events as it was a learning game for a school. Has animation of people and background, 4 minigames, a town and a forrest area, menus and dynamically added content so the school could change the educational material themselves. Very rewarding project, am currently using a modified version as an engine for a old turn-based rpg. C++ and directx if you wana know. very little pointers to, used references. \$\endgroup\$
    – Skeith
    Commented May 4, 2011 at 8:22

Not the answer you're looking for? Browse other questions tagged .