Tuesday, 17 September 2013

Kornel Kisielewicz, developer of DoomRL recently asked via twitter and the Roguelikes Reddit what people expect from a modern roguelike - and received the usual responses: UI, graphics (and even multiplayer). While an excellent user interface is a necessary but not sufficient reason to call a roguelike modern, I think he is doing a disservice by dismissing my tweeted response out of hand that roguelikes need to be more like Brogue or 868-HACK.

I only have a few minutes to expand on this idea here, but ever since the Binding of Isaac, it is my belief that a modern roguelike should be of limited length, but infinite width. The games should be short - Brogue's maps are at the upper limit of what is acceptable for me any more; but replayable, and the experience should expand through unexpected interactions arising out of a small number of meaningful items, so that no two games play alike. The game cannot have much if any in the way of pre-game character development: characters should instead be defined by the random pickups that they must choose between - both to reduce the length of time playing, and to force the player to experience a greater variety of what the game has to offer.

I don't see this as a subgenre, as Kornel suggests: I see this as the future.

Friday, 6 September 2013

868-HACK is a game at a tactical level about positional conflict: you can fight an infinite number of enemies provided they approach one at a time with no gaps between them, whereas two adjacent enemies will leave you with only 1 hp remaining from full health and three will kill you. The margin of survivable to fatal is razor thin, so it becomes important to understand how your positioning and your programs can help you reduce the number of enemies you must face at a time. This can roughly be divided into three phases of play: incoming transmissions, either from entering a new level or siphoning; the post-transmission melee; and surviving the large number of enemies in the later levels of the game.

Spawn control
I have lost count of the number of times I have died from siphoning a 4 alert firewall on the opening level because the resulting incoming enemies spawned in a position that killed me. In a game with permadeath, even one as short as 868-HACK, if you rely on something once a sector that is only 90% effective, then your avatar will die over the course of a single game 57% of the time. And the biggest source of randomness that will affect you over the course of a single turn is the location and type of incoming transmissions.
Ignoring programs for the moment, there are several factors you can use to influence transmissions following a firewall siphon. The most obvious one is controlling how many enemies appear with each siphon. When you don't have the resources available to control the positional game (see below), it may be worth siphoning less efficiently for credits, energy or usage of siphons, if you can siphon two close firewalls separately instead of being forced to siphon both at the same time. And since transmissions don't appear in locations you can immediately attack - the 4 cardinal directions from your avatar to the nearest firewall - it may be worth siphoning in a more open location to decrease the number of grids transmissions are permitted to appear in, or to eliminate closer grids in favour of grids further away.
A number of programs allow you to reduce or modify the nature of incoming transmissions. The calculus of how many credits to spend to eliminate transmissions is a complex one, but again you should be willing to spend more resources the more transmissions are incoming in order to reduce this to an ideal 3 transmissions or less.
In terms of cost, a good rule of thumb is that 4 energy (two pushes) or 3 credits (specific enemy counter programs) allows you to kill a single enemy in positional combat if things go wrong and you have the right program so if you can eliminate transmissions for less than this amount, you should. You should also use this calculation as rough guide for how much cash and energy you need when entering a new sector (a number of enemies spawn per sector) - again depending on which programs you have. If we take 3 as the 'safe' transmission amount, you don't need energy or credits moving to sectors 2 or 3, 4 energy or 3 credits for sector 4, up to 20 energy or 15 credits for level 8. On top of that, you'll need up to 3 times the 'tactical parity flip' cost (see below) to deal with the remaining three enemies.

Positioning
Positioning is all about ensuring that no more than one enemy ends up moving next to you each turn, which you can then stun to damage and eliminate. A corollary of this is you need to ensure that you never end up being forced to move next to an enemy - which can easily happen if you don't have what Michael Brough calls a 'tactical parity flip'. The canonical example of this is the .WAIT command. In the screen shot below, I'm unable to consume a turn of time to allow the DAEMON to move closer towards me and as a result I am forced to move towards them which allows the DAEMON to attack and remove my last hit point. Tactical parity affects all enemies which are an even number of moves away from you.

While there are a number of other tactical parity flips such as PUSH and STEP, you will most often use non-program parity flips. The most common is being able to attack another enemy, often at range, which uses up a turn, but you could also siphon to use a turn. Exiting the level has the opposite effect, you move, but no enemies get a turn, and you can use this to both flip parity and increase range between you and your enemies. And enemies can be blocked by other enemies which will flip the parity of the unit being blocked - the easiest way to do this is to retreat away from both enemies which is why paradoxically the corner grids are dangerous in this game as they offer no path of retreat. This is especially noticeable when you appear on a new level and have an incoming transmission a knight's move in from an otherwise clear corner. Unless it is a virus, you will have to spend a tactical parity flip or eliminate the transmission or you will be damaged by the resulting enemy.

