Tutorial: Pre-development Planning.

Prologue:

Too many times I would start a BGE project, only to see it crumble into failure. I would get to the point where I would have most of the game complete, but then I would find a bunch of bugs, inconsistencies, unoptimized game resources, unstable game play and just overall bad development choices. Since I just kinda “jumped” into the development process my framework was very unorganized, and generally very messy. Some of the problems I would find later in the game would be so deeply rooted, that changing/removing/fixing them would mean rebuilding the whole game from scratch anyway. Long story short, I would become frustrated, and the project would soon be abandoned. The problem became obvious:

I didn’t think things trough at the beginning

I’m writing this “Pre-development” tutorial in hopes that it will encourage/help others to once again take up the seemingly dying art of solid planing prior to development.

!PLEASE NOTE!

Even though the theory behind the efficiency of this planning method seems to be logically sound for anyone, I by no means claim it to be the “best” method for everyone. It is simply my method, and as such it’s far from perfect.

Pre-development Planning

Organization:

Usually everyone has a vague idea of what kind of game they want to make. However, this vague idea alone isn’t enough to actually fire up blender and start work (for us ordinary humans at least), but it’s just enough to think up a relevant project name and create a working directory tree, under which you can organize all your game related resources.

IE: If I was working on an asteroids clone with the BGE, I would probably name it “Blenderoids” (I know, it’s corny, but this is just for the sake of the argument, so bear with me). Then I would pick a place somewhere on my system (desktop for example) and I would create a new directory called “Blenderoids”. In this directory I would create 3 very important files: “Mission”, “Technical” and “Resource_List”, along with separate sub-directories for my textures, sounds, .blend files, executables/binaries, scripts etc. In general your working directory tree would look something like this:

http://i33.photobucket.com/albums/d55/0social0/Tut_Plan.png

Now I’m not saying that your directory tree has to look “exactly” like the one above (because different projects will probably require slightly different resource groups), but some sort of an organizational structure should be implemented, regardless of the project at hand. This will keep your work centralized, which will make finding/handling things much easier.

Mission:

The “Mission” file would be a document where your “vague idea” would became described in further detail, therefore becoming a “clear idea”. Basically you would type out what you already know, so as to establish a crystal clear sense of what your trying to accomplish.

IE: Blenderoids is a 2d game in which the player controls a ship with arrow keys, and shoots projectiles with the space bar at asteroids which randomly float about. When an asteroid is shot it splits into 2 smaller asteroids, when one of the split asteroids is hit it explodes and it is destroyed. Each time any asteroid is hit, the player scores 100 points. The player has 3 lives. Each time an asteroid hits the player ship, the player will lose a life, and the ship will explode. Then the ship will appear in the center of the screen, and the game will continue on. When the player destroys all the asteroids he/she moves on to a new level. In each new level the asteroids velocity will be incremented.

…And so on. As I said, a detailed description of your game, and what happens in it.

Technical:

The “Technical” file would be a document in which you describe the means and techniques to be used in order to make the game. Questions like: What logic bricks to use and in which situations? Where would a script do better? What to link with what? etc would be answered here. This is where you take the statements from the “Mission” file and translate them into technical documentation that describes exactly how to make them work within the BGE.

IE: The ship movement in Blenderoids will be handled by a script. The logic brick setup:

Up
Down
Left
Right
v
v
Python Script
v
v
Movement

…And so forth. For each statement in the “Mission” file, you would make a technical statement in the “Technical” file. (You can name these files anything you want, you don’t have to use the overly serious filenames that I am using here. I realize that some of this can sound a little silly, but again, it’s for the sake of the argument)

Resource_List:

The “Resource_List” file almost explains itself: It’s a list of resources that will make up your game. Resources (in the general game development sense) are things like meshes, textures, sounds, scripts etc. It’s pretty much everything you can see and hear in your game (along with some things you can’t). Weather you make all these resources by yourself, or simply gather them for your use is completely up to you. Either way this list is something you should make before starting anything.

IE:
64x64 asteroid texture, to be mapped to the asteroid mesh object.

An explosion sound for the asteroid destruction sequence.

Also, it’s a good idea to enforce some sort of a naming standard when storing resources in their respective groupings (organizational directories that we created before). For example: I would name the previously described asteroid texture asteroid_0, or asteroid_brown, or asteroid_silver depending on the situation. In any case a naming standard that can help you efficiently classify and differentiate resources will keep things neat, which can only help.

Resource Gathering/Creation:

Just like the “Mission” file is satisfied by the “Technical” file, so must the “Resource_List” be satisfied with actual resources. This is where you start hacking things off the list by either making them or getting them. You want to have “all” the resources on the list stored in their respective directories before you move on.

Conclusion:

Now that you have all of this completed, you are much better prepared because:

*You know what you want to do
*You know how to actually do it
*You already have all the resources gathered

…Which means: You’ll go into blender knowing “exactly” what to do, instead of starring off into the screen for half an hour, trying to figure out where to start (I call that “zombie mode”).

Pre-development planning provides more than just a project road map. It segments your project into very manageable blocks which you can fit into any schedule. This results in your development time being cut in half (if not more).

Epilogue:

Do you have to do this in order to make a good game? Is this all it takes? The answer to both of those questions is absolutely not. I mean it will definitely increase your chances of success, but this method of somewhat “excessive” planning is not the end all solution. Actually it’s not even the key.

The key here is “discipline”. You can have the best laid plans and still fail miserably if you don’t have the discipline to enforce the plan you set (and vice versa). You have to be driven and determined.

With that said, this tutorial would probably work best with a development project that you are truly passionate about.

