Clever Boy ;)
Ok, I guess I'll have to log in, and admit who I am.
My name is Colin Davis, and I am the head producer of the SQ7.org project to create a free game in the line of Sierra's popular Space Quest series.
We've been working with AGAST for.. quite a while, but consistantly run up against shortcommings, because of it's design choice to include home-brew scripting language. Their engine does not properly support Arrays, structures are frustrating, the object system is broken, the parser doesn't work, and none of it is fixable.
So, although we have invested a good deal of work in AGAST, we will likely be forced to abandon it as a development platform.
Leaving AGAST, I looked out for what other possibilities were around, and heavily considered wintermute. It has a saner scripting language, ARRAYS WORK, as do Strings (Another Broken AGAST "feature").
But with Wintermute, we were again locking ourselves into a Closed Source engine. And while we did like the engine, it seemed far too risky to invest time and effort into an engine that we could not modify. If you are going to base the core of your game around and engine, It's hard to trust something you do not have the source to, even if it's as well built as WinterMute.
(Not to mention WinterMute is a great name ;)
I had asked if the source might be released for WM, but things seemed rather unlikely, so we began looking at other options.
We looked at the open-source MAD engine, and again, we saw people building a scripting language, lua, over a c++ base, and the problems that come with that. Looking closer, we saw fundemtal architectual flaws, and knew we couldn't use the language.
So, with AGAST, WinterMute, AGS, and MAD in mind, we started looking into designing Yet ANOTHER engine.
We wrote up a design document that breaks the engine development up well, breaking the component pieces up so that they can work properly. We began coding the engine in Java, and debating using either Python or Lua for the scripting language.
But that's where we paused.. In two weeks of work, we already had a engine that was moving sprites, playing multiple mp3s at once, crossfading between them, and supporting panaramoric backgrounds.
We've split object defination off into XML files, so that you can say define the "Look" responce on a ball outside of the language. This is extended to support defining animation rate, and other various properties.
Behaviors, such as causing Roger to display a death message, would be written in java, and then called as methods.
But as we looked at things further, Kevlar-our lead coder and I began a discussion of whether or not we really needed a scripting language at all.
By defining the objects outside of the real code, and using a GUI editor to place them, we had vastly simplified the work of the game-writing team. Almost everything they would have to do would be available from a GUI tool.
Simple commands, such as Walking to a place, and they saying something, or a dialog tree could be done in Java as simply, or simplier than they could in a scripting language.
And that not only saves /us/ the work of adding one, but it saves the game developer the work of having to be constrained by one. I'm sure everybody has run into problems with a game-scripting language, where the need feature X in a lanauge, but it hasn't been implemented yet. We avoid that entirely.
By coding in Java, we gain the support for everything the language supports, as WELL as one of the industry's finest IDEs, Eclipse.
By using Eclipse, even scene defining writers have the beniefit of code completion with tabs, and easy lookups of the right command.
Everything is just as simple as it would be if we were to include Lua, but still retaining flexibility.
Now, admittedly, This would be harder to do in C++. Java eases memory management, allows us to use custom formats for animation (animatted gifs work great as sprites) and Music (mp3 and ogg), and allows us to pull from a large pool of programmers. Java is a great language for Adventure games because it can do so much natively, while still being sufficently fast (Adventure games are mainly file dependant, not CPU dependant). We gain Agility and Speed of development, and I think it's showing.
As I mentioned earlier, we've been working on our SLAGE[1] engine for two weeks. In that time, we've generated an system that can deal with a great deal of the requirements of an adventure game. Event handeling, object defination, Sprites, Movies, Background loading, Panaramoric background, Sound support including multiple looping tracks at once.
We're making great speed, and will likely have a fully-working engine within a few months. It's not slowing down the project because of our design decisions. We can continue to develop the resources, and port them when needed.
And we'll be releasing both the engine and the source code for free. We're developing using an Open source license, which means whomever wants to will be free to download the source, play around with it, and hopefully contribute back some code.
We're not trying to compete with WinterMute, as much as get our game done in a way that we can work with. I really wish we could have used the WM engine.. I'd love it more if Mnemonic wanted to volunteer to work on SLAGE as a project for WM2 ;)
While I am sure have munged the definations and ideas in this message a bit, as Kevlar has a far better mind for code than I. But in looking at our plan, I really think it may be the best way to proceed forward.
I'd be glad to have any volunteers who would like to work on our engine (or game) with us, or any discussion about how best to implement a game engine in general. Hopefully people more clued-in than I can have this discussion ;)
[1]- Sierra Like Adventure Game Engine. Or SLage Adventure Game Engine, for the Recursive name fans ;)