Ananias introspection: Content Creation and Balance

This new series of blog posts will be based on /r/roguelikedev FAQ Fridays, a long standing series of discussions where roguelike developers share their techniques and experiences around a single topic.

FAQ Fridays Revisited # 6 Content Creation and Balance (original)

How do you decide what mobs/items/abilities/terrain/etc to add to your game? In any good roguelike content creation is inseparable from the concept of balance, so your methods of balancing content are certainly within the scope of this discussion.

Ananias has a fairly static collections of monster races. They were first added based on the original rogue monsters and with a single criteria on mind: each race should have an unique feature or ability.

Sometimes implementing an ability is costly and there’s the temptation of parameterizing it so it can be reused with slight variations, but I think it gives more character to the monsters having their distinctive skills. This means Ananias doesn’t have Ice, Fire, Water, Earth and Thunder dragons whose only distinction is the “type” of their attacks, I’d rather have a single Dragon monster distinguished by a strong ranged attack.

The uniqueness of an enemy race is not defined only by their active skills, their stats are also put in consideration. In this case they are assigned relative values first (i.e. orcs have high attack and medium hp, Lizardmen have extreme high attack and low hp). This is balanced so that races without cool active skills get some advantage stats-wise.

The dungeon is then split into 5 areas with increasing difficulty. Mob races are grouped thematically on these areas and then assigned final values for their stats by scaling their relative values to the difficulty level of the group they are in. In order to do this, I do a projection of the average stats for the player on each one of these areas and then I apply some simple general rules (for example, a strong monster may kill the player in 5 hits, a monster with low HP should be killed by the player in a single attack). These define ranges within which the stats of the final monster will be placed.

Items follow a similar model. For weapons and armor I started with a list of preexisting graphics (the artist made them on advance for a different game using his own creative criteria) then based on they appearance I assigned them relative values (high/mid/low) for damage and integrity (how likely they are to break), and then I grouped them on power tiers to define their final stats. They also get assigned a generation weight representing how likely they are to be added to the levels, this value is used in level generation along with the power tier to select the items to be added.

Player abilities are guided by the same principles of uniqueness. Ananias is strongly classed, and each class has unique passive skills that guide players into adapting different playstyles for each one. The process for player classes is similar as with the monster races, they are balanced based on their skills and relative values for their stats. (Except for the shepherd ;)).

On a final note, I’d like to say that while seeking to balance the different stats is worthwhile (to prevent your game from being utterly broken), it’s also to some point a futile exercise, since the variability of the game and the player’s choices create a lot of unpredictability, specially as journeys progress in games which provide long and open experiences. This is not necessarily a bad thing, and a little bit of unbalance is not always harmless since it allows the players to find strategies and challenges within the game.


Ananias on IndieGala’s Hump Day Bundle

Ananias has been included on IndieGala’s hump day bundle #36 which runs until April 12! If you still don’t have Ananias it’s your chance to get it along with a mix of other nive interesting Indie games you can play on Steam. Click here for more info.

Even if you already have the game, I recommend you check the bundle and get it if you want, some nice games there ūüôā


Ananias2600? – Setting up a simple Atari 2600 dev environment on 2017

So, I got my retro gaming setup at the office, and a friend suggested if I was porting Ananias to the Atari 2600. I promptly replied I had no time for such thing.

Atari 2600 at work

But then, the project picker spoke. And the project picker is wise and fair, and we must obey his bidding.

I started following the instructions here, but they are super old and mostly for windowzer, so I had to dig around a little bit. Here are some instructions which can be helpful if you want to start your career on Atari 2600 game development (who knows, may be Atari will hire you…)

Before proceeding I should mention that this is just one shortcut for real hardcore Atari 2600 development.¬†It’s definitively not the¬†most optimal way to create your games (in terms of resources handling and exploiting the limited power of the device), but it’s enough to give you a sample on what it entails (then you’ll jump ahead and become an elite ASM coder).

Install dasm

The assembler takes ASM source code and transforms it into BIN files which can be read by an emulator or loaded into a cartridge and a real Atari 2600.

For mac it’s available via homebrew so just…

 brew install dasm

Get an emulator or something to test the games

You need to run the games, right?¬†Stella¬†works perfectly for starters if you can’t afford to get a Harmony cartridge or you don’t have an Atari 2600. Once your game is gold, you can have AtariAge create a custom cartridge for you.

