I just received an enthusiastic email from someone who clearly loves the blog having just started reading it, but is also wondering where I am at. I thought I'd include my response to his email below:
My output has dropped significantly now I have children. I hope you've also checked out the PCG wiki that I've set up, and have read the chapters of the PCG book Noor Shaker, Julian Togelius, Mark J Nelson et al are putting together.
Conveniently, below is the interview responses to some interview questions that the above authors sent me recently - I hope these answer your questions. Their questions are in bold.
Was there anything you wanted to do in a game you worked on that you could not do because of algorithmic or computational limitations?
My thinking about game design has changed significantly over the years, since writing the original Death of the Level Designer series of articles. One of the key changes - guided a lot by games like Michael Brough’s 868-HACK - is that a game should embrace limitations, rather than attempt to design around them. So rather than creating procedural systems which can model everything ala Dwarf Fortress, there are real advantages in keeping games as limited as possible in order that the significance of individual procedural elements is emphasized, rather than smoothed over by a melange of inputs. My personal limitations are very much around algorithm implementation rather than design: for instance, while I have a good understanding of what a Voronoi diagram looks like and where it could be used, I’m unlikely to ever successfully reimplement anything but a brute force approach for calculating cell membership.
What new design questions has PCG posed for some game you worked on?
I’ve written extensively about this - refer to the writing on my blog post on Unangband’s dungeon generation and algorithmic monster placement for specific discoveries. Since then, UnBrogue includes very little original procedural content: I mostly plug new values into the well written framework that Brian Walker has developed for Brogue’s ‘machine’ rooms. These days I try to steer clear of actually designing procedural systems: my experience is that you can achieve a lot using a very simple set of algorithms, provided you choose your content carefully (see Darius Kazemi’s essay on Spelunky’s level generation for a great example of this).
Which is the most impressive example of procedural content generation you have seen since your own work?
I’d be hard pressed to ignore Miguel Cepero of Voxel Farm, who I’m sure a lot of people you interview will mention. While the above ground system looks great, it was his cave designs that won me over, after being a doubter. What really impresses me though is he’s developing all this while being the father of twins - I’m in the same position and I can never find the time...
What do you think of the fact that roguelikes have become a genre of their own? Is PCG in your opinion an essential part of what a roguelike is?
I’m going to quote Edmund McMillen here, since he made the definitive statement on why you should write a roguelike:
"The roguelike formula is an amazing design plan that isn't used much, mostly because its traditional designs rely on alienatingly complicated user interfaces. Once you crack the roguelike formula, however, it becomes an increasingly beautiful, deep, and everlasting design that allows you to generate a seemingly dynamic experience for players, so that each time they play your game they're getting a totally new adventure." -- http://www.gamasutra.com/view/feature/182380/Postmortem_McMillen_and_Himsls_The_Binding_of_Isaac.php
PCG is obviously an important part of this process, but it isn’t independent from the other roguelike genre features like permadeath. My hunch is that there are other ‘design plans’ out there that are waiting to be found that will feature PCG - in fact the majority will do, but we don’t necessarily know what they look like, or have the maturity of the medium (of PCG) to be able to discover them.
What's your tips for designing games that use PCG?
Keep your algorithms simple and choose your content carefully.
Do you have any interesting stories about PCG failures?
Not personally, since I’ve taken such a conservative approach to PCG algorithms.
In general, is there anything in a game you think could never be procedurally generated?
The specific quirks of the real world. I’m not saying that PCG can’t create something like the real world: I expect the depth required to make a world ‘completely convincing’ is actually more shallow than most PCG ‘haters’ realize - but ultimately, when it comes to simulation, the fact that we exist at a specific time and place in a continuum of choices and random events is something that PCG can only hold a mirror up to. Hand placed design will always be needed if you want to model history - PCG will overtake hand placed design for ‘fantasy worlds’ in the not too distant future.
[Edit to add: I also think the trend to 'single map games' like DotA 2, and e.g. de_dust2 in Counter Strike may also provide an impediment.]
Why is PCG not used more?
PCG is a language that requires a level of literacy to understand. We’re not effectively teaching this language yet, but we’re not effectively teaching the language of game design in general either. Also, it is often more expensive than hand placed content, because a PCG algorithm which is only 90% complete can not create anything useful, whereas 90% accurate hand placed content is clearly 9/10ths done. It's hard to describe working with PCG this way, but there’s almost a phase change between when a PCG algorithm just creates junk, and when it starts producing beautiful results, and it can be very hard to tune it to reach this state.
What do you see as current directions for PCG that are worth investigating?
There’s a lot of interesting stuff happening on the academic side - getting this to percolate over to game development is going to be the real challenge.
Wednesday, 4 December 2013
I just received an enthusiastic email from someone who clearly loves the blog having just started reading it, but is also wondering where I am at. I thought I'd include my response to his email below:
Posted by Andrew Doull at 11:38 am
Wednesday, 23 October 2013
If you have been following me on twitter, you will know I've taken the plunge into the world of board games*. This almost happened by accident: I'm still tweaking the Civilization Revolution variant that I've written the manual for (and little else); and one of the resources I'm using is the rocket science fan site Atomic Rockets. One of the games which gets the Atomic Rockets seal of approval for scientific accuracy in space flight is High Frontier, a game which has been around for a few years, but has just released a new version of its game expansion High Frontier: Colonization. And this, along with Bios: Megafauna by the same designer, are the board games I've decided to first buy and play.
The designer, Phil Eklund, is an actual rocket scientist but surprisingly High Frontier was not his first game - but he has gone on to develop it as a part of his magnum opus: a board game series which allow you to play through the history of the earth (currently from the Permian catastrophe using Bios: Megafauna), mankind (using the now out of print Origins: How We Became Human) and out into space using High Frontier, High Frontier: Colonization and a solitaire game High Frontier: Interstellar which uses the HF: Colonization playing pieces along with a poster map you order online and simulates the first interstellar colonization attempt. Phil has promised further games in the series: namely Bios: Genesis which will cover the origin of life from RNA to multi-cellular organisms, and Bios: Insecta which presumably will cover the pre-Permian period from invertabrates to vertabrates and for which he has made few details available other than the name [Edit: Insecta exists and is mostly in print]. Each game in the series also details how you move from one to the next (another poster release, Bios: Origins expands the Bios: Megafauna and Origins maps, and includes the rules to get from megafauna to High Frontier).
The whole concept is gamer catnip, and I am extraordinarily surprised that the games are not more highly coveted and praised. As a board game neophyte, I can see several reasons for this:
- The barrier to entry for playing a board game is much higher - namely you have to have two to five people in the same room at the same time, with a similar understanding of a set of rules which only knowledge of these rules is capable of enforcing. So a lot less games get played, and the process of developing and testing these games is a lot less likely to find game design issues which are only obvious after repeated plays.
- There is an accompanying weird fetishization of physical objects attendant with owning a board game. The process of shipping creates a dissonant anxiety (did I order the right things? when will they arrive?) not to mention the process of handling and taking care of the game (I bent a card! what do you mean I have to cut stuff with scissors?). I can happily report I had absolutely no issues with the procurement process: for High Frontier, you buy the base game here, and the Colonization ziploc expansion here (which fits in the original box) and you'll need to get both to get the 10/10 game experience. Phil has also mailed the pieces to the two players who ended up with a single missing component without prompting when they mentioned it on the Board Game Geek forums.
- It is not entirely clear which games to buy and which are still available, especially from the Board Game Geek site. At the moment, you can only get High Frontier + High Frontier Expansion, and Bios: Megafauna; and two posters, one for High Frontier: Interstellar and one for Bios: Origins. I'll put together a poster buying guide when I take the plunge. Additionally, you'll need to download the living rules for Bios: Megafauna (and Bios: Origins - there's an optional rule about Herbivore immigrant placement which is recommended by enough people for the main game) and email Phil Eklund to get access to 3 'Alive & Complete' Google docs: for High Frontier, High Frontier Civilisation and High Frontier Interstellar.
- The way these particular games are designed to work involve a high level of randomness which results in repeated set backs. Coming from a roguelike background, this isn't an issue but the randomness is anathema to what I understand is the Eurogame style of play that a lot of board gamers ascribe to. The alternative school of board games, called Ameritrash, would bounce off the set back side of things, combined with the fact that playing requires a lot of forethought and set up turns (each turn in High Frontier is quite quick to resolve, but if you don't build your rocket right, or miscalculate the fuel required for a trip, you need a lot of turns to recover).
- The themes and expression of these themes are pitched hard into my hard science fiction ball park ("Blue Goo Sophonts, New Attica Secessionists"), but could be incredibly off putting to your average Star Wars/Star Trek nerd, if such a beast exists (what do you mean there's a whole game dedicated to making one trip of less than 10 light years?). Similarly the balance between game and theme is way off - over half the basic High Frontier manual is a detailed explanation of the technologies involved, and the average High Frontier card has the same balance between information and chrome of a face card in a standard deck of cards - although a lot more information needs to be packed onto a single HF card.
- The scale and scope of the games is quite different to conventional games set in the genre. Science fiction games are typically multi-solar system spanning space opera epics; civilization games are usually technology centric; rather than socio-technical. Part of this challenge is due to Phil's naive Objectivist and rather perplexing climate change denialist stance, as well as his adoption of some offbeat ideas which sound like cards straight from Steve Jackson's Illuminati (L5 Society!).
It is this scale which is a refreshing change from video games: while the games are simulationist, they are only so in a sense that can be captured simply and expressed clearly - but they achieve much more than an equivalent computer game would dare to. Climate change in Origins involves submerging and exposing continental shelves and in Megafauna whole species can be wiped out in a single card draw. There is a profound cause and effect relationship in these board games which video games lose: were these games be ported to iOS (plz kk thx), people would treat the random number generator as biased against them.
As is my wont, after playing a game and a half of solitaire rules, I've already written a set of house/optional rules/variants for High Frontier: Colonization to address some imbalances in the political side of the game, and Phil has graciously indicated that if I can get them playtested, he'll include them as options in the online rules. That in itself poses a challenge, because I need to find 3 to 5 willing test subjects in Sydney who already understand (and preferably own) the game - or devote the time to learning the online Vassal module. I can't include myself in those games in case I need to tweak the rules while running live, but the changes I've made are simple enough I'm hoping they don't required much amendment.
But the sheer thrill of successfully building a rocket and landing it on Mercury has hooked me. I look forward to the rest of the series.
* Writing this post, I realise I actually mean a plunge back into the world of board games. I owned Steve Jackson's Illuminati at one point and possibly the original Civilization board game and expansion which predates Sid Meier's game. And I'm not sure whether Car Wars counts as a board game.
Posted by Andrew Doull at 1:06 pm
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.
Posted by Andrew Doull at 4:54 pm
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.
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 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.
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.
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.
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.
Posted by Andrew Doull at 10:30 pm
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.
Posted by Andrew Doull at 2:56 pm
Thursday, 11 July 2013
In the spirit of the Brogue weekend and midweek competitions, tinyrodent on the Brogue forums has organised an UnBrogue weekly seed, of which the first is here. It is a much more relaxed affair, running the 1.1.6 release candidate of UnBrogue (which I haven't mentioned here, because I was rightly concerned about the possibility of bugs) and more about the aesthetic experience of playing rather than score, or depth or other criteria.
(And for those wondering about UnBrogue, I've got three or four more bugs to fix, then I'll be releasing the next version with a more public announcement than a post in a forum thread).
Posted by Andrew Doull at 9:28 pm
Monday, 8 July 2013
Deep within the bowels of the 2K QA facility:
"You're operating on the minimum specifications... What is this madness?"
"We can't justify the revenue on the new iPad only. And who are we to prevent iPad 3 owners from enjoying the game for whole minutes at a time?"
"Aren't you worried about class actions suits?"
"These are iPad 3 owners. They put up with Apple releasing an out-of-band new iPad, they'll put up with anything."
"Very well - carry on."
Just another day in the saga of XC...rash.
Posted by Andrew Doull at 10:39 pm
Monday, 10 June 2013
This isn't an actual postmortem, because I've not finished with UnBrogue, but the 1.1 series of releases is coming towards a natural conclusion (with soon to be released 1.1.6 - assuming there are no further bugs requiring fixing that I can resolve in this branch) and I suspect there'll be a significant break between the 1.0/1.1 releases and 1.2 releases for reasons to be discussed.
UnBrogue started as a personal variant where I added and changed a few things that were annoying me, and then grew enough legs that it became worthwhile releasing for the 2012 Annual Roguelike Release Party (and which I deliberately kept under the radar prior to then). The main focus of the earliest release were about making plate armour and staffs of lightning bolts less of a no-brainer choice, making ogres more useful allies, and trying to increase the viability of a stealth game which I thought had potential but due to a dearth of rings of stealth in games I had been playing was something I hadn't experienced.
At a more meta level, I was curious to see whether I could incorporate some of the ideas I had been playing around after having played and fallen in love with the Binding of Isaac, a game which is particular "content-wide" in the sense that you will only encounter a small vertical slice of the possible content in the game in any one play through. Brogue has some of that width, but I wanted to see how much further and in what directions I could push it and still have a robust and interesting game.
What went right
1. Choosing a great game and code base to base it on.
Brogue is a great game of ideas to play around with, and a beautiful code base to write with. This ensured that when it came to development I was generally working at the coal face of working on new designs and ideas rather than having to worry about the back end framework. This is especially important for roguelikes which have a large number of complex systems with robust and interesting interactions; and in a hobbyist area where motivation is always a challenge, you want to maximise the amount of time you spend doing interesting things.
2. Not limiting myself to ideas that I could argue be reintroduced to the main game
This meant I could quite happily go and break the beauty of the code in search of new ideas. There is some pretty ugly additions to the code (Talismans of the Sinister Hand being the worst offence here), but I could quite happily add lots of stuff without worrying that I was adding a second (or third) set of flags to a particular data type, or that the elegance of the code was being diminished by bolting on a new way of doing things.
3. Spears and war pike redesign
The entire 1.0 branch pretty much failed to change the flavour of the game because while I added a lot of stuff, you only rarely encountered it (talismans) or found it useful (shields) - the changes to armour impact on stealth and enchantment impact on sneak attacks notwithstanding. Whereas, redesigning how spears and war pikes worked immediately made 1.1 much more interesting because you had a frequently occurring mechanic which worked significantly differently from the Brogue baseline. They were (and still are if you are on 1.1.3) a significant source of bugs, but the idea (which had to be modified prior to implementation because the original plan matched what Pender did with rapiers) is sound, makes sense as a game mechanic, and contrasts with the way other weapons work. The mace and warhammer changes helped here too.
4. Honouring the implementation of the Discoveries screen while changing the intent
The implicit contract in Brogue is that you are always given enough information as a first time player to be able to make intelligent decisions from a turn to turn basis. The Discoveries screen is a great example of this: you are told ahead of time what all the items could possibly be, which you can use as a source of making educated guesses about what specific item you're carrying. UnBrogue breaks this contract: there are staffs, wands and potions which are deliberately withheld from this screen, as well as whole classes of items (tomes, elixirs) which don't appear on it. But none of the items which are hidden from this screen can be both a) randomly found in the game and b) harmful to you (allies are fair game) except where c) staffs/wands of summoning which as a class are listed on the Discoveries screen, but which list of monsters can be summoned by these items is hidden information. Brogue went on to weaken this contract in the 1.7.x release with charms which are not listed on the Discoveries screen, but are always identified; of course, weapons and armor, and runics were never listed previously and could only be enumerated through repeat play.
5. The crafting system
I'm incredibly happy with the crafting implementation in UnBrogue which I have designed in such a way that it is possible to play 95% of games without even knowing it exists. Crafting ingredients are always useful items in themselves, because the ingredients are (almost) always other items: potions, scrolls and so on; and the method of combining them is as logical as I could make it. There are three methods of crafting in UnBrogue: a) fixed crafting locations which allow you to combine two existing items to make a new one, b) certain talismans which are only rarely available and c) potions of Winds. The crafting system also forced me to add lots of items: the vast majority of which are incredibly interesting in their own right because of the way Brogue's systems have been designed, while allowing these items to exist behind the wall of item placement - because they are not randomly placed, I could add as many as I want freely, while leaking them into the game in a process I hope feels like peeling back the torn edge of the wall paper to find a hidden treasury. I've changed this approach slightly in 1.1.4 and later, so that the majority of these items can be randomly generated, while reserving some as craft-only special creations. The only instances where the crafting locations require a non-functional ingredient allow me to use this non-functional ingredient as the bait in one of Brogue's machine rooms or one of the many rooms I added to support these.
6. Armor redesign and armor prefixes
While making stealth degrade as your armour improved made plate armour less of a no brainer, armour in UnBrogue was pretty flavourless and uninteresting, runics aside. This changed significantly in 1.1.4 in two ways: I redesigned the existing armour types to make them more distinct, including adding three leather armour variants, and dropping one intermediate armour type; and I added armour prefixes which gave various armour types new abilities which in many cases were just buffs or tweaks, or the equivalent of low strength runics but with drawbacks. I didn't want to overburden the armour identification mini-game, which is already the weakest of any identification routine, so I made armour prefixes obvious - this also meant I could add more flavour to them without affecting suspension of disbelief; and one of the leather armour variants, robes, is effectively automatically identified as being runic to make things even easier. Armour prefixes have been pretty much great from their initial introduction, bar one which is undergoing redesign, but the work I put into the leather armour variants was at risk of going to waste because so few games result in winners in leather. So I compensated by balancing them up by allowing scrolls of protect armour to buff them to the equivalent power level (give or take) of banded mail. This may have made every suit of armour too useful: but it is a risk I'm willing to take to make them more interesting.
7. Adding lots of the right stuff
1.1.4 seems to have hit the sweet spot for item generation so that there is sufficient variety for every single play through I've experienced: 1.1.6 is getting to a similar place for placement of machine rooms in the dungeon so there's enough variation from game to game (prior to this version, there's not enough different rooms early on). I'll just quickly enumerate how much stuff UnBrogue adds to the game: as of 1.1.6, I've added 12 autogenerators (flavoured blobs of terrain which gets added to the dungeon), 12 reward rooms and another 23 machine rooms (rooms which have puzzle type challenges in them) - I'm guessing all up roughly doubling the original figures, give or take, and this doesn't include modifications to 3 or 4 existing rooms - 12 monsters (of which only 2 appear as 'regular' monsters in the main game), 5 melee weapons, 9 missile weapons, 3 armours, 19 armour prefixes (new 'runic' type), 3 shields (new item category), 2 scrolls, 14 tomes (new item category), 5 potions, 21 elixirs (new item category), 7 wands or staffs of which staffs of summoning can summon 13 different monster types, 12 wand or staff runics (new runic type), 2 rings, 22 charms and 16 talismans. Having said that, other than talismans, autogenerators and reward and machine rooms, there's very little of which is truly original: I would say across all these items only marking, grappling and extinguishing darts, potions of Winds, staffs/wands of Nature, Telekinesis and Detonation and wand/staff runics bring new systems into play, and Nature and Detonation both riff on ideas which Pender originally introduced to Brogue (bloodwort plants and explosive mutations).
Next to UnAngband (where I added over 1000 monsters to vanilla Angband), these numbers pale into insignificance - but here they have far more impact. Even the humble potion of Water is incredibly useful - you can steal items from monsters, use it to make your escape or cover your scent, make a temporary bridge over lava, create a steam bath to kill something in; and more importantly, due to the finite constraint on resources that Brogue's core design entails, these actions can be life saving and even game winning. At the same time, items I added as an afterthought can become core to a play strategy: I recently almost ascended relying on a staff of Dead Man's Ear which creates a immobile and inactive monster which simply acts as a damage sponge, which more than doubled the combat capability of my single troll ally since it acted preferentially as a target while he engaged in melee (wiser players than I would have taken a direct path to the amulet of Yendor using my wand of Tunnelling instead of naively walking the long way around).
These successes are testament to the core Brogue design, but also the strengths of the roguelike genre: provided you play to those strengths as Joshua Day has written about previously. And it turns out that my central thesis: more variety is better appears to hold for the most part, even if the variety is 10 or more sets of 3 similar items with the same effect but with non-uniform activations. As it turns out, the most problematic parts of the game occur when I try to strike out further with new abilities, instead of tweak and iterate on existing systems.
And in the follow up article, I'll write about what went wrong and discuss in more detail some of the stuff I've implemented and hopefully come to some more robust conclusions.
Tuesday, 4 June 2013
This isn't going to feel like much of an announcement unless you have OS/X, as there are serious problems affecting the Windows and Linux build of UnBrogue at the moment that are preventing it from being updated to the latest version. However, I've released 1.1.4 and 1.1.5 in relatively quick succession and you can download the OS/X build here. For full details on what's happening see this thread on the Brogue forums - the tldr is that I'm going to be porting UnBrogue to a newer off-trunk version of Brogue to hopefully fix the above issues, but this will be some time away.
Changes for 1.1.5
- Staffs of nature charge half as quickly.
- Rewrote spoiler free changes from Brogue.
- Vault keys are rarer but vault items are always better than those found randomly.
- Add two more machine rooms.
- Fix bug where partial armor did not have a strength requirement reduction.
- Fix description of royal purple armor.
- Fix bug where regular staff and wand workshops would require a challenge to access.
- Fix charms of duplication.
- Fix (and enable) 'too boring' Brogue summoning circle room by adding paralytic gas. Paralytic gas makes everything more interesting.
Changes for 1.1.4
- Increase variety of items which can be found in the game (as opposed to made).
- Add wands, staffs of telekinesis.
- Add potions, elixirs, charms of regeneration.
- Add armor and shields of repulsion.
- Upgraded charms of winds to be charms of respiration.
- Add scimitars and cleavers which have Brogue's stats for maces and war hammers, but 1 additional strength requirement and which continue to attack enemies either clockwise or counter clockwise, randomly chosen, from your target. These may be overpowered.
- Add sickles and war scythes which are quick and can also attack up to two enemies adjacent to both you and your target.
- Knight's shields allow you to choose the target of any reflected bolts. Tower shields also block slowing and negation bolts -- these do not damage the shield.
- Remove banded mail.
- Increased chain mail's protection and strength requirement (so that it now acts like Brogue's banded mail).
- Increased scale mail's protection while making it noisier (so that it now provides protection equivalent to Brogue's chain mail but with a lower strength requirement).
- Decreased plate mail strength requirement.
- Add robes which are always runic and allowed with all talismans, cloaks which have the best stealth of any armor (including no armor), and furs which have the lowest strength requirement.
- Fabrics and leather are reinforced by scrolls of protect armor so that cloaks, furs, robes, leather armor and scale mail gain +1 to +3 protection when first protected by these scrolls.
- Added various armor prefixes to further increase armor variety -- these prefixes are immediately visible.
- Darts and javelins gain +1 to +3 enchantment when first affected by a scroll of protect weapon.
- Thrown weapons are now degraded by acid. You are not warned before throwing at the moment. Stacks of thrown weapons will restack if you end up matching the enchantment level through acid damage. (Requested by thaumato)
- Combining items can help identify either the ingredients or the resulting item depending on the identification status of the product and output.
- Add two new talismans.
- Lamias are restricted to liquids but appear in groups.
- Precise runic does not apply to bolts which only affect one monster (Requested by tinyrodent).
- Tomes of summoning do not summon bloats (Reported by tinyrodent).
- Guaranteed good charm rooms don't contain throwable charms.
- Change spelling of sabre to American English saber to be consistent with other American English spelling.
- No longer take half damage on level 1 (From 1.7.2).
- Fix dart stacking bug (From 1.7.2).
- Fix bug where level divided by water would end up with an area filled with corridors.
- Fix bug where water trap could be generated too far away from a fountain.
- Fix bug where explosive blinking staffs would cause mysterious corpse explosions (Reported by tinyrodent).
- Fix description when enchanting a cursed item.
- Fix for tomes of slaying/immunity when applied to an already enchanted item.
- Fix bug where you could naturally regenerate while in debt.
- Fix bug where acid damaged shields could block infinite blows. (Reported by Jadeite)
- Fix bug where extinguishing gas would not put out burning flying monsters.
- Fix automatic identification of talismans, elixirs, tomes.
- Fix crash caused by trying to land an impaled blinking monster twice (Reported by tinyrodent).
- Fix tomes of teleportation.
- Fix instances where enchantment is inadvertently revealed when the rune is noticed on runic armor.
- Fix backstabbing with a heavy weapon could cause zero or negative damage, and calculate fractional backstab multipliers correctly.
- Fix damage multipliers from rapier, saber lunging, spear, pike impaling so they don't get sneak attack bonus, dual wield penalty if these don't apply.
Friday, 26 April 2013
Raph Koster recently sparked off a discussion about the role of formalism in game design and criticism by responding to critic and games writer Leigh Alexander in a letter. I recommend you read his response to Leigh's questions:
"when people say games need objectives in order to be ‘games’, i wonder why ‘better understanding another human’ isn’t a valid ‘objective’
games need ‘challenges’ and ‘rules’, isn’t ‘empathy’ a challenge, aren’t preconceptions of normativity a ‘rule’" - Leigh Alexander writing on Twitter
Raph poses a number of questions himself in reply, but frames the overall mode of a game as being a conversation between designer and player; and argues that the types of art games which Leigh is defending the conversation is a monologue because the designer of these games takes away player choice. He draws such a strong response from the community he criticises because he's defending the conventional position against a more radical interpretation, but he also picks the wrong point to make and the wrong analogy to make it with. Andrew Vanden Bossche has already written about the fallacy of choice in games: in short, games are interesting because they do not give the player unlimited choice, but a selection of choices from a restricted palette. Raph's analogy of games as conversation fails for the most part because it is so rare to see a game redesigned after the wide release - although this may hold somewhat true for games with long public development cycles (Minecraft) or in limited alpha and beta releases.
I've been meaning to write about one of the more remarkable achievements in game playing I've seen for some time but haven't had the opportunity until now to do so. ggoDeye, a regular participant (and 8 time winner) in the Brogue weekend contest, and organiser until recently of the mid-week contests, recently achieved what could be described as the pinnacle of achievement of Brogue 1.7.2: a 'mastery' victory in a competition. A mastery victory is where you leave the dungeon at level 40 with all 25 lumenstones it is possible to get in the game. Short of conducts, there is no other way of beating the game more conclusively in the current version (in earlier versions it was theoretically possible to get to level 100 although no one had).
In the tradition of Brogue a maximum lumenstone victory usually means that the game has been broken in some important way, and a game balance fix will almost always be forthcoming in a future version of the game. Indeed, ggoDeye writes in the victory post of the jelly master build he used requiring almost superhuman levels of concentration to get this victory:
By D19 I had 30+ jellies and the ability to isolate and destroy dar parties. [...] I was so exhausted and frustrated that I took all of Sunday off from playing so that I wouldn’t do something stupid and blow my first real shot at a max lumenstone run in a contest. [...] Throughout this run I gained valuable insights into what I think of as jelly “herd physics.”A quick couple of notes on the above commentary. A jelly is a monster in Brogue which doesn't inflict much damage but splits when you hit it into two jellies each with half the hit points. These new jellies do not regenerate naturally, but can recover with a source of healing such as the gas released by a pod from a bloodwort plant, or if they learn the healing spell from a dar (dark elf) priestess by consuming the corpse after gaining sufficient experience to do so. The wand of domination allows you to take control of a jelly and its children, and a jelly master build is a character who relies on having a swarm of jellies (up to 100 on a level) fighting on their behalf, and staffs of tunnelling and charms of shattering allow you to open up the dungeon by destroying walls so your allies can surround enemy monsters.
- Low HP allies can essentially teleport to the other side of the herd by shifting the herd’s inertia through shifting its center of mass (you). I once noticed a dar priestess move 20+ squares in a single turn as the direction of the herd reversed and higher HP jellies continued to displace her. I used this phenomenon to keep crucial allies alive when they were low on HP.
-High HP, fast moving allies can stick to the center of mass (@) better than anything else.
[...] While I have always enjoyed jelly master builds, I had not come anywhere close to fully grasping their true power and utility before last week. 1.7 has introduced bloodworts and superior ally AI and has really opened the doors on making this a reliable and predictable build option for securing max lumenstones. I’m fairly confident that I can turn just about any seed with a wand of domination and either a staff of tunneling or a charm of shattering (all before D17?) into a max lumen run now. However, I am certain that I will never be willing to do it again with a staff of tunneling. This run took me over 16 hours to pull off and I would not recommend it to anyone who wants to continue enjoying this game for the foreseeable future. This ended up being the most mind-numbing and eye-straining gaming experience of my entire life.
ggoDeye specifically uses the term herd physics because in Brogue there is no mechanism with which you can directly control your allies: they move simply based on the direction you move in in combination with the game AI, and knowledge of the surrounding terrain and enemy positions. Several items give you more granular control by allowing you for instance to build walls to block movement, or entrance a monster to have it move in the direction opposite to yourself, but none of these have the scalability necessary to benefit a jelly master. So in effect you are controlling tens of monsters at a time with a single 8 way movement each turn.
(Intriguingly, the 'teleportation' mechanic ggoDeye describes is known as enexto() in Nethack after the function that displaces monsters into adjacent grids as they push past each other, and is used in tool assisted speedruns of that game.)
The process ggoDeye goes through in this game is nothing like a conversation: it is more like mountain climbing, or an ultra marathon. We can appreciate ggoDeye's performance because it is on one level a pinnacle of achievement which is unlikely to be duplicated in the same way we can appreciate athletic success. But trying to find a sport analogy to fit games to is ultimately circular because sports are often games, and games can be enjoyed like sports - which means any comparison we make between the two will be clouded.
There is another performance comparison that is more appropriate than a sporting one - that of playing a piece of music. People have compared music and games before: both have groups of 'indies' and in some ways this comparison is more appropriate than games as films, but I'm suggesting here that game players rather than game designers are the actual performers in this analogy.
If we extend this idea of player as performer, what role does the game designer have? Song writer is the most obvious - but I'm going to suggest that Raph's formalist argument is about game designer as the maker of a ludic instrument; and while art (and many AAA) games take the position that a game designer is a song writer, they are in fact constructing instruments that only support one song.
(Or more facetiously, I tweeted this as "A game designer is an instrument maker who thinks they're a song writer and everyone else mistakes for a musician.")
The counter argument of course, is that the instrument may only play one song, but it is a song worth learning to sing.
And while this is mostly a metaphor, you can watch Chris Novello literally play Mario in a way that you have never seen before.
As for ggoDeye, he's chosen to play an instrument that many agree is a finely tuned work of art, and he's bent it it ways its creator only mostly intended. But as hinted in the title of this post, this piece was also a swansong, and he's moved on from playing Brogue to starting a business with his wife, leaving behind a recording of his melody and the notes he's made while playing. I wish him all the best.
Posted by Andrew Doull at 10:26 pm
Tuesday, 26 March 2013
Assuming you count 7DRLs as roguelikes, I've just beaten my second roguelike ever: Michael Brough's 86856527. I suspect this is the game that Keith Burgun is trying to make with Auro - you should go play it (and ideally beat it) before reading any further as what I'm about to say involves spoilers. For the record, I got 21 points, using three programs.
I'm going to commit the cardinal sin of back seat redesigning a 7DRL - or at least part of it. The programs in the game are generally 'top tier' in the sense they are equally useful for their cost, although there are some programs which are clearly great in combination. I'm going to focus on the few programs which are 'second tier' in the sense they are missing one of either overall utility or interesting synergy: the four I feel fall into this category are ANTI_V, KILL_D, DCRPT and to a lesser extent BOMB - I'm still undecided about POLY although the suggestions below indirectly buff it.
The first three second tier abilities are all enemy specific, and are still useful in the sense that every enemy is a distinct challenge, but they don't have much synergy with anything else, and are still not powerful enough to be necessarily a win-button against their specific nemesis. The challenge of course is figuring out how to improve them while keeping close to the terse descriptions in the current game. My suggestions are ANTI_V should change to 'Damage all virus for $', KILL_D should change to 'Destroy nearest Daemon[s] for [two energy symbol squiggles]' and DCRPT should remain unchanged but end up with a buffed implementation.
Rather that using ANTI_V and KILL_D to directly credit the player, the floor grid under these affected enemies should get an additional credit or energy when the ability is used provided it hasn't already been siphoned. This allows the player to take advantage of the level entry spawns to increase the overall floor grid values, and gives POLY a purpose beyond helping destroy enemies.
DCRPT should be buffed so that while you have it active, you are given additional information about the play area. My initial thoughts were along the lines of having one block with ???? for the program/score and ? for the alert level on each level which DCRPT would reveal, until I realised that there is one other fact which is hidden which would be useful to know: the identify of spawning enemies. DCRPT should reveal what each enemy spawning is instead of the Transmission icon, giving you an extra turn to plan how to handle incoming enemy(s).
BOMB is incredibly useful given that it doesn't take time to use: but it has the downside of destroying adjacent walls which would otherwise channel enemies towards you. I'd like to see the floor exposed by bombing walls to get either energy or credits like other floor sections, to compensate for this and add a further level of strategy to bombs.
As for further program ideas - I'm sure there are plenty, but I like the sparsity of the current design. I am going to suggest one, borrowing an ability in Auro, because it seems to me that the movement abilities .WARP and .PUSH are the most useful and interesting part of the game, and to those, I'd like to add .FORK.
.FORK costs two (or three?) credits, and allows you to 'Make one move freely'. Since using a program takes no time, .FORK allows you to move without your enemies responding - but also make illegal moves such as moving towards an enemy (when you'd normally attack), move onto an enemy or wall, and move off the edge of the play area, warping from north to south or east to west edge or vice versa. Fork allows you to .DEBUG suicide in the finest Nethack tradition and it costs credits to fulfil the old adage that time is money and to try to prevent .EXCH/.SIPH+ abuse.
Posted by Andrew Doull at 10:39 pm
Wednesday, 20 March 2013
As the author of a widely lauded alternate history short story featuring John Riccitiello as the protagonist, I feel like I should comment on recent events. But it turns out Stephen Totilo has done the hard work for me, writing a thoughtful piece about the man, if not the company he lead.
John to me sounds like several company owners I have had the pleasure of working with - people with integrity, but also intelligence who have inspired those around them. A CEO is responsible for two things: communicating the vision of the company, and holding ultimate responsibility for its execution. You may criticise the decisions he has made, but it sounds like he has made those decisions with consistency and in view of the long term plan for EA.
It is often the case that people forget it is what someone hasn't done which is just as important as what they have done. EA has not gone bankrupt, or become worthless, the CEO has not left under a cloud or in ambiguous circumstances, the company has not become completely risk averse. People may hate EA, and by extension its CEO, because of the SimCity launch fiasco, but it is exciting to see so many people care about a game in the obscure city builder genre, as opposed to just another FPS.
For the record, I completely disagree with always on DRM and to a large extent with the software as a service model (Fuck you Google), but I can see why EA has made those choices - if not why they have failed to communicate them clearly.
Posted by Andrew Doull at 8:15 pm