Sign in to follow this  

Advice needed on starting a project

This topic is 4837 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi Next week I will be starting a year long project as part of my course in college. I want to do a project on something got to do with game development (particully 3D Graphics) but have no clue were to start. Last year I done multimedia which thought me some of the math involved in 3D Graphics. I have also looked at the DirectX SDK with C++ and think I am fit to handle it. I would like to hear some suggestions about different projects I could undertake. I would also like to know what API is the best to use (DirectX, OpenGL). I want to persue this as a career when I am finnished college. thanks John.

Share this post


Link to post
Share on other sites
Either DirectX (Direct3D, I should say) or OpenGL would probably be good things to pursue. As for which one, well, a search will provide you with many opinions (on GameDev/on The Web), but they are roughly equivalent, the primary differences being that OpenGL is cross-platform and is more procedural in nature, and Direct3D is Windows-only and more object oriented in nature.

If you go down that route, then I might also suggest, if you feel you have enough time/motivation (I know I often lacked the latter one), don't just focus on learning the API and making an engine in general, but narrow your focus for the latter half of the year on something like shadowing, or terrain rendering, or animation, etc.

Good luck, and have fun! [smile]

Share this post


Link to post
Share on other sites
I'd suggest that you work on a project that is modular by design. By that I mean a project that you can build in pieces. First get the simple stuff done, and get it playable. Then work on adding some more difficult modules, such as computer AI, network play, maybe 3D sound, etc.

Often when people first start developing games their eyes get bigger than their stomache and they attempt to make something far beyond their capabilities. If you go with a modular approach you'll at least have something completed and playable, and if the deadline looms near you can decide to drop some of the more complicated modules.


Ryan

Share this post


Link to post
Share on other sites
And as for a start, get your feet wet. first try some generic uber simple game, say pong, Don't laugh, it can be harder then it sounds. Then mabey a more complex game, like tetris, Or if you feel up to some basic 3d, tetrisphere for n64 (Sorta like tetris expect its played on a top down view of a rotateing 3d sphere insted on a side on view box)

Share this post


Link to post
Share on other sites
Along the lines of what Ryan said I found that writing quite a few little demo apps befor even starting a full on game was really usefull for me. Write a demo for rending a model, then a demo for key input, then a demo for space partitioning which can be extended into a seperate collision detection demo and so on (just keep each on seperate even if you use the code in your next demo). If you keep these demo's very focused, simple and completely indepedant of each other you'll end up with a huge amount of quality code thats easy to understand and expand on. If you try to write everything into the one game one your very first go you'll most likey fail miserably and get putoff for ever. If you one or two of your demo's don't work out you haven't wrecked your whole game and you've probably learnt something very valuable about what NOT todo :D Making apps that don't work sometimes teaches you more than making ones that do! This will also look really good on your report for the assignment as you'll have all these "reserach demo's" and lots of programs to hand in (which will make it look like you've done heaps of work even if each demo is just a copy of the last one with things added).

Anyway thats kinda what I did when starting out, wrote alot of little seperate programs then gathered all my code up and built a proper game once i had all the pieces. I've seen lots of people start out with a huge idea and get about 5% of the way befor giving up in frustration - its not pretty!

Share this post


Link to post
Share on other sites
I would first like to say thanks to everybody for replying. Its great to see people taking an interest in beginners like myself starting out.

BlackMoons I know what you are saying about starting with pong but I have already done this when I was arround 11 using AMOS basic on an Amiga 500. That was what got me into programming in the first place. I have also created an Asteroids game using C# about a year ago. just as an excerice to try out the language.

http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=1869&lngWId=10

I think ill go with the DirectX/3D route because of it been OO. Java been the main language I have studied in college I think it would suit me best for the moment.

I also like the idea of creating a set of mini well focused and well put together programs instead of creating one big app.

Share this post


Link to post
Share on other sites
you would have to use opengl if you are using java,

I don't know if java is such a good idea, you might have to worry about speed optimisation alot more than you would if you were just using c++. c++ is also very similar syntax wise, except for pointers i think.

I think directx would be easier as it comes with directinput, directsound etc.

But directsound is quite hard to get working, once you get its fine, but i had several major attempts and doing it and I'm still not sure my code has some hidden memory problems.

