27 Mar, 2007, Guest wrote in the 1st comment:
Votes: 0
We've been kicking around the idea of virtual or instance areas recently over on the SmaugFUSS forum. I figured cross-posting here would be helpful to get some other perspectives on the issue. It all sort of grew out of a bugfix relating to Smaug's virtual room code.

I'm not familiar with WoW, but apparently they have a concept there called "instance areas" which generate for a particular group of players and nobody else can enter them. It sounds like a really cool idea.

As far as instance areas, I wasn't specifically suggesting doing it just like WoW does. I guess I was looking more at what should be called virtual areas. In that they don't exist as area files, but are generated by the code in-game, and can turn out differently each time. That alone would be cool enough. I'd use something like this in my own mud to help populate the overland. Mark several spots where you want some kind of random area to be, then wait for someone to walk in. Generate the area on the fly, and maintain its existence for as long as players are in it. Keep it alive for a certain amount of time after they leave, and once that's passed, drop it from memory. Any items gathered from inside the area would need to be populated from a static vnum or set of vnums so they would not end up vanishing when the area unloads. Combine this concept with a random treasure generator and you've got yourself quite a lot of fuel for dynamic gameplay. If you were industrious enough, it might even be possible to expand this to the point of absurdity and cause the entire world to be generated virtually.

Obviously this would need to be more sophisticated than the usual random generation of rooms in a straight line from an exit flagged with a distance value. There would need to be algorithms and generator routines capable of linking together rooms into a reasonable layout. There would have to be a sufficient pool of descriptive entries to pick from. In order for it to not be boring as hell, obviously it needs to be able to generate creatures and NPCs to populate the area with, preferrably appropriate to the type of area it generated. It would probably then need to be decided if the areas generated were open to everyone, or just to a specific group.

If something like this were well designed and thought out, it would be a great way to spice things up and break the monotony.
27 Mar, 2007, Cratylus wrote in the 2nd comment:
Votes: 0
I'm not a Smaug guy, but I thought I'd pipe up with my experience.

MudOS libs (MudOS is a kind of LP driver that runs LP muds) have access to this kind of
thing. In Dead Souls for example, you can create a virtual area by making a file that
contains definitions of the grid layout. In it you can put stuff like if the X coord is between this and that,
then there's Y chance to see Z monster, etc.

It's incredibly handy for things like a forest that's 25x25 rooms, where you REALLY don't want to
go through the pain of defining each room individually. You can just define hard exceptions (room 12,12
must always have a tent and bottle of bourbon) or relative/random exceptions (room 12,12 will have
a sleeping orc if it is night and random(10) is greater than 5).

You can also do 3d grids, for oceans or aircraft. Pretty neat. An example of a virtual "server" (that's
the object created by the virtual area definition file) is here:

