Sign in to follow this  
Shamino

Long term success versus short term glory..

Recommended Posts

Okay, so I have this dilemma. I am producing a 3d engine on my own, I've been working 2 or so months. I have about 4000 lines of usable, perfectly orchestrated object oriented code. I have the following components. I have a resource manager, which allows me to keep any type of resource ONCE in memory, no matter what it is, and constantly re use it. I have a scene graph, a small one, but one that can create a scene and produce a few cool effects. I have terrain, I can load heightmaps.. I have model support for MS3D, no animation yet. I will soon have an editor as well.. Okay, now here is where the dilemma part comes in, my friend, who has been working along side me on a breakout game, he is close to being done, it looks polished, looks great actually. He has.. A toaster stroodle of code mashed together to make the thing look cool and playable. Aside from that, he DOES have sound support, collision detection, particle effects.. breakable blocks.. um.. yeah.. But the thing here is, that he almost has a freakin sweet cool breakout game that is almost a finished project, and I'm stuck here hard coding 3d scenes with a few models here and there, that doesn't really DO anything yet, heck, it isn't even that fun to look at. Should I succumb and start rapidly firing out code to make a cool looking game, or should I keep meddling with this thing until I can do it "the right way" ???

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
mash it together - if you want a well orcastrated engine, you already made the mistake of assuming yours would be better than the ones out there already. I would personally finish up your code to include animation, collision detection, and sound in your nice object orientated format. After that keep this as your base engine for other projects. But after that "slop" together your game. You will get something accomplished and still have a solid backbone for futre projects. If you do come up with a "really cool" added (and useful) feature, recode it and put it into you backbone. But beside that code away - or else you will just get feature creep and an unfinished project.

So in short: add a few more things and then make a game (since your goal is not to write just an engine others can use - they would probably use orgre or others out there anyways)

Share this post


Link to post
Share on other sites
No, don't rush it. Build up your foundation with confidence and honesty or you'll find your house crumbling next year. But then, you already knew that was the answer.

A one-shot breakout game can be hacked together, a re-usable library should not be.

Share this post


Link to post
Share on other sites
Quote:
Should I succumb and start rapidly firing out code to make a cool looking game, or should I keep meddling with this thing until I can do it "the right way" ???


yes u should. the painful fact is hes accomplished something whereas youve done bugger all that is tangible :),
a finished product (even if its pretty crap) is worth far more than an unfinished demo.
it shows you can pace yourself better + have an idea of your capabilities/limitations

Quote:
A toaster stroodle of code mashed together to make the thing look cool and playable.
the end user doesnt give a monkeys about how it was coded they only care about if it works or not.

trust me (if u continue coding) in a couple of years time youll look at the coding of this 3d engine + shudder + say man i was naieve, ie something that takes a month to do nowadays u will be able to knock out in a couple of years in half a day.

hope it doesnt sound to harsh.

Share this post


Link to post
Share on other sites
In my view, it all boils down to exactly what it is you want to do. Do you want to learn how to make your own engine, and not really care that much about making a game? Then keep plugging away at it. Do you want to make a game and not care about the engine? Then mash together something using your engine (or using someone elses).

It sounds a bit like you're somewhere inbetween (which makes sense!), so figure out a balance that suits you. If you're wanting to make a game then maybe there's something you can think of that suits your engine in it's present state. Maybe you could treat the game as a test of your present engine, and use it to suggest what features you should be working on next.

Share this post


Link to post
Share on other sites
Quote:
Original post by Shamino
Should I succumb and start rapidly firing out code to make a cool looking game, or should I keep meddling with this thing until I can do it "the right way" ???


Is this your own project, and not a commercial one? If so, stick with it. Then when you decide to write a quick and dirty program later, it'll be both quicker and less dirty.

Besides, it's not like you're empty handed; you just don't have a whole game yet.

Share this post


