On Randomly Generated Content In Games
Thanks to Skotos.net for their article discussing randomly-generated content in videogames, in which the author discusses pioneering games with random elements, suggesting: "One of the reasons [classic RPG] Rogue was so popular (and spawned so many children) is due to its generation of random content." But he goes on to point out: "Computers don't have the imagination to make good puzzles... asking a computer to create an interesting puzzle is very similar to asking it to tell a story, make up a joke, or create a riddle." The suggested answer is game elements "placed randomly within the [linear] structure", but with recent random level-generating games such as Toe Jam & Earl III striking out, how far should randomness be taken in games?
Gee, and it's not like they didn't ACTUALLY MENTION these in the article or anything... Dare I Quote: In fact, it would be pretty easy to argue that modern games such as Diablo2 were extended variants of the Rogue family.
There's an old saying that goes, Art hung in restaurants is usually as bad as food served at museums.
Paraphrasing, asking a computer to do level design is as bad as asking a level designer to do math.
This is one of those features that the marketing department loves ("Infinite Gameplay!"), but in practice almost always sucks. It's the rare game (Populous?) where random numbers can deliver a enjoyable level.
What were you expecting?
One of my two "main" programming projects at the moment is a Rogue-like that tries to do for plot what Rogue did for level generation. I put "main" in quotes because it has since been overshadowed by the other main project I'm doing, but I still hope to get back to it someday.
;-) )
For anybody else who would like to take this up, since you could probably finish at least a "0.1" release before I turn back to this project personally, I would point out what is probably "the way" to do that sort of thing. The fundamental problem with modern roguelikes is they are too low-level, where "the dungeon" is an array describing what is there, and "the engine" just manipulates this. Thus, "the engine" is only capable of generating really low-level events, like "X killed Y".
To get a "plot" in place, you need to generate a much higher-level representation of the world to start with. You need to start with what "groups" are in place (cities, towns, nations), maybe run through a routine that does high-level generation of the map (placing these groups in cities, etc.), then iterate down to the next level where the groups are given relationships and placed in actual buildings, then iterate on the landscape again, then build actual people in the context of the groups, then build the place for the people, etc. When you're done, you'll have not only a map like a current Roguelike does, but also an engine with a much higher-level understanding of what the map actually has on it, allowing quests like "Get X out of the evil henchmen's building and return them to Y", etc.
(Alternatively, you can try to "grow" the land, starting by placing down the general landscape, then adding settlements and using some basic economic rules to govern how they grow and interact, then try to create the "game" at the end.)
Obviously in a Slashdot post I can't explain too much, but IMHO at least in the Open Source efforts I've seen (and even many commercial ones) this is the fundamental mistake I've seen made at the architecture level that prevents this stuff from working. It probably seems obvious after you've thought about it for a while but it apparently isn't. From here you can probably fill it out too. (If not, perhaps you should be thinking of something else to do.
One warning: You're going to need (or really wish you had) some actual Computer Science to pull this off well, specifically the study of expanding unrestricted grammars into final statements, which is essentially what this is, especially when it comes time to add links between the entities (for instance, antagonism between a "legitimate government" of a town and the underground theive's guild). It's not easy, but IMNSHO it's the only way likely to work.
I'm quite certain this is possible and I have a design half-sketched out, I just haven't had time to implement it until my other project becomes at least self-sustaining.
Dave Chess wrote an automatic level generator for Doom, called SLIGE. Search against "SLIGE" and "doom" and you'll find it on top, add "chess" if you wish.
I've never actually tried one of these levels myself, but it is automatically generated content for a game, pertinent to the thread. Imagine a pseudorandom (deterministic, repeatable) in-game SLIGE based on x and y coordinates, a garbage-collecting in-core map, and you could have infinite space to play in. The map keeps expanding in your direction of travel, and it gets thrown away behind you. (There would be some problems of course, especially with switches, objects, and monsters.)
The living have better things to do than to continue hating the dead.
The games I have the most fun with are those with decent random content generators. Done right, they can really add to the replayability of a game. Port Royale has suitably 'open-ended' gameplay (within the confines of its environment) through random mission generation and all the fun of trading.
The thing that really gets me, though, are games that are billed as 'open-ended', infinitely replayably, etc, that are instead cripplingly linear. (Republic : The Revolution is a great example of this - a game *crying out* for decent random mission generators, but instead has a lockstep set of objectives that you have to complete to advance ).
I've had plenty to deal with over the years in randomly-generated OS behavior in Windows, with Blue Screens showing up at very inconsistent moments, and unexplained slowdowns and file corruption.
I guess it is all a game?
I've been playing Nethack seriously now for the past 6 months, and not serious for the past, what, 15 years?
That game is such a classic, and it's mix of randomness and expected elements make it a fun, different experience every time. And while there exists that element of randomness (what will that scroll labelled FOOBIE BLETCH do?), you can always expect to find the Oracle and this level, or the entrance to the mines on one of these levels, etc.
In conclusion, Libya is a land of contrasts.
Thank you.
We played rogue because it was the only "game" in town. Now some games just make you "do" the dungeons to advance the plot and such - you wouldn't play these without a plot (remember a DC/GC release called "Evolution"? thought not).
Now some games (I guess like Diablo) are good enough so you're having fun as you're playing, rather than suffering for the sake of a later payoff. These are the kinds of games that can pull off random dungeon generation.
But talk to almost any serious RPG gamer and you'll hear randomly generated stuff sux. It's OK in the 50-floor-tower-of-leveling-up, but not in the main game.
Geometry was the same for the SAME CHARACTER, but when you switch characters (or games), it re-generates the level. There are several locations in the games that are hard-coded, but often how to get to those places are dynamic.
Uh. Not in Diablo. I don't know about Diablo II, as I tried it briefly and considered it a boring rehash of Diablo and promptly abandoned it in favour of more interesting games.
Diablo was quite random. With the exception of "quest objectives" which were merely prefabs placed randomly within a dungeon, the entire dungeon, layout, entrances, exits, doors, rooms were randomly generated for each floor. (Which is why the savegame files could get up to about 15MB if I recall correctly.. hey, it was a big deal when we only had a 1 gig harddrive)
The only thing it lacked was random quests. It had a okay number of pre-built quests, though, and gave you a random selection of them each time you played. Definitely got stale after awhile though.
Random and weird software I've written.
F-Zero X on the N64 had a cup called the X cup, which consisted of randomly generated races. Unfortunately, most of the races were really bland. One time though I was playing multiplayer, with 1 other person and 2 computers racing. Shortly past the start was an almost 90 degree turn. The road wasn't level either, which made it harder to realize how bad the turn was. The two computer cars went flying off immediately. My friend and I just barely managed to stay on the course. That one race was a lot of fun, but otherwise the random courses don't offer much challenge. The only thing that makes them hard is you'll get random patches of track without any railing on the side, making it easy to fall off the course.
Take Ancient Domains of Mystery - This is a roguelike game in every sense of the word, and the only maps that are static are the world map, towns, and a select few dungeon floors.
There is only one pure level-up dungeon, the rest all have limitations and hard-coded stuff - ie the first dungeon will always have 7 floors, and it's associated quest will climax at that point. The floor layouts are always random, and in a roguelike game (where death is permanent) not having the same floorplan all the time is a GREAT benefit - I doubt I'd have half as much fun with it after the first 5 times through the beginnings of the game.
If I wanted to play games that appear randomly, id get a girlfriend.
Computers can't be creative, at least not in the way humans _can_ be. The randomness of the Rogue levels was rather successful in making the game continuously challenging, but at a rather superficial level.
Compare this with a table game with five players and a DM for an ongoing game of AD&D (or other, insert your fav here) and you'll notice a truly _huge_ difference. Between the DM and the responses/actions of the other players, you have six people tossing out so much randomness a good DM actually spends a fair amount of energy keeping the game focused.
Perhaps one way around this problem for developers of computer-assisted (or just computer games, whatever) is to build into the game resources which mimic the random creativity a DM would supply during a table-top game. One way might be to supply with the game a database of random elements which could "happen" during any particular part/level/area of a game. Have the game engine check for triggers (events/times/states) which would allows for possible "random" insertion events.
For such a method to be successful though, the database would have to be large enough to seem truly random to the player (say BIG as in many,many possible random events.)
The Baldur's Gate PC game did try something like this in that when moving from city to city you might often be waylaid by some nasties, but that was mostly an annoying failure because it didn't seem to be random at all, IMO.
Everything in the Universe sucks: It's the law!
I was thinking about this problem the other day, as it relates to open-source game development. One of the main problems with small-scale game development is the creation of content (it's a lot of effort), and algorithmic content would make it easier for a smaller-group of developers to build a good game.
But a problem with random content is that it can suck, like impossible nethack levels, etc., as the algorithms have no great sense of athstetics or any of the other abilities require to make 'good' levels. Designing algorithms to test for athstetics is also difficult, and probably only worth doing for a few cases.
The conclusing I came to was that algorithms could be used to pre-generate content (like maps, etc), in the sense of the "millions-of-monkeys" problem, except with a bit of focus. Algorithms would generate content (maps, shapes, etc.), and then the work would be filtered by the developers, and the good stuff made part of the game. The algorithms could also use some sort of learning to improve the generation process, similar to spam filtering - "this is spam" vs. "this is not spam" user-initiated filter improvement.
This sort of approach would really make small-shop game development easier, as would improving (and standardizing) content-production tools and processes.
mx
The game uses a randomly generated battle zone, with the random seed based on the name of the zone. The player selects the name of the zone by picking three keywords from three separate lists. This can be seen in more detail on gamefaqs .Hack keywords effects
While the zone weather, day/night, and element type are determined from the keywords, while the locations of enemies, scenery, and the dungeon entrance on the map appear to be random. They are consistent for each visit to the zone, so the RNG must be seeded from the combination of keywords. The dungeon maze within the zone is also randomly generated, by connecting various prerendered rooms by matching up doors. The level generator only needs to connect rooms so that the doors match up and rooms don't overlap. Rooms may have multiple doors, allowing for loops and dead-ends. Dungeons are multiple levels deep, controlled by the difficultly level of the zone.
Some keyword combinations are "special" and contain plot elements and bosses and/or cutscenes. These keywords combinations are revealed within the game, or by watching the related anime series.
Toejam and Earl III's random level isn't a new feature, because the first Toejam and Earl was doing it way back near the beginning of the megadrive. Sure it's got slightly more advanced, but having played the original the "feel" of the way it makes maps is very similar. Interestingly (or not) Toejam and Earl II didn't have randomly generated maps, possibly because it was side-scrolling and I imagine making interesting maps would have been harder (because you are much more restricted on what it is possible for a valid map to look like)
Combination - fun iPhone puzzling
This game killed tons of my grade school hours... and still I don't think i explored all of germany
There has been much talk about design, or puzzle creation, or tasks that require a "human" mind. I would like to bring into question exactly what random content (specifically randomly-generated dungeons) brings to games as far as gameplay is concerned. I believe that using AI to extend and replace the capabilities of random content could create a better gameplay experience, even if at this point it lacks the ability to design, etc.
.Hack is the feeling that my abilities do not possess any control. That is to say, I want the world to test my skill, and perhaps adapt to my actions, thus giving the feeling that I am somehow altering the world indirectly through my own actions.
So, what does random content bring to a game? At first glance, I would say not a whole lot. After all, this only creates different content on each run through, but it doesn't alter the basic gameplay. However, it is a fun feature in that it almost forces the player to actually "play" the game. Randomly generated dungeons force exploration. In general, random events force a sort of "trial-and-error" routine that the player must go through in order to progress through the game. You aren't allowed to memorize the map, seek out the best items immediately, or follow the walkthrough; you actually have to play the game.
So, it's not just a marketing ploy; it does have consequences on how the game is actually played. However, it kind of drops off there. Sure, you can create more complex, or deeper levels of randomness...perhaps even throw in a simple puzzle variant or two, but it pretty much ends there.
A big point to consider would be what is the player's perception of their abilities within the game's world. One of the things that really kills the gameplay for me, personally, in games like Nethack, Diablo, and
Of course, there do not exist many games that accomplish such a feat, but those that do, even in the most trivial ways, give something more to the formula than Explore, Kill, Collect, Explore, etc. And this is pretty much my point: Random content in games has some use, but by using AI, we can create dynamic content that not only seems logical but can also adapt, or otherwise be extended, to accomodate a player's capability or skill level.
Therefore, I respect random content, but I believe that the future lies with AI-controlled dynamic content.
Lets sort this out and correct your statement that only monster spawns are random.
First Diablo 1, which had both single pand multi player. In single player, you save the game and with it the full dungeon at any time and can reload it as well. Of course you then get back the exact same dungeon (AND monsters) as when you saved. One can at any time start a NEW game with the saved character though. It will then have a completely new dungeon.
In Diablo 1 multiplayer, you can't save the game. The character is saved when you leave the game (and actually regulary when you play as well). When entering a new game, you will get a completely new dungeon as well.
So in Diablo 1, the full dungeon was actually randomized each time. Admitedly there exists bugs, or rather design flaws in the implementation and use of random numbers, but that does not change the fact that the dungeons are random, it only gives some interesting quirks and side effects.
Lets move to Diablo 2 which basically has 3 game types. Realm multi player, open multi player and single player. For all practical purposes, realm play and open play can be considered as identical.
First multi player. Again, you can't save the game but the character is automatically saved. Each time you enter a new game, it is randomly created and you have a new dungeon as well.
Single player is slightly different. You still can't save the game but the character is automatically saved. When you start a new game with your single player character (assuming it has not been used for an open multi player game) and it is still the same difficulty level, you will get the same dungeon. You can see it as a saved dungeon layout when you levae a game in single player. Part of the monster spawning will also be similar and in part identical. The reason for this is theat the saved character file will contain the initial seed used to create the last game. With it, most of the dungeon layout and part of monster spawns will be recreated identically. Some parts, of primarilly monster, and even more item spawning, will be randomized with the current time and hence will still differ.
One can see single player in Diablo 2 as open game that just don't allow others to join and that uses the same initial seed as the last game to create the dungeon (obviously to compensate some for not having a save game option). That is why single player characters can be used in open multi player.
If you are interested in more details about game and dungeon generation, especially in D1 but also D2, feel free to tell and I can inform you.