Get a working build of Batari Basic for your modern OS.

That one was tricky to find, I got mine from here and it works perfect on macOS Sierra.

Run the script, note that PATH modification may fail for some reason on macOS so you may need to fix it manually (since the script is meant for linux).

Verify your build pipeline

Use the batariBasic compiler with one of the included samples (say ../ zombie_chase.bas) it will generate .asm and .bin files

Open the .bin file on Stella

Mess around a bit

Take one of the .BAS examples and try to understand what the heck is going on. Move things around, recompile and check

That’s just the beginning

batariBasic makes things much simpler than doing straight assembler, but that doesn’t mean it’s going to be a walk in the park. There’s some reference material online and even a very handy tutorial for the kernel included with bB which is what simplifies development so much. The other great challenge is working with the limitations of the 2600 which is actually what makes it fun:

[…] As if all this weren‚Äôt enough, the VCS could only display five interactive objects at any one time: two “player” sprites, two “missile” sprites, and one “ball.” This was more than enough for replicating Pong and Tank, the popular arcade games of 1977. It was useless for anything even slightly more complicated, such as Space Invaders.

Of course, software developers later found tricks to overcome these limitations allowing the machine to do things it was never meant to be able to do, but my goal will be to work within the original constraints without pushing it too much.


The Kramora Times # 6, Ananias at the GDC, version 2.2

This is the sixth edition of The Kramora Times, you favorite and most reliable source for all Ananias-related information. You can now subscribe to receive this newsletter in your email too!

Lots of things have happened so let’s begin!

Version 2.2

A new version is available, it comes with important fixes and gameplay changes, as well as mostly complete keyboard support.

Following is the changelog:


  • Make pets always obey commands.
  • Make enemies check if player is waiting at the other side of the room before¬†walking into it.
  • Remove penalty¬†for damage for ranged weapons and wands when low on ammo / charges.
  • Reduce power up for boost elemental magic.
  • Change MP cost of elemental spells

User Experience

  • Remove force sound disable from mobile, make it an option on the launcher
  • Preserve preselected layout on mobile if game saved
  • Prevent casting spells when character has no¬†magic power.
  • Make Portrait be the default mobile mode for browser (Instead of Chibi)

Major fixes

  • Prevent extremely long generation times for levels with twisted corridors
  • Prevent inconsistent HP value when casting spells with¬†no magic power

Keyboard UX

  • Ranged attacks using spacebar
  • Using, throwing and dropping items from inventory
  • Mixing reagents on the inventory panel
  • Scroll entity panel and book panel with arrows
  • Use enter key to advance conversation or close dialogs
  • Use ESC key to close entity panel, book panel and inventory
  • Changing tactics and pet command with keyboard

Ananias at the GDC Expo 2017 in San Francisco

Last week I was at San Francisco at the GDC Expo, where I was able to join 11 other Colombian companies in the ProColombia booth and show Ananias to developers from all around the world.


I got some important feedback for the game and made some good contacts for potential future work. We also had a small roguelike developers meetup where I could share the current status of Ananias to other fellow developers and friends including Glenn Wichman, one of the original developers of Rogue, Tarn Adams of Bay12Games/Dwarf Fortress and Jim Shepard of Dungeonmans.


I also got to meet these people I have never seen in person:

  • Kornel Kisielewicz: Developer of DoomRL and Jupiter Hell, and a great inspiration for all my roguelike projects.
  • Ashton Morris: the composer of the soundtrack for Ananias
  • Bj√∂rn Ritzl: a long time collaborator for roguelike projects.
  • Kike Fuentes: Teravision Games mastermind,¬†lots of gamedev industry experience.

Lord British plays Ananias

I also had the chance to attend the Ultima Dragons 25th Anniversary Bash, four awesome days full of cool Ultima geekness including having Lord British play the game. He said it was fun!


First month on Steam and iOS

We keep doing well in Steam and iOS but we need more reviews! Please post a review there if you like the game, it’s really important in order for more people to notice the game.

Upcoming Features

  • Full Keyboard support: We are almost there, following are the pending things which will be tackled in priority order
    • Using multiple selection dialogs
    • Checking player and pet stats
    • Navigating thru menus

Some stuff still pending from last update:

  • Steam Achievements
  • Detailed GFX for weapons and armor.
  • Adding more plot and may be even random stories.

There’s been a lot of useful feedback! I keep integrating everything into the list of things to do so keep them comment coming!

