Day 1 – Rogue AI

Hello everyone! For my 8th 7DRL, I’ll be doing something a little different.

My last few games have been mostly straight up crawlers, and the mediocre reception of Hellspace from last year showed me that maybe people are getting a bit sick of that trend.

No better way than to go completely off the deep end than with Rogue AI!

I had this idea a long time ago, and decided late last year I might just be able to pack it into a 7DRL – In this game the player will design an AI using an easy tile drop interface (that could even theoretically be used by non programmers). If you build something you think is intelligent enough, you can upload it and then watch your brain duel another person’s brain for glory and a position on the leader board.

Back when I first designed this idea a number of years ago, the interface I had in mind was something like this:

I lost my notes on what that program does exactly, but I remember the first bit:

Starting from the GO tile, you move down into an IF. The IF has internal settings PLAYER HEALTH < 30. If true, then go right else go down. To the right the next IF will have something like PLAYER HEALTHPOTION >= 1, and if so right again to use that item, otherwise down to continue the original thread.

Its like a turn by turn flow diagram for taking the action you want.

The rest of what is above goes on to check whether a target has been set and if so move towards/attack it, possibly move away if still on low health. Try and set a new target, otherwise go wandering etc. Standard AI stuff. Other settings for the IF blocks include checking whether a target is set, or whether things exist in the FOV, and so on. The target tile sets the target, the FUNC tile lets you jump between places (like a GOTO) if one area of the setup gets too crowded. The SET tile allows you to store variables between turns that can be referred to in IFs.

And of course it can all be expanded to rational use of spells and abilities, and working with others in a team (for example a brain designed for a warrior unit will charge through, while another designed for a priest body will follow the warrior healing and staying out of trouble)

I’ve had multilayer functionality in my engine for a while now (though no good ideas on how to use it), and also implemented a lot of the UI elements from LibGDX this year so it seemed like a good idea to utilize these thus far unused features (so like the last number of years, I’ll be using my same engine again)

Here’s how Ive gone so far – it looks like Ive done a lot, but pretty much nothing works yet except the simple chat window.

Leave a Reply