Tuesday, 14 June 2011

"Time Gentlemen, Please" on WP7

In the words of the late, great Colin Loafshorts, "Blogs are for updating, not apologising on for the lack of updates". With that in mind, here's what I've been working on in stolen hours over the past six months:



It's not so much Point 'n Click as Drag 'n Tap.

Getting the TGP port functioning at this level has taken some doing, not least because of the optimisations required to get performance anywhere near acceptable on a phone. There's still a ton of work to do, but it's getting closer.
I'd dearly love to talk about C# Scripting in XAGE, and exciting projects like Exen and Xamarin but, golly, is that the time? See you in six months!

Friday, 22 October 2010

Bumper Update

Blog Updates have been quite scarce of late, as they tend to become a lower priority when development time gets squeezed. Yet progress continues to be made at a reasonable pace.

XNA v4.0

The latest version of the XNA has some changes to enable Microsoft to add Windows Phone 7 support. Most importantly, it splits the framework up between two profiles - 'Reach' (the lesser) and 'HiDef' (the greater). Fortunately, XAGE's current functionality fits neatly within the confines of the Reach profile, meaning it will continue to support Windows, Xbox as well as WP7.

There are also a number of changes which, to paraphrase Microsoft's Shawn Hargreaves, 'break it good'. Most of these have already been worked around, although there are some issues particularly around sprite rendering & IO. What further complicates matters is that the three open source libraries upon which XAGE depends to allow it to target other platforms are all still based on XNA 3.1 - it's possible to work around this whilst they are updated, though it means the engine code will be further muddied with additional pre-compiler directives. Until further notice, it's safe to consider all platforms officially broken until they're all fixed & re-tested.

Supported Platforms & Associated Costs

The website is also a little neglected and out of date, which has caused some confusion regarding the current status of platform support. Until now most of this information has been held loosely in my head, so hopefully this clarifies matters somewhat:

Photobucket

Where each image represents a required license (correct at time of writing):
  • Photobucket XAGE (£?): Required for any commercial games. Freeware/non-profit games will not require a license.
  • Photobucket Microsoft App Hub Membership ($99 annually): Required for any games released on Xbox360 and Windows Phone 7.
  • Photobucket MonoTouch / MonoDroid ($399 each, one-off payment with 1 year of updates): Required to deploy XAGE games (based on Mono) for iOS and Android platforms respectively.
  • Photobucket Apple iOS Developer Program ($99 annually): Required in order to deploy any game to the iPhone, iPad and iPod Touch.
To Summarise:
  • It is completely free to create freeware XAGE games for Windows & Silverlight (in the future this will likely also include Linux & Mac OS X).
  • It is not possible to create freeware Xbox360 games due to Microsoft's pricing model.
  • The iOS platforms are the most expensive for commercial XAGE games, given they require three licenses (XAGE, Apple, MonoTouch) not to mention any additional hardware costs.
List Support

The most recent addition to the XAGE engine is basic support for Lists. The decision was made as they offer greater flexibility than standard arrays, and will automatically grow to fit the desired size. AGS Arrays will automatically converted as XAGE Lists.

Alongside this, basic string manipulation is in place (long overdue as absolutely required, not least for softcoded LucasArts style Verb GUIs). XAGE will understand C-style formatted strings and concatenate them as required.

As a result of this new data structure, in a stroke '!' went from being quite broken to fully playable from start to end. All of the puzzles now work (including that pesky DNA phone) and besides a few wonky quirks it's starting to look pretty good. As usual, the Editor itself is incomplete and I'll get around to this when needed. In the meantime there's still a few things remaining in order to complete '!':
  • Three remaining AGS Functions need to be mapped (Character.SayAt, SetMusicVolume, SetMusicRepeat).
  • Fix some animation oddities.
  • Fix some GUI issues (GUI background colours)
  • Fix the load/save mechanism as per of new Xna Framework version.
  • Resolve music seek issue.

Friday, 10 September 2010

XAGE on iPhone

About a year ago if I'd been asked the likelihood of XAGE running on any of Apple's handhelds, I'd have said it was about as likely as Duke Nukem Forever being released.

However, after several weeks of tinkering, head-scratching and cursing, it's finally up and running on the iPhone/iPad emulator using the magic of MonoTouch and XnaTouch:



Caveats:
  • Obviously, this is an emulator and not the real thing. It's difficult to say what performance will be like on the actual hardware.
  • Audio isn't working yet, and various things are currently unsupported in the XnaTouch framework (RenderTargets etc - the usual suspects).
  • Zero thought has been put into the touch interface. It's likely any game that uses more than one mouse button will need to have the UI re-designed.
  • MonoTouch is a commercial framework, with a slightly eye-watering $400 one-off license fee (although thankfully Novell do offer a non-expiring free trial).
Apple's announcement yesterday that they're relaxing the Terms & Conditions of their Developer License could not have come at a better time, as it pretty much guarantees the safe passage of any XAGE game to the App Store.

Friday, 20 August 2010

XAGE on Ubuntu

