So yesterday I didn't cut any code for my game but I was able to do a tiny bit of research on the XNA Game Development Technology and the communities out there and do you know what? I feel I'm a bit closer to my goal. The bad news is today I didn't cut code either. However, not all is lost because I wanted to get my ideas on paper and today I just did that.
Today, I began to jot down notes about the game and how I felt the visual elements would interact with each other. Unlike my workplace, my personal level of documentation is nothing more than a task list or a mind map of my ideas; it helps me streamline my solutions quiet effectively and circumvent the long process of articulating each thought to the n-th degree.
I truly dislike documentation (because I have an extremely hard time articulating my thought and solutions); however, because I tend to do a really good job with documentation I tend to get stuck writing the buggers. But as a generalist remark: 'No Developer likes documentation.'
For now let's stick with my basic notes and call this post a living document. Here are my notes, fresh, from after watching the new first episode of Merlin second season!
Actually, a quick recommendation to anyone who is reading this (if anyone is): I truly recommend you envelope yourself in the medium or task you're trying to tackle. Be one with moment and feel it!
For instance: Are you writing a fantasy script / game? What would the music of the genre sound like? For me the Conan the Barbarian soundtrack by Basil Poledouris is frackin awesome. There are many other good CD's out there, which I listen to (some who even use medival instruments, but Conan I keep returning to. It's a creative trigger for me.
Ask yourself what would the imagery look like? Time to surf google for artist renditions of fantasy!
What would the game feel like? Start playing some of your favorite games that inspire you, be wary though, have some self control and don't let it absorb your time.
Anyhow, onto the documentation...
Screens, Scenes, and Sprites. Oh My! (groan...)
The first thing that came to mind were the screens, I thought the following would suffice:
Menu Screen
Character Customisation Screen
Loading Screen?
Battle Ground
The Menu Screen
Ok. So, the thought here is when the game loads a huge title is displayed: Wizard Wars. The player is prompted with 3 menu items: 1 Player Game, 2 Player Game, and Exit.
Since I'm targetting the PC platform, as a non-networked game to start, I picture myself running my mouse over each menu option and the visual element of the menu item changes, along with a sound to indicate that I am over a curent menu item. And as I move my mouse away, it changes back, and possibly an exit mouse sound.
Maybe on the screen somewhere is a brazier alit with a magical tome open right beside it, OR, maybe the tome is the menu!
I hear the menu music as mellow, not obtrusive or piercing. On a menu item select, a confirmation sound bellows to indicate the players selection.
The Esc key will always return me to the previous screens or desktop.
The menu screen must feel...dark, like a really important ritual is about to happen and thus the music should build up.
1 Player Game - > Customize Character(s)
2 Player Game - > Customize Character(s)
Exit - > Back to Windows
Notes:
So the first thing I pick up here are a couple things:
First and foremost, my artistic abilities suck crap, so I may have to hire an artist (now that i've said that, lets get techy)
graphical objects will be positioned within a scene on each screen / window.
Menu items will be represented grapically, possibly animated, and have sound / animation effects triggered by user input or a time line.
I have an animated scene involving a brazier or fire on a stick
IF I was to move this game to the xbox, I'd have to track which menu item is currently selected (unless I do a mouse pointer type thing.)
WindowObject has a
scene
A Scene has many
GameObjects
GameObject has a
position
graphic or animation
MenuObject is a GameObject which has a
mouse in, mouse out, and click event which either does something graphically (animation), does something with sound, or moves to another screen.
Character Customisation Screen
With either the 1 or 2 player option selected, both selections will come to this screen; a wizard requires a name, powers, and vestements of course!
Player one will configure his character first and then player two. I considered a split screen for PC but to have two people fighting over a keyboard would probably suck. For XBox, a split screen could work; maybe when I get into the networking portion (phase 2 blog?) of this game I will remove the 2 player option for PC and provide only multiplayer and I will leave 2 player for xbox...hmm...
Anyhow...I picture the creation process as follows:
Name: (textbox / keyboard entry) - for xbox, this would have to be different.
Robe Color: (color box, or something)
Stats: Speed, Oomph, and Health. (as sliders) 1 as minimum and 10 as maximum.
Ok, Back, and Cancel buttons / options.
Each stat has a benefit which are listed below. The idea is the player decides if he wants his wizard to run fast, be a tank and ... hit with a purse.Regardless, the player will have a pool of 12 points to use. Ideally, A balanced wizard will have 5 in each attribute.
Spells? The only spell of choice is a ball of fire which comes without question.
The music and screen should still feel like a ritual.
The Character
Speed
Basically, how fast your character moves and casts.
Oomph
(Best Monster Truck Voice): PURE POWAH!!! The damage output of your fireball.
Health
How much damage you can take.
Notes:
I realise the game dynamics may sound uninteresting at the moment; but I think after a couple releases, we could have some other grand ideas such as: saved profiles, gold to upgrade arsenal of spells, talents, etc...but for now...a vanilla fireball thrower mage will suffice for this experiment.
OK. So...
a MenuObject may
need to be loosely coupled to allow future items such as networking?
may be a button?
a CharacterObject has a
name
speed
oomph
health
and a funky robe color.
cap on the three stats (1-10)
an arsenal of 1 spell (possibly could expand this)
The Loading Screen
As is.
The Battleground Screen
For now, I'm keeping the screen as max resolution for the PC. The screen isn't going to move or even be a split screen. I'm not aiming high here because I want to see what level of change is involved when new features / concepts are added to game content. I'm interested to find out if we could apply techniques such as MVC or MVVM to this type of development or is it too tightly coupled?
This reminds me when when my best friend and I were brainstorming our game idea (this is going back a while...1994, 6?) and he cringed at the thought of bringing business technology into games, especially when I suggested a database to store character information and COM / DCOM as the medium, but it seems I wasn't far off (reflecting); just like his implementation of a xml "config file" for dynamic direct-x menus back before .net in 1999...anyhow...i digress...
The Battle
One screen, two characters lobing balls of fire at each other...It doesn't get better than that.
Every so often a scroll appears...and the fireballs bounce off walls, or the wizard has rapid fire, or even scrolls of healing! The scroll options are endless. Two bars at the top, each the color of the wizard (with their name beside the bar) indicate how much health they have. Possibly the appearance of the scrolls means the battle is taking too long?
I'm thinking 1 player controls: up, down, left, right and space to fire the button. Or even possibly, mouse click and shift - mouse button to fire a spell in the direction they are facing.
Two player controls: a, s, d, f and space AND arrows (up, down, left, right) and Del key or Crtl.
The game ends when a player has 0 health and a dialog box appears asking for a rematch / reconfigure / exit.
Health goes down when a fireball (friendly or not), connects with a wizard.
When a wizard connects with a scroll, a countdown clock / icon appears near the health bar and the wizard begins to glow. For the most part, a wizard can have only scroll 1 effect on him at a time.
Notes:
Ok, there's alot to cover here.
a CharacterObject is a GameObject
it travels at a set velocity
it travels in a direction
it has sounds (walking, running, casting, impact, dying, laughing, whistling, other?)
it has animations (walking, running, casting, impact, dying, laughing, idle, other?)
it has a lifespan (determined by health)
it is alive or dead
it has a position
a ScrollObject is a GameObject
it carries a transferance of points "damage" (or healing, bad scroll effect?) (determinde by caster)
it carries a transferance of "other"
it is stationary
it has a sound on impact
it has a stationary animation
it has an impact animation / or transfers an impact animation
it has a fade animation?
it has a lifespan (determined by game)
it is alive or dead
it has a position
a WallObject is a GameObject
it has a sound on fireball impact?
it is a still image / stationary
it has an impact animation / or transfers an impact animation
it is dead
it has a position
A FireBall is a GameObject
it carries a transferance of poinst "damage" (or healing, bad scroll effect?) (determinde by caster)
it travels at a set velocity
it travels in a direction
it has a sound
it has a travel animation
it has an impact animation / or transfers an impact animation
it has a fade animation?
it has a lifespan (determined by caster)
it is alive or dead
it has a position
As I look at this, I can see some common attributes in each object that I can carry up to the GameObject.
I think I'm going to end the documentation here, it's taken me a bit of time to type this all out, tomorrow. I'll load up my IDE and my paint studio to get some good old fashioned cowboy hacking going!
D.