Quote:Original post by Laz
Write a simple engine that doesn't have real-time lighting, doesn't have bump mapping, etc etc etc... and you should be good to go. Start small.
I agree.
Writing a game engine is a good experience, even for a beginner, because it requires a better foundational knowledge of software engineering than game design. When you're designing a game with a pre-built engine you get to use pre-packaged code. The code you're actually writing won't be used by anyone - even yourself. Once you're done with it the only time you'll ever need to touch it is for maintenance later on.
A game engine is different. When it's done you're going to be
using this code. If you've done a poor job with it you'll know, because it'll be difficult to work with or improve. You'll also be able to more clearly see where you've gone wrong and to improve upon it, if necessary.
I also agree that it doesn't take years if you start small. I think the best way to approach this particular problem is to decide on and do some preliminary design work for a simple game. Maybe not Pong simple, but nothing much more complex than Asteroids. Look at your game and decide what the requirements for it are. What does the engine need to be able to do to support the game?
Once you've worked that out you can get to work, being careful to build your engine with flexibility and extensibility in mind. I know it's easier said than done, but if you work with that goal in mind the limited scope of your first project
won't limit the scope of the engine. Once you finish your simple game project, you can decide on a slightly more complex game and extend your existing engine code to support that.
By the time you get to the third iteration, your engine will probably be good enough that you can reuse it for a lot of easy projects. You could also continue to extend its functionality and build more and more complex games. Is it going to be better than a commercial engine? Of course not. It won't even be as good as the vast majority of free engines, but there's no reason it can't be good enough for your own purposes and there are some definite advantages to using your own code. Building everything from the ground up will also give you a deeper understanding of the decisions other people have made with their engines, should you ever choose to use one.
In short: I think building an 'engine' is the best thing you can do to start out. If nothing else, it'll help to teach you the benefit of designing clean, reusable code. I know it's not a popular opinion, but I think starting by building an actual game isn't the best idea, since the ease of using pre-built engines can mask some of the actual difficulty in game development enough that it's easy to bite off more than you can chew.
[Edited by - Paradoxish on October 11, 2005 3:33:05 PM]