Retreating has one important additional function. If an enemy has the wrong parity, and you can retreat so that it is presented with a choice of two grids it can enter, it has a 50% chance of moving perpendicular to you, which may present a ranged shot opportunity. This is not always effective - glitches appear to always move onto wall grids if at all presented with the opportunity; but conversely viruses appear to always move into a ranged shot opportunity if given the choice between that and the grids directly diagonal to you.

Viruses are more complicated because they have parity on the odd numbered grids away from you (or every third grid if you move towards them on your turn), and additionally have half parity moves. This is where a virus is two grids away from you and you are unable to attack it safely such as the top most virus to the left of the daemon next to me.

With half parity, eliminating the intervening enemy allows the virus to
move into the grid adjacent to you and attack you on the same turn. Half parity moves cannot be
parity flipped by using WAIT, attacking another enemy or using siphon,
but can be eliminated by programs that allow you to change the
intervening distance by one or by exiting the level. Most importantly, half parity can be flipped by retreating one grid - which is yet another reason why you should give yourself space to retreat and not get boxed into a corner.

It is important to note that viruses cannot just move one grid unless they are blocked. In the example below the virus closest to me is in a full parity position. Until I kill the daemon, it must either move north then west or east then south - both of which are also parity positions. When the daemon is killed, it will occupy the grid next to me. Unfortunately, while fighting the daemon, and the virus to the west which is at half parity, one of the two remaining viruses ended up with a blocked move and changed to half parity and was able to damage me.

Killing fields
The large number of enemies that appear in the late game, especially on level 8, need to be avoided or eliminated. Part of the early game is identifying how you will handle levels such as this one which are almost filled with enemies: in this example I was fortunate that the exit didn't appear in the bottom right hand corner when I entered from top left, and so I was able to step across the intervening grids, pausing to siphon points. There are a number of combinations of programs which can perform the killing function - and it may be useful to siphon near the exit on the previous level and enter 8 not having cleared 7, if you have a combination of programs that benefits from overlapping enemies or a mix of enemy types.

Monday, 2 September 2013

Michael Brough has released 868-HACK on iOS, the culmination of 5 months of development following the 7DRL it is based on, 86856527. The TL;DR is that you should buy this game: it is the best iOS roguelike (though not by much), the best iOS game released so far this year, and my GoTY, which is something I shouldn't be saying in September.

My question is, given how great a game it is, is when should we talk about it on Roguelike Radio? The TL;DR for that is in my opinion is never - or more specifically, we should have a lively hour to an hour and a half inside baseball conversation full of insight and praise for the game, and then take the hard drives the episode is recorded on out into the desert and bury them next to Jason Rohrer's game meant to be played in two thousand years. (They're digging up the old copies of E.T. far too soon).

The reason for that is far more interesting: this is a game for which a large part of the pleasures of learning to play it is prone to being spoiled, but not for the reasons of any other game I've played and that is part of what is unique about Brough's design. (Caveat: I've not played Starseed Pilgrim, for which you can read Michael Brough's thoughts on here noting that his statement 'you can get better at it. It's not about uncovering obtuse facts; it's about mastering a deep system, creatively using its quirks to your advantage, getting better at it until you're able to overcome anything that's thrown at you.' equally applies to 868-HACK).

868-HACK game is minimalist and procedurally generated, with an online leader board and score chase and score streak elements which should give it longevity, and Brough's original statement of intent was to explore progression systems in games, which it does elegantly along three axes (more if you count the variety of unlock systems in play), with more than enough ways to kill yourself through greed. The programs you acquire in game in an exquisitely balanced risk/reward mechanic are obtusely described in two to four word phrases: but this isn't because the game is trying to be deliberately difficult. Instead, think of each program as an onion, which as you peel off the layers you find new and interesting ways of using it, either alone or especially in conjunction with other programs in the game.

What can be spoiled is the ways of using these programs - all of which are discoverable, and apply logically in ways that make perfect sense post-realisation. But simply by saying a sequence of two programs you should probably try together I risk taking away the pleasure you'll get in figuring them out - either by yourself or in the community of people you play games with. The game post-discovery is still a robust set of systems - you can't break the game by telling someone something in the way you could in a narrative game, and it is probable that I could tell you an interesting interaction but the implications of what I said may not sink in until you are in a position in the game where a life or death decision depends on your understanding of how you can take advantage of the tools at your disposal.

Looking back at what I've written above, I'm probably over emphasizing the risk of spoilers, and under emphasizing the myriad ways in which the programs interact. Of course, to talk about that, I'd need you to also have gone down the rabbit hole of playing the game, so that I could start to tell you how X interacts with Y, or why Z is now my favourite program despite its apparent inferiority to A and prone to result in accidental avatar death. For now, you can spoil yourself in more depth on my twitter feed, and an older post where I make the cardinal sin of back seat designing the 7DRL, and wait for the day that a way of forgetting reliably exists.