Monday, 21 December 2009
Tuesday, 15 December 2009
Wednesday, 9 December 2009
Friday, 20 November 2009
- Quicker - runs at 100% on my atom netbook.
- Ugly aliasing, makes text harder to read.
- Visual glitches (transparency especially).
- Outstanding memory leak when using bitmap fonts(?).
- No aliasing or visual glitches, looks practically identical to xbox and native pc.
- Much more processor-intensive - choppy performance on my netbook but runs at 100% on a fairly low-spec dual core pc.
Thursday, 12 November 2009
Thursday, 5 November 2009
- Rework The Fourth Wall to work with the latest version & release to XBLIG.
- Release XAGE v0.5 (or whichever version is current) as Beta on a swanky new, dedicated website (i.e. begin the PR).
- Identify & negotiate rights to the first AGS game to be released on the Xbox360.
Thursday, 22 October 2009
Thursday, 15 October 2009
Friday, 9 October 2009
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!
Wednesday, 30 September 2009
Tuesday, 15 September 2009
Thursday, 10 September 2009
- 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) .
Tuesday, 8 September 2009
Friday, 4 September 2009
Friday, 7 August 2009
- XAGE doesn't know what 'sInteractionVerb' is (#defined in OpenQuest as Game.GlobalStrings. 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).
- The conversion process doesn't yet handle AGS functions calling each other (requires an XAGE object running a new XAGE script).
Wednesday, 5 August 2009
Sunday, 26 July 2009
Colour Key: Green = pre v1.0 functionality, Orange = post v1.0, Red = unlikely to be implemented.
1) Emerald City Confidential
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.
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
The Bad: Some very minor flickering as walking & scrolling not synched.
Not yet possible in XAGE: GUI Customisation.
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
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
Sunday, 19 July 2009
Wednesday, 8 July 2009
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
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:
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.
Thursday, 25 June 2009
www.clarvalon.com/XAGE/Release/xage v0.4.zip (2.8mb, mirror)
- XAGE Editor (with embedded Default Game)
- Skeleton Visual Studio Projects for Xbox360 and Silverlight (included for the people who have expressed an interest in trying them out).
As usual, XAGE is hungry for feedback and bug reports, both of which can be submitted in seconds via the built-in menu options. Likewise it would be interesting to hear the experiences of anyone attempting to use either of the VS projects or the AGS conversion tool.
Sunday, 14 June 2009
Unified File Access:
All assets are now zipped up for published games, reducing the size and number of files. With regards to file formats, it's not even a case of working with the lowest common denominator, as there is no way of freely (i.e. without licensing issues, either by using mp3 or commercial libraries) using any two formats on all three target platforms. After a lot of trial and error and about half a dozen open source audio components, I've finally implemented a solution that satisfies all the requirements for the new integrated publishing system:
- XAGE can now play one piece of background music at a time, and any number of sound effects.
- Music is initially stored as Mp3s and sounds as Wav files. These are used when debugging on Windows (via SdlDotNet).
- For published windows games, the user is given the option of swapping the Mp3s for Ogg tracks to bypass any licensing issues. The Wav files are untouched.
- For Xbox games, the Wav files are automatically converted to Xnb via MSBUILD. The Mp3s are converted into Wma.
- As Silverlight cannot natively play Wav files, they are coverted into Wma and Mp3s are left untouched, covered by Silverlight/MS.
- All three platforms are capable of loading assets from the pre-prepared zip files (with the exception of the Xbox Music as it cannot stream a compressed Wma file).
What does this all mean? Well, after debugging a game via XAGE Editor it's possible to play the same game on the 360 and a Web Browser in a matter of seconds (minutes if you've made changes to the graphics or audio):
Xbox Live Indie Games:
Community Games has been rebranded by Microsoft to 'Indie Games', which seems like a sensible move. This coincides with the release of the Xna 3.1 framework, which from XAGE's point of view doesn't yet provide a compelling reason to update. The inclusion of Avatar support is a nice touch, though there are some strange guidelines regarding their use in games.
As DBP09 closes in August, I've taken the decision to wrap up any loose ends, release v0.4 and then see if I'm able to complete my game within the competition deadline. I'd essentially be submitting a demo (not that there is any chance of me winning anything), but it will be a good exercise in finally putting the engine through its paces and will give ideas on areas of improvement. The resulting 4 month Creator's Club access will be handy too, giving me time to take a proper stab at it before releasing to XBLIG.
Sunday, 7 June 2009
Monday, 25 May 2009
- New Editor appearance (themes).
- New Script Action creation method (popups).
- XAGE again converting and running AGS's sample game, Demo Quest (demonstrating a short conversation between Cris and Beman).
This time we don't cover exporting the graphics from AGS, but you can see that the conversion process is mostly painless. The only changes necessary here are to place the Player character, Cris, in the same room as Beman, to whom we scale up and add an onTalkTo script to initiate the conversation. A side-by-side comparison of AGS and XAGE:
From the video and picture above, the following is evidently missing or incorrect:
- GUI (Reason: Not yet implemented in XAGE).
- The character scaling is off (Reason: Room XML required - cannot access walkable areas to automatically determine correct scaling).
- Wall Panel missing (Reason: Room XML required - cannot access information on room objects).
- Cris is darker in AGS (Reason: Not sure. Either there's some filtering applied by AGS that I'm not aware of, or the room's palette is affecting the sprite).
So far all of the conversion work is based around what is required for Demo Quest, so it would be very interesting to hear about other people's experiences. Once XAGE v0.4 is released I'll see about placing some sort of official feature request with AGS/Chris Jones for AGS Room XML export functionality, providing there's demand for it.
Edit: Ags Forum thread here.
Friday, 8 May 2009
I remember now why I put off implementing the conversation system for so long - there are a lot of design ramfications of doing so. The basic structure is in place and its now possible to initiate and select various conversation options in a similar way to a LucasArts game.
The reason it is incomplete is a long one. I've found that the more time I've spent on XAGE, the more inclined I am to want to do things right, rather than use any cheap or ugly hacks. One such case is that the dialogue system requires new Action Types in order to initiate conversations, amend option visibility etc. Rather than plumb these in as before, I wanted to completely rewrite how the Actions are organised both internally and externally.
Internally: At the moment, actions are simply stored as a type and a string of associated content, which is delimited by the tilde character. This is simple to implement but is quite brittle. After discovering Nick Gravelyn's post about serialization, I realised that it was actually possible to put Action types in their own class and still serialize them. This is a much cleaner and correct OOP way of doing things.
Externally: The original Action editor relies mostly on combo boxes. Given that the number of action types was swelling to thirty and beyond, it was becoming obvious that this list would become daunting to any unfamiliar users. It's also quite a backwards thing to select the action type before the item it is being performed on. By selecting the item first, you automatically narrow down the number of possible actions you can perform. Its also more intuitive:
(old) Walk -> (Character, ToXY, Direction, Pause)
(new) Character -> Walk -> (ToXY, Direction, Pause)
Its not especially easy to illustrate using text alone, but the benefits should become obvious after a few minutes of use. The above also means I can wrap up each piece of information into a seperate class and re-use as necessary for each Action (e.g. Pause after action is used in various). Certain items are now selected via popup buttons rather than combo boxes, as this is more visual and easier to understand.
All of these changes require quite a large rewrite. One problem is that, previously, I've completely seperated the codebase of XAGE and the Editor itself, as they only shared a dozen or so classes. As the number of classes has grown massively due to the new Action structure, it has become obvious that I need to wrap all the shared classes into a Global project, and expand any functionality in XAGE or the Editor via partial classes.
None of these required changes are particularly exciting in any way, and will take some time to complete. The end result will be a cleaner, more flexible XAGE v0.4, which should be the first wholly public alpha.
Wednesday, 22 April 2009
When looking for solutions for this I came across a useful, free component framework, Krypton Toolkit, which is a lot more lightweight than the likes of DevExpress but looks good and seems to perform pretty well. I've spent the last few evenings making the Editor play nicely with it - there are a few workarounds due to various limitations, but I'm now at the stage where I'm satisfied it has been worth the effort:
I like it. It has a smooth WPF-esque feel about it whilst still being plain old Winforms. The new Editor Appearance preference allows the end user to choose between a number of presets. If I get the time I'll add a few custom ones - for novelty value alone I'm interested to see how it looks in an eye-watering pink.
Saturday, 18 April 2009
I've taken a closer look at AGS's file structure and it is in fact possible to glean quite a bit more information than I originally thought. I've started a component that picks out all the dialogue options and then parses the associated dialogue script for the associated behavious, which map quite nicely to XAGE's Actions.
This cannot be ported over just yet as there's no equivalent functionality in XAGE - as much as I'm itching to dive in and start work on the Conversation system, there's a whole bunch of bugfixing and refactoring to do first. Walkboxes are now (fingers crossed) feature complete, and the graphics control in the Editor is more user friendly with mousewheel zooming and right-click scrolling. It also better illustrates which pixel you're selecting and a few other handy things like showing WalkBox connectivity. Here's a mini-changelog:
- FIXED: Character Panel slow due to obsolete links
- FIXED: Anim Frames getting width & height out by one pixel
- FIXED: Removed clumsy indexing for Anims, CustomAnimSteps & Actions
- ADDED: New IF Actions (Variables & Objects)
- ADDED: Graphic control - change get pixel depending on what we're getting (with new icons)
- ADDED: Graphic control - drag image via right mouse button
- ADDED: Graphic control - zooming controllable by mousewheel & cursor position
- ADDED: Graphic control - zoom buttons no longer originate around 0,0
- ADDED: Graphic control - show when walkboxes are connected
- ADDED: Basic in-game debug window
- ADDED: Active flag for WalkBoxes, amendable in scripting, resets WalkBoxMatrix
- ADDED: onEnter event for Walkboxes - script to run when Player enters
- ADDED: Basic AGS -> XAGE conversion
Tuesday, 14 April 2009
Over Easter weekend I finally got around to taking a proper look at Adventure Game Studio. The first thing I discovered was that the main container for an AGS Project (*.agf) is in XML format.
More as a proof of concept than anything, I've added an option to convert AGS projects to XAGE. The process so far only takes a few minutes - here's a quick video of Demo Quest 3-1 being converted to and running in XAGE:
As above, the sprites and room images need to be exported first (the player character is currently bald as AGS seems to export to 32bit bitmaps instead of 8bit). XAGE gathers up the exported sprites into a single texture for each character and creates the animation frames automatically.
It's a nice start, but there are quite a few limitations:
- As AGS and XAGE are both engines for the same genre, there's inevitably a great many similarities. There are also, however, a number of crucial structural differences. For this reason there will never be a 1 to 1 perfect automatic conversion.
- Unfortunately the individual room data (objects, walkable areas etc) is not wrapped up into XML but some other format (.crm?), so I'm not currently able to convert any of the scripts over - the real meat of the game.
Friday, 10 April 2009
Let's break this problem down into managable steps:
- There must be several different clouds
- They must be obscured by the mountain and all other objects
- They must start in randomised locations
- They must slowly scroll to the left & reappear at the right of the screen
1) There must be several different clouds: Using the editor we add five new objects to the MountainTop room. So we can identify them within the editor, lets give them IDs cloud to cloud5. We don't need to give them a name as we don't want the user to be able to interact with them in any way. For each cloud we need to create a single AnimFrame. For consistency, lets tag them all as show, and set each cloud's current frame to the show frame.
2) They must be obscured by the mountain and all other objects: In order for the clouds to pass behind the mountain, we create a new object called mountainCover which has an animframe of the mountain itself. We then set the y position and hotspot of mountainCover so that it perfectly overlays the actual room background image. Because of the hotspot, this object will not obscure any other objects (our player character, for instance) but will obscure the clouds, as we'll ensure these always have a lower Y position.
3) They must start in randomised locations: Every time we enter the room, we should set the positions of the five clouds to random locations. We then set each cloud to run its own move script.
4) They must slowly scroll to left: Each cloud's move script checks whether the cloud has scrolled offscreen (i.e. the xPosition is more than 200 pixels beyond the left side of the display). If so, the cloud is repositioned at a random position to the right of the screen so it can scroll back on. At each iteration, the scripts pauses, moves the cloud one pixel left, and then repeats the whole process.
Now if we repeat this for cloud2 to cloud5, we get the following:
Excluding the artwork, the above takes only a few minutes to achieve but really helps to add an organic feel to the location, without a single line of code being written.
There is an obvious improvement in that I could implement script paramaterisation and use the one script for all five clouds, passing each cloud object as a paramater. I'm not sure yet whether I'm going to want to implement this, as you can pretty much achieve the same affect using Global Variables.
Tuesday, 7 April 2009
- REMOVED: zPos - object occlusion now works purely by Yposition & hotspots.
- FIXED: WalkBoxMatrix not always generating correctly.
- FIXED: Characters getting stuck when three walkboxes interesect.
- ADDED: Reporting Tools now use progress bar (can be cancelled).
- ADDED: Character WalkSpeed customisable and affected by walkBoxscale.
- ADDED: Visible (True/False) character/object option (removed 'Invisible' option from inRoom).
- ADDED: "Make Player" button on Character Edit panel & scripting.
- ADDED: Changeable Walking Speed (handy for mapviews etc.)
As a workaround, any future alpha requests will get a zipped up version of the ClickOnce package to ensure that the requirements are definitely met. I'm debating whether to switch off the auto-update feature too, as various changes for v0.4 break the scripting for previous versions (at one point fatally so, as enumerations break the xml serialisation, so I reverted back to the previous system). This isn't so much of a problem at the moment, but will be in the future if people are regularly having to regression test their games to make sure new features don't make them fall over. I'll have to have a think about it.
Finally, anyone hoping to release their XAGE game to the Xbox360 might want to register for the Dream Build Play competition, which entitles you to a free 12 month creators club membership. This means you'll be able to deploy & test your game on the console itself to your heart's content, though you'll still have to cough up for a paid membership when it comes to XBLCG peer review.
Sunday, 5 April 2009
There has been some discussion on the XNA forums about the impact of the 8 minute trial on actual game sales. Some of the problems facing small puzzle games aren't really applicable to the point and click genre, but that has its own set of issues.
As I'm in the process of fleshing out plot ideas for my own game, it seemed like a good time to get some pointers over what works and what doesn't. To help in this, I've downloaded five games built with AGS and treated them as if they were targeting XBLCG.
Colour Key: Green = pre v1.0 functionality, Orange = post v1.0, Red = unlikely to be implemented.
Disclaimer: The following are not reviews, just an analysis of their introduction and suitability for Xbox Live & XAGE. Granted, it's a slightly unfair critique as none of these games were designed with a time limit in mind. A few I've played before, the rest are new to me. XAGE capability of each title excludes GUI Customisation and Conversations.
1) Murder In a Wheel
The Good: Interesting Day of the Tentacle-esque art style. The murder occurs within the first 8 minutes. The player gets a few minutes of playing the game.
The Bad: Characters slide as they walk (more a matter of personal preference).
Not yet possible in XAGE: Nothing I'm aware of.
2) A Second Face - The Eye of Geltz is watching Us
The Good: Higher resolution than most Adventure Games. Very good use of audio.
The Bad: Slow pace of the intro is a bit of a killer. Art direction a bit wonky. Pronunciation of "Realm". Suitability.
Not yet possible in XAGE: Talking heads, Text Parser.
3) A Tale of Two Kingdoms
The Good: Comes across very much as a labour of love. Interesting zoom technique in the preamble.
The Bad: There is a LOT of dialogue, with barely a few seconds of play in the first 8 minutes unless you skip a lot of scenes. This is likely to appeal to a certain type of player and alienate the rest. Possible size limit issues.
Not yet possible in XAGE: Talking heads, Autonomy.
4) Annie Android
The Good: Low colour palette makes for a very striking, NES-esque, retro art style. A bit kitsch. Nice, simple GUI & polished animations.
The Bad: Length.
Not yet possible in XAGE: Nothing I'm aware of.
5) Blackwell Legacy
The Good: The art style and general presentation is strong. The story is intriguing. The player gets an early chance to see the game's play mechanic (Rosangela's apartment).
The Bad: The central plot revelation is not exposed within the first 8 minutes (unless the player skips through much of the dialogue).
Not yet possible in XAGE: Character transparency, Speech, Talking Heads
Conclusion: It's important for the player to get a clear idea of the plot, characters and game mechanic within the first few minutes, which isn't as easy as it sounds. The player needs to get sucked into the gameworld sufficiently to part with a few hundred microsoft points. Also a trial detection needs to be scripted into the game itself, to prevent users from repeatedly skipping cutscenes on multiple playthrough. Loading & Saving must be disabled.
Sunday, 29 March 2009
There are a few things missing, and you might notice that Guybrush walks backwards (sprite flipping is not yet supported), but the library can only mature. Performance isn't stellar but with some optimisations in both XAGE and SilverSprite, I can really see it being comparible to the original formats.
The best part is that Silverlight is not specific to Windows, and there will be no dependancy on the XNA runtimes. This means that there is the possibility that XAGE could offer broad multi-platform support, something I've seen developers of commercial AGS games bemoan. The list of platforms are as follows:
- Windows PC (XP/Vista/7)
- Xbox 360
- Mac OS X
- Windows Mobile 6
- Symbian (Nokia)
EDIT: I've just read up on Silverlight v3 which is currently in Beta. Apparently there will be options for developers to allow users to store the SL apps offline and be run outside of a browser. This is all very good news - essentially as good as native support for these platforms but with minimal effort. It will be interesting to see how this all pans out and how well XAGE can exploit these features.
Friday, 27 March 2009
The actions now have an actual textual description which makes deciphering scripts pretty painless. A simple but useful change:
As usual, if you'd like to have a play around with it, email firstname.lastname@example.org and I'll give you the download link. This is the last time you'll have to do this as the XAGE Editor now automatically updates.
Wednesday, 25 March 2009
- Added Copy/Import/Export mechanism - no more hacking through xml to copy items from room to room, or game to game.
- Added integrated bug reporting, feedback and optional exception logging (all via Web Services) - hopefully this will only improve the quantity of feedback.
- Added Font preview in FontManager - required quite a bit of work to import the XNA model into the Editor, but it works fine.
- Tidied up field positions.
Implementing this has taken quite a bit of work, and comes with one small sacrifice: Mp3 support. The reason for this is that I had originally been using the Windows Media Player library for PC audio playing but this component would only play the audio from a file rather than a stream, which is required for the encryption. The only way I could get around this was to save the the decrypted audio to a temporary file in order to play it, which of course defeats the whole purpose of the encryption.
Eventually I decided to rip the Media Player component out altogether and have now replaced it with SDL.net's audio, which supports loading audio via streams and therefore encryption. XAGE now supports the .ogg format for PC songs and, whilst it no longer directly supports mp3, it's easy enough to convert audio formats manually, plus there is the added bonus of future support for Midi and Mod files. Swings and roundabouts.
Whilst no concrete sales figures have been released, it appears that there's a reasonable amount of money to be made from the Xbox Live Community Games channel. At GDC Microsoft have announced that 'Several Community Games top sellers will be taking home more income from four months of sales than the average U.S. citizen earns in a full year'. Granted that's for the more popular games, but its not bad going - about $50k in 4 months?
The Blackwell Legacy:
For someone who would normally be described as a gamer, I don't get to play a lot of games. Almost all my free time is spent working on XAGE. In the last six months I've rattled through a couple of hours of Left 4 Dead and Mirror's Edge, and that's about it.
Last night, after reading Uhfgood's review. I finally got around to trying The Blackwell Legacy demo. It's a nice looking game, polished and well put together. From what I saw there's nothing in it that XAGE wouldn't be able to recreate - there'd need to be a few UI additions and implementing speech is an interesting challenge, but ultimately there's nothing that I'm yet aware of that would stop a title of Blackwell's quality being released on xbox live using XAGE.