   Prepping for a major project... Suggestions?
  Summer is almost here, and I'm interested in working on my first major (as in, not an arcade game clone) programming project.This isn't my first shot at such a project.  I've started other major projects in the past, and none ever really took off.  I'm pretty sure that this is due primarily to a poor period of preparation beforehand (planning the code and working out the details of the game) rather than a total lack of skill on my part.It's a bit difficult to give good ideas of the size of the project I'm going to work on, since every project is different.  I'm thinking along the lines of a 2-D little RPG, shooter, platformer... sort of on par with SNES mario games or Illusion of Gaia (but much smaller in terms of content).What I'm looking for is suggestions for planning such a project; different ideas of how to document features that I want to include; really, anything you have found helpful in your own projects that wasn't directly related to coding (although I would like suggestion on how to plan out code - in the past, I've just sort of started...)Sort of general, but please pipe in with any suggestions you've got (including links).  Thanks a bunch!   
  Not sure if this is what you're really after but here are a couple of things I've thought about when trying to figure out why a lot of my stuff never gets finished. I'm a hobbyist, so I don't really know what I'm talking about but...One thing I think is important is to establish the overall concept of the game at an early stage, the "feeling" you want to deliver throughout the game or whatever. This could be anything really, I got the idea for the project I'm currently working on from a movie and a song, together they sum up the concept of the whole idea quite well. It's good to have something like this to keep you from losing focus from your initial idea. Go back to your sources of inspiration some times during development.Another thing that isn't really about code structuring and stuff like that is to restrict the game concept to something manageable. If you're working alone or with a few friends it easily becomes more work than you originally planned. You don't want to have to cut back on features after months of development because you realize that it won't get finished if you don't, this tends to result in crap. Instead, try to point out the features that are most important for your game and focus on these things first. This way you can polish the important stuff to "perfection" and add the not-so-important-but-cool stuff later if you find the time.   ;  Beware of UI stuff. 'Simple' games still vary a lot in required content, and UI heavy games [RPGs, Strategy games] tend to take far, far longer to knock up all that 'stuff'. A nice 2d shooter doesn't really have that, so you've a lot less to do even though at first glance they appear to be equal, or even the RPG 'simpiler' since it doesn't have realtime requirements.   ;  Yeah, those are the kinds of ideas I'm looking for.  Thanks!  I'm also looking for information on code structure (in a general sense, especially in terms of plotting out how it will all work together).  Any other ideas?   ;  Well for starters, you want to use OOP! OOP is your friend ;). Beyond that though I seriously recommend that you plan out what you want to do before you do it. With a game project I was working on, I was working with a project manager who had the "vision" for the game idea. He wasn't always effective with communicating his ideas and sometimes I would have to go back and rewrite things becuase he would want an extra dialog or something wouldn't work the way he wanted. The game project ended up taking alot longer then it should of, simply becuase of poor communication and planning!If you really want to finish a game idea, then I think it is important to pick an idea that is practical for your skill level, and your team size. You have to realize that an MMORPG game is probally more work then one person can manage!If you have a big team then you can make a big game, but remember if your a lone wolf, then you need to determine the work load required to make your game.It is very easy to pick a project and start on a project that will be impossible for you to complete, simply becuase it is way too much work for one person. Take for example if you take 3 hours to make a decent 3d model, and you think you will need 200 models then that is 600 hours of work. If you work on it for 4 hours a day even that is  150 days , 21 weeks, or 5 months JUST working on models. Try to get a picture of how long your game will take to complete before hand, and make sure that you have enough time to complete it. I think that will help ensure that you pick a manageable project.   ;  Take more time in design. Adjusting features in design takes you five minutes. Adjusting them in code could take five months.You want a functional specification and a technical specification. You want a detailed design document. You want to then put all that stuff down and come back to it a week later and make sure it all still makes sense.A robust and solid design is the key to good software.   ;  Thanks for the suggestions!  I'm definitely not starting an MMO ;)  If I did a multiplayer game, it would be more along the lines of a BMOCD (*barely* multiplayer chat dungeon) - especially considering that I have no experience with networking!Anyways, can anyone give some information on time spent preparing for their own projects, before writing any code?  A description of the project, the team (size and experience), and the prep activities you did would be awesome.Thanks!   ;  Well I started messing around with an online, evolving, design document. I want to make a multiplayer, deathmatch shooter of the same mould as Unreal Tournament. This is the first project I am trying with a proper design phase where I will document the engine and the game. I am even trying to learn some UML which has already helped me a lot with designing and tying together my OpenAL based audio system (not reflected on the web site as I haven't uploaded for a while). Early Engagement Design DocumentBe prepared to adjust your design as you go along and to rewrite code and systems as you update your design. It's unlikley you'll be able to write your entire project down before you start coding because some things you'll just not know yet...  I'm also using free librarys to speed up development and save reinventing the wheel.   