Rainy Day, 2021 7DRL Success!

Play the game online HERE

Another year another 7DRL. With 17 years into it, Mr. Jeff Lait (the only other human developer to have participated in all of the challenges) has pointed out to me that I have been participating in the 7DRL Challenge for over half of my life now. Cool.

Following is a summary of the journey, which I detailed in daily posts in the new 7DRL Challenge Community blog (which sadly went underutilized due to underpromotion and the preeminence of other channels such as Reddit, Discord, and the boards at Itch). 1, 2, 3, 4, 5, 6, and 7.

This year was weird. I had pretty solid plans about 3 weeks in advance. Wanted to make the most out of it for the development of the ExpeditionX engine, exploit a lot of unused assets we created but are now not that useful anymore for NovaMundi, and build the foundations of a potential future commercial game (because who can afford to WASTE 7 days of development these times! :P)

All that went to the trash can when I recalled 7DRLs must be Free in spirit (and in the past, some people have tried to exploit the challenge commercially, with ugly results), and producing a free game reusing NovaMundi’s underlying engine might affect its upcoming Early Access release. Also, it was looking kinda scary from the scope point of view.

So, I began randomly exploring what to do. During the first two days of the 9 days time window of the challenge, I tried to come up with something that would be doable, interesting, and fun to work on. I toyed around with creating a spectator-sport, a battle arena with AI enemies using roguenet‘s infrastructure, where players could follow the development of gladiatorial leagues, and witness grand events. I was about to go for it but again decided to scrap it due to scope. I’m thinking on maybe doing this for procjam this year.

Then, I thought about doing something similar to my last year’s, Emerald Woods, which was more of an experience backed by the power of ASCII Unicode (and awesome sound effects). For this one I thought I would recreate the feeling of being alone, we all want to be alone sometimes and play some games. I don’t play games anymore.

After all the stress of trying to set a course for the project, I decided to chill out and just see where it would take me. I worked on setting the theme for the game, which kind of held until the end. You start at your home, and it’s raining. You can use your computer to play games, or connect to roguenet, or watch random videos in your room (adapted from the 7DRL theme generator words bank and idea by Evgenii Petrov). Sadly I didn’t manage to allow the player to brew coffee (dammit, that would have been a cool 2 minutes addition).

I also set myself on the visuals. I decided to use a strict ASCII 80×25 monochrome mode, similar to what I did for Rogue Program, including using an IBM VGA look-alike font with a green color emulating P1 phosphor from early monochrome monitors. The reasons for this were I think it looked pretty cool in Rogue Program, taking me back to the first games I played, and I also thought it would give the game a distinct visual style, and would allow me to fully exploit the possibilities of ASCII to represent full-blown environments using the power of imagination.

Then I started thinking, what is the actual game that the player’s character is going to be able to play from within the game? the first idea that crossed my mind was doing SpelunkyRL, an idea I shared with Derek Yu when I met him in San Francisco in 2017. What if Spelunky was a REAL roguelike? (wink-wink) I recall he told me he didn’t think it would work (he’s most probably right).

There was a lot of RedBull in this event

Alongside, I started toying with the idea of a somewhat “surreal” experience, where the game and the real-life would mix, and you would no longer know what was reality. The idea was you would wound up back at home from within the game, kind of like a parallel dimension or a dark/flip side. That part didn’t hold until the end, since I figured it would require a lot of design to make it feel right, and it would spike the scope of the 7DRL again.

I managed to advance a bit in SpelunkyRL, even doing an initial version of a level generator based on Spelunky’s legendarily simple 4×4 generator but adapted to a top-down perspective. For some reason, it didn’t click on me… again feeling that 7 days was not enough to do it justice (maybe it’s the zillion of previous half-baked attempts at stuff have finally helped a bit).

So, I found myself against without a direction. I taped again at my head for stuff I had done for previous years which was cool but for some reason didn’t end up fun. I decided to integrate and adapt the Stygian Abyss level generator (tweaking it for the fixed screen 80×22 levels and the monochrome visuals of the game). One of the big things I missed from our Stygian Abyss 2015 7DRL entry was an auto-map or better means to prevent people from getting lost; the combination of the overhead view and the fixed-screen levels seems to work great for that (perhaps centering a game around the notion of how easy it is to get lost isn’t that much of a good idea after all).

Epyona Reactor – Level 1

Following up on the idea of reusing cool stuff that didn’t work out very well, I decided to do add a hand-crafted overworld, linking the main dungeon and 2 caves initially, and then use the “Epic Quest” generator from Heroes of Noresskia (my not-very-exciting entry for 2019’s challenge). My rationale was that it didn’t work in 2019 because the journey between the points in the map was super dull, the combat system was bare and broken, and the interaction at the actual places on the map was minimal. So maybe if I addressed these 3 things I could put it into proper use.

