XNA Game Development Part 2
A Simplified Approach
I have been trying to do game development in my own time for some time now. I have started many a project, tried to get involved with others and started many more a project. Well I am still here, with only 3 real games under my belt, all courtesy of a game development course.
So, how was I able to do those but not anything else. Motivation, giving up too easily, time poor, insert excuse here. There is any number of reasons. But, have started, humbly started the beginnings of a game with my friend Michael. I have posted about it here.
But the way I went about developing this I took from some tips from a talk at TechEd. Sure, plotting out the ideas first, discussing the direction what needs to be done. These are standard things I do when starting any project be it a commercial application or a personal one, be it a script be it a game. But the difference with this was not going too far.
I cannot count the number of times I started development on something, well not ever started development, I started my idea. I had an idea for a game, yes, I knew I could. Then the game can have this, and this and this. Wait, I know what if this happens and them while this is happening that also happens making it harder and needing more strategy. I am sure I am not the only one guilty of that, and I progress so far that I will not be able to turn around and look back at the humble beginnings that caused this mess of creative juice to simply flow out everywhere.
So, we did this, I, in some ways, pitched him the idea I had. He liked it, I used examples and demonstrated using the TV screen the room I was in. But then I preposed a phased approach to the game. Sure this is nothing new, I have even tried myself, what I have done though is I documented various steps we needed to achieve.
A phased approach isn’t anything new in software development, but unlike a typical phased method, we will not be releasing any of the phases except the final one. Each phase is merely a stepping stone to the next and so on, until we have completed the game.
Each were small bite size pieces.
- Create the sprite.
- Draw the sprite on the screen.
- Have the sprite move using the keyboard.
- Create a class for the sprite
- Have the sprite loaded with the class
- Move the sprite with the class, passing in the keyboard to screen interpretation (the keyboard information should not exist)
- Draw the sprite with the class
- Draw a second sprite on the screen, now using the class created above.
- Have the second sprite move using the keyboard.
- Restrict them within the viewport bounds (which is the screen).
We have had a few issues and we are both stuck on the same problem. Thankfully we both will be coming together on Saturday and to Skype and get this last one done.
We will then look at the next phase which we will increase the functionality of it bit by bit.
So, this to me has worked thus far and certainly for Michael as well. So I will lay out the approach that I think I will take in the future for all games, and in essence all applications I develop at home.
- Plan your idea, be as grand in the idea as you want, this should be loosely formulated on paper or in your head.
- Pitch the idea. Sell it to someone who may help you get interested. Of even the team that you will be developing it with.
- Enable them to respond to the idea you have pitched. Get to to include any feedback.
- If this is the first session, if working in a team, get them all to pitch their ideas. Then vote on it, see The Vote when dealing with small teams.
- If you have worked out your plan as part of the voting process, then you should look, ONLY at phase 1. You phase 1 should give you satisfaction when complete. See Getting Satisfaction for what I mean.
This does work best when it is a larger group but what about smaller groups, 2-3 or 4 members. Well firstly it will need to be silent, it is best to not disturb the make up or create resentment or anything of that nature. This will create problems further down. Since we are working in a team of 2, I will look at these options.
If the other person in the team doesn’t pitch an idea then it is easy, which was the case, but this isn’t always the case. You want the simplest game first if it IS your first game together. Even if you have developed games before, working with a new team always makes it more difficult and having a more difficult idea to implement can create additional tension than is needed.
Then look at each others ideas briefly and come up with the phased approach, what needs to be done in phase 1, in order to progress the game Due to the simplicity of the idea, draw the two main sprites of the game on the screen and getting them moving around was not only simple but it was needed for the first step since everything else relied upon this. Break the ideas down into those components, very much like a project manager determining the granularity of the tasks and the milestones to move other tasks on.
Once this is happened, then look at the number of steps and the simplicity of each. It will soon be evident which of the ideas is the easiest to make and develop.
What am I meaning by this? Well, with ours, we had an interactive product. The two sprites were able to be moved on the screen with the user pressing the keys required. To me this is a satisfying result, I was able to sit back and know I have completed something.
If you decide that your first step is to create the shell of the game, the empty classes needed for the game. The asset folders created. At the end of all of this you will not be able to do anything. You have a framework but nothing to see. So I recommended getting elements drawn on the screen (for a game) have them move in the way they should. This will create satisfaction. It is also something you can show. Especially if you have investors, and financial stake holders.
The Money Game
If on the odd chance you have financial backing for the project. It is best not to assume that they have give you the cash and you can now, sit where you preferred space for programming is, and develop the game from start to finish. What a perfect world it would be. So, using this approach, splitting it up into small bit size pieces, having each of these pieces being satisfying then you can be ready for an investor or stake-holder meeting at anytime and show things off.
If I was having this scenario, I could easily show the work I have done with my game, the same with Michael. And they would be satisfied with the result, their confidence in your would increase and forthwith the ability to gain more leverage with them if things start to head south, they know that this is just a small bump and you can get back on track. But if you miss these marks every time, their confidence in your is eroded and is difficult to get back.
Some of this might seem very straight forward. Breaking it up into small pieces, make those pieces do something that can help inspire/motivate your to the next area. But, for me, so many times I was unable to see the trees for the forest. I was looking at the bigger picture, which was far more complex to tackle than was the steps I mentioned before. I would then feel discouraged about progressing or even starting when I was unable to see what it was I was working on. So, now with these smaller elements I have nearly finished all of the items I needed to. I am almost at the second part of it. We have not wavered yet. Time will tell but I am feeling confident at the moment.