The very first screenshot

I’ve taken this week off from work to spend some time on my creative pursuits, which mostly means Kung Fu Legends and my novel Breathe. I’ve toiled away at Kung Fu Legends and I’ve finally got some tangible results! The very first screenshot is below.

First screenshot of Kung Fu LegendsOkay, so it isn’t the most exciting picture, but goddamn, it feels good to actually get that. To get that I needed to compile the MyGUI library, which was no mean feat, then attach it to my game loop. Behind the scenes I also had my code for the UI states sorted out, so the game starts in “Splash Screen” mode. Resources are loaded from various directories, including my spiffy title graphic. You can move the mouse around, press buttons and keys and it’ll respond, which means I have my input processing implemented. Currently it does nothing exciting except queue the game’s shutdown when you press a button. But the fact that it all sets up neatly and shuts down neatly means I’m a lot further ahead than I was at the start of the week.

It’s not all gravy though, the image is supposed to be aligned in the window’s center and it isn’t, but blame MyGUI for that. The documentation for MyGUI is a bit lacking, so progress will be slow.

Next is to figure out how my engine will interact with the world simulation (i.e. feed it inputs and then press “go” and have it report back). Most of the difficulty is keeping the engine separate from the world simulation, and allowing it all to be extensible.

I’m not sure if I’ll attempt the risky manoeuvre of  adding sound to the game, given those libraries look tougher to wrangle than MyGUI and I’m kinda sick of bashing my head against make scripts.

On the actual game front, I’ve been thinking about the Blizzard maxim (adopted strongly by Chris Hecker for SpyParty): “Create the deep game first, then make it accessible.” I think I’ve figured out the deep game. In a fight you have to choose tactics in accordance with the important but oft-forgotten skill of proprioception in concert with a more general strategy to defeat this specific opponent. For example, if you’re a little guy fighting a big guy, running headlong and trading punches is gonna get you smashed. But if you take an initial defensive posture and dodge his first swinging punch, it opens up his back to you (and he has his weight forward and across his body). Simply dodging and then pushing his shoulder could knock him to the ground. Your general strategy is to not get hit, use your speed, manoeuvrability and his weight against him. If you can think about the momentum and position of an opponent (or indeed, opponents) you can fight more effectively than trading simple blows. And if they open themselves up for a particular attack, you should take it. Also, there is the long-term meta-strategy outside of individual fights being training your character to be effective in combat, whilst keeping a hold of all the plotlines you care to chase.

I like this idea because it’s an interesting source of gameplay (and reminds me of those old Kung Fu movies: “Ha ha! He is using Swooping Crane! The fool! Defeat him with your Prowling Tiger form!”) and strongly distinguishes itself from most RPGs where you wail on each other with swords until one of you falls over[1. See Yahtzee’s review of Eve Online for related discussion/laughs.] Figuring out how to actually simulate this sort of thing is tricky, but I’m on the case. The first saving grace is I have no immediate plans to link it to animation, which saves me a million years of development at the cost of having to improve the user interface/feedback.

Nevertheless I’m pleased that the engine is taking shape. Hopefully I can focus on the much more fun job of writing the actual game sometime soon.