Friday, 7 August 2009

AGS Conversion Progress

Yesterday was a welcome break from T4W (how long does it take for an acronym to be established?). I spent some time rewriting how XAGE converts AGS scripts. Previously it was a bit flaky in how it dealt with carriage returns and didn't always provide the most reliable results.

Each AGS script is now tokenised, splitting everything up into functions, statements, if, brackets etc. The tokenised script is then converted into XAGE scripts. This two stage process is a lot cleaner and easier to extend. Using OpenQuest as my AGS source, here's a cherrypicked example of where the conversion is currently at. Consider the following AGS code:

function character2_a() {
// script for Character 2 (Lifeform): Interact character

if (sInteractionVerb == sTalkTo)
{
hideGUI();
// have we already met the cleaner? If so, use a different greeting
if (GetGlobalInt(8) == 1)
{
player.Say("Greetings Carol");
cCleaner.Say("You again?");
}
else
{
player.Say("Speak lifeform!");
Wait(40);
player.Say("Is this translation matrix working?");
cCleaner.Say("You're that guy from accounts right?");
}
dCleaner.Start();
}
else if (sInteractionVerb == sSmell)
{
player.Say("This creature has an overwhelming pungent smell");
}
else if (sInteractionVerb == sMove)
{
player.Say("The lifeform is surprisingly sturdy, I don't believe I can use force");
}
else
{
triggerUnhandledEvent();
}
}

The above function now converts automatically to an XAGE script as follows:

Photobucket

The two provide the equivalent 1-1 functionality save for two things:
  1. XAGE doesn't know what 'sInteractionVerb' is (#defined in OpenQuest as Game.GlobalStrings[11]. Whereas XAGE would link each event with its own script, AGS (or AGS developers?) tend to bunch certain events to the same function, which seems unnecessarily complicated - perhaps a throwback to earlier AGS versions).
  2. The conversion process doesn't yet handle AGS functions calling each other (requires an XAGE object running a new XAGE script).
In the future I see a juggling act; trying to keep XAGE's design as clean as possible and yet trying to map as much AGS functionality as possible, some of it outdated and deprecated. It's gratifying nonetheless to watch the OpenQuest opening cutscene running in XAGE, albeit in a slightly clunky, stunted way.

Wednesday, 5 August 2009

"The Fourth Wall"

Today I submitted my DreamBuildPlay competition entry, "The Fourth Wall". As the deadline loomed I've had to cut a lot of corners, and there's no chance it will win, but I'm reasonably pleased with how it has turned out.

It's a silly, short game (or rather, anti-game). Here's a trailer that has absolutely nothing to do with the game itself:



I'm waiting on a few library fixes but there should be a Silverlight demo soon. In a few weeks you should also be able to part with 80 Microsoft Points and enjoy it on your Xbox360.

XAGE's first commercial product. Huzzah.

Sunday, 26 July 2009

The 8 Minute Trial Test #2

As a continuation of the previous 8 minute trial test, five more point and click adventures get the treatment.

Colour Key: Green = pre v1.0 functionality, Orange = post v1.0, Red = unlikely to be implemented.

1) Emerald City Confidential

Photobucket

The Good: Polished, HD graphics, excellent audio. Single-click interface is very user-friendly. Lots of hand-holding to ease in casual players. Parallax scrolling intro.
The Bad: Slidy-walk animation. Playfirst DRM (didn't actually seem too intrusive). Objectives were clearly laid out but there was no real explanation as to why - not a lot of real plot exposition within the first 8 minutes.
Not yet possible in XAGE: GUI customisation, Speech, Various GUI effects.

Photobucket

The Good: Fun concept, well introduced and setup. Impressive dual view technique on tutorial. Swearing in binary.
The Bad: Some minor clipping issues. 'Groovy Greg' seems to suffer from a mild form of Parkinsons.
Not yet possible in XAGE: Text input, Y axis scrolling, GUI customisation.

3) Time Gentlemen, Please

Photobucket

The Good: Finely crafted, plenty of attention to detail. Entertaining and colourful introduction. Irreverent humour. Plenty of witty banter between protagonists.
The Bad: Some very minor flickering as walking & scrolling not synched.
Not yet possible in XAGE: GUI Customisation.

4) Heed

Photobucket