Kradia Valley

In the end, I dropped the idea mainly because… maybe the “Epic Quest” generator wasn’t really that good for starters? I think we are still a long way from generating interesting plot-lines, and any efforts to do it will ultimately suffer from the “cheap content” curse and be undervalued by players. I decided to instead go for a more straightforward and fixed plot. However, I retained the idea of a fixed overworld, grabbing inspiration from classic ADoM’s Drakalor Chain (but it’s a valley, similar to my hometown’s).

Amazing picture of Medellín (source)

I had another crisis of thinking about what innovation, if any, I was bringing to the genre. What was going to set this entry apart from others and bring something new (even if tiny) to the genre? so far it was heading to just being a traditional roguelike with a fancy monochrome display (which is probably hardly an innovation as that’s how these games were played in the early ’80s?).

Reading a bit on it, I remembered one way to approach innovation is just by mixing different ideas, at least as a starting point. Just what I did (with half-baked implementations) for my first 7DRLs I guess.

At first, I thought I could create a roguelike with strong western RPG elements, like, taking ADOM and stretching it to an Ultima VI level of (hand-made) character and quests design, with its own lore and towns with a unique flavor. At the very least, I could come up with a system of virtues/values, 3 or 4, each one with its town and dungeon, basically an Ultima IV Roguelike. (By the way, I need to check the U4 Randomizer sometime soon). I played a bit of Jeff Lait’s Malachite Dreams, which I always had on my mind was like an Ultima Roguelike at least for the exploration aspects, and found it a bit empty so plenty of possibilities to extend on the idea. BEEP! too ambitious! another idea discarded.

Again, I found myself in the void, one of these un-fun 7DRL Challenge moments. I had a generator creating pretty good-looking cavernous complexes and a working overworld, but what should I populate it with? Damn. That part of the 7DRL where you have to actually create content.

I thought I could instead grab and build upon the setting of Ananias… but that brought the issue of it being a lot of work for little return (the question of making the world of Ananias more interesting is big enough, something I should tackle afterward).

Then I wondered, what games have I been playing lately that I could use as a source of inspiration? luckily, my list is short with just two games I played seriously in 2020: Horizon Chase Turbo and the Final Fantasy VII Remake. I remembered I actually had the idea for 2020’s challenge to create a game based on the then upcoming Final Fantasy VII Remake, thinking about riding the wave of increased interest. (Actually, in 2020 there was an entry based on FF7, but it was mostly focused on the combat, not the setting).

This was super compatible with what I had so far, so I decided to go with it. Yay, a clear direction again.

For gameplay, I took a lot of inspiration from my memories of early DoomRL for ranged combat and mixed it with my own melee-focused skills from Rodney, which were inherited from DrashRL and also permeated the design of some of the classes of Ananias. Again, I think these were good ideas that weren’t fully exploited because of the limitations of their map generators and generic themes. I also brought in the enemy AI from OpenArthurianX6 for ranged combat mainly, as well as its pathfinding implementation.

By day 5, it was about time to start working on the content, so I jumped into defining the locations and enemies that would be found, as well as their stats and behavior. I repurposed the theme of the level generator and placed four “reactors” in this world that you got to pay a visit to, then reach their bottom, place a bomb, and return to the surface, to save the world from devastation.

I also invested some time to make sure the ranged attack animations worked fine, since I believe this is a very important aspect for any roguelike with ranged combat.

Through the week, I had kept QuietGecko up to date with all the crazy stuff that was going on, and he could set apart some time to work in the game during the final days (when things were luckily pretty stable in regards to theme and gameplay).

I reached the final day with a semi-working game, glad to at least had invested quite a bit in advance in content generation, but with a lot of tweaking to do.

The first thing I tackled was making sure there was some kind of progression both in the difficulty of the levels but also in the development of the player character. This including moving a lot of the monster stats and doing some playtesting to see how it felt, and also incorporating a lot more skills from Rodney that the player could acquire by using “Wallemite Chambers” found within the levels.

The “active” melee skills I included were: Charge, Assault, Corner, Counter, and Rage. These demanded a lot of work to integrate them from the old Rodney code (which is actually the basis for JSRL but is super outdated now). Then I also had the “stats upgrade” skills for HP, Attack, Sight Range, and Carry capacity; each one required refactoring stuff at some level in the combat code or the UI.

Another important thing I added was populating the items in the levels. For 2019’s Heroes of Noresskia, I completely forgot about healing! so it was probably impossible to win. In the end, I went a bit overboard with this, adding too many healing items. I also added another facet of inventory management with ammunition for ranged attacks, so you had to balance your inventory between healing items and ammo.

