Archived

This topic is now archived and is closed to further replies.

bzroom

How many times do you rewrite you game/engine?

Recommended Posts

bzroom    647
When ever I start making a game I usualy just jump into it, little planning. Then I end up with cargame1, cargame2, cargame2, cargamethisistheone folders in my projects folder. Does anyone else do this or do you stick with the same project or do you just plan it all out first? I usualy make a new project cause I want to test a peice of code. But then that project has more progress the previous.

Share this post


Link to post
Share on other sites
PlayGGY    122
Yeah, I have Game and GameWithBatching. I just copied it into a new folder incase I really screwed up, and I could go back to my old code.

Share this post


Link to post
Share on other sites
Waverider    169
Let's see, I wrote one in MFC to get an outer space shootemup going in OpenGL.

Then I wrote it again with updated graphics and more effects for both OpenGL and Glide, still with MFC as a base. Two completely separate main program sources, one for each rendering API, with a shared directory with classes that I knew wouldn't change.

From the main sources I determined which parts were the GAME and which parts were the GRAPHICS, and separated Graphics out into commonized function calls. Still in MFC.

Then I started writing an engine without MFC that was attempting to allow the programmer to write their own customized game specific classes for the primary components, and use polymorphism to make their integration in the base classes easy. That version never really got off the ground because I realized there would be at least as many new classes in the game specific stuff as there would be in the base game engine, and the idea of organizing it all was overwhelming. Plus I didn't use STL for the base dynamic storage structures. And there were a LOT of them being used.

You learn a lot doing things on your own. I never really thumbed through a book that illustrates this kind of problem solving. I can design methodologies for handling the mechanics of the game world and the rendering, but when it comes to class design and coding organization, I have more work to do.


[edited by - Waverider on January 25, 2004 9:16:28 PM]

Share this post


Link to post
Share on other sites
Taulin    100
Version control was my first thought also, but it sounds like you are suffering from a mild case of "Featurus Creaputus", known as feature creap in lamen''s terms.

You have an initial vision, learn a lot from doing a little of it, and start over with that new found knowledge.

There is nothing wrong with it. You just need to realize that there is more to learn by completing the project.

Set your goals. Make notes of things you learned so you don''t forget them for the next project. Finish your project. Save and burn it for your portfolio.

Writing your design down IS important so you don''t loose focus. If there ever is a time you want to add to that initial design doc, put it in the sequal instead.






Share this post


Link to post
Share on other sites
IFooBar    906
quote:
Original post by Taulin
Version control was my first thought also, but it sounds like you are suffering from a mild case of "Featurus Creaputus"


you mean:

"lacuna consisto contineo"

Or:

"Lacunasistotineo"

| C++ Debug Kit :: GameDev Kit :: DirectX Tutorials :: 2D DX Engine | TripleBuffer Software |
| Plug-in Manager :: System Information Class :: D3D9 Hardware Enum | DevMaster :: FlipCode |

Share this post


Link to post
Share on other sites
superpig    1825
You might also benefit from the process of Refactoring. It''s the process of taking badly designed code and making it better. If you find that your engine is going out of control, stop and see how much you can refactor it.

Share this post


Link to post
Share on other sites
Atlay    122
Well, although I tell some people that I am building a ‘game engine’, I only do this because it’s easier than explaining the truth. In reality I am not building a game engine at all. Instead, I am building a ‘class library’ that contains tools useful in the creation of game type applications. You know… things like Singleton base classes, network libraries, 3D abstraction layer, file handling classes, input handling classes, geometry classes, etc. This is all arranged into a class library that is directly compiled into any demo program I want to build.

The class library could be viewed as a game engine, in that there are abstractions of the major components usually built into a ‘proper’ engine, but really it’s just a collection of source code. As such, I would never view it as ‘throw away’. It has evolved over time, and has included a great many cycles of refactoring, some minor in scope, some pretty significant (usually as the underlying technology or my understanding has advanced).

Obviously the source code lives in a version control system, so I can keep track of changes. I cant imagine working on anything as complex as a game engine type project without version control. *shudder*

Refactoring really is the key though, in my opinion. For one thing, you avoid rewriting all that boring low level stuff every time. For another, you are building upon a code base that has previously been tested. Maybe not tested much, but more than the code you are about to start from scratch.

One last thing. No offence meant, but I think Taulin''s approach is the root of all evil! *grin* The commercial sector of this industry (software in general, not just gaming) is beset with the mindset that delivering something is more important than delivering quality. Whilst I have some understanding of the plight of commercial teams who have accountants *spit* in control of their project, I really don’t think that mindset has a place in the hobby game developer’s life. Admittedly, my approach has probably contributed to me not having a commercial game published, and therefore deprived me of the Ferrari that I deserve, but I wont budge on this… quality before delivery!

Just to balance that tirade, let me qualify it by saying that I agree with limiting ‘feature creep’ in a game. Decide up front what you want the game to do, and stick to it so the project gets finished. But don’t compromise on quality if you find that a way you decided to implement a particular feature is wrong and needs refactoring. And for this, version control is essential.


Atlay

Share this post


Link to post
Share on other sites
Taulin    100
quote:
Original post by Atlay
No offence meant, but I think Taulin''s approach is the root of all evil! *grin*
...
I really don’t think that mindset has a place in the hobby game developer’s life.


No offense taken.

However, I did not mean to release a bad product. I only said to finish what you planned versus starting over from scratch with a whole new feature set.

