Jump to content
  • Advertisement
Sign in to follow this  
basement

bottom-up vs. top-down

This topic is 4674 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

Uhm, I have to admit I'm not really a software engineering guy but I'm working on a new project and have to think a lot about it. What we're doing on this project right now (a PC game) is implementing it in a top down approach i.e. we're doing most/all the user interface first, then we'll fill in the blanks like coding up the 3D engine features, the actual gamecode and so on. I'm much more used to doing it the other way though... My peers though seem to like with playing around in the interface and dreaming up the game that would be behind it someday. I'm reading the book "The Pragmatic Programmer" right now which seems to suggest that it is a good idea to have the user interface working first, so I feel I'm doing something right with this project. Do you know of any additional good resources I could look at? It is a rather fundamental thing doing a larger project this way. EDIT: formatting

Share this post


Link to post
Share on other sites
Advertisement
Guest Anonymous Poster
User Interfaces are easy - 3D Games are hard.

It is ok to do the interface now, as long as you do more than just that.

Top down vs bottom up, you will use both in a large project, don't worry about it.

Share this post


Link to post
Share on other sites
The order that you work on things is determined by dependencies -- if A can't be done without B, then obviously B must be done first.

The next criteria depends on who you talk to. In my opinion, the next criteria is risk (as measured by the probability of failure times the impact of failure). That is, if A and B are independent, the first one to work on should be the one that is most likely to fail or the one whose failure will have the biggest impact on the project.

I assume you are doing the UI first because development of the rest of the game depends on it. Well, I'm sure that some of the development depends on getting some of the UI working, but not all the development depends on a fully-functioning UI.

Suppose you start out getting the UI fully functional. Then when you finally start on the graphics, you find out that it is going to take a lot longer than you thought. Now you wish you didn't spend so much time on the UI because it is a lot less important.

Share this post


Link to post
Share on other sites
Quote:
Original post by basement
What we're doing on this project right now (a PC game) is implementing it in a top down approach i.e. we're doing most/all the user interface first, then we'll fill in the blanks like coding up the 3D engine features, the actual gamecode and so on. I'm much more used to doing it the other way though... My peers though seem to like with playing around in the interface and dreaming up the game that would be behind it someday.


This is a very backwards way of developing a game. It's analogous to writing a book by beginning with the cover. To hear the graphics engine described as a blank to be filled in after implementing the user interface is IMHO a dangerous outlook.

Just because you are working on the UI first doesn't mean you are using a top-down approach. Top-down refers to beginning with the high-level modules and working down towards low-level modules. Usually this is in reference to design, not implementation. Considering it as an implementation scheme, starting with the user interface isn't starting at the top. There must be higher-level code than the user interface since something drives the UI. Since other modules are dependent on the UI but the UI isn't dependent on them, the other modules are by definition necessarily closer to the top than UI; therefore, if you truly are implementing top-down, you shouldn't start with UI.


Quote:

I'm reading the book "The Pragmatic Programmer" right now which seems to suggest that it is a good idea to have the user interface working first, so I feel I'm doing something right with this project.


IMHO you are not starting out right. I've seen projects that started out with UI, and they failed badly. UI (at least as the term is used in games) is window dressing. You don't put up the curtains before laying the foundation.

Quote:

Do you know of any additional good resources I could look at? It is a rather fundamental thing doing a larger project this way.


Sadly I can't. The Game Programming Gems books have some good gems in there, but they don't cover architectural issues or development strategies too much. I haven't looked at them lately, but I wasn't pleased with the ones from a few years ago.

Share this post


Link to post
Share on other sites
You should alternate between the two methods. Also, google middle out method as well. Game is broken up in two things. One is the engine, low level thing. The other is the game itself ie. entity interactions, etc. The engine I think is better done bottom up in stages, testing engine components and seeing whether something is possible and doable. The game layer has its own problems like will the game be fun, should I use levels, roam free, etc. Lots of decisions based on your game and technologies.

Share this post


Link to post
Share on other sites
^ yes.

And you might look into Multiplayer FPS programming (i've ish'd the title). In that book they create an 'engine' and a 'game'.

As they are developing the engine, they continue to create test programs that import the engine for testing of specific pieces.

This is what i wish to highlight. They have a great way to build and continue testing various pieces of the engine. You may even keep your original test programs, and use them to be sure nothing breaks. Depending on realm of the test.

This method both as a teaching aid for book chapters (chapter breakup) and as a development method in general is well served and worth doing. imo

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!