Should our group try to make a game?

Zac Blazic
  • Should our group try to make a game? Zac Blazic

    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).

  • 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.

  • 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 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)

Tags
c++ software-engineering
Related questions and answers
  • would have the most insight. So just an introduction to myself and the problem. Basically Im in my final year of my degree and rather than do a thesis we do a final year project that has to be crisp... this summer and I have a good grounding on the web side of things. I've also done some very basic c++ (what i would consider basic). My c++ skills basically comes down to different tutorials on things... of this then why would I be here asking this question? The reason is as shocked as I am about this. I don't like to lose. I have my own queries on how appealing this project would be to someone looking

  • think you were not wrong and you did get the idea exactly as I wanted. Let me explain my ideas right now and key points after some sleep to clarify everything: 1) Components: At first I wanted to write...) Where should I place the messaging system for my game engine? Lua? C++? I'm tempted to just have C++ object to behave as servers, offering services to lua business logic. Things like physics system... in the editor we could get all "getXXXXX" methods (that have been exported to lua) and show them in the editor as XXXXX. Other things like data type, etc... should be thought. 2) Entities

  • , not noticeable, so it's better to optomize how much work you can get done in your lifetime, than to make things a millisecond faster, again, assuming it's not in your physics engine or something like that. All this seems well and good, except I have one question, why not linked lists rather than arrays? Sure, if you had to make your own linked list class, I would be on board, but in c++ anyway, assuming.... And I could see a case there for using arrays rather than linked lists, because you would have to make your own (which while simple enough to do, could potentially lead to many more errors). I also

  • ago, decided to switch to C++. I wanted to get a good handle on C++ since it's been awhile since I used it heavily, and figured an interesting project like this would be a good motivator. I've been... areas of concern I have and wanted to get some opinions on the proper way others have solved them or would solve them. 1. Cyclical Dependencies When I was doing the game in C#, I didn't really have... related to the graphics library I'm using, but is more of a conceptual thing. In C#, I coupled graphics in with alot of my classes which i know is a terrible idea. Wanting to do it decoupled

  • don't need 3D, and it is quite ...a lot of work to learn. I also don't like that it is so expensive to use for different platforms and that I can only code for it through scripting. You have to buy each... people can play my game once finished). I'd like to have it available on many mobile platforms aswell. (because I love touch input for some reason) I do know the XNA framework pretty well... don't really need 3D. The editor usability is a little worse than Unity3D in my opinion and it wasn't clear to me how to start programming. I think it requires C++ for coding, so that's a negative too. I

  • know if my speculations are ok, as I don't have much experience with 3d animations yet. I want to make a well decision as any option I choose would require a lot of work to get it to render and I... at this level I prefer to have well-defined data so I can store and work with fast during runtime. It's this complicated because it must support a lot of rendering and animation techniques, must support...well... I'm building the animation system of my game engine (the skeletal and skinned animation stuff), and I came to a point where I added so much functionality in the frame and node structures

  • , that will let me import 3d meshes into my game, ready to use? The solution/middleware should be: easy to use easy to port efficient not consuming too much memory with unnecessary things containing all...Say I develop a game for mobile platform running OpenGL ES 2.0. I have done 2D part, and now I wish to import some 3D objects. The imported 3D objects must contain the following: Vertices positions Normals UVs Texturing information Animation information Collision mesh Maybe some other things... I am aware, that I could and (maybe should) create my own file format that brings these data from

  • to work correctly. Player movement ends up being very glitchy and repositions the player when I don't want it to. Part of the reason is probably because I feel like this is something so simple but I'm... want to learn on my own) or the something like the SAT (Separating Axis Theorem) if at all possible. Thank you in advance for your help! void world1Level1CollisionDetection() { for(int i; i < blocks...I am trying to create a 2D platformer (Mario-type) game and I am some having some issues with handling collisions properly. I am writing this game in C++, using SDL for input, image loading, font

  • Choosing an Audio API Aidan Knight

    looking for something more drag and drop rather than something I am going to be basically writing my own front-end for. I am curious though, I remember stumbling across another library or two a few... Possible Duplicate: Cross-Platform Audio API Suggestions I have gone down this road a few times, and always decided to put it off. I am finally to the point I need to choose an Audio... as licensing goes. Here is what I have so far.. FMOD - Quality Middleware, success has gone to their heads and it seems they did away with the indie license recently. Price range seems to go from

Data information