First Boxed Edition

A limited run of boxed editions was done and some lucky individuals got to get their hands on them during my trip to California! there were two variants with one of them containing actual diskettes. Due to logistic issues I couldn’t get enough diskettes nor save the light Ananias edition on them.


Some of the persons who received this edition:

  • Glenn Wichman: For creating rogue and thus roguelikes. Not much to say, Ananias is a roguelike so there’s a lot to be thankful for ūüôā
  • Richard Garriott: For creating Ultima which is an inspiration to Ananias and most of my games.
  • Denis Loubet: Illustrator for most of Ultima covers and manuals, an obvious inspiration for out-game art for Ananias.
  • Ashton Morris: For creating Ananias OST.

An enhanced second run of this boxed edition will eventually be produced.

New storefronts rejected the game again citing the same reasons as two years ago. I got some useful feedback from them but it seems the game definitively is not a good fit for their store.

On the other hand the game is now available on the Humble Store, where you can get the game and support charity at the same time.

Ananias finally released on iOS

Yesterday I finally managed to push the first iOS version to the AppStore!



It’s been about 2 years since I’ve been promising next version will be it, all because I wanted the first iOS version to be much more complete than the first ones that were available on Android, since that early availability brought a lot of bad ratings (in exchange for some useful feedback in some¬†cases, I guess).

The game has been playable for a long time (I only had to do some tweaks for memory management when loading music files, but those were beneficial for the whole game overall in the long term).

The final thing I had on the list after 2.0 was the optional onscreen directional pad which was released with 2.1 and thus triggered the submission to the AppStore.

screen-shot-2017-02-21-at-8-54-12-pmIn any case, here it is. After a somewhat troublesome start with v2.1.1 with a critical bug caused by the untested work in progress for the full keyboard support for 2.2 (grrr), I just pushed a new version fixing that (But unlike Android, all versions have to go through their review process and thus may take over a day to be available).

Hopefully no more ugly bugs happen until the properly tested v2.2 is deployed! This also made me release v2.1.2 over the web location to start testing that keyboard support, check it out ūüôā


The Kramora Times # 5, Ananias 2.1 released and submitted to iOS AppStore

This is the fifth edition of The Kramora Times, you favorite and more reliable source for all Ananias-related information. You can now subscribe to receive this newsletter in your email too!

New Versions!

Version 2.0, released last week, didn’t have many gameplay¬†changes since 1.81 was meant to be the final version gameplay wise before 2.0, still there were important changes on User Experience. This version was released exclusively on Steam so other platforms will be upgraded from 1.81 to 2.1

Version 2.1, on the other hand, comes with important gameplay changes making the game much more challenging and making pets more useful. It also brings the big directional pad for mobile, a long requested feature.

Full changelogs below!


Version 2.0 changelog

User Experience

  • New title screen
  • Relayout desktop UI
  • Revamp Statues Collection panel
  • Add option to toggle full screen on settings menu for packaged apps
  • Remove “Alerts nearby enemies” message
  • Add “yelling” message when charging
  • Tweaks on “step” sounds (less annoying)
  • Activate keyboard for mobile


  • Prevent issue with keyboard commands being used in the middle of a game turn
  • Fix issue with duplicate events causing the title screen to resurface (!)
  • Fix issue with description for empty weapons requiring ammo

Server / Stability

  • Add http request timeout monitor

Version 2.1 changelog (see below)



  • New default “Follow” command and intent for pets – They’ll stick to you instead of charging towards enemies.
  • Prevent pets from returning early to rooms almost immediately if commanded to flee.
  • Reduce damage rolls for offensive spells from (3 x Spell Level + Magic Power)D3 to (2 x Spell Level + Magic Power / 3)D2
  • Prevent Wands damage from being affected by tactics
  • Randomize damage minimum damage 1 to 3 after armor absorption
  • Add skilled fighter enemies who have more chances to hit unarmored body parts
  • Change starting weapons for Sage, add staff instead of Wand

User Experience

  • New UI for mobile portrait including big directional pad
  • Left click to check monster info
  • Prevent items with long names to overlap title with description when examining
  • Fixes on combat SFX
  • Remember full screen preference


  • Autosave when entering new rooms
  • Greatly enhanced request validation¬†for server operations

iOS release at last?

Version 2.1 has been submitted to the AppStore for review, waiting for news!

First week on Steam

