Professor Slash’s Energy Radar, my own location based monster hunting game

Pokemon Go recaptured the people’s imagination of what could be done in a game mixing reality and virtuality. However, after the initial joy, many people started complaining about the lost potential and how they screwed up by not adding some features that could have made the game a more complete experience…

I myself continue playing, but I agree the experience has degraded over time into grinding endlessly for candy in order to evolve my Pokemon, and rarely finding a new one even tho my Pokedex is still fairly empty.

But complaining is too easy, how about actually going ahead and trying to fill these gaps?

I couldn’t get the idea off my head, so even in times like now when I have very little spare time, I jumped into it. This is my very own effort to create a location based monster training game: Professor Slash’s Energy Radar


Professor Slash’s Pokemon radar is able to detect different sources of Pokemon energy around you.


A wild Rattata appears…. Go Charmander!


Use your phone to track different kinds of “energy sources”. Walk to them and once you are close enough you will be attacked by a wild Pokemon, then you have to weaken it by fighting using the Pokemon in your team… the wild Pokemon won’t just stay there dancing for you tho, it will attack back using its own techniques. You can switch Pokemon on your team anytime to take advantage of their skills and types.

Once the Pokemon is weak enough you can try catching it by throwing a Pokeball, your chances of capturing it depend on how weak it is. If all your Pokemon are defeated, you will lose your chance to capture it and won’t be able to face other wild Pokemon until they have recovered (they will recover their hit points with time or you can take them to a Pokemon center by walking close enough to one of the towns in the fantasy world).

The energy sources around you are based on your location in the fantasy world (Kanto in this case). The game map is overlaid on the real world as a 8km x 8km area (approximately), so you have to walk around your city in order to find different types of Pokemon. Even without connecting to a server, all players find themselves around the same in-game location and get to see the same energy sources .

You can train your Pokemon by fighting wild Pokemon or another trainers via Bluetooth. Stronger Pokemon stand a change against powerful wild Pokemon you want to catch.

Creating a working prototype

Creating a full game following this design would be a huge enterprise, beyond what my limited time and resources currently allow. However these ideas haunted me, and I set myself to create a working minimal product which could at least be used to validate them in real life.

The result is a huge mess of code which works pretty decently for the time I was able to invest. An obvious next step in case I continue pursuing this development is doing some massive refactors (all game logic is currently implemented as a single huge monolithic 747 LOC JavaScript module) and optimizations (basically I didn’t care about the CPU for this version so I do lots of redundant calculations, and I don’t really want to talk about the rendering strategy😛 )

BUT, it works… I managed to have something to experiment with!

Overall Architecture

One of the things I am going for is being completely server-less while still allowing social interaction between players. This is of course to allow infinite scalability and not having to worry about server loads (One of the main headaches Niantic had/has)

I chose to create an hybrid JS Cordova app just because it would allow for much quicker prototyping while at the same time giving me access to the device services I knew I was going to require:

  • GPS sensor
  • Compass
  • Accelerometer
  • Camera
  • Vibration

Server-less social interactions

This, I think, is the core of the app. I used the seedramdom module from David Bau which contains seedable PRNGs that I could seed using a combination of the different locations, time of the day and other parameters. All this in order to make the same energy sources show up at a given time for two players being on the same location, this way there could be social interaction (Hey! There’s a Dragonite near me, come and get it!)

Also, everything is local here. You don’t even have to create an account, all your progress in saved in your device.

Geo tracking

This one is of course one of the main features, since you need to move around in order to interact with the world. The cordova-plugin-geolocation provides you latitude, longitude, and even altitude, along with a precision value.

A lot of processing is then done to convert from geospatial references to physical distances in meters. It is a pretty interesting topic I had already visited back on the times of Expedition. This answer, derived from the Wikipedia article, was super useful.

Of course, GPS is still far from precise (and I’m not sure if that’s ever going to change!), some postprocessing and filtering is needed to smooth the sensor readings and eliminate noise.

Current GPS support is awesome, but its accuracy limits make some kind of interactions people are dreaming with impossible. I can understand why Niantic had to force some design choices around the restrictions of current technology.


Walking detection

Used the cordova-plugin-device-motion to get the x, y and z acceleration values using the phone’s accelerometer in order to try to find out if the player is walking, main goal was not having wild battles triggered while phone is lying on a table or you are holding in your hands without moving.

In the end after some experimentation I was able to provide a fairly accurate approximation via a Kalman filter (I don’t know what that is, I just followed this answer from StackOverflow🙂 )

Directional radar