About 30 minutes before the deadline, I got a pack of sound effects and music from QuietGecko. I hesitated on integrating them since I still had to work a bit in the balance of the game, but in the end, decided they were important enough to set the mood of the game. I managed to integrate just one of the three tracks he provided (the one for the Wallemite Reactors), as well as a single SFX for walking, and the plasma shots for ranged attacks. Here’s the Reactor track, with obvious influences from FF7 (but we DID want people to get the references, since that would greatly help to establish the theme).

The final 5 minutes were me frantically trying to address the balancing issues because the game was still too hard! so I nerfed enemies to 25% of their power, and buffed the healing items to 200%. A lot of testing is still required but at least it proved to be enough to make it playable.

And that’s the story so far! I probably say this every year, but I’m happy with the results, and I believe this has potential. Possible small tasks ahead (beside fixing a couple critical things like using items not taking a turn) would be to balance the stats a little bit, some QoL improvements for the UX, and maybe also the audio experience while keeping about the current amount of content in terms of enemies and items.

Rise of Kramora, now available for Android (phone)

Well,  I just felt like I had to make the game available for phones as well because:

  • … not many people has Android Wear smartwatches these days
  • … specially, wanted the 7DRL jurors to be able to play.
  • … wanted to create a native android app
  • … wanted to test how hard it’d be to create an app to run in both type of devices.

This mean you can play the game now in your Android Phone! have in mind that this is STILL the original 7DRL edition. I haven’t made any enhancements to it! You can find more info about the 7DRL release here. Basically, don’t expect a revolutionary game, but I hope you can find it entertaining: The main goal (game-design-wise) was making something you could play any time, without any commitment, but still find challenging.

Play now for free!


In order to make it happen I had to move some things around, creating an Android Library module on Android Studio, moving all the generic code and resources into it and linking the wear and mobile modules with it. This module contains the game classes (the “model”), the sprite “engine” (i.e. the library for sprite management and tweens) and the generic view (based on an android.graphics.Canvas, and thus compatible with both the wear and mobile modules) and controller.

Screen Shot 2016-03-21 at 7.53.42 PM

The wear module was then left with just the WatchfaceService (wired to the Game, View and Controller); since it has built-in messaging-based timing functionality, it could easily be wired to the sprite engine, to provide animations at a given frame rate (24FPS).

The mobile module, on the other hand, had none of this…. Fortunately I stumbled upon this tutorial, which was very helpful on creating a simple rendering engine backed by a SurfaceView, which in turn was wired to the game, view and controller. Lastly, there was a simple Activity which set the SurfaceView as its ContentView.

The hardest part however was memory management… because of its 7DRL nature I was pretty sloppy, loading all bitmaps (AND their scaled version) into memory. For some reason it went well on the initial Android Wear version, but the bitmaps on memory were just too big for the phone.

The first change I had to make was no longer storing the scaled versions, but rather using methods to scale them on the fly while drawing. It’s a balance of processing power vs. memory, but it seems to be able to handle it pretty well. However there’s still room for improvement, I may revisit this if I find out it’s a big problem.

After this, and adding a “wristwatch” border, the phone version  was almost working, then I wanted to double check the watch version and, weirdly, tons of memory errors happened.

Oddly, I spent lots of time just trying to get the Wear version working back again…  I did lots of changes, including loading bitmaps on request instead of caching them, but I did it on the main thread because I needed them available immediately (bad idea). It worked, but was pretty choppy so in the end I discarded that, and settled for manually downscaling all the game graphics from a 512×512 base to a 320×320 one, which made sense since in any case that’s what most Android Wear watches are up to now. (and in any case it should upscale for newer devices).

In any case, I hope you enjoy it! Please let me know if you run into any issues running it!

2016 7DRL, Relojiah Day 1

Legend of Relojiah is a lightweight roguelike designed to be played on smart watches. Explore the labyrinthine Tower of  Time, battling monsters and finding powerful artifacts.

Today I managed to implement all basic interactions for the first iteration of the game, there’s a playable game already!


You play by tapping on the screen, depending on your current mode you’ll either continue exploring the current level (looking for more powerful weapons and armor), or attack the enemy you are fighting. Once you find the stairs to the next floor you can decide if you continue exploring the current level, or climb to the next one. The design is based on the roguelike in a tweet I made some months ago.

2016-01-16 18.57.13

There are no graphics yet. I’ll get to that tomorrow with my provisional art, but I’m also looking for an artist to work with. What would be required would be some low resolution illustrations for the background, items, monsters and the player.

2016-01-16 18.58.26

After graphics are implemented I’ll play a bit with the content to make it balanced. In the unlikely event I’ve got more time to work on it, I may add some simple tactical options for battles.

I also plan to make it available for other devices; I’m still wondering whether doing it on JavaScript so it can be played anywhere, or creating a native Android app (the watchface would come bundled with it)