So far the game has been well received, with around 300 units sold this week

We need more reviews though! Please post a review there if you like the game, it’s really important in order for more people to notice the game.

IGS and buyers can now obtain their steam keys from either the game wallet or library, please contact me if you have any issue with it.

Upcoming Features

At long last I managed to release to Steam, and the iOS version should be available next week (now on App Review), however there are still some things to tackle:

  • Full Keyboard support: We are almost there, following are the pending things which will be tackled in priority order
    • Being able to target ranged attacks
    • Using items on inventory
    • Navigating thru menus (may be not that important)
  • Steam Achievements
  • Detailed GFX for weapons and armor. Considering doing these with the new project artist, PixelJeff. Gotta make sure we are able to keep the same graphics line.
  • Adding more plot and may be even random stories. After talking with Thomas Biskup on the Roguelike celebration, I have reconsidered this and I think I should invest a bit on it.

There’s lots more smaller things which I keep adding based on feedback on the Steam community, reddit, emails and other places, please keep it coming for Ananias to become even better!

New Trailer

Made for the Steam and iOS releases, the new trailer is now available. It retains the same script and voice over from the last one, but replaces the illustrated scenes with pixel art. The gameplay sections are of course updated too.

New Cover Art – Sneak peek

This new cover art will be used in the future Deluxe Boxed Edition. More details to come soon.



Dumeril statues production is still frozen.¬†I’m contacting a company in the United States which can handle the production and distribution.

A new batch of Ananias t-shirts is available for shipping in Colombia. International orders via redbubble are still available.


I’m also preparing an additional set of merchandise with a local artist… more info to come.

More storefronts

Apart from the imminent release to the AppStore, I’ve also submitted the game to and the humble store. Waiting for news from them.

Ananias 2.0 released on Steam

Ananias is now available on Steam, (v2.0 will soon be deployed to the other channels as well) here’s a summary of the release party that took place yesterday via Slashware’s twitch channel:


Contest were announced

  • Fan art – Post your fan art¬†on Steam community
  • Best characters during the party

Some initial acknowledgements of gratitude were made:

  • To the devteam
    • Denzi, the mysterious pixel artist from Japan who’s been hard to reach lately, for his huge contributions to the game art.
    • Mark Honnor, another indie developer and artist, for¬†greatly enhancing the environmental art.
    • Juan Camacho, for creating awesome illustrations for the character classes and one of the versions of the trailer, which have been very helpful to spread the word about the game.
    • Laura Espinosa, for creating cute versions of the character classes, which have been used in the game merchandise.
    • Giovanny Ramirez, for creating awesome art for the crowdfunding campaigns and the Dumeril Sage statue model.
    • Valentina Zapata, for creating the logo and a lot of support on the different pieces of physical merchandise.
  • To the many people who has supported the game through the years in different ways
    • Contributing to the crowdfunding campaigns
    • Acquiring the in-dev versions for the¬†different platforms
    • Spreading news about the game
    • Providing gameplay feedback and bug reports.
  • To my wife, for bearing with me working long nights to get the game to where it is now.

We started giving a quick explanation of what a roguelike is and what is Ananias. Then we went through the first year of development of the game, watched a gameplay video of the original 7DRL and went thru the first crowdfunding campaigns.

Then, in an explosive ceremony, the “Publish” button was clicked, ¬†thus making the game available for people in Steam.

We continued¬†checking the remaining two years of development, and then proceed to¬†play the game with the audience’s character class of choice: The Shepherd. Along the party, other players shared the tombstones of their characters

Some of the announcements that were made:

  • The release on iOS which should happen next week.
  • Some hints about the Premium Edition, which will come packed in two¬†1.44MB disks and boxed with manual and some trinkets.
  • A potential¬†restart of the production of Dumeril Sage statues.

Contest results!

The winner for the best character is…¬†deadlyhabit with his level 8 Barbarian! he gets 5 steam keys to share with his friends!

Following is the list of characters who died during the party.

Player Class Gender Level Kills
deadlyhabit Barbarian Male 8 123
esty8nine Slayer Male 8 119
RusticDragon Alchemist Male 8 96
HoustonDragon Paladin Male 7 95
MaxThundercock Slayer Male 6 86
slash Shepherd Female 6 71
Siderious Barbarian Male 6 68
RusticDragon Slayer Female 6 36
Darkhawke Alchemist Male 5 46
Siderious Paladin Male 4 40
RusticDragon Hunter Male 3 22
slash Shepherd Female 1 2

