(Translated by https://www.hiragana.jp/)
Ascii Dreams: dwarf fortress
Showing posts with label dwarf fortress. Show all posts
Showing posts with label dwarf fortress. Show all posts

Saturday 30 July 2011

Dwarf Fortress in NY Times Magazine

I don't want to steal any thunder from Darren Grey's Roguelike Roundup for July, but there's been quite a bit of roguelike related news this month worth celebrating:

I've had extremely limited Internet access (just enough for blogging and SVN commits) until the last few days, so I'm still 11 days behind on my usual RSS feeds. I'll update this post if I see anything else in the mean time.

(Ironically, the lack of access has helped me spend more time developing Unangband).

Friday 6 November 2009

Self-hosting Dwarf Fortress

Far more interesting than the recent release of another Dwarf Fortress visualizer, is this wiki page discussing computation using Dwarf Fortress. I look forward to a Gnu-DF module, followed shortly by a self-hosting Dwarf Fortress release.

Sunday 4 January 2009

Runner up for Ascii Dreams Roguelike of the Year: Dwarf Fortress

The surprise runner up this year is Dwarf Fortress, winner of the 2007 Ascii Dreams Roguelike of the Year award. Surprising in several senses: Dwarf Fortress is hugely popular, but was consistently in second place over the two weeks of voting, and because Dwarf Fortress is always a contentious nomination in the first place.

Adventurer mode in Dwarf Fortress is definitely a roguelike, but adventurer mode is a small part of the game overall; fortress mode being far more popular. Fortress mode is more akin to a real time strategy game, and this genre based definition of gaming is what people argue disqualifies DF as a roguelike.

I would defend Dwarf Fortress as being a roguelike on 3 counts: firstly, a roguelike is a definition based on agreed conventions, and no one has disputed DF nomination in the first place, or it's presence on Rogue Basin, secondly, Dwarf Fortress is a huge asset to the visibility of roguelikes in general, and an inclusive approach will benefit the community overall, and thirdly, ASCII graphics are cool and should be celebrated in all their glory. (Pictured, as a counter argument, is the 3d Dwarf Fortress visualizer).

I would hope people are generous enough to extend the arms of the roguelike community around all games that embrace a lo fi visual aesthetic, free availability and deep game play. Letrain, the ASCII train simulator, and Privateer: Ascii Sector are both games that do not fit the mold of roguelike in the narrowest sense, but the programming problems of representing a complex world using a grid based visual symbol set, and the process of evolving a community during the development process for a game with a certain visual signature, are exactly the same.

Arguments aside, Dwarf Fortress fans have benefited from a much more regular release cycle in 2008, going from version DF 0.27.173.38a to DF 0.28.181.40c over the year, along with the inclusion of a Macintosh version from February (and soon to be Linux version). The development process has become more inclusive, with third party developers recently contributing significant improvements to the OpenGL performance of the game. And a sister release of Elf Tree Top City shows that the fantasy race simulator genre has significant depth (and hairstyling).

To learn more about Dwarf Fortress, you can read the wikipedia entry, visit the Dwarf Fortress wiki, and join the forums. You can download Dwarf Fortress here.

Sunday 6 July 2008

Dwarf Fortress Conversations

I've argued previously that one way of procedurally generating stories is to 'go deep', that is spend time creating a detailed enough a world that the stories prove interesting. The downside with going deep is that it requires a large time investment. With Dwarf Fortress, it looks like that this is starting to pay off. From a recent development log entry [Edit: you can read more here]:

I was testing some adventure mode conversation responses in a human town. The high priest of the god of revenge came down the stairs, and he was an elf with a human name. I talked to him and learned that both of his parents had goblin names, and his grandparents had elven names. So I guessed that his grandparents had been abducted and that the humans had then liberated the tower, placing the goblin-named parents under human control before they had their child. This was more or less correct, but a bit more happened. So, way back when, the demon was causing all sorts of trouble, fighting both the humans and the elves and destroying their cities. This went on for 40 years -- an elf managed to tear off the demon's nose about halfway through this rampage, but he couldn't finish the job because he had lost a limb in the fight before the nose-removal and lost the rest of his limbs afterward, prior to being burned to death. Eventually the demon was shot in the year 45 and the humans took over the goblin tower. Many of the goblins fled into the mountains, and others were enslaved, including some of their abductees. Ngoso and Bax were a couple of elven children born to abducted parents that were left alone to live in the goblin tower under their new human rulers. When they grew up, they both started shops -- The Enjoyable Paddle and the Lessened Healer -- in the year 45, and in the year 54 they both moved to the human town of Beersreined. The next year they were married and they both decided to wander the wilds looking for monsters to kill (they never found any, as the giants were off on the other side of the world and the dragon was dead). Ngoso had ten children in Beersreined, the third of which became the high priest of the god of revenge after both he and his father were converted by the new temple in 146. Ngoso never converted as she had become a dragon worshipper during one of the attacks prior to its death. As a sidenote, the elves and the humans didn't get along very well, and in the year 60 the elves actually drove the humans out of the goblin tower they had conquered. The elves had no desire to live in a goblin tower so they left it abandoned. At this point, the goblin refugees that had been wandering through the mountains for fifteen years reclaimed the tower. They held it for a total of two years before being defeated by the humans again, who were then able to maintain control of the site until play began. I didn't check if any of the goblins managed to escape again.
[Image from In Our Hearts We Were Giants: The Remarkable Story of the Lilliput Troupe, which is currently out of print but reviewed here.]

Thursday 28 February 2008

The making of Dwarf Fortress: The Interview

I mentioned previously that John Harris of @ Play had interviewed the creators of Dwarf Fortress and was taking his time writing things up. The interview is now up on Gamasutra and covers the making of Dwarf Fortress in 10 pages of dwarfy goodness. It's a great chance to understand some of the thinking behind the game - and a good companion piece to Tarn Adams' interview on Geek Nights.

And other roguelike developers? Yes, you are doomed.

Thursday 17 January 2008

TIGSource: The Independent Gaming Source

A fair few gaming sites and blogs now exist for discussing Independent Gaming. I'm sure to do a review of them at some point as how well they relate to Amateur Gaming. Probably the most relevant of the sites that I subscribe to for the rougelike community point of view is TIGSource. At the moment they're featuring a link to an interview by Geek Nights, of Tarn Adams. For those of you who don't know, Tarn is one half of the Dwarf Fortress development team.

This is highly recommended listening.

Wednesday 16 January 2008

Dwarf Fortress isometric graphics

Dwarf Fortress finally has isometric graphics!

In a great mock-up.

Thanks SpriteAttack.

(Thanks also to RockPaperShotgun for the link).

Monday 14 January 2008

The Death of the Level Designer: Procedural Content Generation in Games - Part One

(This article is in six parts: parts one, two , three, four, five and six, along with a follow up article series Proceduralism; and is also available as a PDF)

Procedural content generation is yet to set the game industry on fire. It has featured in one of the greatest games of all time, Diablo and it's successor, who directly trace their roots to roguelike games such as Angband. But the recent implementation of random level generation in Hellgate: London did little to inspire people that this method works well for game level design. But bubbling under the surface of the industry, and very much evident in future games like Spore is a methodology that like most technologies has been underwhelming in the short term but in the long term will have profound consequences for how games are designed.

An announcement late last year should have set the hearts of anyone working in the games industry a tremor. No, it wasn't Activision merging with Vivendi. Gearbox Software previewing use of procedural content generation in Borderlands was met with moderate skepticism, but was generally well received. It enabled me to remind at least one other person of the greatness of the line 'Guns. We need lots of fucking guns.', predating Neo's similar but censored sentence by seven years (The movie in question was Split Second). But more importantly, it points the way forward to a time where the current role of the level designer will be as obsolete as punch cards for programming computer games.

This article will survey the current scope of procedural content generation in order to highlight where PCG is making inroads into the traditional level designer roles, and how various enabling technologies are making procedural content easier to build and deploy within other game technologies. The survey will point in a number of directions, not necessarily positive, that I anticipate procedural content generation taking game play, and conclude with some suggestions what the next five years will bring, and a few options for anyone interested in taking the ideas herein further.

Procedural content generation (PCG) is the programmatic generation of game content using a random or pseudo-random process that results in an unpredictable range of possible game play spaces. I prefer the term procedural content generation to procedural generation: the wikipedia definition of procedural generation includes using dynamic as opposed to precomputed light maps, and procedurally generated textures, which while procedural in scope, do not affect game play in a meaningful way. The concept of randomness is also key: PCG should ensure that from a few parameters, a large number of possible types of content can be generated.

Procedural content generation can exist in games in a number of ways.

1. Runtime random level generation

This is the 'prototypical' example of procedural content generation, which is what most of you would have thought of when you starting reading this article. The classic example is of Rogue's random placement of rooms linked by corridors, which makes the game infinitely replayable and softens the penalty of permadeath. I would suggest that dynamic random level generation in two dimensions is still an interesting area of research: I've written extensively about it elsewhere, but there are still algorithms to be discovered and techniques to be used. The problem is however mostly solved in the sense that there is a robust variety of interesting algorithms from maze generators to room placers to choose from and considerable literature covering the implementation methods.

In contrast, procedural content generation in 3 dimensions is still a relatively undeveloped field. Hellgate: London is an example of how not to do three-dimensional design - the cost of generating sufficiently interesting 3d objects and textures ensures that there is a great deal of repetition in the resulting random levels. It is possible to extend many of the two dimensional concepts into the 3rd dimension: maze generation is mostly extend able depending on which algorithm you choose, and the recent releases of Dwarf Fortress shows that it is possible to extend the classic roguelike design into three dimensions.

Procedural generation of height fields in 3d is the only other area that has had considerable effort devoted to it. Probably the best in-game example is Tribal Trouble which uses a simulation of erosion in order to create a play field resulting an infinite number of multi player maps. There are a large number of fractal-based world generators which use similar techniques to create vast and elaborate world spaces, which to a greater or lesser degree use simulation of geological and meteorological processes to design the map height-fields and populate them with content.

What is missing is any serious attempt to create fully three dimensional world spaces, including bridges, archways, towers and other highly interconnected topologies. This is in a big part due to one of the key constraints of dynamic level generation which is to ensure complete connectivity between all parts of the map. Even in a two dimensional map, this can be a complex problem. In 3d, any game which simulates gravity must ensure that units that fall into lower parts have a way of accessing back to the higher parts unless deliberate disconnections form a part of the game play. In addition, constraints on slope steepness, minimum unit size and so on can complicate level connectedness considerably.

Tribal Trouble side steps these issues somewhat by generating enough maps and checking their connectedness, and then using a statistical proof to show that a sufficiently large percentage of maps will be playable. Other random level generators may use a verification method, which discards and restarts any maps that may prove unsuitable for play. Sufficient tests have to be made for degenerate cases, and fall backs to avoid infinite loops or sufficiently long delays in level generation, which even with a two dimensional maps can be a considerable complication, often due to the computational cost of random number generation. Dwarf Fortress maps, even prior to the introduction of a 3rd dimension, could take 15 minutes or more to run on a modern processor.

2. Design of level content

If the problems of random map generation may seem insoluble, then this does not stop them from being used. What frequently happens is that level content, particularly height fields, is generated in the level design tool, as opposed to the final game engine. The level designer is then responsible for verifying the correctness of the level or modifying it to ensure it is correct. Procedural content generation then becomes a mechanism for minimising the cost of content creation.

Darwinia by Introversion Software is a great example of using procedurally generated levels supplemented with hand editing to leverage a small developer base. The Darwinia levels were original built using a procedural 3d height field generator as it would have been unfeasible to places all the map vertexes manually. Introversion is using the same technique for their next in-development game Subversion: Chris Delay releases frequent development updates on the in house blog that are well worth reading. The Subversion city generator looks robust enough to be used as a dynamic random level generator at this stage but without knowing the final game play it is impossible to be sure.

The MegaTexture technology that John Carmack developed initially for Enemy Territory: Quake Wars lends itself well to importing a procedurally generated bitmap for a map level. The technology itself uses Wikipedean 'procedural generation' to convert this bitmap into a three dimensional playing space, but the original bit map could be created using standard PCG height field algorithms and 2 dimensional PCG techniques.

At a lower level, there are already well accepted techniques for infilling level detail using 'procedural generation' and procedural content generation techniques. Chief amongst these is SpeedTree, a middle ware product that enables level designers not to have to worry about the placement of every in-game tree and shrub. SpeedTree is used in Oblivion to great effect from what was originally a piece of software developed to enhance computer game golf courses.

Similar techniques can be used to automate the placement of textures and decals so level designers don't have to worry about texture alignment and can instead focus on higher level design elements. This is in addition to procedural textures, which are again an example of 'procedural generation' that may incorporate random noise to lessen visible artefacts.

3. Dynamic world generation

This is one of the earliest procedural content generation techniques, where the in-game map exceeds the ability of the computer to store it either in memory or on-disk (depending on performance requirements). While storage has grown massively since the days of Elite, it is still not unlimited and the same techniques can be put to great use, for instance, displaying all the objects in an typical size asteroid belt or planetary ring.

The technique is to use a seed number (42 is a popular choice) which remains constant, and then grow the playing field iteratively using this seed number permutated by pseudo-random number techniques. Usually growth is from a top-down subdivision, which lends itself well to fractal generation techniques, as well as matching typical level of detail (LOD) implementations. The map is never held in memory except as a temporary structure to display, and is discarded as soon as components of it are no longer required: nothing procedurally generated is ever written back out to disk.

The best example of this in development is Infinity: The Quest for Earth. I can only urge you to watch this video (wait for the second half if you are impatient) and then read the developer's blog, in order to see the power of this technique.

It does have significant drawbacks. In particular, certain structures, typically long thing ones like roads and rivers are very hard or completely impossible to implement this way because of the subdivision technique (roads are merely hard, rivers impossible because of the dependency of having to know the height of an adjacent subdivision in order to compute the river path). And currently the process is very CPU intensive, with increasing levels of detail usually depending on a high O-notation algorithm of some kind.

Changing the algorithm will also change all of the map, as the map structures themselves are highly dependent on the algorithm and therefore the software cannot be upgraded easily without resetting the game. The procedural content generated must be verified as consistent as a part of the run-time implementation: which limits what checks can be made to ensure that the content makes sense and therefore requires robust generation procedures. Finally, any change to the map must be stored as a delta. Reloading map deltas will ultimately overwhelm the strengths of the technique, so the majority of implementations will prevent, minimise or ignore any player or designer made changes to the map structure.

What instead happens is that the map lends itself well to exploration: essentially you are moving through a set of possibility spaces. The game designer is as much in the thrall of the procedural content generation algorithm as the players. He can manipulate the algorithm to try to generate different types of spaces - but the whole world depends on the algorithm, and therefore he may equally destroy something else that has been created. In fact one DOS-based game has made this exploration a central element of the game: features discovered and named by the players become a part of each further release.

I hope you've enjoyed reading this far. More to come in part two.

Further Reading:

The articles and links sections on the Procedural Content Generation wiki.

Monday 31 December 2007

Winner of the Ascii Dreams Roguelike of the Year: Dwarf Fortress

Firstly, a big thanks to everyone who voted. I have to say, this is an intriguing choice.

Dwarf Fortress has had a great year - or at least an interesting one. From January to the end of October, DF fans had to go without any new releases, except an ever growing change log to sate their rapid appetites for complex game play. In March, the epic re visitation of Boatmurdered, Dwarf Fortress's most well known and beloved fortress concluded with a whimper, rather than a bang - but leaving horrific legends of elephanticide in its wake. And the October 29 release of version 0.27.169.33a forced long time fans to deal with the dreaded z-axis - a monster only rarely unleashed on roguelike players, except through the abstraction of a nice set of stairs.

But at the same time, Dwarf Fortress has become the critical darling of the 'mainstream' games media, and set a new bar for what indie and amateur game developers can deliver. And midway through December, the release of a 3rd party graphic visualisation software suggests even those averse to ASCII graphics may have a graphical option to play with at some future date.

To learn more about Dwarf Fortress, you can read the wikipedia entry, visit the Dwarf Fortress wiki, and join the forums. You can download Dwarf Fortress here.

Thursday 27 December 2007

Now in 3d

Dwarf Fortress now has a 3rd party 3D visualizer... [via Tea Leaves]

Wednesday 26 December 2007

For all of you voting for Dwarf Fortress

Are you actually playing the game in 'Adventurer' mode? Or are you trying to stretch the definition of roguelike to encompass a turn-based strategy game that uses pseudo-ASCII graphics?

I'm genuinely interested to hear people's experiences with Adventurer mode. As far as I am aware, it's a great way to interact with abandoned fortresses, but at this stage is not necessarily a fully fleshed game.

Sunday 2 December 2007

Unangband is from Earth B

One of the joys of Dwarf Fortress is reading reviews of it by people who have been caught up in the madness of it all. And this review is the best that I have read so far.

Thursday 1 November 2007

Dwarf in my own dungeon

Rock Paper Shotgun on the release of the new version of Dwarf Fortress. Watch me shamelessly whore for publicity in the comments section.

Wednesday 29 August 2007

I'd rather have a S.T.A.L.K.E.R. than a Bioshock

I like to keep track of other games development blogs. Two in particular stand out, Introversion's blog (the developers of Darwinia, Uplink and Defcon) and another game in progress, Infinity Quest, which is developed at the moment without funding.

What they both have in common with roguelikes is a love of procedural generation of content, which I'm sure to write more on. Procedural content generation in game, in particular, storing the whole world map in a seed is what powered Elite and a lot of other games in the 8-bit era. These games feel a little more expansive then much of what is produced these days - its riskier to not be able to reliable control and censor the whole game space, as I've mentioned previously, and I think its something modern game publishers have shyed away from (With the exceptions of Will Wright and arguably Deep Shadows, who developed Boiling Point). Even Bethesda have turned away from the incredible world-spaces of Daggerfall to the more limited and limiting Morrowind and Oblivion and now Fallout.

As amateur and independent games developers, I think we have a responsibility to explore these sorts of spaces left behind by the modern game publishing world. Dwarf Fortress is the best example of a new breed of games by independent developers, and luckily one that parts of the games journalism and games criticism communities are starting to recognise. These games have communities built around them while they are still in alpha, they have developers who directly interact with the community instead of hiding behind a publisher and, unfortunately, they tend to have lots of bugs.

Infinity Quest has just released a new video showing the power of this. Go watch it here. Stick with the somewhat boring first half - there's a nice surprise in the second half, especially if you haven't been following the development so far. I think you'll be inspired by it.