In order to make it easier to get to the energy sources, the radar rotates based on the direction you are heading.

I used the cordova-plugin-device-orientation plugin for this, it gives you a 0 to 360 degrees value for orientation, then I applied a simple transformation to the position of the energy sources in the radar.

Pokemon Combat rules

As someone who loved the original Pokemon games, one of the main things I wanted was having Pokemon battles be an important factor in the game; here’s some of the differences.

  • Catching Pokemon
    • Pokemon Go: Using a razz-berry in order to get the Pokemon to love you, then throwing the Pokeball (with a finger gesture, slight skill involved) and hope it doesn’t break free.
    • My own: Weaken them in battle (risking losing the battle or killing them), then throwing a Pokeball (catch chance based on how weak and how rare)
  • Training Pokemon
    • Pokemon Go: Feed them candy and stardust. Get more Pokemon of the same time in order to grind them into candy and repeat the process.
    • My own: Battle wild Pokemon and other trainers to get experience and level up.
  • Battling Pokemons
    • Pokemon Go: Pokemon have a simple and a special attack. Tap the screen as fast as you can to use the simple attack and accumulate energy for the special attack.
    • My own: Turn based, select the best attack to do based on your advantages and the status of the fight. Pokemon have a max of 4 attacks including status effects.

I implemented a veeeery basic combat system, implementing the full combat rules would of course be a lot of work. I would initially target for the first generation rule set, I did some research around and found some already existing JavaScript games which could be useful. The alternative would be having a simplified system.

Bluetooth P2P Connectivity

An obvious social feature is allowing players to combat each other; following the server-less approach, I picked basic Bluetooth communication to establish a peer to peer link.

Used cordova-plugin-networking-bluetooth from Franco Bugnano, who has some interesting blog posts on the topic. This only seems to work on Android, which is good enough for me🙂

Some samples of the current bluetooth connection flow, for now I’m just establishing the connection and sending a simple message from a player to another and back, future work would be establishing the complete battle flow.

Vibration feedback

Used when starting a battle and when the pokemon are hit. Just a small detail that the cordova-plugin-vibration plugin allows to do very easily😉

Augmented Reality on battles

As a final touch, I used the com.ezartech.ezar.videooverlay plugin from EzarTech in order to show the video in the background while on battle. Future work: Use accelerometer to relocate monster, allow snapping pictures.

More stuff?

Some other things I think may fit the game:

  • Adding some activities you can do without walking around (say once you are home). Playing around with your Pokemon or making them train by fighting each other could be an option.

Why bother doing this?

Obviously, I don’t have the license to the Pokemon franchise so I can’t release this game as one my own so.. why bother doing this?

  • For my personal enjoyment (and my friend’s), I want to provide a different (better?) experience for a location-based Pokemon game.
  • I want to know how far is it possible to go today with hybrid apps and Cordova with regards of extended smarphone functions.
  • I always wanted to make use of some features that modern smartphones have and apply them into something fun.
  • I’m creating this as an engine, in the future I may actually use it to release a game under one of my IPs.
  • I needed to get it off my list, after building this prototype now I can live a peaceful life at last.

If you would be interested on giving this a shot, drop me a line🙂

Ananias hits 50.000 installs on Google Play

It’s been a long time, but Ananias finally managed to hit the 50.000 installs mark on Google Play, last time we checked in 2014 we had 20.000 installs, back then I thought it would take three months for the game to reach the next milestone. Following are some insight on it’s journey to the 50.000.


It took 2 months for the game to jump from 10.000 to 20.000 installs, yet it took 22 more months to hit the 50.000 mark… of course, installs rate slowed down a whole lot but still is about 40 per day. No investment on advertising campaigns yet. The iOS versions isn’t out yet either.


Getting the rating up after its initial fall has been a great challenge. Even with all the work going into the game I have only managed to increase 0.18 on the average rating these two years (from 3.45 to 3.63). With 2075 ratings, it will be very hard to get it over 4.0


There’s hope still… there have been months of overwhelmingly positive feedback which I hope can be repeated once the final version of the game is officially released. One thing I managed to do is having more than 2x 5 starts ratings than 1 stars, though still not a big margin.


Countries-wise, we are in a very similar position than in our previous milestone. United States and Russia keep in front with Brazil rising into the ranks and South Korea and Canada keeping on the list for 50% of Ananias installs.


One interesting metrics are the current installs by device, 4750 vs 3703 , actually 1.000 less installs in 22 months… which I don’t think it’s that bad since it’s natural for people to lose interest on the game, I think I’ve managed to keep the drop rate low.


Google Play has a new metric which only includes “active devices”; it shows that there are currently 2303 active installations. How many of these are active users? it’s hard to know since I no longer have metrics for that in place.


Lastly, we have the (paid) fellowship edition with 702 installs. We don’t have a means to compare since back then only the free edition was out.

In summary, here are the installs numbers so far on Google Play: 50.021 total, 3703 current, 2303 active, 702 paid

Goals? I still dream on having one million downloads some day.



My Pokemon Go Quest – Update 11

I’ve been posting this on my facebook profile, but I decided the blog would be a better place to chronicle this epic quest. But first, an introduction:

I’ve been playing Pokemon Go. I’m not a hardcore player but I try to play as much as I can, it has led me to walk all the way home to the office and also randomly get up my desk and walk around a park or something, which I think is great.

I’m mostly interested in collecting vs. conquering gyms. And above all, I’m on a quest to take pictures of as many Pokemon as possible.

All previous updates can hopefully be found at this public facebook album. Now, for the update for my quest.

This was my status last time:

September 20 – Bay Area part 2

– New pokemon snapped: Tauros (caught) and Golduck (ran away)
– New pokemon hatched: Machop
– Got the pokemon go plus and started using it.
– I’m about to evolve my Pidgey and Caterpie farm, hope to gain at least one level.
– Level 16 now, 42.9 km walked, 70/74 pokemon

Now it’s time for a new update

October 5 – Back to Medellin


Sadly, no new Pokemon pictures to show today after 2 weeks of playing. This is a result of what the game has sadly become for me: I can no longer find new Pokemon… instead I’m hunting low level ones to gain XP via evolution. Lots of caterpie, weedle, pidgey, zubat and others… is this fun? well, it’s a different game now… a game about grinding.

I’m hoping that by leveling up I’ll have better changes to find new ones, but that’s unlikely. I set myself a goal to hit level 20, and I managed to do so via 2 sessions of massive evolution while using Lucky Eggs.

I also already lost my Pokemon Go Plus. I should have used the wrist-strap but I didn’t like how it looked. I hope someone found it and is enjoying it. The short time I had it it was mostly useful to hit pokestops while walking. It was far from perfect, constantly disconnecting from the device. Overall I didn’t really acquired it for its limited functionalities but rather as a sign for being a player. Well, it’s lost now😦

  • New pokemons: Electabuzz (hatched), Starmie, Ivysaur, Parasect (Evolution)
  • Hatched a lot of not so interesting eggs: Zubat, Caterpie, Weedle, Pidgey, Spearrow…
  • Also hatched a Staryu, Voltorb and Gasthly
  • I’m level 20 now, 61.4 km walked, 76/79 pokemon


The Kramora Times #4 – Ananias 1.76 released

TL;DR – Get the new version from Play or play online

This is the fourth 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!

Ananias Version 1.76 released!

It’s been over two months since the last release of Ananias. I had set myself the goal of the next version going straight into Steam.

Alas, I have to change plans again… I jumped into some projects and I don’t feel I can handle the workload of the release and all that is related to it while responding to these other projects responsibly.


However, I have to say this is very close to the scope I have planned for Steam. May be next version will finally be it? I have been saying this for months now.


Conduct Tracking

There were some important internal changes, specially in the packaging system (Using Cordova and Crosswalk without passing thru for much quicker development and release). They are likely to break things so I hope players are patient.

I also added an in-game manual (also accessible from the website, here). Bits of it are generated directly from the game source code, in order to keep it up to date! The wiki was also updated, with data generated from the game.


Sample of the manual 

Another big thing is that you can now also generate tombstones for your characters and share them with your friends. See this one for example!


So, with all the work that went into this one,  and given that I won’t be able to work back on the game for the following one or two months, I’m releasing this version. Check out the list of exciting changes below!!


  • Allow unloading weapons
  • Add conduct tracking:
    • No scrolls used
    • No spells used
    • No potions used
    • No bandages used
    • No weapons used
    • No armor used
    • No kills
    • No room unexplored
  • Add Zinc potion to recover from paralysis, blind, confusion and hallucination
  • Grant upgrade bonuses if 100% level explored
  • Make deep level enemies stronger
  • Tweaks on fleeing AI
  • Add Sir Glenn NPC, guaranteed crossbow at level 7


  • Generate tombstone page with player info on death
  • Allow sharing tombstone page on twitter and facebook

User Experience

  • Add in-game manual you can check anytime, including bestiary
  • Change UX for mixing reagents
  • Play random dungeon music instead of tied to level
  • Remove Dungeon Crawl Stone Soup title
  • Make better use of space in dialogs in small screens
  • Prevent unselecting pet when cycling thru shepherd
  • Added extended title theme
  • Add option to Exit Game on desktop
  • Show stats when dying or winning
  • Show level summary on completion
  • Mouse movement in desktop with invisible arrows


  • Prevent issue when throwing potions only 1 shot spent
  • Prevent keyboard actions when modal dialog present


  • Generate manual and wiki text automatically
  • Added build scripts for web, android and desktop, including different level of audio quality.

    Steam Version

    Pending things for the release:

    • Detailed GFX for weapons and armor. May be important, not sure if I’ll be able to get an artist for it.
    • 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.
    • Stealth mechanics, make it so that monsters not always notice players (add fov) may be even add fov for players?
    • Berserk tactics, extreme attack bonus when naked for some classes.

    Also pending for this is the new trailer, preparing promotional material and setting up a Thunderclap campaign (probably). All these will require money so I hope I can get support for it from the hardcore Ananias believers!

      Roguelike Celebration 2016 – A missed chance?

      As described on a previous post, I went to this unique event on San Francisco last month. It was a great chance to meet roguelike developers and players.

      Sadly, I missed this chance to promote the game in what was possibly the best targeted event in the world for Ananias’ potential players. I should have brought some info about it or pitched the game more… however time was pretty short, and I’m glad I got to share time with the amazing devs there at least.

      Dumeril Sage statues: production halted 

      There have been some issues with the production of the Dumeril Sage statues… the process is just too hard for me to handle, I don’t have a partner who can take of all of it to deliver finished products and at a good pace. May be it’s not time yet for this. At least I have managed to deliver some of the statues to people I really esteem and I hope they are enjoying them.

      The latest batch of statues, no flame, no staff, sometime they’ll be complete

      An alternative I’m considering is having smaller statues and using 3d printing instead. It’s a bit expensive but may be much easier to handle.

      For the t-shirts I am thinking on having an alternate design that can be printed on higher quality shirts (more durable). Thanks to all who already pre-ordered for your patience, I’m hoping to deliver a good quality product.

      Three SPIDs: EXODUS Box, EXODUS Online and Britannia GPS game

      SPID4 – EXODUS Box

      EXODUS as a tabletop game, instead of fighting with LARP weapons, combat is decided with dice rolls.

      As with EXODUS, players are divided between adventurers (who pick their starting class) and dungeon dwellers (who impersonate the dungeon monsters), and the program generates a random layout for them to explore. The party moves from room to room based on the available exits, and by moving they may trigger traps affecting their status.

      When the program dictates combat happens and a monster party is formed, the “combat grid” is placed and players place their tokens in either the adventurers or the dungeon dwellers area. Then the starting player is randomly selected (from within all the players, dungeon dwellers included) and player take turns to act. Each player may perform any of the following actions:

      • Move 1 square in any direction
      • Attack another player using either melee or a special ability

      Some monsters may move more than once.

      Cast a spell or use a special ability (consuming Magic Points or Special Points)

      I have tested it with some friends and it works fine! It may not be as fun as running around hitting your friends with a foam sword, but OTOH it gives allows for more tactical depth.

      SPID5 – EXODUS Online

      Each player has his own app on his phone, one of them starts a game and the others connect. As they explore the dungeon, the dungeon staff is given their monster role and the battles are tactical turn based.

      SPID6 – Britannia GPS game

      Each city a small representation of Britannia (a shard). Landmarks on the city are transformed into towns of virtue, shrines and dungeons.

      The players must find the runes by going to each town and asking for them, then searching other places in the worlds based on the clues they got.

      Parties of travelers could be formed to explore together and survive the random encounters. Characters would level up in a traditional way. Then the Avatar should go and meditate to the shrines.

      Dungeons would require doing some fights better done in a party.

      The ultimate goal is to get the stones of virtue and conquer the abyss to become the avatar.

      Roguelike Celebration 2016 San Francisco

      Last September 17 the first ever “Roguelike Celebration” was held in San Francisco, California. Over 200 roguelike-likers and developers from all around the world met on a day-long journey to celebrate roguelikes.


      Most of the speakers and organizers (I *totally* didn’t paste a pic of myself in the back row)

      There were 18 main talks plus some other fun roguelike-related events. They were all recorded and you can find them over the Roguelike Celebration YouTube channel.

      My talk, “Get your game done: Experiences through the development of 13 roguelikes” was pretty well received. There were two parallel tracks for talks so I shared my time slot with the developers of Dwarf Fortress! even then I had a decent audience of people, some of which told me they found it useful. You can find the slides here

      This event was a great opportunity to get more people to know about Ananias!

      As usual, I missed the opportunity… forgot to bring any kind of informational material or merchandise, didn’t even print a page with the game website URL… At least Glenn Wichman, one of the creators of Rogue, mentioned my game as his favorite roguelike during the event’s main talk🙂

      An exciting part for me was finally having a chance to meet people from far regions of the world with whom I have shared this passion for so long…


      David Craddock interviews the three developers of the original unix rogue: Michael Toy, Glenn Wichman and Ken Arnold.


      Tarn and Zach Adams, developers of Dwarf Fortress


      Having lunch with the devs of Unix Rogue and ADOM


      My talk about getting roguelikes done


      Thomas “The creator” Biskup, ADOM developer. Someone I have wanted to meet in person for years


      Josh Ge, developer of Cogmind


      Rogue for AtariST with its developer, Glenn Wichman!


      David Craddock, author of Dungeon Hacks and many other videogame books. 

      Some other awesome people which unfortunately I didn’t get to interact much with, hopefully next time:

      • Nick Montfort – Author of Twisty Little Passages
      • Brian Walker – Developer of Brogue
      • Nicholas Feinberg – Developer of Dungeon Crawl: Stone Soup
      • Zack Johnson – Creator of Kingdom of Loathing
      • Jason Grinblat – Designer of Caves of Qud
      • Kate Compton – Creator of Tracery and loads of generative art
      • Jim Shepard – Creator of Dungeonmans
      • Drew Streib – Operator of NAO
      • George Moromisato – Creator of Transcendence
      • Alexei Pepers – Presenting academic research on accessibility and Nethack
      • Erik Osheim & Robert Au – Members of the Angband dev team

      Looking forward for the next Roguelike Celebration!

      NeoArcherFire QuickBasic source code

      Today I decided to try to include some of my oldest game projects into my page at A couple of them were ArcherFire and NeoArcherFire, the first games I created which included graphics.

      Screen Shot 2016-08-16 at 11.45.34 PM

      Bundled with the original ArcherFire, I found a file which was supposed to be its source code. I tried checking it out: it was a .BAS file so I thought it’d be a plain text file with QBasic source code… I was wrong, it was a binary file.

      Then I remembered back then the version of “QBasic” I used allowed saving the source code as binary files for faster loading times. I downloaded QBasic and tried to load the file (Using DOSBox, of course). It failed, unable to read the binary contents.

      I googled a bit and refreshed my mind: back then I was using QuickBasic, not QBasic.

      [from wikipedia]

      A subset of QuickBASIC 4.5, named QBasic, was included with MS-DOS 5 and later versions, replacing the GW-BASIC included with previous versions of MS-DOS. Compared to QuickBASIC, QBasic is limited to an interpreter only, lacks a few functions, can only handle programs of a limited size, and lacks support for separate program modules. Since it lacks a compiler, it cannot be used to produce executable files, although its program source code can still be compiled by a QuickBASIC 4.5, PDS 7.x or VBDOS 1.0 compiler, if available.

      I downloaded it and was able to check the source code, finding out that it was Neo ArcherFire, the enhanced version which used DirectQB, and my final game project using any BASIC variant!


      I made this game back on 2003, the source code is surprisingly organised🙂

      Screen Shot 2016-08-16 at 11.31.08 PM

      I exported the binary “project” to ASCII, and uploaded it to github, if you are curious you can check it out here, but I’d recommend getting MSQuickBasic so you can navigate the SUBs easily😀

      This game was powered by DirectQB, a lib released in 1999 by Angelo Mottola which greatly extended what could be done by QuickBasic, you can find more info here.

      Although this wasn’t really my first game, I think it’s very unlikely for me to find any older source code, it was lost in my old 486… may be some day I’ll find a rusty diskette with it? Some of the things I miss the most are:

      • The source code of the original ArcherFire (with graphics): The only surviving compiled version has you starting with 1 hit point left, so it’s pretty hard😀
      • The romhack for translating Final Fantasy I to Spanish, which I recall was a lot of work and was (almost?) done
      • The non-graphics versions of ArcherFire, as well as some earlier console-mode games I made including a set of “athletics” games (I recall one being about 100 meters dash), another adventure game where you could move a happy face around, and a puzzle game similar to Dr. Mario.