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.

Wednesday, 30 September 2009

Three Games

Ben Chandler's new short AGS game has been released: Awakener. As expected, it's a highly polished affair, with a pleasingly unusual ending. Well worth a look. I may have something XAGE-related to post on this in the near-future, so watch this space.

Another AGS game I (and a lot of other people) have been keeping an eye on is VinceTwelve's Resonance. Interestingly, he's used KickStarter in order to fund its entry to the IGF competition. So positive has been the response that he's actually been pledged over ten times the required amount.

As Resonance is being keenly followed by a lot of adventure game adificionados, this is entirely understandable. The XAGE project is still rather low-key, and will remain so until v1.0 and T4W hopefully begin to raise its profile. Seeing that people have pledged both $250 and $500 in order to be included as a character in Resonance only confirms that not only are people very excited about this game but they are also willing to part with large sums of money in order to feel involved in its construction.

My idea: A KickStarter project to allow a single individual to pay a reasonable sum (say, $500 to $1000) to have a short XAGE game created for or about them. Just as some people are crazy for adventure games, a whole lot more are crazy for their Xbox, investing a huge amount of time and money in their hobby. It's not beyond the realms of possibility that someone would be interested in funding some such ego project in order to see their idea or character come to life on their console of choice. It would also tie in nicely with an idea I have for an episodic adventure game on XBLIG, where with each release the episode's financial backer stars as the antagonist.

Finally, Pixel Man was released to XBLIG recently - something about it appeals to me on a very basic level. The tiny graphics, 8bit sounds, rainbow menus and absolutely minimalist gameplay stir some childhood yearning for the Sinclair Spectrum. I'd love to have a crack at making something similar. Maybe when things aren't so busy.

Tuesday, 15 September 2009

XAGE on the iPhone?

The ZuneHD has been released in America. As it directly supports XNA there's a reasonably good chance XAGE will eventually target this. Portable XAGE gaming would be a terrific novelty, for me if no-one else.

That said, what is an even more tantalising prospect is that of iPhone support, due to the large, affluent user base and the recent success of the Monkey Island re-release. However, given XAGE is built using C#/XNA and iPhone uses Objective-C, there was never any real hope of the iPhone being supported.

Until now. The open-source XnaTouch project aims to help port Zune (XNA) games to the iPhone. They have a short video up showing an XNA game running on the iPhone simulator here. Of course, this is all miles away at the moment and would require an investment of several thousand pounds of new hardware, but it's yet another potential direction for the engine. I'll have to keep a close eye on XnaTouch to see just how feasible it is, but potentially there's the possibility of some ridiculously convoluted porting fun, e.g:

AGS game -> XAGE -> Publish to ZuneHD -> Port to iPhone (via Mac)

In the meantime I really ought to get the GUI customisation finished. Finally releasing The Fourth Wall to XBLIG will be a tremendous relief - conclusive proof that XAGE is not vapourware.

Thursday, 10 September 2009

AGS to XAGE: Pixel Hunt

There aren't many open source AGS games, but I discovered that by hacking away at the code I've been able to get Andrew 'SSH' MacCormack's Pixel Hunt updated to the current version of AGS (most likely breaking a whole bunch of things in the process - I'm no AGS expert). An up to date source code meant that it became the third AGS game to get the XAGE conversion treatment. Running under AGS vs XAGE:

Photobucket

As you can see above, I've finally started making some progress rewriting XAGE's GUI system as I want this completed before realeasing T4w. The AGS GUI Buttons are more or less displaying correctly on the screen, though they don't do much else at the moment. Notable differences:
  • Dynamic Cursor not yet implemented (top).
  • VerbCoint not yet implemented (sitting happily in the top left hand corner).
  • Pixel Car missing (centre, most likely a scripting inconsistency).
  • GUI Labels not yet implemented (bottom left, 'SSH Productions' etc).
  • New inventory system not yet implemented (bottom middle, white gfx card).
  • GUI Button Text not using correct colours (bottom right - not yet sure where to find this in AGS Editor) .
Disclaimer: There's the tiniest sliver of nepotism in this post as SSH runs the AGS Blog and occasionally says some rather nice things about the XAGE project. There was also a very positive plug on xnPlay a few weeks back. All PR help is appreciated! Likewise, any developers with AGS source code they don't mind sharing - please get in touch. The more I get my hands on the more the conversion process improves.

Tuesday, 8 September 2009

XAGE Flow

As requested, here's a brief overview of how everything currently fits together in XAGE land:

xage

The game code is all stored as xml. Unlike AGS, which compiles the scripts and slaps them onto the exe, the XAGE game code is never compiled. The XAGE executable loads them it merely deserializes (loads) the xml. The only variation to that is for a finished, published XAGE game, where the xml (along with all graphics, audio etc.) is zipped up to reduce filesize. Further size savings could have been made if I'd allowed for binary serialization, but there was some good reason I've not done this (probably unsupported in Silverlight - most things are).