Not Dead

Work continues sporadically on Yet More Tower Defense, though not for lack of interest. Exams, followed by holiday shopping and events, and the sudden realization of impending doom regarding my honour’s project have all come together to thwart my attempts at getting Yet More Tower Defense ready for playtesting. Realistically, progress is going to be severely hindered by my honours project.

However, I took a few minutes to today to flesh out a simple high score system along with saving and loading. It was a snap to do and I’d been putting it off, but now I’m glad I had some low hanging fruit.

I think it’s hugely important to work on a project every day to keep up the momentum, even if it’s just for half an hour. I let this one slip for almost two weeks – I’m not going to let it fade away. That’s one of the reasons I bought a premium membership early: I’m invested now!

What’s on the Menu

With a few days off before exam preparation really begins, I’ve been able to devote a fair amount of time to Yet More Tower Defense. I spent quite a bit of time working on the menu system but I think given what I’m trying to put in feature-wise, it’s turned out to be a very worthwhile investment. I’ve essentially worked off the Game State Management sample which has proven to be a fairly powerful and extensible concept.

While it always seems like there are dozens of things left to do, my list is finally getting to the point where I can see the end, at least in terms of necessary features. Let’s take a look, if partially for my benefit in combining the many to-do lists scattered around:

  • One more Hud component (showing upcoming wave details)
  • High scores
  • Help screens/instructions*
  • Proper treatment of PlayerIndex
  • Ensure storage best practices are working
  • Full game purchase functionality
  • One more tower type
  • Two more creep types
  • Badges

The “Help screens” item has an asterisk because I think I will tackle this during initial playtesting, rather than before. I’m interested in seeing what people’s initial, unguided intuitions are.

Badges are something I’ve hummed and hawed about because they aren’t at all necessary for the game. I am suspicious of the average consumer’s opinion of unofficial acheivements, as I don’t think they really hold much weight. However, since I’m not making this game with an “effort to marketability” ratio in mind but instead to go through the full process of making a game, I’m going to implement badges. If they add something that consumers consider important, cool. I certainly don’t think they take away from the game.

After that list is finished, I get to start the long process of polishing and balancing. The most important aspect of this is going to be creating/finding some respectable graphics and sound effects. I consider myself somewhat artistically inclined, though in traditional media. I have a few ideas on this front that I’ll look into. I haven’t decided if I’ll throw my game into playtest before it gets final graphics in place. There is a blocking issue of Xbox360 performance, which isn’t quite acceptable at the moment (I develop primarily on PC, where the performance is flawless).

All-text updates are boring! Here’s a screenshot of the new Challenge Select screen:

Select Challenge

Select Challenge

I did find myself playing the game quite a few times over the past few days, despite the fact that the balancing is just placeholder values so the difficulty is all over the map. I consider this a good sign (:

The sound of button-mashing

I mentioned I was going to tackle either gamepad input or sound next, but I ended up just doing both. Now that’s not to say they’re finished, but they are functional. One of the mantras I’m developing by is “Keep it playable”. Since day one, Yet More Tower Defense has been playable in some form or another. Now, it hasn’t always been fun, but it’s alway been working. I’m the only one working on it, so there isn’t any time lost for other team members when the game is broken, but I feel that it’s a worthwhile habit regardless (and it does wonders for motivation).

Nothing too earth-shattering or complicated in my input or sound managers, though there is one thing I’d like to point. Given that Yet More Tower Defense is destined for XBLCG, and thus playable by the general populace, best practices are incredibly important. One of these is having intuitive controls that are consistent with what gamers might reasonably expect. That means that Start should pause, A should proceed through menus, B should take you back, etc. For this reason, I felt it was important to have an input manager that could handle things like:

gamepadInputMap.Add(InputAction.Accept, new Buttons[] { Buttons.A, Buttons.Start });

Two buttons mapping to one function. A quick google for input samples seems to come up with a lot of code that only handles a 1:1 mapping, often with a note saying, “this shouldn’t be a problem”. Instead, I’d prefer to easily remap my controls (without looking for a bunch of multipart conditional checks in an IsMenuCancel function) and have a one-to-many relationship for actions and buttons. I think it’s worth doing, if not for your sake in managing control bindings, then for your users who might expect ‘A’ and ‘Start’ to perform the same function in the menus.

And on that note, I’m getting to the point where Yet More Tower Defense is feature complete. It should be just some more content creation (graphics, sounds), polishing and lots of testing and balancing in the near future. I hope to be able to throw it into preliminary Playtest soon. That also means I’ll be able to playtest and review other games, as I’ll finally buy my Premium membership. Sweet.

YMTD work continues

Managed to get a fair bit of time to work on Yet More Tower Defense this weekend so I was able to make a good bit of progress. I cleaned up some of the stub functionality I’d put in for loading levels from file and put in the functionality to choose your level from the menu. There’s also a nice dynamically generated preview of the level that comes with it, thanks to experimenting with RenderTargets and basically rendering to a texture.

Today I put in one of the key components of the in-game hud: the tower pane! This is where the details of the currently selected tower (for upgrades/selling) are displayed, as well as the details of the tower type selected when building new towers. It’s working pretty well already, and save for some better art and shifting around the position of its elements, I’m pretty happy with it. How ’bout a picture?

Tower Pane (wip)

Tower Pane (wip)

Not much to look at, but all of the data gets updated as it should. It also goes a long way to bridging the gap between “prototype” and “functional game”. Not sure how I feel about the font though. Leave a comment if you have an opinion about it.

The more I work on the HUD, the more I want to add features and functionality. I’m restraining myself from getting too carried away, but I think I will implement a way for this pane to transition away when not in use. Tower defense is often about watching events unfold, so why clutter the action?

Next up: gamepad input. I think. Maybe sound. 🙂

Project Munny revealed

Update: Project Munny is now referred to as Yet More Tower Defense. And there was much rejoicing!

Project Munny is the codename for the tower defense game I am currently working on. It’s codename was inspired by simply looking around my living room and spotting one of these critters. The game’s title hasn’t been finalized yet, so I’ll be referring to it as Project Munny for the time being.

Project Munny is a fairly traditional tower defense game with an emphasis on polish and playability. It’s primary purpose is for me to work my way through a complete game, something I’ve yet to actually do. I’ve made a fair amount of progress so far though and while the graphics are almost all placeholders, the game is actually quite playable. Notably, I’ve got working levels, towers, creeps, pathfinding, wave progression, upgrades/selling and a dozen other little things. Let’s take a look:

Project Munny Revealed!

Project Munny revealed!

You can see a lot of the debug drawing on there, which is actually easily toggled, but since this blog is about development, I thought it would be proper to leave it in there. Again, the sprites and hud are placeholders for the moment.

There are still a few big ticket items before I can really begin the balancing and polishing process though. For instance:

  • Gamepad input (currently keyboard/mouse for development)
  • Numerous effects (lighting, firing/hit effects)
  • Sound!
  • Virtually all of the best practices
  • High scores
  • Few more creep types, towers
  • Proper menus (functional but ugly placeholders at the moment)

And with that, back to work!