This entry in the Closer Look series is a bit different than normal. First, Blade Engine is very much a work in progress, so expect bugs and flaws and minimal documentation. Second, it’s actually built over top of an existing game engine, LibGDX. Finally, it’s a game engine focused on one very specific genre – adventure games. Given the popularity of hidden object games on mobile these days, there are no doubt a number of people looking for an appropriate engine. So without further adieu, I present the Bladecoder Adventure Engine, an open source cross platform LibGDX based game engine and editor for creating adventure games.
As always there is an HD video version available here.
Meet Bladecoder Adventure Engine
Blade engine consists of two parts, the underlying game engine and the editor that is layered on top of it. It is designed in such a way that you can work entirely in the editor and never once right a line of source code. You assemble your game from a collection of Chapters, Scenes and Actors and added events and actions in the form of verbs. If you want to modify the fundamental structure of the game itself, you are going to have to jump into the underlying source code. Fortunately that is an option, as Bladecode Engine is hosted on Github and the source is available under the incredibly liberal Apache 2 license.
Blade Engine Features at a Glance:
- Multi platform support: Android, IOS, Desktop (Windows, OSX, Linux) and HTML
- Several animation techniques: sprite/atlas animation, Spine (cutout) animation and 3d model animation
- 3d character support
- Multiresolution to deal with different densities and screen sizes
- Multilanguage support
- Open source and free (as in beer and freedom)
- Code free game creation possible
The heart of Bladecoder is ultimately the editor, so let’s focus there after we cover getting started.
To get started with Bladecoder you need to have Java and git installed and properly configured. Bladecoder uses the JavaFX ui library so you will have to use JDK 8 or newer or be prepared to have to configure JavaFX manually in the build process. You will also require an internet connection for the build process to succeed the first time. To start, from a terminal or command line, change to the folder you want to install Bladecoder and enter:
There is an example repository, including the work in progress game The Goddess Robbery available in the repository https://github.com/bladecoder/bladecoder-adventure-tests. You should probably clone this repository too, as this is perhaps the single biggest documentation source available right now.
Assuming the compilation process went without issue above, you should now see the Adventure Editor, where the bulk of your work will occur.
Your game is composed of a collection of Chapters, which in turn contain Scenes. Scenes in turn are a collection of Actors and organized in layers:
Game Props enables you to set global properties of your game:
Resolution enables you to quickly create scaling modes for supporting multiple device resolutions ( think Retina ):
While Assets enables you to import multiple defined assets include audio and music files, texture atlases, 3D models, images and more.
You organize your scene using the editor available in the center of the window:
You can place actors on different layers, define walk paths, etc. Click the Test button to preview that scene in action.
The actual logic of your game is defined on the right hand side of the editor.
Here you can set properties of your actors:
Create and edit dialogs:
Define sounds and animations:
Clicking the edit icon will bring up the appropriate editor:
While selecting an animation will preview it in the scene:
Finally Verbs are the heart of your application:
You can think of verbs an analogous to event handlers, and they can be applied at the world, scene or actor level. There are also default verbs that will be fired if unhandled. Think the generic “I don’t know how to use that” messages from adventure games from the past.
Let’s look at an example from the Scene, handling the Init verb which is fired when the scene is ready.
This verb causes the sequence of actions shown at the bottom part of the above image to be fired when the scene init verb is called. This causes the player to move, a dialog sequence, the player is scripted to drop an item, a state value is changed, etc. You can create new elements by clicking the + icon:
And filling out the resulting form. Each element has a different form associated with it. Here for example is the result of the Say element:
Once complete simply click the play or package button:
Play launches the standard loader:
This screen can obviously be customized to each individual game. While package brings up a form enabling you to build your game for a variety of platforms:
And that essentially is it.
Help and Community
This is certainly a weak point of the Bladecoder engine, it’s the result of a single coder, there is minimal help available and if you don’t know how to debug Java code, you will probably end up in trouble, at least at this point in it’s lifecycle. There is currently no community or forum available for this engine but perhaps that will change in the future. I spoke with the developer a few times however and he was very responsive and quick with fixes and answers. He is also on twitter at @bladerafa if you want status updates on the project.
Make no mistakes, this is very much an under development engine so expect things to blow up spectacularly at any time. When it does, you are probably going to be on your own figuring out why as there is no community to fall back on. All that said this is a surprisingly robust tool that makes the process of creating an adventure game exceedingly simple. Once the engine matures a little bit it will be an excellent tool for even a non-programmer interested in making adventure games. For now though if you are competent in Java and interested in making an adventure game, this engine takes care of a hell of a lot of work for you and provides full source code for when it doesn’t. Plus at the end of the day, the price is certainly good too!