In the hobby world, it is just too easy to start over, and you end up with a bunch of people on a gamedev news group with incomplete tech demos. Part of becoming a profesional developer is knowing your limitations and being able to complete a project.

If your game is crap, you can look back at your design and implementation. With a complete game to reflect on, you will learn a lot more than stoping mid-stream and getting pulled into the river of new tech.






Share this post


Link to post
Share on other sites
bzroom    647

My goal is always to finish it, right now im working on a slam ball game for programming class.

The first time I made it i started making classes like cEngine and managers and stuff and then realizing that this was over kill for a game that is always the same i whiped it out and version 2 i stared with the menu.

That got old clicking through the menu to test a game change, plus the menu code was a huge crap stir of if''s so i started version 3 where i decided to start with the network.

I made a server app and a client app and it worked good but it was stupid to run a seperate program for server and client if they were on the same machine, plus the client on this machine still had to send its data over the network.

So i started version 4 where i combined it all into a game class that had server duties and client duties all built it. For the menu its just 2 message boxes for now, Single player? if no, Host?

Version 4 so far has my buggy model loading code, and multiplayer support. So for only workin on this for a couple weeks, version 4 for only 2 days, i''m happy with it.

Share this post


Link to post
Share on other sites
Captian Goatse    122
With OOP and UML I''ll never get anything done thus no need to rewrite or rewrite 1000000xtimes. Perhaps 2000 lines of non-reusable code and 20 pages of shitty uml diagrams. YES I AM PROUD!

EngineSingleton.Texurefactory.TrueFalseMonostate.true.loadTexture(stringFactory.stringLol("data/texture.tga");

Oh wait, I don''t program OOP, because it sucks.

Share this post


Link to post
Share on other sites
davepermen    1047
uhm, captain goatse. what you showed here is not OOP.. just to make sure you know it, in case you missed that.




If that''s not the help you''re after then you''re going to have to explain the problem better than what you have. - joanusdmentia

davepermen.net

Share this post


Link to post
Share on other sites
jonnii    122
captain_goatse: just because you dont understand how to write GOOD oo code doesnt make it bad. the simple fact is that your a singleton who wouldnt understand even the simple things like writing ASM code or SIMD or even such simple things as DEFRAGGING YOUR HARD DRIVE. perhaps i should get you a mediator to explain the difference between DICKS and DONGS. maybe if we had a programming factory you could clean the toilets, but if any visitors turned up we would have to HIDE YOU IN THE CLOSET.

congratulations!

Share this post


Link to post
Share on other sites
alnite    3438
quote:
Original post by honayboyz
When ever I start making a game I usualy just jump into it, little planning. Then I end up with cargame1, cargame2, cargame2, cargamethisistheone folders in my projects folder.
Lol, I thought I was the only one. Even worse, once I have done coding the graphics part, I realized that I still have time to change the game I am making before going too far. Then I ended up changing my game, and I was to lazy to change the namespace. So, my current project right now is still using the namespace of my old project.

But strange, I never did that when I used VB...everything was done according to plan. There must be something powerful in VB!

Share this post


Link to post
Share on other sites
cowsarenotevil    3006
quote:
Original post by jonnii
captain_goatse: just because you dont understand how to write GOOD oo code doesnt make it bad. the simple fact is that your a singleton who wouldnt understand even the simple things like writing ASM code or SIMD or even such simple things as DEFRAGGING YOUR HARD DRIVE. perhaps i should get you a mediator to explain the difference between DICKS and DONGS. maybe if we had a programming factory you could clean the toilets, but if any visitors turned up we would have to HIDE YOU IN THE CLOSET.

congratulations!


You need to control your temper, my friend...

You probably have a point, and I''m sure OOP can be useful, but your post certainly doesn''t help anyone to understand that.

Share this post


Link to post
Share on other sites
I''m in the process of making an engine of my own. Personally, I''m planning on writing everything about it twice--- once to experiment with the different ways I can implement a solution, and then once for a nice, finished product. I have planned out the high-level ideas and a rough model that I think I''m going to follow, but I also recognized that as I learned I was going to be changing a lot, so I kept the details really minimal. I''m happy with what I have so far, and it''s been a nice chance to learn about how much effort goes into those.

But I still think quaternials are strange.






"Remember: Silly is a state of Mind, Stupid is a way of Life." -- Dave Butler

Share this post


Link to post
Share on other sites
DJSnow    100
@cowsarenotevil:
>>You probably have a point, and I'm sure OOP can be useful,
>>but your post certainly doesn't help anyone to understand
>>that.
yes, you are right with your comment on johnii; but, his comment was as useful as captn_goatse's one was - namely zero;
and, as you might have recognized, the first unprofessional answer in a thread (which came from captn_goatse this time) very often encourages others to reply...

but, according to the topic:
i have rewritten the biggest part of our current codebase 6 times, since janaury 2002; small-to-mid improvements not counted.


DJSnow
---
this post is manually created and therefore legally valid without a signature

[edited by - DJSnow on January 26, 2004 4:44:12 PM]

Share this post


Link to post
Share on other sites
jonnii    122
i know captain_goatse. he has a tendancy to troll oop threads with a passion so i figured i''d reply to him and try to use as many design pattern names in my post as possible. obviously i failed.

Share this post


Link to post
Share on other sites
alnite    3438
quote:
Original post by jonnii
i know captain_goatse. he has a tendancy to troll oop threads with a passion so i figured i''d reply to him and try to use as many design pattern names in my post as possible. obviously i failed.
Hint: one keyword: ignore.

Share this post


Link to post
Share on other sites