Thursday 22 October 2009

Animation Redesign

The way animations are handled in XAGE has been redesigned to provide more flexibility and aid with AGS conversions.

XAGE previously allowed standards to be created in a fairly quick and easy manner but also lacked some flexibility. The order of the animation frames was important, as they needed to be tagged with various preset labels, "BodyWalkDown_Start" etc. There was also a duality with there being two animation mechanisms - the inbuilt tagging and custom animations (already much like AGS sprite loops). The preset tags have now been removed and now all standard animations (walking, talking etc.) are handled by user-built custom anims. This provides a little more flexibility and efficiency at the expense of time, as it takes a few seconds to set up the standard animations manually and link them to a character.

XAGE still doesn't implement Views in the way AGS does. I can definitely now see the benefit of them, as it enables the user to easily change the character's outward appearance, though there are a few (in my opinion) archaic design decisions that are slightly unintuitive, such as having the standing still frame as the first frame of a walking animation. Likewise I like having the animations frames tied to the character, even if this is inefficient. It seems cleaner and more intuitive, in the same way each conversation in XAGE is tied to a character as opposed to one big Dialogue pool.

The Editor has had a few overdue improvements too, including the ability to preview custom animations without having to run the game (a particularly large timesink when developing The Fourth Wall):

Photobucket

I'll be happy if I can get Awakener's scripting errors post-conversion down to less than 100.

Thursday 15 October 2009

Awakener Update

Armed with the new ability to extract room information, the progress has been faster than I'd expected. The AGS plugin enables me to pull out everything I need, including the mask information for hotspots, walkbehinds, regions and walkable areas.

The first two have slotted nicely into XAGE with a few minor changes. AGS Hotspots convert over as XAGE room objects, albeit ones with a single, invisible anim frame. AGS Walkbehinds convert as XAGE room objects that are unselectable, static objects with a fixed zPosition as the baseline (The zPos has been reinstated - making the The Fourth Wall confirmed that there are some occasions where you just need to override an object's yPos for the drawing order). Also, standard AGS room objects now convert in a straightforward manner.

AGS Regions and walkable areas are trickier. As XAGE uses geometric walkboxes for character movement, there is no easy way to automatically convert one to the other. I may attempt to tackle this algorithmically, but chances are it will turn into an overcomplicated mess. Another solution may be to store the walkable areas as a single mask and overlay this over the room background within the XAGE Editor, in order to aid the user in manually recreating the walkboxes as quickly as possible (taking about ten minutes or so per room, not including testing).

A third option would be to offer a parallel room traversal system that involves a mask (or to drop the geometric walkboxes completely). It would be quite a lot of work and it would make the conversions more complete, however I'm concerned about unwittingly turning XAGE into AGS-lite, or an unofficial port, and thus want to preserve its position as a legitimate, stand-alone engine.

Working on the conversion is now my main priority, so I'm adding new functionality to help recreate the exact look and feel of the original. Such improvements include a new option over how the cursor highlights characters and room objects. Previously everything was wrapped up in a bounding box, similar to how the original SCUMM games operated. Now each item can have a manual or dynamic bounding box, or a per-pixel detection. The latter option is in keeping with AGS.

Besides a few things (fonts, cursor and some GUI stuff), Awakener running in XAGE is now visually a pixel-perfect recreation of the original AGS version:

Awakener Comparison

I should stress the word visually, as there remains a whole lot of work to do on converting the scripts.

EDIT: The script conversion now counts all unhandled lines of AGS code. Now that I've added this metric it's possible to gauge the progress being made at a glance. The number of script errors that occur when converting Awakener currently numbers 294. It is likely to be a few weeks/months before the number starts to get anywhere near zero.

Friday 9 October 2009

AGS to XAGE: Awakener

Ben Chandler was kind enough to send me a copy of the source code for his latest game, the excellent and rather sweet Awakener. Here's a short clip of it running on the Xbox360 under XAGE:



Discussion thread in the AGS Technical Forum. To anyone interested in converting their AGS games to the Xbox360 or to their internet browser - please lend your support to the feature request. It would make a monumental difference, and potentially save you hours and hours (and hours) of tedious legwork with your own future game conversions. Thanks!

EDIT: Denzil Quixode on the AGS forums has very quickly knocked up an AGS Editor Plugin that does exactly what I need. Cheers, Denzil!

EDIT2: I've expanded on the code and now built my first AGS Editor Plugin - Export to XAGE. It is largely useless to anyone else at the moment as XAGE Editor v0.5 has not yet been released, but it succeeds in simplifying, speeding up and improving the scope of the conversion process.