Home » Community » Forums » » Incremental Development
  Intel sponsors gamedev.net search:   
[Control Panel] [Register] [Bookmarks] [Who's Online] [Active Topics] [Stats] [FAQ] [Search]

Add Forum to Favorites |  Send Topic To a Friend | View Forum FAQ | Track this topic

Page:   1 2 »»

 Last Thread Next Thread 
 Incremental Development
Post Reply 
Great article ! I enjoyed reading it.

- Wolf

 User Rating: 1469   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

Just out of curiosity, how long does compiling usually take for someone using VC++6, on small/medium/large projects (specify your definition of the size too). I have only done really small stuff in C++, so compiling time was no problem. But for my work, I use VB, where compiling time is usually insignificant unless I'm dealing with a huge project (and for those people who think that it is because the language is interpreted... it isn't). So when developing in VB, I've often found myself doing syntax checking just by compiling or mashing my hand on the keyboard to leave a bookmark so I can quickly come back to it before I compile next - that's how quick it is

I wasn't aware that it was such an issue though. So I might change my habits

Trying is the first step towards failure.

 User Rating: 1023   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

I think the artical is quite informative but I expect the basic game design to break down to the level recommended.

Also I am a firm believer in 'compile early, compile often'. With new compilers you may as well re-compile the section of code you are working on to spot those stupid errors (if you run the compiler on its most stringet settings, even better)why be left finding errors that relate to syntax when you should be looking for logic errors.

Regards

 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

quake 1 compiles in under 2 minues on my machine (PIII 733 256mb), and quake 2 takes about the same time too.

 User Rating: 1168   |  Rate This User  Send Private MessageView ProfileView Journal Report this Post to a Moderator | Link

I think this article was great for the novice\intermediate programmer that has already programmed a few small games and would like to work towards something bigger and better. I don't think the absolute beginner should have to worry about workflow, though.

What is the best way for you to program your *first* game? Just do it! Just bang it out anyway that you can! That's the way I did it. I'm assuming lots of others have done the same.

Getting into a routine is great because you'll need it later on but jumping right into planning on your first tic-tac-toe game isn't necessary. Your code may end up looking downright ugly but if the game works then that's all that matters, right?

 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

ragonastick:
A full build of a project I worked on(in C) took 7-8 minutes locally, up to 25 minutes when compiled remotely on a server (when others were taxing the server). If you plan the structure of source files however, you should rarely have to do a full build.

(I think...) A nice feature of VB is it compiles before you tell it to (while you're coding), which makes the actual build very quick.

 User Rating: 1015    Report this Post to a Moderator | Link

First and foremost, great job Drew! I was going to mention incremental design in an upcoming article (follow-up to Removing the 'Tech' From Design Document) but you did it so well, I'm not going to worry about it =) (I can focus on other aspects =)

Second, have you read Code Complete? Your article just seemed to have some of the points made throughout the book.

Next though,

quote:
Original post by dhscompguy
What is the best way for you to program your *first* game? Just do it! Just bang it out anyway that you can! That's the way I did it. I'm assuming lots of others have done the same.

Your code may end up looking downright ugly but if the game works then that's all that matters, right?


Well, to be frank, no. I wrote my first game by trial and error, but if I had done a little planning, it would have been much better. Many of the really tiny projects never are developed beyond the basics, because the code that's been written is such a mess, that adding other stuff is more difficult with each addition. (If you don't plan for them.)

Famous fact: The last 10% of a project take 90% of the time.

It shouldn't have to.

I've been writing commercial games with 15K+ lines of code per project for over two years now, and the difference between 1000 lines and 15 000 is very significant, but if you do the 1000 line projects right, the more difficult ones use the same principles, if not always techniques.


If all that matters is what you get in the end, why go through life?
~Michael Sikora


[edited by - guardian_light on June 25, 2002 2:17:26 PM]

 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

Nice article!

But why not take incremental development a bit further down the road... by incorporating the game design stage tech spec etc in what the people at Rational call iterations.

Warning! I will probably ramble some ;-)