Ananias 1.80 released

A new title screen has been commissioned and thus a new deadline for the Steam release (2 weeks). Some important changes in this release include:

  • Weapons and armor can be used even if ruined, but they aren’t as effective
  • A first version of the intro is added
  • Guardians are now immune to most status maladies.
  • Watcher for game hanged to make sure the game doesn’t hang!

I’m also now using butler, the command line tool from, to automate the deployment of the new versions. Since it’s my first deploy using it I had to do some manual steps (setting display name, changing minimum price and delete the old versions), I supposed I¬†will no longer be doing¬†that for the next releases, since they will be tied to the preexisting “channels”, which are going to be incremental)

Some action
  • Standard Edition
  • Fellowship Edition

Full list of relevant changes


  • Allow using and throwing ruined weapons and armor (they are no longer completely destroyed!)
  • Guard¬†bosses from panic, charm, confusion, polymorph¬†and blind.
  • Check protection vs status effects based on player magic power.
  • Reduce quantity of pebbles in favor of reagents
  • Reduce quantity of Healing and Zinc potions
  • Make explosion damage independent on strength (for thrown potions)


  • First version of the ingame intro
  • Autorecover pet when player enters¬†a room
  • Add animation to fade into the magic circle
  • Change color of arrows for contrast with text
  • Play SFX for ranged attacks
  • Add “musings of tripaseca” book
  • Fix colors of wizard preview
  • Don’t switch perception nor show scratches if blind


  • Add watcher for “Game Hanged”, this utility should let me know when the game hangs and try to recover it for you.
  • Add watcher for file loading errors, it will let you know if some files could not be loaded (for example because of network issues or a firewall)

Critical Fixes

  • Fix critical issue where confused enemies with ranged attacks would cause the game to hang


Ananias 2016 Downloads

Here are some rough approximate numbers for the downloads and sales for Ananias on 2016.

Storefront Platforms Downloads Sales Earnings Desktop 5148 73 $333.84
indiegamestand Desktop 204 1 $3.47
gamejolt Desktop 571 0 $0.5
indiedb Desktop 38 0 $0.00
Play Store Android 12,501 288 $691.23
Total 18462 362 $1,029.04

Everything is lower compared to 2015, (except average earnings per unit, may be because of more units sold in desktop).

Still haven’t done a full launch and haven’t invested in advertising.

Development costs were much higher of course…. lots of development time was invested. We shall see if it pays off with the releases on Steam and iOS, as well as when its advertised more openly.

Ananias 1.79 released!

Worked heavily on the game on December. The biggest changes on this version are:

  • Character Creation: You can now customize your character’s appearance and tweak its starting stats.


  • Hardcore Mode: Is the game too easy for you? this mode bring stronger enemies which will storm you to death! A separate graveyard is available for it.
  • Rune Portals: I have wanted to remove stairs for a long time since they didn’t really fit in the theme (why can’t I go back?) Now you’ll have to explore the level to find the runes and activate the portal to go into the next level.


This is the complete changelog:


  • Changed stairs for portals + runes you have to find to activate them
  • Add hardcore mode
  • Allow allocating bonus points for stats
  • Implement range bonuses for bows for hunter
  • Autorecover pet when stepping on room
  • Only allow using bandages and potions on flesh entities


  • Avatar customization: Set your skin tone, hair color, type and beard.
  • Allow changing character name
  • Autoreload arrows when attacking
  • Reduce size of rooms on mobile
  • Add missing tap sounds to all buttons
  • Dynamic online help based on device
  • Add attack effect based on its type
  • Make enemies stop breathing when stunned or frozen
  • Pause breathing animation while paralyzed
  • Bigger “back” buttons for mobile compact
  • Add option to exit game for desktop
  • Activate full screen for desktop
  • Rearrange menus
  • Remove “show arrows” setting
  • Only show the scores for the current version and difficulty
  • Open external URLs in a separate window when running in nw.js
  • Add explosions for all spells, and varying explosion size
  • Show effect on inspector for all monsters, not just pet


  • Fix issue with email regex
  • Ugly hack to prevent chrome from autofilling fields
  • Critical issue with weapon bonuses
  • Fix issue with close button always visible on canvas rendering
  • Fix issue with color interpolations
  • Prevent issue with pet sprite misplaced after entering room