sdl i hear has input, and you could use openal for sound.

You should make a list of things that your game will require, eg
input, model loading, special effects etc, then research which api's would be better to suit your needs.

Share this post


Link to post
Share on other sites
Don't be fooled by DirectX's supposad OO philosophy - it actually makes it alot hard to use than OpenGL and isn't really OO (its just wrapped up in a class to be pretend OO*). I don't want to start a flame war or anything but if your just starting out I think OpenGL with something like glut or SDL is a much better way to go (the setup code for DirectX is huge and confusing, where as with glut or SDL running OpenGL its about 10 lines). I've used both and they're both have their merrits, but I'd suggets going with OpenGL to start off with becaues its got a much nicer design that easier to learn than D3D. But its not a big deal - you end up with the same thing which ever one you use though!

*direct all flames to /dev/null

Share this post


Link to post
Share on other sites
aim higher than the usual tetris and basic 3D app. Yes, you should do a tetris, but I mean to go far beyond that and set high goals or else you'll get trapped in Parkinson's law: "work fills to time allotted."

DX and openGL are more or less the same thing. For someone that doesn't know either, it really does not matter and you should definitly ask yourself which style you prefer.

[Edited by - Lee_ on September 15, 2004 7:07:46 AM]

Share this post


Link to post
Share on other sites
OpenGL is still the standard-API in the industry world-wide.

If you plan a career, make sure you are familiar with both APIs.
And wrapping up OpenGL in a class hierarchy is pretty simple.

For the most resource-like things you'll end up in wrapper classes, because it's the best way to handle it.

What remains is render state stuff and intialization, which you should build classes for too!

Share this post


Link to post
Share on other sites
I just mentioned java because learning it gave me OO expierience. I would never considder using it for 3D programming. The reason I ask about OpenGL/Direct3D is I really would like to persue this further when I finnish college and was wondering about the choices I make now effecting the number of jobs available to me. It seems that most commercial games use Direct3D with only some supporting OpenGL.

I also have ordered three books.

1) Building a 3d Game Engine in C++ by Hook, Brian
2) Introduction to 3D Game Programming with DirectX 9.0
3) 3D Math Primer for Graphics and Game Development

John

Share this post


Link to post
Share on other sites
There are quite a few OpenGL games but yes there are more DX games out there. I still say learn OpenGL, as I found it easier to learn and less messy when starting off. The principles behind the two API's are EXACTLY THE SAME so if you learn one, learning the other is relativly simple (which means it doesn't actually matter, flip a coin if you want). Its kind of like learning Java then learning C++, you need a sleightly new syntax and there are some special features but its not like learning programming from scratch - and the same applies jumping from OpenGL to DX and back.

If your getting the Dx9 book though it looks like you've already made your descision :D Good luck!

*start rant*

Martin Foerster <-- Why would you stick the OpenGL calls behind a class? There is no need to as unlike Dx9 you don't need a pointer to the current state or anything so you'd never need to pass the class round which then leads to the question - do I need it in the first place? The only reason you'd put OpenGL behind a class is so that you can swap it out for Dx9 or something else but then you'd have to put the Dx9 stuff into the same class as well (making the DX classes inside your own class ... which again just seems like waste of time). Also its almost impossible to wrap up everything so you can support OpenGL and Dx in the one app. Having the OpenGL stuff all hidden in a class provides you with no real benifits and would slow down your app.

*end rant*

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
I think a good project would be building a random terrian generator.

- It would teach a lot of very usefull things for future games.
- If made well could even be reused in future projects.
- It can be as simple or complex as you want.
- The project can be expanded or shrunk to fit your time limits.

Share this post


Link to post
Share on other sites
a note about opengl verus d3d. while d3d can be harder to set up, the SDK comes with a great framework to do so in just a few short lines.
Also as far as directsound goes, id highly suggest checking out fmod, (www.fmod.org)
Great dsound/mmout/etc wrapper, ports to linux, ps2, xbox and verious others iirc.
Supports 3d sound with doppler, a ton of file formats includeing mp3, ogg, midi, mod, it, etc. also lets you add in DSP effects
Lisence is free for free games, I think about $200 for 'shareware' games, and $2000 for full blown commerical games for pc

Share this post


Link to post
Share on other sites

This topic is 4837 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this