Project "Odyssey", The Design
As promised in my previous post, today I’ll try to take a stab at designing my own game. I told you how important the game design process is and how you should know all that there is to know about your game before writing any code. Well, turns out that it’s not a very easy thing to do! I spent a few days brainstorming in my head and trying to come up with what I wanted to do. Finally, I got a good grasp on the major game mechanics I wanted to do and started to dig deeper and find more ideas. Here’s what I’ve come up with so far.
Project Name
If recall from the last post, I said that it’s pretty important to come up with a project name for your game. For me, I picked the name “Odyssey”! Why do you ask? I don’t know… it’s all I could come up with. I didn’t say it had to be a good name! Just that you should have one! Mine’s lame, but I am gonna stick with it!
Game Description
Odyssey is planned to be a 2D side scrolling shooter that is pretty simple. In one player mode, you play as a flying ship (how original! I know) with enemies attacking you from the right side of the screen.
In two player mode the game really shines! The second player controls a tank on the ground and both players work together to fight the enemies. Each player has a dominant color (indicated by the color of their ship/tank). Enemies that carry your color only you can kill, while other enemies you can’t harm. This leads to a game play where the two players have to work together to eliminate the correct colored enemies otherwise they will both die by an overwhelming force. Enemies not of your color will attempt to attack you more frequently and thus cause a great threat to you that can only be eliminated by your buddy.
In two player mode, the ship can move up/down/left and right while the tank can only move left and right. The ship has less health than the tank as well as less firepower. But the agility/speed it can move with offsets that weakness.
The game will progress via levels. Each level will have a preset number and type of enemies that will attack you ending with some sort of boss battle. Boss battles will utilize the same color based combat, details will differ per boss. You win the game if you finish all the levels. You lose when you consume all the available lives you have. In two player mode, you and your buddy share the same pool of lives, so you both lose when you both consume them all.
The enemies will come in different flavors:
- Neutral color enemies: These guys can be damaged by either player. They are the only type that is available in the single player mode.
- Color matching enemies: These enemies match either of the two players’ color. They can only be killed by the correct player. They will attack the non-matching player more frequently and hence cause a threat to them. These are only available in two player mode.
- Boss: Bosses occur once per level at the end. They are unique per level and need a strategy to beat them.
You have a pool of lives in the game, once you go through them all, you are dead and the game is over. Two player mode both players share the same pool. Players gain an extra life everytime they score 5000 points (might change that based on how the game plays, might increase or decrease it).
The game will have power-ups in multiple flavors. Power-ups are spawned based on certain triggers from dead enemies:
- Health: These will start first floating in the air for 2 seconds to give the ship a chance to get them then will drop on the ground for the tank and stay for 2 seconds before they disappear. These will spawn after you kill X number of enemies. X is to be determined.
- Weapon Fire Rate increase: This power up will increase the firing rate of your weapon. It will spawn and start to float downwards towards the floor. Will live on the floor for 3 secs then disappear. Either player can pick it up. Will spawn after you kill X enemies and will last for 20 seconds indicated by a timer on the HUD.
- Nuke power-up: This power-up will drop randomly and allow you to detonate a nuke that clears all enemies on the screen.
Odyssey might have an achievement system. This is yet to be determined. If it does, it will be based on number of kills, length of time you survived, etc.
Network play is a possibility based on time and cost needed to implement it. Same console/PC play remains as priority 1 for now.
Game will support Xbox and PC and use keyboard/controller.
Game Story
The game will not really have much of a story. Your basic alien bad guys attacking our planet and we have two new war machines in the form of a ship and tank that work together to fend off the attacks. I might re-think the story later as I get more of the game mechanics nailed down.
Inspirations
The game is inspired by a lot of games out there. The first one that comes to mind is Heavy Weapon on Xbox Live Arcade. I like the way the tanks in that game move around and the way the enemies attack. Here’s a screenshot of Heavy Weapon for reference:
Things I like:
- I like how the tanks move horizontally from that game. I will use that same motion in Odyssey.
- I like the coloring of the tanks to differentiate them. This is basically a Color.Blue argument to spriteBatch that tints the color of the sprite. I will use that same method in Odyssey two player mode.
- I might borrow some of the weapon ideas from here too.
Another game I looked at is Jet’n'Guns seen here:
I particularly like the HUD in this game. Check out how the health is indicated by the small gauge at the bottom left corner. Simple HUD, and very non-obtrusive. The graphics are cool as well, not that I expect to get anywhere close to that kind of work ;)
Experimental Ideas
I have this one idea that I am experimenting with in my mind because I am not sure how well it will work. The game will inevitably reach a point where one of the players has more health than the other one and wants to help them out. I am thinking of integrating an ability that sits on a long cooldown timer that allows you to transfer some of your health to your buddy to help them out. You lose that health of course, but you give them the boost they need to stay in the game and not consume a life. Still thinking about that one though.
So what’s next?
So now that I have a basic idea of what I want Odyssey to look and play like, I will start to think about what technologies and techniques I want to use for the game. Next post, we’ll talk about a very popular and heavily used sample that I plan to use for this game. I am talking about the GameState Management sample that you can grab from http://creators.xna.com. It’ll be a good idea to take a look at it now and be familiar with it in preparation for next post!
Thanks for reading! I'd love to hear your thoughts, feel free to leave a comment below. Don't forget to subscribe to my RSS Feed!
January 29th, 2008 at 8:30 pm
Wow. Grab the bull by the horns will ya? Tackling the GameState Management piece first is the right way to go. It takes a bit of getting used to, but that may just be me. What intrigues me most is the sprites you’re going to use. I could make a small fortune as a sprite artist right now if only I could draw a straight line or remember all that math from twenty years ago regarding right triangles and solving for ABC and abc. You know. All that stuff that started with Pythagoras that we learned to do cos-1 with? Argg!! You young guys are kicking my arcsin!!
Keep up the frequent posts.
January 29th, 2008 at 9:33 pm
haha… yeah. I thought about starting with the game state management sample first for a while. I wasn’t sure if it was the right “next steps” or not. But after thinking about it, I figured that it does take a bit of getting used to and I would like to get that out of the way sooner than later. This way I can focus on the other interesting stuff without having to tangent halfway through to shove all the work we’ve done in the game state management sample. I consider it part of the framework I’ll be using for Odyssey.
Thanks for the feedback :)
January 30th, 2008 at 11:15 am
Your ideas here certainly under that category of ‘done before but different and interesting’ with game specific details and the co-op ideas you’ve listed. For some reason it reminds me of Starfox 64 (aka Lylat Wars) on the N64 where in some levels you were the tank being assisted by your flying team-mates. :)
This series looks like it could be an interesting one! Can I ask though how you actually came to the final choices about some parts of the plan? Trying to choose which ideas one has that are good and which are bad is a tricky problem for myself where I tend to rave about every idea, review it and find several things ‘wrong’ with it. :/
January 30th, 2008 at 12:49 pm
“Can I ask though how you actually came to the final choices about some parts of the plan?”
Ah…a good question indeed :) I actually am trying very hard to not over complicate things with the game I choose mainly for educational purposes. So that was my “bar” if you will. I want this series to walk readers through the steps of making a game while trying hard not to use an example that is too detailed. So I initially had more ideas, but I got rid of them in favor of simplicity.
But your question is a really good one actually. It sparked an idea that I *might* blog about if I have the chance. Actually, it’s an idea I had a while ago but never got around to doing. I won’t say what in case I can’t deliver and I wouldn’t want to disappoint you guys ;)
February 1st, 2008 at 9:14 am
Love the articles so far. Can’t wait to read more. I am curious though whether or not you will digress into the details of making classes for certain things and the why behind it? That seems to be an issue for me at this point, but then again I have only just started to learn OOP in college and would venture to say that the longer I develop the better at it I will get.
Anyhow, great work dude and keep them coming!!