One of the biggest problems is that games don't turn out to be fun to play despite the funky graphics/tech specs etc. How can we know what is funny if we don't test it? If this is going to work the game design document _can not_ be a holy bible that can not be altered during the project (and I don't mean simple tweakings of damage/physics etc). The game design document should be a living document throughout the project! The released game will probably not be the game first concieved by the game designer.

The game should be playable from day one! Not with all features or the final features but with the most important features. If the thing you do 90% of the time in the game is not fun then the game is not going to be fun when the rest is added either. You may camouflage it for a while but the game will be boring! A build should be made every night and involved people should play the game every day for 30mins or so.

well.. I could go on and on about this but thats it for now...


Regards!

/hObbE



[edited by - tobiaso on June 25, 2002 2:38:46 PM]

 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

quote:
Original post by tobiaso
Nice article!

But why not take incremental development a bit further down the road... by incorporating the game design stage tech spec etc in what the people at Rational call iterations.

....





Exactly. Nice article, btw. It seems to me that the more successful development processes are iterative, meaning from launch to maintenance developers go back and change things in previous phases if they need to be changed, but also incremental at the same time. For instance, if you incorporate the game design phase, you have to create the design document or at least start to. A design document is essentially a requirements document, and if you can ever find a requirements document that doesn't change, then you are the man. Well let's say you get to the prototype phase and you see that some game design element ment isn't going to work. An iterative process allows you to take a step back to make changes to your design document and other specifications before forging ahead with any new ideas. The benefit of doing this? You have documentation of your changes, so later down the development road when you're testing for release and you find a hard to detect defect, you'll be able to track how that particular defect was injected into your system.

Incremental development is good in my opinion, because it allows you to break down the system into manageable pieces. Adding iterative development is good in my opinion, because it allows you to make changes to these already manageable pieces. It's a win-win situation.


Kevin "Khawk" Hawkins
CEO and News Director, GameDev.net
Author, OpenGL Game Programming
Developer Diary



 User Rating: 2039   |  Rate This User  Send Private MessageView ProfileView Journal Report this Post to a Moderator | Link

quote:
Original post by ragonastick
Just out of curiosity, how long does compiling usually take for someone using VC++6, on small/medium/large projects (specify your definition of the size too).



We have something at my company that's fairly large (A couple thousand C files, IIRC.) It takes us about 2 hours to do a full recompile on a 2 GHz PC.

 User Rating: 1015    Report this Post to a Moderator | Link

<< Well, to be frank, no. I wrote my first game by trial and error, but if I had done a little planning, it would have been much better. Many of the really tiny projects never are developed beyond the basics, because the code that's been written is such a mess, that adding other stuff is more difficult with each addition. >>

Please define 'much better'. If a person has developed a tiny project to the point where it has all of the basics of a game, or in other words *is* a game, then they have done their job. They can move on to a bigger project with a better understanding of what goes into making a game.

You did it the "messy" way and now you're writing games 15,000 lines long. Maybe that first round of success enabled you to get to that point in some weird way.

Even if most beginners went the way of formal planning before trying to write their first game, they probably wouldn't understand what the hell good it did them. Hence, they would have no appreciation. Let them suffer through messy code and soon enough they will be reading books on project management, design patterns, etc.

<< If all that matters is what you get in the end, why go through life? >>

Please define 'the end of life'.

Denny

"In the beginning the Universe was created. This has made a lot of people very angry and been widely regarded as a bad move."




 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

Great article Drew. I always worked this way, but always wondered if other people did this way, or if there was a better way. It's nice to know that this is suggested method of developement and that this is how the pros do it.

Thanks.

quote:
Original post by tobiaso
But why not take incremental development a bit further down the road... by incorporating the game design stage tech spec etc in what the people at Rational call iterations.



Check out Extreme Programming(XP). The basic concept is to get as much of the design done as you can as well as as fast as you can. Then start working to see what works and to see how dark areas in the design pan out. Then you cycle through design, code and debug as often as needed.

---
Make it work.
Make it fast.

"Commmmpuuuuterrrr.." --Scotty Star Trek IV:The Voyage Home

 User Rating: 1279   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

Thanks a lot for all the positive feedback guys, always appreciate it cause it makes me write more

tobiaso and Kevin made some very nice comments. If I somehow implied in my article that the design doc should be set in stone then I dunno what I was smoking, because I just sent off an email to a newbie asking questions about my You Got Game! article series, and I included a little tidbit:

...but make sure that things [in the doc] remain flexible, hardly any game comes out as it was originally spec'ed.

if it was just an aside, then it is well welcomed, because it's definetly a good point Either way it's cool, heh.

*wanders off and ponders his next topic*

_________________________________________________________________

Drew Sikora
A.K.A. Gaiiden

ICQ #: 70449988
AOLIM: DarkPylat

Blade Edge Software
Staff Member, GDNet
Public Relations, Game Institute

3-time Contributing author, Game Design Methods , Charles River Media (coming April/May 2002)
Online column - Design Corner at Pixelate

Unnoficial IGDA chat! [polaris.starchat.net -> #igda]
NJ IGDA Chapter - NJ developers unite!! [Chapter Home | Chapter Forum]


 User Rating: 2077   |  Rate This User  Send Private MessageView ProfileView Journal Report this Post to a Moderator | Link

Compile speed answerers: Cool, thanks people.

quote:

A nice feature of VB is it compiles before you tell it to (while you're coding), which makes the actual build very quick



I *think* this may be wrong. There is a feature called "background compile" which sounds like it would do that, but it is actually referring to compilation while your program is running - basically it compiles JJIT (a term I just made up - Just Just In Time). Everything starts out being interpreted, but instead of interpreting a line and forgetting about it, it is remembered. So if you run every part of your code, then once you are finished, it is the same as running your program compiled. I thought the term for this was Incremental Compilation, but I've just checked a book which describes that differently, but I really don't believe that book (it claims QBasic uses 1's compliment, among other herecies )



Trying is the first step towards failure.

[edited by - ragonastick on June 26, 2002 4:00:54 AM]

 User Rating: 1023   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

quote:
Original post by dhscompguy

Please define 'much better'. If a person has developed a tiny project to the point where it has all of the basics of a game, or in other words *is* a game, then they have done their job. They can move on to a bigger project with a better understanding of what goes into making a game.



It's a fact that well polished games stand out from the rest. "Much Better" might include things like:

* No bugs. I don't how many "my first/second" game's I've tried that didn't work on any of my computers.
* Support for many different hardware setups. (Scale of quality in game can change according to user's machine.)
* If applicable, extra's include high scores, in game help and tutorials, varied game play, multiplayer support, user friendly interface, support for multiple input devices and their respective key bindings... I could go on and on...
* Source code that's documented and easy to follow. This is why so many hobby teams fail. No guidelines for style, documentation, variable naming etc.

For the sake of fairness, I put together a 25K line game with a few pages of documentation, mostly for requirements. (I did this on contract BTW) It took me six months. I've written similar games with 15K lines in about a month. Granted, I re-used code from other projects, but I designed with the future projects in mind.

For every one of the little "first game" projects that we hear of success, I suspect 10 more fail.

quote:
Original post by dhscompguy
You did it the "messy" way and now you're writing games 15,000 lines long. Maybe that first round of success enabled you to get to that point in some weird way.



Well... Yes, it did. I learned that there had to be a better way. Now, I'm passing experience on to those who are just beginning, so they can waste less time then I did. I know that I would have appreciated it.

quote:
Original post by dhscompguy
Even if most beginners went the way of formal planning before trying to write their first game, they probably wouldn't understand what the hell good it did them. Hence, they would have no appreciation. Let them suffer through messy code and soon enough they will be reading books on project management, design patterns, etc.



This might be OK, except that people are habitual. The sad truth is, some people will just keep doing it the "way they know" for the rest of their life. (This is worst when they have no formal education in computer science or software engineering...)

quote:
Original post by dhscompguy
<< If all that matters is what you get in the end, why go through life? >>

Please define 'the end of life'.



Death.



If all that matters is what you get in the end, why go through life?
~Michael Sikora


 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

The article gives good advice, that's for sure. Nonetheless I think that nobody is insane enough to code an entire project before compiling the first time... The worst thing I once did was rewriting a module in a different language in one step. I tried to translate the module line by line and I ended up in hundreds of errors just as mentioned right at the beginning of the article. But that was the only time I did such a stupid hack. I expect the average programmer to make use of "incremental development" in any case.

I would even go one step further and shorten the average time between builds. Of course, this depends on the size of the project and on the necessity of having to recompile all source files (worst-case scenario). But generally, having a good project and code structure, the time of a recompile after adding or modifying one to three files should be minimal. Visual Studio can be configured to make use of precompiled headers and when using makefiles, only files affected by changes (through the dependency scheme) are to be translated into machine code.

So what would I suggest? I would recommend a recompile even after adding one single non-trivial function. And I would recompile after setting up a new module. These are cases where the author of the article would rather continue coding. But I think that it's always a good thing to verify that a module or a function is actually working before digging deeper into code. It's somewhat annoying having to debug a bunch of newly added funtions just to recognize - after having found not a single mistake - that the bug actually sat somewhere in a class declaration or something.

But that's only my personal opinion. As I already said, I'm sure that everybody's clever enough to discover himself that "incremental development" is the only way to arrive at one's destination. Additionally, everybody should be able to find his personal average time between builds. And that depends on skill, on the difficulty of the project - and on concentration, maybe.

 User Rating: 1030   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

quote:

Original post by Guardian_Light

It's a fact that well polished games stand out from the rest. "Much Better" might include things like:

::snip::

For every one of the little "first game" projects that we hear of success, I suspect 10 more fail.



Maybe the problem isn't a lack of process. Perhaps the new guy just bit off more than he could chew. I'm not saying that you should program your first commercial game with some hacker methodology. For a beginner programming tic-tac-toe I think it's acceptable, though.

quote:

Original post by Guardian_Light

Well... Yes, it did. I learned that there had to be a better way. Now, I'm passing experience on to those who are just beginning, so they can waste less time then I did. I know that I would have appreciated it.



Do you really think those young punks are going to listen to you anyway? Fools never listen to the wise.

quote:

Original post by Guardian_Light
This might be OK, except that people are habitual.



I'd agree with the last poster that said people are smart and want to find ways to make life easier. There will come a point when they say "This crap is just too hard to handle! There's got to be a better way!" If that point doesn't come then you just have to push that person down a flight of stairs or something 'cause I think they might enjoy it.

quote:

Original post by Guardian_Light

[quote]
Original post by dhscompguy
<< If all that matters is what you get in the end, why go through life? >>

Please define 'the end of life'.



Death.



Can you define death? What is it? When are we *really* dead? Maybe what you call death isn't an end but a beginning.. or a midpoint.. or something really deep like that. Man, is this off-topic or what??!!




 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

quote:
Original post by Origin
The article gives good advice, that's for sure. Nonetheless I think that nobody is insane enough to code an entire project before compiling the first time...


Except me Well okay I didn't code the entire project, but enough stuff to make my compiler drop out due to too many errors. This was like 4 years ago when I was just starting out.
quote:
Original post by dhscompguy
Can you define death? What is it? When are we *really* dead? Maybe what you call death isn't an end but a beginning.. or a midpoint.. or something really deep like that. Man, is this off-topic or what??!!


So are you serious or just wanna be annoying? Anyways here's allll the info you'd ever need.

 User Rating: 2077   |  Rate This User  Send Private MessageView ProfileView Journal Report this Post to a Moderator | Link

Most people can agree to disagree on Computer Science, but questions about life, always gets them so touchy...

I'm not getting invloved in this one =)

If all that matters is what you get in the end, why go through life?
~Michael Sikora


 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

Well, what fun is debate without annoyance?

I was trying to be a pain but it's still a serious question. Too bad nobody can answer it! They can go on and on about it in newsgroups, though. Try a search at groups.google.com if you so desire.

 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

I could tell you what it is but then you'd just have no meaning to your lives and no reason to go on would you?

ho hum

Normal service will now resume ( hopefully ) ....

Regards

 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

Define 'Normal Service'.

Har. Har. I'm all for the death of this discussion. Whatever that means.

 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

Dude don't be side-tracking my article thread. Bad things happen to people who do that I will start deleting or editing irrevelant posts to keep this on topic

 User Rating: 2077   |  Rate This User  Send Private MessageView ProfileView Journal Report this Post to a Moderator | Link

quote:
Original post by ragonastick
Just out of curiosity, how long does compiling usually take for someone using VC++6, on small/medium/large projects (specify your definition of the size too). I have only done really small stuff in C++, so compiling time was no problem. But for my work, I use VB, where compiling time is usually insignificant unless I'm dealing with a huge project (and for those people who think that it is because the language is interpreted... it isn't). So when developing in VB, I've often found myself doing syntax checking just by compiling or mashing my hand on the keyboard to leave a bookmark so I can quickly come back to it before I compile next - that's how quick it is

I wasn't aware that it was such an issue though. So I might change my habits

Trying is the first step towards failure.



my last game was 24,000 lines (w/out comments) and took around 2 min to compile.


 User Rating: 1015   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link
Page:   1 2 »»
All times are ET (US)

Post Reply
 Last Thread Next Thread 
Forum Rules:
You may not post new threads
You may post replies
You may not edit your posts
You may not use HTML in your posts
Jump To:
Administrative Options: