Rogue Agent Trinity – RTF25

Rogue Agent: Trinity, was our entry for the first Roguetemple’s Fortnight, a gamejam I organized for the first time in 2025 inviting people to create “traditional roguelikes” (turn-based, no meta-progression).

The jam itself was a great success, I’ll share more about it later. But now let’s recap a little bit how this game came to be… I’m proud of the results so far, although the jam version wasn’t enough (because of a very late start, compromised development time (as usual), and huge scope). But I’ve managed to take it to the point where it should reflect enough of what it’s meant to be.

In this game, you are Trinity, jacked into the Matrix and trapped in the Heart o’ the City Hotel. The Agents have traced your signal, and waves of armed police are swarming the halls. Unleash your kung fu and guns, and decide when to fight or when to slip past. One wrong move, and they’ll have you cornered.

Your only hope of escape is to survive long enough to reach the ringing phone that will pull you back to reality. With each floor you climb down, the resistance tightens — guards coordinate, SWAT enforcers appear, and the threat of an Agent looms. 

Play online (or download) at https://slash.itch.io/matrix-rogue-agent


The Story so far

After finishing this year’s 7DRL, I didn’t really have a lot of ideas for new roguelikes… as the time drew closer, I considered some options for the jam… the first one was an open-world roguelike made with the intent of experimenting with some mechanics for an upcoming bigger project. That one I ended up having to discard because of the limited time I could put into the jam.

Another option considered was to make a FortniteRL, mainly to play around with the gamejam name (of course). Several factors played against that; for one, the turn-based gameplay was central to the jam theme, and that makes multiplayer extremely tricky/impossible for games with direct interaction and “microturns” (compared to games like Civilization, which have a “long-turn” structure, or even xcom).

I recall some 20 years ago I used to look at mangband and read a bit about hybrid timing systems that tried to address it but, in the end, those tend to change the core nature of gameplay in favor of improving the game flow and prevent dead time, so players end up having to create macros for non trivial actions, and playing quick. It may be worth experimenting with that in the future with a game.

Some other reasons included scope; making such idea worthwhile would require much more development than 2 weeks; so it wasn’t a good fit for a bite-sized project.

Another idea was making a roguelike based on The Matrix, not sure how this one came to be, I think I just a saw a pretty cool screensaver from a work colleague in Ubidots. What if the game was the screensaver?

The jam started, and I didn’t really know what I would end up doing.

(Note: Here is where I would put a detailed day by day account of the development of the project, sadly, I don’t have the time to do it for now, but I may eventually backfill it!)

September 5

It took until September 5, with only 7 days left that I decided to jump on with an idea; So I asked friend Jucarave, which one of these two ideas I should do. He told me straight to go with MatrixRL (I don’t know why). So I decided to start with it. Technically, this was going to be a 7DRL… due to both hesitation and client work, in the end I couldn’t take advantage of the additional time proposed in the Fortnight jam format.

As usual, I started putting up a design doc to make the ideas take shape. For the implementation itself I decided to start with a base JSRL fork instead of a more advanced existing codebase; it was very tempting to start with Rainy Day, which looked similar and would play similar, but in the end I found it had so many things I’d have to take away, that it wasn’t really going to help a lot (because of the temptation of leaving some stuff there just in case, and the anxiety of deleting things and not knowing what it would breakl).

First day was just cloning the project and changing it so it looked… green.

September 6

Next day, I had no time to lose so starting making the core of it. The first big change was to make the game world bigger, and rendered in “matrix” characters instead of normal characters; this meant effectively using the graphics mode instead of the text mode for the map. For the UI decided to use a VGA 9×8 font from int10h.org. Everything tinted in green of course (except for the players, which I decided to put a much brighter tone, almost white, for usability)

A big change from the core JSRL graphics mode was implementing a “camera no-follow” mode in the graphics mode. I should probably back port it to the base repo some time.

I started playing around with visual effects; added a “glow” filter to simulate bloom, it worked well but had to take some measures to only use it in a small number of tiles, else performance really suffered.

Started implementing the random generator – The idea was to have a very traditional room+corridors generator, where the corridors would represent the jumps between buildings (and the “rooms” would be entire buildings), then I would subdivide the buildings into actual rooms. Added the ability to hyper jump between buildings.

September 9

Things were starting to take shape with skills, building spaces subdivision, and overall the vibe of the game simulating the world with terminals overlaid on top representing different programs used by the operator.

Somewhere after September 9, Gecko and Jucarave jumped into the project with small but highly impacting contributions; Gecko providing an amazing techno OST, and Jucarave implemented the “Digital Rain” effect which would be core to the experience.

As I mentioned, the initial 7DRL period just wasn’t enough to get the game to the point I wanted (even if it was a successful, “complete” game). The weeks after, on and off, I polished the skills, implemented ranged firearms combat, and improved the player progression (I think).

Apologies for the lack of detail of the development of this, but I felt I should at least post a little bit on how it happened to happen, else the tale may be lost to history (as happened with Monte del Diablo, sadly)

Leave a comment