First up, for anybody hoping for an update to Above The Waves, sorry! We’re hoping to expand the game later this year, but we’re not ready to talk about that just yet.
Instead, this post is a bit more reflective, and looks at the experiences of making a game using the SLUDGE engine. It’s an excerpt from a much longer article which dives into using SLUDGE’s tools and runs through some of Above The Waves’ source code.
Picking An Engine
Any time I’m about to start a new project, I like to have a look around and see what tech there is out there that fits that project’s needs. With Above The Waves being my first proper attempt at a point and click adventure game, it was time to dive in and experiment with some new tools.
Beyond aligning with the specific needs of a project, my requirements are usually a mix of one or more of the following:
Must be Free Software (the power to do a meaningful permissive source release is super valuable regardless of whether it’s now or later)
Must be usable on Linux from a development perspective (I’ve used tools in Wine before, but I prefer to not)
Must be deployable to Linux, Mac and Windows (huzzah)
Must show some promise as a usable solution (appears “finished” enough to be functional)
For Above The Waves, I knew that I wanted something capable of providing a point and click adventure style experience. To keep the amount of tech development time down during Adventure Jam’s two week window, convenience methods and tools for common 2D adventure game style functionality (automatic nav mesh traversal, perspective scaling, sprite animation, depth handling, etc.) felt essential.
Based on previous research, I had narrowed down four engine possibilities that seemed to fit most of my requirements.
AGS (Artistic License)
Godot (MIT)
ScummVM (GPL)
SLUDGE (LGPL)
Narrowing down options here was pretty straightforward. ASG’s lack of native Linux tools made it easy to cross it off the list. Likewise, ScummVM doesn’t have much in the way of available tools either (there is a Qt based Linux compatible editor for the AGI engine, but its last code update was in 2012), and the ScummVM developers frame targeting it for new projects as “not advisable”.
Godot was a serious consideration. With it being used for The Interactive Mendonça Adventures of Dog & Pizzaboy, Godot has been getting a bunch of 2D point and click adventure specific enhancements. Some of these had made their way in by the time Adventure Jam rolled around, whilst others have come into the codebase more recently. Godot’s level of complexity and learning curve looked to be steeper than SLUDGE, and with the window I had available, I decided to put Godot aside for later use.
SLUDGE seemed to map fairly well against what I was looking for - it’s LGPL licenced, runs on the three major desktop platforms, and consists of an engine (a common binary that’s the “player” for a SLUDGE data file, much as AGS or Unity might have), a spritesheet builder, a nav polygon editor and a tool for creating depth masks, and a utility for managing localisations. The engine and toolset also compile on Linux, Mac and Windows.
At the core of SLUDGE is the scripting language itself. This language is fairly straightforward, but has a number of idiosyncrasies that I’ll go into later. The SLUDGE compiler builds scripts into some kind of bytecode that the SLUDGE engine can run.
I’d been aware of SLUDGE for some time and had had some recommendations from friends, but hadn’t really had a project suitable to use as a testbed. I also have a couple of acquaintances who’ve previously used it that I felt I could nudge for assistance if I needed it. In addition to being able to look at friends’ projects (thanks Rusty!), I had access to several example projects on the SLUDGE website that looked like they would cover most of the functionality I would need if I wasn’t able to figure it out myself.
SLUDGE was originally created by Hungry Software for their own games (there’s not a lot of solid information about timeframes that I can find, but so far as I can tell, that started with Out of Order), and has since been released under open licences (the engine itself is LGPL, and the suite of editing tools is GPL).
In hindsight, I’m glad I checked out SLUDGE. It was a good opportunity to mess around with the tools, and it was enjoyably fast to put things together.
If you’re keen to read more about SLUDGE and check out some snippets of source code from Above The Waves, check out this article.
0 comments