Ren'Py Battle Engine Alpha 6 Released

in Ren`Py RPG Battle Engine Newsletter


  1. Alpha 6 Release Details
  2. Alpha 6 Caveats
  3. Tristan and Iseult
  4. Future Plans


Alpha 6 of the Battle Engine has been released, and it's probably going to be the last alpha release - things are getting solid and tested enough that I don't think anything major is likely to change any more. There's a couple of cool new things in this release which hopefully make it worth the wait!

You can find the latest release on the releases page, or download direct from here:
(Note that unlike previous releases this is just a copy of the game folder, rather than a deployed game in its own right, in order to keep down file sizes. To view the demo, create a new project in Ren'Py, open its game folder, delete everything and replace with the contents of the zip's game folder.)

The headline new features for Alpha 6 are:

  • Experience and Levelling-Up (+demo)
  • Condition/Result event system, allowing more-complex mission parameters (+demo)
  • AreaScenery, allowing multi-square scenery with correct drawing (+demo)
  • Items in skill menus can now be re-ordered.

Programmer's details:

  • Added FighterStatChange event to BattleAware
  • Added better implementation of GetRange for square-grid and hex-grid
  • Empty sprites (just create a BattleSprite and pass None into the
    displayable parameter)
  • fighter.EndTurn and fighter._battle.FighterEndTurn(fighter) no
    longer called by BattleMechanic.RunFighterTurn, so skills have to call
    fighter.EndTurn directly when that fighter is finished.
  • New battle-related preferences have been added, all of which take values of 'True' or 'False':
    • _preferences.battle_allow_rollback - is rollback allowed during battles? It
      just takes you back to the start of the battle anyway, but it can be
    • _preferences.battle_skip_movement - skip movement animations?
    • _preferences.battle_skip_combat - skip combat animations?
    • _preferences.battle_automatic_skill - if there's only one top-level skill
      available to a unit, select it automatically rather than present the
      user with a menu.


  • Pan/move problem fixed, so fighters moving while a pan is in action no longer slide around the battlefield. (This is actually a workaround, since it's fundamentally a Ren'Py bug).
  • Fixed facing angles for hex grids
  • Re-ordered fighters on the SimpleBattlefield to match order added to battle, from top to bottom. (This matches the GridStats order.)
  • Fixed a pause-aggregation bug which was causing delays when starting a new fighter's turn in some situations.


Unfortunately, a few things have been changed since previous releases, potentially breaking previous code. These shouldn't affect you unless you're making fairly advanced use of the engine.

  • fighter.EndTurn and fighter._battle.FighterEndTurn(fighter) are no longer called by BattleMechanic.RunFighterTurn, so skills have to call fighter.EndTurn directly when that fighter is finished. Some of the included skills now have an initialisation parameter which instructs the skill whether or not to end the fighter's turn after the skill is performed.
  • If you write your own UIProvider, you must now use self.Interact instead of ui.interact, or call self.StartInteraction() and self.EndInteraction() either side of the interaction. (This avoids problems with pause aggregation.)
  • Skill commands are now a tuple of ("name", weight) - where weight is an integer that sorts the skill in the list, higher weights lower down the list - instead of just a string name. So what used to be ["Magic", "Fireball"] is now [("Magic", 5), ("Fireball", 0)].


As many of you probably already know, the first proper battle-engine-powered game, Tristan and Iseult, was released last April after development in this year's NaNoRenO challenge. Most of the battle features in the game were stock battle engine, although a custom UI provider and battlefield - amongst others - gave the game a distinctly different look and mechanics to the battle engine demos. My original plan was to release the source of T&I as an example of how to make a battle engine game, but after adding these customisations I decided against it - it would just be confusing!

However, writing T&I was an instructive experience, and led to several changes in the engine itself - fixes for some bugs, some changes to make it easier to do stuff and most noticeably, the new condition/result events system.

You can also find Tristan on the Ren'Ai Archives here:


This release took a long time, thanks to a combination of personal and work-related issues - for one thing, I did basically no development on the engine from around November last year to March this year. So, my first plan for the next release is to finish it more quickly!

There are only a couple of big-ticket items left that I feel the need to get into the project before I can call it a beta release - tilesets (as seen in a basic form in Tristan), terrain variation (so particular spaces can have height, or slow the fighter down, or whatever) and pathfinding (included in Tristan, but a bit too much work to get into this release). These are probably what will comprise the bulk of Alpha7/Beta1, along with any other smaller features (I have at least one request for the speech-bubble chatter from Tristan, for example) and bugfixes necessary, of course.

The other thing I want to do - and I'll probably start on this before most of the next-release work - is create a series of starter projects/templates that people can use to get going quickly for a particular kind of battle game. The way things are laid out in the demos isn't necessarily the best way to do it for a full game, and I know people find programming daunting, so I figure it would be useful to provide a skeleton of a game that people can just drop their own character names and graphics into easily.

I expect that once people start playing with the condition/result event system, they'll come up with condition or result requests that I've not considered, and of course if anyone has any requests, I'm all ears!

Details about the Ren'Py Battle Engine can be found at the website here:

Leave comments about this newsletter here:

Ask me questions direct here:

Theme Originally by, hacked around by Jake, textures from