Blog Articles

Adventure Game Studio – now open source (again)!

Chris Jones, the developer of Adventure Game Studio, has graciously opened up the source code to his ambitious project. During the past few months a couple of developers, including ourselves, have started to poke around in the AGS innards in order to assist in its development. Here at SkyGoblin, we are very fond of AGS and will, in the spirit set by Chris Jones, make any changes we make to it publicly available.

The most notable difference between the official version of AGS and the SkyGoblin branch is that ours has support for custom screen resolutions in the editor and engine. In the case of the HD version of The Journey Down, we build our graphical assets for 720p (1280×720 pixels) screen resolution. We have altered the engine such that it will first attempt to set the monitor to the custom resolution (1280×720 in our case) and, if that doesn’t work, stretch the graphics to whatever resolution Windows is currently set to. Later on, we might add support for letterboxing on screen resolutions with aspect ratios other than 16:9, but we have not yet decided on whether stretching the game looks better than letterboxing.

To those of you familiar with AGS and who are technically curious, it’s worth mentioning that we’ve added support for new screen resolutions by adding a new kind of graphics filter which handles the rescaling of screen coordinates. Out of the different solutions we considered, this felt the least intrusive and least likely to break already existing functionality. AGS already has support for upscaling games by fixed multipliers (320×240 to 640×480 for instance). We’ve merely added support for arbitrary scaling. Note that custom resolutions currently only work with the Direct3D 9 driver. We might add support for the DirectDraw driver later on, but as it seems highly unlikely that anyone on a computer with enough horse power to run a 720P game has a graphics card which doesn’t meet the requirements for the Direct3D 9 driver, we’ll probably hold off until we’re in beta.

JD running in 1280 x 720 through the SkyGoblin version of the AGS editor.

Our branch is forked directly from the official version and, if it’s of interest later on, reintegrating our changes should be fairly straight forward. Note that though we try to not break backwards compatibility it isn’t something we currently prioritize and, as we’re quite new to the quite large code base, it’s unlikely that we won’t eventually break something by mistake. Bear this in mind if you should feel like opening up your own projects in our version of AGS. Since we have only just begun working on this branch it’s still very much in an experimental state. Be sure to back up any files before working on them!

Those of you who are interested in trying out our version of AGS are welcome to do so and if anyone should be interested in pitching in, let us know and we’ll give you write access to the repository. To access the project, head over to https://gitorious.org/skygoblinags/. There’s a wiki on the page with a few instructions on how to download and build the project for yourself.

Thoughts on 3D characters in TJD

If you’re not interested in the thoughts behind our technical development choices, this post is definitely not worthy of your attention. Just look at the pretty pictures and ignore the rest.

First off, to clarify things: The Journey Down does not feature real-time rendered characters such as say, “Grim Fandango”, or more recently “Gray matter”, but rather uses pre-rendered 3D characters such as the ones in the “Runaway” games. This means that technically speaking, the game is still in full 2D, BUT we develop and animate the characters in 3D, before inserting them into the game engine.

 

So on to the first obvious question:

Why not just paint and animate the characters in 2D? It looks awesome!

To be frank, there’s no room in our schedule or budget for it. Painting and animating characters in 2D such as, say, the “Broken sword” games takes crazy amounts of resources. Working with 2D animations was fine and dandy when we worked on the low res prototype of the game, but when you up the resolution, all the cheating shows, and there has been A LOT of cheating involved in the prototype, I can tell you that. Creating and animating the characters in 3D not only goes a lot faster, it also gives us a whole lot of stuff for free. Animate Bwana doing something in one angle, and all you have to do is rotate him in 3D, render it again, and bam! you’ve got him doing it in another angle. This becomes especially handy when it comes to frame heavy stuff such as walking and running.

Another good reason for going 3D on the characters is the fact that we, while working with Nord for the past four years or so, have worked up a wonderfully efficient pipeline when it comes to creating and animating 3D assets. There’s nothing as valuable for an independent game production studio, as a well honed, efficient production pipeline that you KNOW will yield good results in good time.

In our tiny four four man studio, with only ONE animator (Henrik) Nord has challenged us to work out a butt-crazy efficient pipeline when it comes to animation, which is something I am glad we are now making further good use of.

 

So why would anyone bother with real-time 3D then?

Make no mistake. Real-time 3D has A LOT of good things going for it. For one thing you can have dynamic lighting and cast shadows, thus helping your characters blend better into the scene they are in. Also, when in real-time 3D, you’re not restricted to the camera angles of your rendered sprites, you can use any wonky angles you desire. Another neat trick with real-time 3D is that you can blend your animations, thus making your character feel a lot less jerky when switching between different animations. Sounds lame, but it goes a long way in creating an immersive atmosphere when things don’t pop and snap so much.

Autumn moon’s “A Vampyre Story” did a great job at combining 2D backdrops with real-time rendered 3D characters. Those bastards must have had a way juicier budget than we do! (read “they must have actually HAD a budget”)

Why are we dissing real-time 3D if its so cool and all?

First off, if there’s one thing we’ve learned from working with Nord, it is that real-time 3D ALWAYS adds another dimension (this is, technically, not really a pun) of things that can go wrong in one’s production pipeline. Creating the assets and displaying them on screen, is in theory not really a big project (hey, we’re doing it in Nord already). In practice however, we know from experience that the added bits in the pipeline that would be required, small as they are, could still potentially be disastrous to our work flow. Few things have slowed our production down through out the years as much as importer/exporter woes. We’ve understood by now that anything that’s a threat to one’s established pipeline, should be thrown out the window asap. (Preferably before you go and get all excited about all the pros of the feature you are considering, which by the way happens to us all the time.)

On another note, now that we have bent AGS to our will and made it 720p compatible, there’s virtually zero tech left to develop for TJD since we are going with pre-rendered characters, meaning that our pipeline is as wonderfully clean as we could possibly wish it to be. Apart from some minor theora-codec hurdles to overcome, there are no dark tech clouds looming on the horizon threatening to halt our flow of work. That, as an independent developer is a very, very reassuring fact.

The cast – Lina

 

No other character in the entire “The Journey Down” cast has such a wide spectrum of different vocal behaviors as Lina. She’s charming, she’s bossy, she’s frightened, she’s angry… Needless to say, this requires unique voice acting skills, which combined with our requirement for the African and slight scholarly sound of Lina, makes it a practically impossible role to fill.

However through some magical act of the great gods of point-and-click, we’ve stumbled on the perfect actress for the role. Her name is Cassie Ewulu – how cool is that? It’s of Nigerian origin. Better roots for the actor behind this character are likely impossible to find.

Lina voice sample from TJD by SkyGoblin

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum a justo quam, eu mattis velit. Cras ac dolor ac mi placerat vulputate. Proin bibendum tristique sagittis. Aliquam diam leo, tempus sed aliquet vel, tincidunt vel ligula. Phasellus magna enim, feugiat non condimentum quis, interdum vitae nisi. Vivamus eros nisl, dignissim vel scelerisque nec, laoreet eu mauris.