So I had chance to work on the challenge last night as planned and I got quite a bit of groundwork done, the screenmanager, a concept of "Loading", and a better understanding of what I wanted for the game.
Oh, and also some actual gamework. It's very basic at the moment, however the concept of players' towers, and computer-generated monsters actually exists, and the towers have different ranges along with types and detection of when the monsters are in range.
See below for a demonstrative screenshot. At the moment, the monster is on a fixed path and towers that have the monster in range simply turn red, whilst the others remain green (Yes, they're trees at the moment).
In addition to this basic work, we have a menu screen, and player management (ie. money, levels, etc).
The game parts that I want to specifically define are as follows..
The following upgrades will be available to towers:
- Speed of shooting
- Range Increase
- (For Large Impact Cannons) Increase Impact Range
- Damage Increase
With regards to gameplay, users will be able to control their character (the one that "builds" the towers) via 2 input methods. The first is a mouse/touch based interface (compatible with both Windows + Windows Phone 7 versions of the game) which involves the user clicking/tapping once (short press) to move their character to a new location. On a long press, the user will be presented with a radial menu that will popup around their mouse pointer/finger and allow them to select a type of tower to place.
The second is a basic keyboard interface (Windows only), the player will move their character with the arrow keys, hit Space to popup the radial (or linear, haven't decided on menu type yet) menu which again allows selection of tower via arrow keys and Space again will build that type of tower.
A long press/space whilst the character is already on a tower will present the player with the upgrade/sell menu. Upgrades are done in a linear fashion based on tower type, so for example tower upgrade to level 2 may be a speed upgrade for an Arrow tower, however level 2 on a Cannon tower may be a range increase.
Just as an aside, I'm writing the code using the good old #if WINDOWS constant provided, so that I'll be able to use the same code mostly across both platforms.
I overcame a few problems, one being the speed of drawing on both platforms, turns out you're not meant to use multiple SpriteBatches, especially when it comes to drawing 100+ elements ;-) Rather than consolidating everything to a global SpriteBatch instance now, I wrote a miniature engine above XNA's drawing layer which will queue up items to draw and draw them to screen when ready using it's own SpriteBatch instance.