The Good: Very distinctive art & audio, along with extremely simple user interface. Smooth, clean animation. Intriguing room-by-room development. Existentialist musings.
The Bad: No narrator with a tophat. The fly is a little slow.
Not yet possible in XAGE: GUI customisation.

5) Five Days a Stranger

Photobucket

The Good: Player character is a criminal.
The Bad: Visually has not aged especially well. Interface is particularly clunky and old-school.
Not yet possible in XAGE: GUI customisation.

Friday, 24 July 2009

XBLIG price changes

Microsoft have shifted down the three price points developers can choose for their indie games (from 800, 400 and 200 to 400, 240 and 80). I'm in two minds about this.

Cons: With 800 points (about $10) no longer offered, more professional outfits are likely to be turned away if the most they can charge is about $5. The race-to-the-bottom pricing is likely to make XBLIG much more like Apple's App Store. It is already quite cluttered with largely pointless apps and massage games (the dashboard update to introduce users ratings should mitigate this somewhat). In my opinion, the areas in which Indie Games differs to the App Store are its strengths, so it is unfortunate to see them being eroded further.

Pros: I had no plans to monetize my DBP09 entry, given that it will provide little more than 15-20 minutes of play. But with a price point of 75p, why not? I'll reassess this closer to completion. It also opens the door for various small AGS games, for which a 75p cost is justifiable.

Sunday, 19 July 2009

OpenQuest

To distract from the fact I've not been able to get anything done in the last fortnight, here's a picture of OpenQuest running on XAGE:

OpenQuest on XAGE

It's a bit glitchy (not sure what happened to the Cleaner on the left) and has the same limitations as Demo Quest, but it works. Between the two I have a reasonable amount of source material with which to improve the AGS conversion process.

Silverlight v3.0 has now been released, so Bill Reiss is continuing his excellent work to bring SilverSprite up to speed. This means that any browser based XAGE adventuring should soon become a much more robust & enjoyable experience.

Wednesday, 8 July 2009

Twitsqueak

As I'm practically providing 24 hour care at the moment, I have very little time for anything, let alone coding. This means I am spending a lot more time thinking about all things XAGE than actually doing anything productive.

As you can only mull over algorithms and design for so long, I've started to devote more time thinking about the eventual ramping up of the PR machine. I've been collecting a number of decent articles on publicising independant games, though it has become obvious that this is the part of XAGE's lifecycle that I'm looking forward to least. It's cold and calculating but a necessary evil.

Increasingly people have mentioned that twitter is good for (ugh) networking, (ick) public relations and (hurray!) stalking celebrities. To this end I've created an XAGE twitter account. I generally avoid sending text messages and have a distate for anything that encourages netspeak, but having used it for a few days I can see its merits (besides following the ravings of Charlie Brooker). Updates may be few and far between for the time being.

All being said, all the publicity in the world is next to useless if you don't have a decent product. One day I'll get around to fixing those damnable dynamic object boxes.

Thursday, 2 July 2009

Feedback = Features

I've had a few pieces of genuinely useful feedback so far. One suggestion was to allow developers to enable or disable each individual action as and when they're needed (much like commenting out code), which hadn't even occurred to me previously.

After adding this functionality, I then realised it would be handy to be able to annotate scripts with developer comments, so added that too. To add an extra layer of flexibility I decided to finally implement Nested IFs, meaning it's now possible to create more complex conditional logic:

Photobucket

So, XAGE scripts looks more and more like real code, but it's still verbose and simple enough for anyone with eyes and half a brain to understand. The only typing required is for the dialogue and occasional object value.

Another improvement has been to add WalkLines, which are similar to WalkBoxes but only have two points rather than four. This was already achievable, simply by making two points the same, but having this additional construct should make it more immediately obvious to developers about their use. There are now also more visual cues when placing any walkable areas, so you can more easily detect horizontal or vertical alignment and connections.

I'm still a few months away from ramping up the PR machine as we get closer to v1.0. One thing lacking so far is bug reports - I've only ever received two. I'd love to believe that XAGE and XAGE Editor are watertight applications but that simply isn't the case. If anyone encounters any fatal exceptions, please let me know (there's a big friendly button that does it automatically!).

Finally, I've pestered Ben304 into letting me use some of his artwork for my DBP entry. He's a well-known man about AGS-town, so if you haven't taken a look at his short games Annie Android or Shifter's Box, do so.