Link to post
Share on other sites
Well for now, unless you are making this to the project that kicks the door open to getting a job in the field [which by the way, breakout isn't], then who cares if he has a polished looking thing that is a complete mess and you have a efficient by largely unfinished engine. Comes down to what you enjoy doing. Personally, I prefer the low-level background stuff to the high level things.

Those who can make a high performance engine from nothing are few and far between compared to those who can tap out a breakout or tetris clone...

Especially if yours really is better...

Share this post


Link to post
Share on other sites
If you're just learning, take the time to do it right or at least do it wrong a few times to learn.

If you're not just learning, go for something in the middle. Slopped together code doesn't do much good for large projects because the design failures will eventually bite you in the ass. Being painstakingly elegant doesn't help too much for [portions] of big projects because they're big. At some point you just need to 'get stuff done' and overengineering only hinders that.

Share this post


Link to post
Share on other sites
One thing that occurs to me to mention is that you probably aren't going to design the perfect engine the first time you try; it takes experience, obviously, to figure out what works well and what isn't worth doing.

One of the best ways to get this experience is to look at your engine in the context of an actual game (this is, after all, what its ultimately designed to do). When you do that you realize things like "Oh wow, that seemed like a great idea on paper or in isolation but darn its stupid when I actually try and use it in a "real" project," which are beneficial in a number of ways, not the least of which is it will help you improve your engine for future use. Don't be afraid of refactoring!

To that end, you might consider starting to build a game using your engine as soon as it becomes feasible (as opposed to whenever you've decided its "done"). Use it as the graphics engine (since that's what it mainly is at this point), and build a game around it. As you write other parts of code for your game that you realize could be generalized into your engine, you can move them in there. It'll help you learn a lot about ways to decentralize and modularize your engine design, maintain projects and build environments, and so -- and it will also let you work on producing something "flashy" as well.

Share this post


Link to post
Share on other sites
Quote:
Original post by jpetrie
...


Grats with your 1337 rating :)

As for the topic: stick with what you have now. 4000 lines is a lot to throw away, don't do it. If you've got a well-written OO project, it will pay off.

On the other side: I've just discovered this new programming model - at least new to me. The idea is that you write something that JustWorksTM. Then you copy the project directory, and start to refactor stuff. Do this whenever your code is about to get messy. When it's already messy it's too late :P.

Good luck!

Share this post


Link to post
Share on other sites
What I would watch out for, in your quest for the perfect game engine, is:

- Featuritis

- (On the same lines as featuritis), feature overkill (you do NOT need an OpenGL, Direct3D, and software renderer. Just stick with OpenGL! )

- Follow good coding standards, but write intelligently, too. Is it really necessary to obfuscate code within wrappers, or can you do it simpler with a single container/list? Do you really have to optimize segments of code with assembler, or will a sort in your language of choice suffice?

- Are you creating a game, or a technology demo?

Consider these carefully, and if you find you are deviating from a finished project, then re-adjust your development scheme!

Share this post


Link to post
Share on other sites
Have you completed many other game related projects? If no then my honest opinion would be to drop the engine for now, by all means keep the code and resume later, but for now drop it and go for a mashed together project or two.

Not including the first few games I made while I was very new to and just learning C/C++, DirectX and game programming, I have completed exactly... 0 game dev related projects that I'm truely happy with (out of a total of 2 completed game dev related projects and a ton of sloppy bits and pieces of projects). The reason for this is that I got caught up with trying to design and create a nice re-usable game engine. I've probably had about 5 attempts at creating simple game engines and got nothing out of it due to all kinds of problems.

Recently I decided, screw all of these "nice game engine projects", I'm going to mash together some code and make a game I can be proud of. The project started with a single .cpp file with all kinds of code mashed together. Due to this file getting difficult to manage, I have now split that code into various classes in .cpp and .h files and I currently have a working tetris clone and I'm in the process of adding features and turning it into a fully featured tetris clone with fancy bits and pieces here and there. The project is going slow due to college and other things taking up my time but it is going extremely well compared to previous projects.

Getting a few games complete in this way will, in my opinion, give you a much better knowledge of how things work inside a game and how things work together, which will help you to create a more suitable engine should you still wish to.

Share this post


Link to post
Share on other sites

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