I hope you find some of theese tips useful in your future endeavors.

Social.

My wife and I were just talking last night about how I start so many projects and rarely finish them. I know that I need a better workflow, and I think that a lot of what you’re suggesting here makes good sense. Thanks for taking the time to write it out. It’s really appreciated.

My wife and I were just talking last night about how I start so many projects and rarely finish them.
Just about everyone I know has brought that up about me. Could there be some truth to it? Naah. I’ve developed a good rationalization for it. Most of the time I start projects too early because it’s more fun to work on something than random events but it’s not all that important that I finish. I think Social’s methods can easily be used after a project gets started and it gets messy. I do this all the time and I find I can much better work out an organization scheme after I’ve been working for a while. A lot of projects I just lose interest in, but I learned something along the way so it still seems o.k. I do enjoy reading your organization methods, though, Social. It’s very basic and isn’t the step by step thing that some people insist on. This is something even I would consider doing.
This probably sounds wierd but after working on this adventure game for about a month now, I’m about ready to start organizing it like your talking about. I’ve written and rewritten scripts, tried things two or three different ways, put things in a scene and taken them back out, and I’m pretty sure I know what I want to do now.

Good thread Social, it amazing how many possible stumbling blocks you can finding just by making a feature a list and seeing which ones you can do or what you need to find resources for.

I think a lot of people think that game companies can program andy feature they like, but they spend a lot of time in pre production listing the things they can and can’t do or dont have the time for.

That is awesome work my man. Pre-planning is a major part of game design; Especially when you have to direct other people! Also, Social, where did you get those icons you used for the directory structure?

Keep up the great work.

the icons look like ubuntu

Thanks for the reply scabootssca. What is ubuntu drapper?

a linux distro, the icons are the defaults file icons, very nice and shiny.

you mean dapper drake?

Well, I’m glad that somebody brought this up. I never wouldve thought of it. I too have this problem…

Hi Social, I saw where you started this conversation in another thread and I am glad that you went ahead and wrote this tut to help everyone get a good idea on how to think before you get so deep into your game and get bummed because you begin to have problems that you might not if you had done a little planning. So I say thankyou…

Ahh… You noticed that.

Yea, I figured a “general guideline” style would do much better not only to present the core idea, but also to keep it flexible. I mean the whole thing is dynamic in nature, from project to project, so you can’t really write a single detailed step by step instruction set to cover everything.

guru202>

As others already stated, the icons are from a Ubuntu 6.06 Linux distro.

matro>

Actually it was your “I just don’t know why you haven’t done it yet” response that got me to write it.

Everyone>

Thanks for the compliments (I’m also looking for criticism). I’m glad you guys find this to be usefull. Your opinions are greatly appreciated.

I though of something you might add, within .blends you have some options. You can keep 1 master file and work everything within that or have sperate .blends for each model, or level.

Also i find that during projects i get to the point where i have to branch things off i fear of making irreversable changes (or changes that would take a lot of time to undo). So maybe there needs to be a sub-folder for such things.

I dont know if im just stating the obvious, or if this is the kind of critique you were looking for but what the hey.

It’d be good if we eventually come up with a complete resource for planning a blender game.

The option to branch off into several files and even more subdirectories presents the flexibility I was talking about before. I didn’t want to specify any one way you “may” choose to do so, because that’s a decision that everyone can easily make for themselves, and also it’s something that would vary from project to project. The directory tree that I presented in the tutorial was simply there to say: “You should have an organized structure, no matter what that structure looks like, as long as it’s organized.” I just wanted to convey that generall core idea, the rest I leave up to the developer.

Also i find that during projects i get to the point where i have to branch things off i fear of making irreversable changes (or changes that would take a lot of time to undo). So maybe there needs to be a sub-folder for such things.
Well, if you have any kind of a backup system on your PC, that issue would take care of itself. I personally back up all my important files to a thumdrive, especially before I make the kind of changes that you are talking about. That way I have a backup: Either if I mess anything up, or if a fatal hard drive failure occurs. (a backup folder is a good idea, but that won’t cover you if there is a HD failure. That method would be best if used with an external storage device)

It’d be good if we eventually come up with a complete resource for planning a blender game.
I doubt something like that would be possible. I mean it would, but you would have to write one for every game type out there, because it would differ from gametype to gametype. Really the only way to “cover most of it with one net” would be with general guidelines. In my tutorial the only constant is the method itself. The 3 files don’t have to be 3 files, they can be 1 or 10 depending on preference. The directory structure can look like whatever you want it to look.

As long as you have an organized structure, and you describe: (the game, how to make it, and the resources to be used), everything else is just a matter of preference.

It’d be good if we eventually come up with a complete resource for planning a blender game.

I agree with Social a basic set of guidelines are the best thing.

But also a Thread on this topic would be great, that way you get an idea of how to start a project and have a place to ask questions, and get feedback on the planning side of things.

I have been working on my own basic blender setup and and workflow template so that when I start a project I have a better chance of success to get it finished:)

Hey Social, awesome tutorial! Just what I needed!

Great idea, Social.
thanks for doing this.
I think you have summarized it nicely.

I think everyone has the problem of finishing about 10% of total projects, and this is a good way to avoid that.

I’m also bumping this thread so more people see it.:yes:

well, my current projekt: pirateworld had no plan at all, and I feel like its time to make a demo of it, when start a bit from scratch with it. I will now have time to test ur predevelpoentplan.

Definitely a good read, Social! Thanks for writing it, as I also rarely finish projects. However, my goal is usually to learn as much as possible from each game I work on, not necessarily to finish it. It is nice to finish them though…

~~Stu