Thoughts on randomization?

Started by
7 comments, last by way2lazy2care 13 years, 1 month ago
First of all, I would like to say that gamedev.net has been a great help for me as a lurker both in the forum and the main site. I've been reading a lot on here and some other resources which have helped me tremendously. Honestly all of my game design ideas would have never left the word processor until this site let me take a serious look at making games that are manageable as an indie.

Now onto the big question, what are your thoughts having an element of randomization in the game world? To explain in detail, I'm currently designing an open world game all taking place in a single large city. While I originally planned to only have story line specific buildings enterable (a bit like GTA), I've been thinking of having something like the way oblivion gates were set up in ESIV in that the majority of the buildings would be assigned with a random interior. Loot will be an important aspect of the game, but I realize this also leaves the possibility of the game becoming really repetitive and could leave little reason to explore.

Mostly I want to know what you personally would enjoy more; a world with lots of buildings you cannot enter and a few ones specific to quests, or one with that and generic interiors with variations in loot. There would be a bit more variation, with having certain buildings like marketplace shops obviously being different than the interiors of the shanty town section. So far I'm thinking of having 10 different interiors for each type (cheap shop, expensive shop, shack, expensive home, etc).

The thing is I want the game to have scope without wasting too much time on it. Bethesda's fallouts have mostly generic NPCs and important named ones which allowed for shorter development times, while Oblivion had almost all named NPCs but empty towns due to this. Which do you feel is the lesser or two evils?

Thanks in advance to anyone reading this over, it's getting late and I'm sure I screwed something up in this post, will clear it up as soon as I'm not sleep deprived :)
Advertisement
You've described a pretty tricky dichotomy here. For my part, I like having everything work like it looks like it should work. A lot of games have scenery that looks like gameplay environment, and that bugs me. I hate it when I'm playing Splinter Cell and my strategy includes a door that turns out to be a wall, or when I'm playing Call of Duty and a street is overlooked by 38 windows, only seven of which are tactical considerations. I say go with the random contents, but have their value diminish to nothing almost immediately. Many players will see that as a challenge, an obligation to search a hundred rooms and get an inventory full of silverware and umbrellas with no value. I think it's part of world building to have a space in which the vast majority of things you're allowed to put in your inventory are things that you don't want to carry around. Following the Fallout/Bethesda model, there are lots of people that claimed a house or spent hours with that one dead noble with the infinite inventory, getting every candlestick, shoe and empty bottle and stashing it. You should discourage that sort of play by making it an infinite continuum, so that players will get their mindset away from the "take everything, convert it into win" stereotype. Gamers have habits, cultivated through years of collecting and hoarding, and as long as your game doesn't reward that behavior, it can supplant it with better game design.

The thing is I want the game to have scope without wasting too much time on it. Bethesda's fallouts have mostly generic NPCs and important named ones which allowed for shorter development times, while Oblivion had almost all named NPCs but empty towns due to this. Which do you feel is the lesser or two evils?

Random content is just a simple version of procedural content (I.e. you would generate random weapons in a armor shop and different powders in a alchemy shop, but you wouldn't really just generate random stuff) and procedural content is quite old (remember elite with its thousands of procedural planets). In general procedural content is not evil and is accepted by the gamer community when done right .

The major problem with procedural content is, that as computer techniques in games increases dramatically the effort to "hide" generated content is much more difficult. Think of a large town in obilivion with 1000 generated npcs. As player you would expect that each npc looks different form each other. In a simple rogue like game (=ASCII game) you would just change the name of a npc but would represent it by the same ascii code.

There are several area in which procedural content is quite common like landscape generation (most forests ,rocks etc has been generated in games nowadays), still generated npcs in an 3d game are quite seldom. L4D has done an excellent job on generating lot of zombies who are easily distinguish from each other. Taking this approach father, you have to generate different background stories, quests etc. for npcs in a rpg when you want to "hide" procedural content.

Eventually procedural content is not an evil but the holy grail, when done right B)

Now onto the big question, what are your thoughts having an element of randomization in the game world? To explain in detail, I'm currently designing an open world game all taking place in a single large city. While I originally planned to only have story line specific buildings enterable (a bit like GTA), I've been thinking of having something like the way oblivion gates were set up in ESIV in that the majority of the buildings would be assigned with a random interior. Loot will be an important aspect of the game, but I realize this also leaves the possibility of the game becoming really repetitive and could leave little reason to explore.


