I know most of you want to see the latest juicy pixelicious art that Thomas has been doing for the game but guess what? This is a technical report (the first in a series of status reports) and none of that will be featured here! Instead let's talk on where the game is at this point, what can you do with it and more importantly, what can it do for you? Let's get right on that shall we:
- Commanders-type units have been added in the game
- Early keyboard-only support for playing the game
- Improved modding support
- Unit creation and editing has not been externalized from the code
- New healthbars for the units to represent exactly how much life they have
- Added scrollbars and tousch scrolling for some UI elements (buy menu, victory screen)
- Unit abilities has been removed from the game
- Random map scroll at the start of the match happens no more
- Game starts in either fullscreen or window mode, based on the option ticked in the options menu
- Icons and Effects now position themselves correctly when zoomed in
- Player can no longer interact with the map/units/buildings during the AI's turn
- Exiting the game to the editor now brings back the latest map you were editing
- OK/Cancel/Save now work in the editor
- Going from scrolling to Colision+/- now works as intended
- Fixed startup crash on Linux due to missing 64b binary
Now to go into detail about the changes and additions (I believe fixes are self explanatory).
First thing I'll be covering is the addition of commanders as playable units.
Up till this point commanders (or, as Thomas likes to call 'em, GangBosses) were used only as "profiles" for the player, affecting how much damage a unit will receive/inflict or how much income is generated each turn. From this point on commanders will take a much bigger role in the battle as actual playable units present on the battlefield. At any point in time during a battle a player will only be able to have only one commander present. A commander boosts the stat of his units (albeit less then in the previous version) and has access to abilities. Once killed the stat boosts will be removed. The list of abilities that a commander has access to has not be defined yet but I can give some examples such as:
- Attacking twice during one turn
- Doing Area of Effect damage
- Healing friendly units
- Capturing building/houses (like scouts)
- Sacrificing a friendly unit for a damage boost
- Sacrifice it's own HP to boost movement / attack for friendly units in range
Unit creation and editing has not been externalized from the code.
In alpha 1 if anyone planned to add new units to the game or change their settings they would have had to dive in the code and make changes to: unit_type.lua, buy_menu.lua and leditor.lua. From this point on units are loaded from external CSV files: mutants.csv and robots.csv. they look something like this:
In the said file you can define their stats, their image, abilities, if they can capture buildings, how much they cost, their animation states, their graphics/icons for the buy menu and sound files. Adding a new unit into the game is as simple as adding another entry in the file (example: Joe, Allen, ZapaTard, Crystal, ISN). I believe that this opens up new possibilities for modders and/or people who plan on using the game's source for their own TBS game (more on this on the end of the post).
Improved modding support.
In the game's root directory there is a game called MODS. In there you can place your own folder (example: "Advance Wars"). If you copy the contents of the Game folder into your own folder you can start modding the game. Files present in yourModFolder take precedent over files in /Game (if your mod is enabled). What this means is that now you can change the game and distribute your changes without altering the main game. Now, by default when starting the game it will run the native version. To enable a mod you need to edit game.lua and add the mod name on line 3 for the variable Game.modInUse = "yourModNameHere". If the varaible is set to nil then no mods will be ran. In the future I plan on releasing a launcher for the game which will allow you to select what mods you want to use (amongst settings and other useful options). For those interested in how this is handled code-wise things are pretty simple. All the lua files I want to use are added to a table called includeList. I loop over that table and check to see if any of those files are present in the current enabled mod. If they aren't the game defaults to those in the /Game folder. Here's the code:
for i,v in ipairs(includeList) do
local prePath = "mods."..Game.modInUse.."."
if isModuleAvailable(""..prePath..""..v.."") == false then
prePath = "Game."
New healthbars for the units to represent exactly how much life they have.
In alpha 1 we've received complaints regarding the healtbars. Players found that they couldn't really tell how much health a unit has and how much damage he will take in a battle. Our solution to this problem is this:
Each dot on the healthbar represents one point of health. No more dots = 0 health = unit is dead. No more calculations, no more approximations. When you select a unit you will be able to see how much damage it will inflict to units that can be attacked in his range. Can you unit destroy the enemy? The healthbar will reflect that and will display no more dots. Hope this solves some headache's and makes things go smoothly.
Early keyboard-only support for playing the game
By keyboard support I mean playing the game without the aid of a mouse/touch screen. A cursor/pointer is used to interact with the objects/units and it can be moved using WASD/Arrow Keys. Pressing space selects the unit/building underneath it and/or confirms movements or attack. This can also allow for the addition of gamepad support in the future. Now I say early keyboard support because things are not so peachy. The main problem with it falls down on UI navigation. In order to setup the user interface I'm using MOAIGUI a library for lua and MOAI that handles the creation of windows and ui elements (textboxes, buttons, images, etc), a library that was designed with mouse/finger input in mind. What I'm doing in order to use it via keyboard is to access the ui elements position via code and move a "virtual mouse" over them, basically emulating mouse countrol on the ui. It's barely functional at this point and currently requires me to setup each window independently. The code is a tad messy but I'm working on it. Hopefully it will be ready in time for the next alpha release.
That's it with the most important changes added into the game. Next I'll want to cover some other game-related subjects. First of all we're aiming to release alpha 2 in June (aiming for early June but you know how things go... might even be July). Now the next alpha will feature new Maps (older ones will be available for download separately) and 4 playable commanders (as units) and early campaign support.
Next we're working on setting up a development blog to keep you up to date. Due to personal issues on my side ( mother has cancer and I've been on the road a lot because of that) development has gone a tad slow and many have wondered what's happening with the game. By setting up a dev blog both me and Thomas can offer more transparency on how development progresses. Expect status reports (such as this one), technical stuff (implementing the AI and other fun things ^_^) and, of course, lots of screenshots and ART assets from Thomas Noppers. With a bit of luck we could even get (here I mean strong-arm) Grace to showoff some cool sound stuff. Blog should go up sometime this week.
Third thing I'd like to cover is the source code for the game. Up till this point I licensed it as free for non-commercial use, meaning that you are free to use the code for personal projects as long as you get no revenue out of it. Well I've been thinking about this and would like to change things. As of the next commit on Github I'll be changing the license to MIT. What this means is that you are free to fork the code, change it, distribute it for free and commercial purposes. Just don't distribute the code with any of the assets from the game (sound files or graphical images). With the way recent changes to the game are going I'm getting close to having Mutant Gangland's code work as a engine for TBS games. I'm pretty sure that a few months down the road game-orientated contents will be truly separated from the actual code and will be usable to create other different turn based strategy games.
The game's source is available on github. I recently setup a new branch "development". Hoping to push updates every week, starting now, into the "development branch" while master will contain stable releases. Currently both branches are a mess. The most stable version should be this one. I'm a git newbie and I overlooked some stuff, but things will get cleaned up. In the meanwhile feel free to fork the source and/or submit issues. I'd love to see my repro getting some activity.
And that's it for now. Keep an eye out on our twitter (@Zapakitul, @Thomas Noppers, @Mutant Gangland) or this indieDB page for information when the blog goes up. And if you would like to buy the game you can do so here. Plan on using the code for your openAdvanceWars project or TBS-GOTY-2014? Drop me a line, I would love to help out. Or you know what? Drop us a love letter at info [at] mutantgangland [dot] com. Or post in the comments section if you have any questions.