http://dead-souls.net/code/ds2.4.1/lib/d...
(note that the bourbon and sleeping orc were just ideas and aren't in this file)

LPmuds are composed of objects generated from files. When a player walks into a room,
there is an individual file that defines that room that gets loaded into memory with a
function in the driver called load_object(). If you pass a non-existent file to the load_object(),
the driver will interpret this as a request to compile an object on the fly, and will check
your lib's master object for the appropriate rules, based on the path given as an argument.

If the path indicates that there is a virtual server that should be consulted, then it's
used for the rules in compiling that new object, in this case, a room.

It's pretty sexy imo, and works just great. I can't imagine creating large wilderness
areas without it, or something very similar.

-Crat
http://lpmuds.net
27 Mar, 2007, Omega wrote in the 3rd comment:
Votes: 0
samson, thats a random dungeon system, i've seen afew out-there, all you'd have todo is lock-down the so-called 'virtual area' so that people not with the original group, cannot enter it. and ofcourse deal with the what-happens when people die in those area's, and how they retrieve their corpses.

Sstm has a system similar to this called wdungeon, just the area's are pre-built, and are locked down through the wilderness system (as they are randomly placed on the wilderness and once beat, they move to another x/y location) my recommendation is, gank from DragonBallArena (rom distribution version by mike brown) and take a gander at its random-dungeon system, with alittle work it could be re-written for smaug and exactly for this purpose, and with alittle work, have it load/create on-demand with whatever 'free vnums' are available, and then delete itself upon completion. Wouldn't be too hard todo.

Just my two cents.

And yes, it would add a nice bit of diversity to the mix when playing games if you used it on a much wider scale.

In WoW they have not-randomly generated ones, and randomly-generated ones, and they are often done as missions, or ways to bring up your rank status. In Sstm, we give them random treasure and monsters. (which i will go into details about below)

Random monster system:
spec_prog : spec_random_monster

addition to mobiles <level range>
so on creation, they are at a random level between the ranges set.

on create, if you contain spec_random_monster, it pulls chooses from a series of tables
as to what race/class, then based on its level, it gets skills based on it, from there,
it loads.

since the dungeons are designed as orc dungeons on sandstorm, the monster is always some version
of orc.

In anycase, when the dungeon is entered, it triggers a load sequence to populate the area with mobiles
in random places, including the boss monster (this is done with a mudprog) when monsters are generated
so are their treasure. the treasure in the area itself (in the rooms) is random if it has any at all.

In anycase, thats the sstm system, its not the greatest, and its far from a random build, but, as i said
if you took a similar route, you could create quite the nice little setup.
27 Mar, 2007, syn wrote in the 4th comment:
Votes: 0
The Ground Zero mud codebase did something like this. Though their entire mud was based on the random area contained in a X by Y by Z grid layout. The code then went through and placed "Walls" to make a custom maze like map, generated objects and mobs.

It was a pretty interesting system, and could possibly be adapted or added onto the top of a mud using another area system altogether.

-Syn
27 Mar, 2007, Omega wrote in the 5th comment:
Votes: 0
the best way to create a random area is to layout a grid,

xy  1 2 3  4  5 6
1 |0|0|0|1|0|1|
2 |0|0|1|1|1|1|
3 |0|0|0|0|1|0|
4 |0|0|0|0|1|0|
5 |0|0|0|1|1|0|
6 |0|1|1|1|0|0|


the basic design, 1 used, 0 not used, keep track of the usage

and basicaly, write a function like, make_hallway(some_number)
the some_number is the amount of rooms it uses, hell, you could even
include which direction, and then, it moves along, from the point
and makes a hallway, if it comes across a used room, it just links
and ends the hall process.

quite simple to make, you just need a large enough grid to work with
to stop it from turning into one giant arena :P (learned that by accident)

anyways, just my two cents.
28 Mar, 2007, Justice wrote in the 6th comment:
Votes: 0
syn said:
The Ground Zero mud codebase did something like this. Though their entire mud was based on the random area contained in a X by Y by Z grid layout. The code then went through and placed "Walls" to make a custom maze like map, generated objects and mobs.

It was a pretty interesting system, and could possibly be adapted or added onto the top of a mud using another area system altogether.


GroundZero's map was pretty simple really. 3 levels, top level was 21x21, second level varied, but was initially 25x25, GZII used 15x15. The bottom level was 5x5. They used a 2d array to hold the rooms. I've been working on a little C++ codebase that emulates GZ for the time being (for it's simplicity). It has a matrix object that stores rooms on a coordinate plane and some functions for handling the placement of walls.

Basically you have a certain # of walls to place on the map, and then a mark and sweep is used to ensure each room is reachable.
28 Mar, 2007, Justice wrote in the 7th comment:
Votes: 0
I'm not big on random generation of areas personally. However it's not hard to create a series of rooms and link them together. Depending on the needs, there are a variety of algorithms that could work. Populating the area with NPC's and objects shouldn't be hard either. If I were to write something like this, I'd break it into a series of instructions.

Build and link x rooms using this theme. Drop in a series of non-random NPC's with equipment (something like my template code would be useful here). Generate any "unique" NPC's and objects, and drop them in.

That being said, I have some builder tools that can clone rooms and link them using a variety of routines. One creates a simple grid, while another randomly links rooms using coordinates to avoid overlaps. A third simply links rooms where-ever. The two random linkers have a few parameters to control how "open" an area is. These were setup for use by builders, so I wouldn't consider them ready for a completely generated area.
31 Mar, 2007, Vladaar wrote in the 8th comment:
Votes: 0
I know what you mean on instances, I have played WOW, and everquest alike, however for muds….

My thinking is more dynamic quests/areas. Areas that change, and offer different things based on level, etc. I had made a ship voyage area that was available after completing a series of quests in my Thy Quest mud. I think people get bored of always getting the same thing from areas and quests. It takes a pile of work, but if done, it makes for a real interesting game. If you can get some players that is. :)

It comes down to how much "real life time" are you willing to invest in a game that is free? I had thought to put all my time into a MMORPG game, but it went under, as my coder's wife got sick, and I have since gotten into carpentry for a past time. I have finished my basement, and been improving the house so much no time for gaming. If your planning on making a stay in gaming development though I'd say creating dynamic things is the way to go.

Vladaar
01 Apr, 2007, Brinson wrote in the 9th comment:
Votes: 0
I don't think I realy understand the concept. Why would areas change for each person? I mean, the world doesn't reassimilate itself as I walk into wal-mart.

I think the key should lie in letting players themselves change and build areas rather than making them randomized. Plant trees, grow a forest where was once a field. Mine out a forest and change the landscape. Cut down trees for their houses and destroy the forest.

I think I'd prefer dynamic areas to virtual ones, where the world changed in accordance to the actions of the players. Where the areas built automatically had a plot reason to do so.
01 Apr, 2007, Conner wrote in the 10th comment:
Votes: 0
Hmm, philosphically speaking.. are you really certain that
Brinson said:
the world doesn't reassimilate itself as I walk into wal-mart.
???
What if all those mobs/NPCs in wal-mart (or would you know them as employees and other customers?) only exist as you see them for the duration of your visit? Maybe they're all instanced too… :tongue:
02 Apr, 2007, Brinson wrote in the 11th comment:
Votes: 0
that would rock…

Brinson walks in.
An old man says, "Hello, sir, welcome to Wal-Mart!"

Brinson pulls out an Uzi.
Brinson steals a ps3, a wii and then procedes to loot the cash register.

Brinson walks out.

Brinson walks in.

A young lady says, "Hello, there! welcome to Wal-Mart!"
02 Apr, 2007, Omega wrote in the 12th comment:
Votes: 0
i like random dungeons :P

I also like instanced dungeons :P

both are cool, as for the comment on about the dungeon being different for each player,
i believe that players would find that intriguing, because the dungeons would be different,
so if they wanted to go questing, and they hit a random dungeon, they'd be set.

It would give the mud alittle somethin somethin, if ya know what i mean. Players sure,
they'd know where to go todo the quest, but once they hit the random dungeon, they'd
actualy have to work, and not instantly know their way to the enemy at the end, or the
object they have to find, or whatever the quest may be, which may be something as easy
as walking the entire dungeon to map it 100%. or whatever. WHO knows right.

I just think that it would add a great amount of depth to the mud, for either way.
02 Apr, 2007, Justice wrote in the 13th comment:
Votes: 0
Brinson said:
I don't think I realy understand the concept. Why would areas change for each person? I mean, the world doesn't reassimilate itself as I walk into wal-mart.


No, but in the real world, people don't go around fighting orcs and dragons either. Remember we're talking about "fantasy games" here. Fantasy as in… not reality, and games… as in, things we do for enjoyment.

In the real world, if you want to do something that someone else is doing, you wait in line. Waiting isn't very fun, so in favor of gameplay over reality, many games allow "instanced" content.

In the real world, there are trillions of changing variables. If I walk into a forest, every day there will be different things around… why? Because millions of insects and animals move about. People do things that change the world. Now, most people can't afford a few racks of servers to simulate a few trillion components, so instead you do something much simpler. Either you generate a random encounter, or you create a virtual area.

Brinson said:
I think the key should lie in letting players themselves change and build areas rather than making them randomized. Plant trees, grow a forest where was once a field. Mine out a forest and change the landscape. Cut down trees for their houses and destroy the forest.

I think I'd prefer dynamic areas to virtual ones, where the world changed in accordance to the actions of the players. Where the areas built automatically had a plot reason to do so.


Yeah, I've seen this approach before. If you make change too easy you end up with a world that's well… completely destroyed. If you make the change too hard, it's a huge amount of code that simply isn't used. Getting it right? Well lets just say that I've yet to see this approach work in a "real" game. (not saying it can't or hasn't but I've seen several failed attempts and 10's of thousands of wasted lines of code)

What I have seen work however, is to generate new areas as players explore, and reclaim generated areas that aren't visited often enough.

Lets face it, the real world isn't fun… when I play an FPS, and someone shoots me with half a clip of 223 ammo and I don't die… I don't complain about it not being realistic. Realistic would be almost everyone is incapacitated after 1 or 2 hits, and frankly, that's not fun.
02 Apr, 2007, Conner wrote in the 14th comment:
Votes: 0
Brinson said:
that would rock…

Brinson walks in.
An old man says, "Hello, sir, welcome to Wal-Mart!"

Brinson pulls out an Uzi.
Brinson steals a ps3, a wii and then procedes to loot the cash register.

Brinson walks out.

Brinson walks in.

A young lady says, "Hello, there! welcome to Wal-Mart!"


Wait, you forgot the stage where, before Brinson can walk out, the police come with swat teams to finish the instance properly. :wink:
02 Apr, 2007, Conner wrote in the 15th comment:
Votes: 0
Justice said:
Brinson said:
I don't think I realy understand the concept. Why would areas change for each person? I mean, the world doesn't reassimilate itself as I walk into wal-mart.


No, but in the real world, people don't go around fighting orcs and dragons either. Remember we're talking about "fantasy games" here. Fantasy as in… not reality, and games… as in, things we do for enjoyment.

In the real world, if you want to do something that someone else is doing, you wait in line. Waiting isn't very fun, so in favor of gameplay over reality, many games allow "instanced" content.

In the real world, there are trillions of changing variables. If I walk into a forest, every day there will be different things around… why? Because millions of insects and animals move about. People do things that change the world. Now, most people can't afford a few racks of servers to simulate a few trillion components, so instead you do something much simpler. Either you generate a random encounter, or you create a virtual area.


Well, to a certain extend the world does 'reassimililate' itself everytime you do anything, it's a persistant instance and constantly evolving, As Justin rightly point out, it's take quite a powerfuly set of servers to approximate it all even on a fairly small scale reproduction that takes every detail into account for the full ecological system including all the human factors (including economy and interpersonal relationships), so we do what we can do instead.

Justice said:
Brinson said:
I think the key should lie in letting players themselves change and build areas rather than making them randomized. Plant trees, grow a forest where was once a field. Mine out a forest and change the landscape. Cut down trees for their houses and destroy the forest.

I think I'd prefer dynamic areas to virtual ones, where the world changed in accordance to the actions of the players. Where the areas built automatically had a plot reason to do so.


Yeah, I've seen this approach before. If you make change too easy you end up with a world that's well… completely destroyed. If you make the change too hard, it's a huge amount of code that simply isn't used. Getting it right? Well lets just say that I've yet to see this approach work in a "real" game. (not saying it can't or hasn't but I've seen several failed attempts and 10's of thousands of wasted lines of code)

What I have seen work however, is to generate new areas as players explore, and reclaim generated areas that aren't visited often enough.

Lets face it, the real world isn't fun… when I play an FPS, and someone shoots me with half a clip of 223 ammo and I don't die… I don't complain about it not being realistic. Realistic would be almost everyone is incapacitated after 1 or 2 hits, and frankly, that's not fun.


I think having yor world persistant and be affectable by players with limitations (so they couldn't clear cut your all of your major forests entirely, for example) would be pretty cool, but instanced sections could be done too, I'd think.

Yeah, getting shot isn't fun, it sucks. Real life just isn't programmed for nearly enough entertainment value… :wink:
20 Aug, 2007, Vorlin wrote in the 16th comment:
Votes: 0
One thing about "instanced" areas like WOW is that you'd have a unique sequence number assigned to the instance you're going in. Since you can only be in one instance at a time (after error-checking, of course), that's tied to your player file until you finish or whatnot and unless a player has that number set, they couldn't go in with another group.
0.0/16