The question at the heart of all this is why aren’t there any good RTS games on consoles? The answer is usually “because there isn’t a mouse” and while that’s OK as a first pass it doesn’t actually address the question. Is the mouse actually indispensible? Can the controller do a similar job if it tries? As I go down this road I’m going to look at a series of RTS games on the 360 and see what they do right and, more importantly, what they do wrong. I’m then going to implement various different things to see what works and what doesn’t.
In order to do that I will need a game engine. When you put it like that it sounds all big and scary, so what I need to start with is a small first stage to work towards. This first step has to result in something that runs and then lets me interact with it in some kind of meaningful way. I also need this to happen as quickly as possible so that I have started with enough inertia to keep going.
This means I need to pair down what I’m doing to start with to the smallest core possible. Anything fancy needs to be discarded and anything difficult needs to go as well.
The First Iteration
The first iteration of the game will be a 2d sprite based top down game. There are two sides, red and blue, and the graphics are the same for both except for the colours. You will be able to create units from a fixed base and move them around the map. You win by moving a unit onto the enemy base and there are no enemy units or AI. The landscape will be a flat colour with no obstacles to cause path finding issues and it will all be visible on screen at the same time. There will be no zooming or panning of the camera. There will also be no menus, the game starts playing and ends when you win.
Yes, that is the dullest game ever and can be won by creating a unit and sending them in a straight line to the enemy base. It does however give me something with a win condition that is playable from this iteration onwards as I add new features.
From this I created a quick list of features I need for this iteration:
- Basic application window (on the 360)
- A World that is the same size as the display
- Bases (in the middle of the short edges of the window)
- Unit selection (need to select the base to create units, select the units to move them)
- Unit creation
- Unit Movement
- The ability to win (move unit into the opposing base)
No doubt I missed something massive here.
The reason for hitting the 360 from the word go is that it’s easy to do. In fact it sounds easier for me to always target it then to bring support in for it at a later date as I won’t have gone down any blind alleys along the way.
Potential Next Iterations
After I have this created I need to think about where step 2 will go. I think it is important to know where you are going next as that will guide your decisions for each iteration, but I’ll have to be careful not to look too far ahead and start coding things that aren’t needed yet. From this step on I’m thinking of very small iterations that just add one or two things and nothing should have as many features as the first one. The rules of iterative programming say don’t add features that you think you’ll need so this will basically be slap them in, refactor them in the future as I add new things.
The short list that I’ve come up with is quite simple:
- Local Multiplayer
- Menus
- Music (ability to play, not composing)
- Sound Effects
I think all of these are quite important for various reasons. The menus are needed in order to make it a “proper” looking game. Music will be needed at some point, as will sound effects and the earlier I get them in the sooner I can tick them off the list.
Multiplayer may seem like the odd one out here, but since the goal is to be playable at all times it gives a competitive experience with the least amount of effort compared to actually adding some AI which, I have to admit, I am clueless about at the moment.
I suspect I shall start with multiplayer and then add menus in order to satisfy my goals and design philosophy. Technically after I have these four features it could be considered a fully developed game (albeit a boring one) that is missing features required to actually sell the game on 360.