How to go about a game project?

Started by
1 comment, last by guyver23 14 years, 1 month ago
Hello there, a first year CS student here. We've been tasked with writing an application of our choice in C. I've, in a maybe a bit unreasonable move, chosen to write a 3d game. This may pose a somewhat daunting task, since while I pretty much grasp how programming works I've never programmed anything bigger than a simple graphing calculator. And no object code takes the difficulty a few notches higher, when you actually need to worry about everything yourself instead of delegating it to constructors, destructors, inheritance, factories and whatnot. Anyway I've got a few questions that would help me get on the right track. The game itself is supposed to be a space mecha combat simulator with semi-to-full newtonian physics. 1. I'm planing to use SDL + OpenGl combo for handling input and rendering graphics. May aditionally need a physics library (thinking about ODE) for the newtonian flightmodel and something to play bgm/sfx (FMOD/OpenAL?). Are they good choices, or maybe there are better suited tools for fast and relatively easy game development in C (count full engines out, I don't think that such an amount of outsourcing would fit well with the lab guy). Also which book would be the best to learn from? OGL Super Bible, Red book or maybe something like Beginning game programming with OGL? Or maybe NeHe's tutorials? 2. I've got a Radeon 9100 graphics card which supports OGL 1.3. While I specially plan the game to have a bit old fashioned look (think playing Homeworld in 640 x 480) it doesn't really make sense to learn programming graphics in an antiquated way (features like VBO or pixel shaders don't seem to be well supported). And I don't think doing stuff like glow on plasma lances and missile trails (PS?), solarizing/cell shading (Pixel Shaders again?) the image and having big asteroid fields (impostors?) would be easy and sensible on such an old hardware. Should I upgrade or can I somehow manage to do this in OGL 1.3? 3. How to go about animation? I chose mecha for cool factor and that leaves me with a need to make at least basic animation for limbs. The choice would affect how I represent meshes in the engine (at the moment an object is a list of meshes, each with it's own transform matrix, made up of indexed vertex triangles). I could either store positions of vertices for each frame (memory heavy), make the mech up from several meshes and store it in a tree structure with each part having it's transformation matrix derived from some simple bones or make the model one mesh and use skinning with weights chosen so, that the mech doesn't bend, but stays rigid. Choosing which would make most sense for me? 4. Matrices and quaternions. If I choose doing the animation the separate objects way I'll probably end up with a lot translation & rotation operations and I heard that doing it with OGL's matrix stack and transforms is somewhat slower than computing the matrices yourself and feeding them to OGL with glLoadMatrixf(). Should I then write my own matrix computations library? As for quaternions - I heard they are good for representing rotations in 3-space and they avoid the gimbal lock limitation of usual transforms. I plan to have the direction the mech is heading to be derived from the movements of the mouse so can I do it right without delving into quaternions (not too afraid of math though) or are they the right choice? 5. Asset format. Should I use .3ds, .ase, write my own binary format or maybe there is another format better suited to my needs? I need to keep a mesh (or meshes) in it, as well as uv coordinates, 3 normals per triangle (for smoothing groups), optionally bones information and some sort of markers for attachment of stuff like weapons or trails. As for textures I think that any RGBA format would suffice (rgb for colours, a for glow info), like tga or png. That's probably it for now. Sorry for a bit chaotic and unstructured Q session, hope you can make some sense of it and come up with some suggesstions. EDIT: that would be about three months. And in the worst case I'm pretty sure I can whip up an unambitious database or something in under a week or so. I just thought it would be a good motivator for me to learn all this stuff. [Edited by - Jaen on March 13, 2010 1:25:08 PM]
Advertisement
How much time do you have to complete your project? It looks too ambitious to me for a first year CS project. In my experience a simple but completed project rank better that a very ambitious but uncompleted one.
In my first semester of CS, our final project was a very small 2D game. The Professor provided us with some code a general guide on how to put it together. If you are comfortable with C programming you should be able to put together something similar using SDL.

Don't be too ambitious! Putting together even a small game is a lot of work. Perhaps a clone of something like space invaders, Tetris, or breakout would be ideal.

Good luck!

EDIT: If you really have 3 months to complete it and are fairly sure of your skill, you might want to consider trying something like a Mario or Zelda type game instead. But don't overdo it!

This topic is closed to new replies.

Advertisement