My relationship with Linux has traditionally been rather negative, starting some ten years ago at university. The key combination of Shift+Insert would make the desktop of whatever particular distribution I was using crash, and thus a decade of mild distrust began.

This evening, armed with a new 8GB usb stick and an installation of Lucid Lynx (Ubuntu 10.04), I've learned things have improved dramatically in that time. The OS is nippy and slick, Chrome flies and even MonoDevelop runs reasonably well. In a few short hours I've been able to get XAGE running natively from the shared codebase:

Don't apt-get too excited

This is, unfortunately, the most exciting screenshot I can currently muster up. My custom binary loader seems to be broken, and I imagine the problems with audio and video encountered previously will return, but otherwise I'm happy with the progress made. If I can get it all working then it can only be good news for Mac OS, Android and iPhone (assuming those pesky licensing hurdles can be overcome).

Saturday, 7 August 2010

Back to work

So the World Cup was a bit of a noisy disappointment, but Read Dead Redemption saved the summer hiatus by having, in inimitable Rockstar style, quite possibly the best achievement ever.

I'd been aware of MonoXna for a few years, and had always known it as a dead project, so it was with some surprise that I saw that it had been quietly resurrected with some recent code submissions. I spent a good amount of time with it and had mixed results.

The good news is that I was able to get XAGE up and running after a few days. Similar to how Silversprite works, MonoXNA allows XNA games to be run without any dependency on the original Microsoft framework, allowing you to target new platforms (most notably Mac & Linux, and bodes well for future projects like MonoDroid).

The bad news is that neither audio or Texture2Ds seem to be fully supported. I'm sure it's possible to workaround some of these issues and I'll return to MonoXna again in the future when I have more time. Silverlight continues to be the secondary focal point for development. This is because playing the games through a web browser is still compelling and novel enough to devote time and effort to, and also because it's easy for me to develop & test. I don't currently own a spare machine for a decent linux distribution (and lack the space for a dual-boot, or even a large enough usb stick for ubuntu), and also I'm too perpetually poor to afford a Mac. Also, MonoDevelop curiously runs like dirt on my netbook.

Work has now finally been resumed on XAGE proper; my evening was spent adding support for running animations backward. This was to enable the little tramp in Ben Chandler's '!' to animate correctly:

xage !

I'm using this game as a test case to help me figure out a workable design for arrays, which will help when I go back to TGP. Incidentally, Zombie Cow's game for Channel4, Privates, has been released and bucks the trend of most edutainment titles by actually being rather spiffy.

Thursday, 10 June 2010

The Holy Triumvirate of Timesinks

We are passing through a short period of History that scientists and theologians alike will later agree to describe as, "Mentally Busy". This doesn't look set to change over the next six weeks due to Red Dead Redemption, the World Cup and a long overdue house move.

I haven't completed a game since GTA4, so it is fitting that RDR is the first game in two years that has managed to sustain my attention despite the numerous obligations and distractions. It's a very pretty title that manages to be supremely well crafted and horrendously buggy at the same time. Just riding around shooting at wildlife is extremely satisfying. That probably makes me a bad person.

Here's a free tip on how to upset your significant other: Tell her that most of your happiest memories revolve around the World Cup.

Finally, by early-July I should be in a position to shave a whopping 12-15 hours off my weekly commute which will give me, amongst other things, more time to spend working on that pesky game engine thingy.

Saturday, 29 May 2010

Super-Secret Game: Revealed

As tweeted earlier today by @thezombiecow, the super-secret AGS -> XAGE conversion project is Time Gentlemen, Please. Obviously this is massively exciting for a number of reasons:
More accurately, I'm actually working on the demo as a feasibility study and it's going pretty well. The ultimate aim is to get the full game onto Xbox Live. It's a huge amount off work but I'm confident it can be done.

Zombie Cow Studios are currently venturing into the third dimension, with some hand-holding from Channel4, in Privates (read the eye-opening press release here).

Oceanspirit Dennis:

I've actively been working on a few others things that have helped development across the board (finicky things like handling GUI transparency). One is Ben304's mock RPG, Oceanspirit Dennis: Scourge of the Underworld. It's essentially a satire on JRPGs (at least, that was my interpretation). It has since spawned a number of increasingly peculiar sequels, all of which are brain-achingly canon.

An interesting diversion and XAGE's second full conversion - play it online here: http://www.clarvalon.com/XAGE/games/ODennis/

To quote the author: 'Don't play if you're looking for a rewarding experience!'

Ben has also recently open-sourced '!', his well-received comic-panelled, robotic rap-athon. You should all follow @ben_304 and ask him when he finds time to sleep.

Other Stuff:
  • Expressions are supported, in that XAGE now copes with things like cChar.Walk(cChar.X + 10, cChar.Y - 20).
  • RenderTargets are no longer used when no scaling is required, improving performance in certain instances.
  • Silverlight now uses png textures instead of xnb, improving load times and further reducing the xap filesize.
  • Internal Dictionaries are generated in-game during initialisation. This means that, if a room has 300 objects, the engine no longer needs to loop through 299 to retrieve the last object when it is referenced via scripting. Certain methods that were previously using 4-5% of all processor time now use a tiny fraction.