It’s time for a little tech post around the tools we use to make Blocks That Matter.
William wrote 2 successive articles, so I take the keyboard this week and we are going to talk a little bit about how we make BTM.
> Flixel as the root framework
I love Flixel, it’s a really “simple and funky” framework that wrap Action Script 3 and Flex functionalities to give you some useful base to make Flash games.
Moreover, we already used this framework to power Tuper Tario Tros. and Greek & Wicked experiments.
For a programmer, it’s really easy to get the spirit of Flixel. It’s maybe not the most optimal framework, but it greatly eases the game conception, and that’s all we need.
If you are looking for more complex frameworks to build flash games, you can take a look at Flashpunk or the Alkemi Flash Bitmap Renderer.
> Xna as the glue to get the game running on XBox
Since we wanted to experiment the Xbox Live Indie Games channel, we have to use the Xna framework. The framework is only available through the C# language… and as you may have guessed, Action Script 3/Flixel is different than C#/Xna. So we use the work of Ben Baird who ported the Flixel Framework to Xna. Ben already shipped 2 games on the XBox Live Indie Games channel, both of them powered by his Flixel port.
Thanks to his work, we saved weeks of development we could have spent porting the Flixel framework to Xna, and we can directly work with a framework spirit that we already know pretty well.
> Editing levels
As you may know, Blocks That Matter is a kind of spiritual sequel to our very first Deep Water Experiments: Tuper Tario Tros.. In TTT, William edited the level by writing in a big text file that looked like this:
Editing a level in such a simple file format is a quick way to have a “level editor” running since any notepad or spreadsheet application allows to build a level… But from a Level Designer point of view, it’s a little bit tricky to imagine what the level will look like and feel in game.
I was looking for an existing level editor and found a very good one : Ogmo Editor. But Ogmo Editor is only for strictly pure 2D games representation. Since we use a kind of isometric rendering, we need to be able to sort some sprites.
So for BTM, I decided to build a very simple level editor that would be an ingame one, allowing us to create a level entirely with a gamepad.
This allows us to make quick iterations when we build the game.
The editor is ruled by a unique resource file at a time. This file contains description for all actors, sprites and various parameters to tweak the game. Here is a simple example of the content of a minimal resource file.
Then when we launch the game with such a resource file and here’s what we can do:
As you can see, we kept the editor really simple, all the stuff is done with the gamepad, except the parameters tweaking system which uses the keyboard. A virtual keyboard could be used, but it will be a pain.
There are few editor features shown in this video:
- a cursor is used to put or remove elements from the level
- a layer system is displayed on the right of the screen, the layers are all displayed by default, but we can choose to mask the non current layers
- a library of blocks is displayed on the top of the screen, the blocs in the library depend on the current active layer (blurred in this video, we want to keep some secrets about the blocks)
- the cursor can change the nature of the block he’s painting by navigating in the current bloc library
- auto adaptive ground blocks visual depending on the surrounding blocks
- some visuals (like the herbs sprite) can be chosen randomly during the painting process
- we can test/edit the level (the player stays in position) or play/edit (the player starts from the spawn point if there is one)
To ease the sound integration into the game, we use a Microsoft Tool named XACT (for Cross Audio Creation Tool) that allows Yann to constitute a database of sounds we can play in the game thanks to the use of dedicated parameters in some actor setting in the editor. Friendly names given to the sounds allow the identification in the database.
Here is what the tool looks like:
And that’s all for this week!
See you soon.