I realize this wasn't what you were talking about, but the first thought that sprang to my mind was the dungeons in the diablo games. No two were ever alike (set-pieces aside). I've never tried to write something like that, and it would undoubtedly be hard, but it would give you all the building interiors you'd ever need.
From an SE point of view, don't use the word random ever. Random is bad. It makes things horrendously hard to test.

Procedural generation is not the same as random generation. Random generation can be a subset of procedural, but randomly generating stuff can give you bizarre results. Procedural generation done the right way will always give you some expected testable (and re-testable) result.

Kind of a grammar nazi thing, but it is a significant difference from a technical perspective. Significant insomuch as one will have bugs fixed in hours and one will have bugs that take you 5 weeks to replicate as SEs are found in the fetal position under their desks missing patches of hair and being easily burned by even the smallest amounts of sunlight.
When I come across a building I can't enter, I want to enter it. When I can enter a building and I find it's just a building that doesn't have anything interesting in it, I wish that my time wasn't wasted making me think there's something in there. With conflicting thoughts like that, I don't expect to ever be perfectly pleased with a game world. Although, the burnt out house shells in Fallout were alright. It was pretty obvious that you shouldn't expect to find much there but once in awhile you still feel the urge to check it out and maybe find a can of meat or a book. Come to think of it, the biggest difference between houses like that and the other buildings is the absence of the whole fade-out / fade-in thing where you know there's some sort of loading going on. Maybe that's what really wrecks it for me.
Now onto the big question, what are your thoughts having an element of randomization in the game world?
I did. A problem is (as pointed out by way2lazy2care) repeatability. Now that C++ has random generators built in the lib, it would be fairly easier, but back when I was using C, saving [font="Courier New"]rand[/font]' seed consistently across different components caused some concerns (mainly because I wasn't really good back then).

The other problem is quality of the generated assets (asset != content). I never really managed to get much out of random numbers. A friend of mine spent several weeks trying to procedurally generating landscapes with unconvincing success. He then moved to procedurally generating underground dungeons, I don't know if he succeeded.
Last example of generated content I have direct experience is "Star Filled Sky". I bought it a few days ago and I personally believe the quality of the generated content itself is relatively good, but consistency is a serious issue.

Previously "Krohm"

Elements of randomization is not very good with simple randomization. Players hate streaks of poor luck, so the better method is to implement cards. Have the random number generator shuffle stacks of cards, follow by an anti-streak software rearrange cards of long poor streaks, and sometimes the good streaks also have to break apart to help decrease the long poor streak. These method may decrease the randomness of the game without eliminating the randomness element. I find this system as the new ways that MMORPG are moving towards to cater to more people. Of course, other games can also take this advantage to prevent players from getting poor luck streaks.

Cards have an n! vs simple random with n^n distribution. One is factorial, and the other is beyond exponential. The simple random grows faster than exponential growth in possibilities. The card method will bring together a significant decrease in the randomness, but it prevents player frustration from losing streaks.
I use QueryPerformanceFrequency(), and the result averages to 8 nanoseconds or about 13 cpu cycles (1.66GHz CPU). Is that reasonable?
I though that the assembly equivalent to accessing unaligned data would be something similar to this order:

  • move
  • mask
  • shift
  • move
  • mask
  • shift
  • or

So it seems reasonable to say that it takes 14 cycles for unaligned data since we'll have to do the series of instructions once to access and once to assign?

[quote name='MysticS.' timestamp='1298523230' post='4778286']Now onto the big question, what are your thoughts having an element of randomization in the game world?
I did. A problem is (as pointed out by way2lazy2care) repeatability. Now that C++ has random generators built in the lib, it would be fairly easier, but back when I was using C, saving [font="Courier New"]rand[/font]' seed consistently across different components caused some concerns (mainly because I wasn't really good back then).

The other problem is quality of the generated assets (asset != content). I never really managed to get much out of random numbers. A friend of mine spent several weeks trying to procedurally generating landscapes with unconvincing success. He then moved to procedurally generating underground dungeons, I don't know if he succeeded.
Last example of generated content I have direct experience is "Star Filled Sky". I bought it a few days ago and I personally believe the quality of the generated content itself is relatively good, but consistency is a serious issue.
[/quote]

one game that I think did procedural content well was Anarchy Online. It would have instanced quests that would be set up to use some random door out in the wasteland that you could get. Then it would generate the instance with different rooms with standard entrances, exits, and mob placements.

It helped a lot to make non-repetitive instances for people to take part in. Made the grind a little more bare-able. They didn't match up to some static/scripted areas, but they added a little more pizzaz than running around farming an area and gave more experience and items.

I still don't think those were truly random though.

This topic is closed to new replies.

Advertisement