[Home] [Downloads] [Search] [Help/forum]


Register forum user name Search FAQ

Gammon Forum

[Folder]  Entire forum
-> [Folder]  MUDs
. -> [Folder]  MUD Design Concepts
. . -> [Subject]  Procedurally generated MUD content?

Procedurally generated MUD content?

It is now over 60 days since the last post. This thread is closed.     [Refresh] Refresh page


Posted by Jasonius   (12 posts)  [Biography] bio
Date Thu 07 Oct 2010 12:18 AM (UTC)
Message
Hi, all. Longtime player, never much felt the urge to code or build, but I'm sitting here thinking about the feasibility of procedurally generating MUD content, from mobs to rooms to entire zones.

I don't remember ever coming across any such thing, aside from 'wilderness', which you find on a few MUDS.

Anyone ever heard of (or played?) anything that took a crack at that?
[Go to top] top

Posted by David Haley   USA  (3,881 posts)  [Biography] bio
Date Reply #1 on Thu 07 Oct 2010 06:10 AM (UTC)
Message
They're not MUDs per se, but Rogue-likes are rather famous for generating all sorts of stuff. I don't know if they generate mobs or pick them from templates -- probably from templates -- but the entire world area is generated. Most if not all of the techniques could apply to MUDs, other than the fact that RLs typically do not generate descriptions for rooms, but make worlds that look like what you've seen as wilderness except indoors.

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
[Go to top] top

Posted by Donky   (1 post)  [Biography] bio
Date Reply #2 on Thu 07 Oct 2010 10:11 AM (UTC)
Message
Search for genmud.
[Go to top] top

Posted by Jasonius   (12 posts)  [Biography] bio
Date Reply #3 on Thu 07 Oct 2010 12:39 PM (UTC)
Message
Yeah, I've played some Nethack. And thanks for the pointer to Genmud, though a read through the README file gives me the impression it doesn't really attempt to generate what you'd call a typical mud zone - with mobs that have descriptions and do things, rooms with appropriate objects in them, etc.

I'm envisioning what's essentially a database of races, object and room types, traits of objects/rooms/mobs, weather types, moods of mobs, etc, using some sort of constraint system such that a purple teacup is possible, but a purple dwarf is not, for example.

Could use probabilities to decide what's common (dwarves in a mountain area) or uncommon (a friendly orc). Maybe a human child is more likely to be have lost a parent than to want to kill you, but it's the opposite for a baby dragon.

I think I'll mock up a mob-generation Perl script and see if I can get it consistently spit out mobs of typical MUD quality and then go from there.

The big trick, I think, will be how to go about adding future "stuff" to the database and have it automatically "fit in" with everything else. If I add a Colt 45 tomorrow, will I find one carried by a dragon later on? If that problem can be solved, then you have the possibility of players altering the world simply by adding a single "thing" to the database, rather than having to craft entire zones to contribute.
[Go to top] top

Posted by David Haley   USA  (3,881 posts)  [Biography] bio
Date Reply #4 on Thu 07 Oct 2010 08:02 PM (UTC)
Message
There's a complicated design question here, namely who is responsible for constraints on interaction. You can have per-object constraints, so that object X defines how it interacts with objects of type t1, t2, etc. But then if you add a new object, you have to go to all previous objects (that need to be aware of it) and add the constraints.

You also need to consider whether constraints are negative or positive; this can dramatically affect how many things you need to change.
Consider a shield that says something like:
(1) "I protect against all forms of damage except fire"
now consider a shield that says:
(2) "I protect against cold, poison, crushing, piercing, lightning, etc." (i.e., the list of damages except for fire)

If you add a new form of damage (acid, or whatever) then shield 1 requires no change, but shield 2 does require a change. Shield 1 expressed its constraint as a negative (I protect against everything but not fire) whereas shield 2 expressed it as a positive (I protect against x, y, z).
Of course, option 1 can have its issues too, in that something might have made sense back when you created the object but later on doesn't. Let's say you create a new damage type (radioactive blast) that isn't fire but really is similar to it for the purposes of damage protection. You now have to go back and find those constraints and fix them.


Note that per-object constraints can be easily extended to per-type constraints, which reduces the amount of work necessary as you can change a type rather than all instances of the type. You still end up with a potentially large web of interactions.


The problem here results from new kinds of interaction being added, not new things of existing interaction being added. If you can add a Colt 45 and model it as, essentially, a bow an arrow that shoots a really fast arrow made of metal, then as long as you can handle bows already it should be ok. As long as something uses existing interactions, you don't have to go change the rules of interaction. But clearly, if you add a whole new kind of interaction (like a lightsaber in a world of swords) you will have to go make other things aware of how this new thing affects them.

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
[Go to top] top

Posted by Jasonius   (12 posts)  [Biography] bio
Date Reply #5 on Thu 07 Oct 2010 08:33 PM (UTC)
Message
David Haley said:
... But then if you add a new object, you have to go to all previous objects (that need to be aware of it) and add the constraints.


Yeah, that's the 500-lb gorilla I'm seeing when I think about this. Obviously, the strength in the idea is that you can build a vast and complicated world one idea at a time. But needing to constantly re-design the entire universe to be compatible with every new idea is an obvious show-stopper.

There'll have to be some sort of framework that every idea has to fit into, such that if you want to add a radioactive blast weapon, you either put it in the fire weapon bucket or consider adding a new bucket based on how much work it would take to make (parts of) the universe aware of it.

There's probably a good reason this hasn't been done... but it should be a fun exercise anyway ;)
[Go to top] top

Posted by Twisol   USA  (2,257 posts)  [Biography] bio
Date Reply #6 on Thu 07 Oct 2010 10:56 PM (UTC)
Message
I read this a long while back, and you guys just reminded me of it. Maybe it will help, maybe it won't, but it's a good read either way.

http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/

'Soludra' on Achaea

Blog: http://jonathan.com/
GitHub: http://github.com/Twisol
[Go to top] top

Posted by David Haley   USA  (3,881 posts)  [Biography] bio
Date Reply #7 on Fri 08 Oct 2010 03:34 AM (UTC)
Message
There have been a few discussions about this on MudBytes...

http://www.mudbytes.net/index.php?a=topic&t=1873&p=30693#p30693
(and all the following posts)

http://www.mudbytes.net/index.php?a=topic&t=2432&p=40290#p40290
(and context)

I keep wanting to collect all of that into a coherent article with code examples, but alas time is not willing to cooperate.

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
[Go to top] top

Posted by Nick Gammon   Australia  (22,975 posts)  [Biography] bio   Forum Administrator
Date Reply #8 on Fri 08 Oct 2010 04:57 AM (UTC)
Message
Jasonius said:

But needing to constantly re-design the entire universe to be compatible with every new idea is an obvious show-stopper.


I don't see why. After all, even with manual content you would have this problem.

You basically need to get the physics of your game world sorted in advance if possible (eg. you have 4 types of magic spells: heat, cold, white, dark). Then you can have armour with resistances to those types. However even if you add a 5th type (eg. green magic) it isn't a huge deal. After all, you could have armour that is resistant to "all magic" so that would encompass the new type. And if someone has armour today that is only fire-resistant, then they still have a problem with cold, so that doesn't totally disadvantage them.

Also your basic idea is what the Sims do, isn't it? They have a basic game world, and then add in expansion packs with extra gadgets and things that still work inside the game world in well-defined ways.

So the idea could be made to work. However you possibly may find that the game is as interesting to play as computer-generated music is to listen to. But overcoming that challenge should be fun. :-)

- Nick Gammon

www.gammon.com.au, www.mushclient.com
[Go to top] top

Posted by Twisol   USA  (2,257 posts)  [Biography] bio
Date Reply #9 on Fri 08 Oct 2010 05:06 AM (UTC)
Message
Nick Gammon said:
However you possibly may find that the game is as interesting to play as computer-generated music is to listen to. But overcoming that challenge should be fun. :-)

Consider that when you design the procedural generation algorithm, you're designing a meta-world, or perhaps the derivative of a world (as in calculus). You still have an indirect hand in how the world takes shape. :) I've written a map generator for my attempt at a Snipes clone, which was very fun and interesting. The maps were all clearly cut from the same cloth, even if the actual layout was totally different.

(Also, check out Dwarf Fortress sometime. The pinnacle of procedurally-generated content or something, isn't it?)

'Soludra' on Achaea

Blog: http://jonathan.com/
GitHub: http://github.com/Twisol
[Go to top] top

The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).

To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.


26,894 views.

It is now over 60 days since the last post. This thread is closed.     [Refresh] Refresh page

Go to topic:           Search the forum


[Go to top] top

Quick links: MUSHclient. MUSHclient help. Forum shortcuts. Posting templates. Lua modules. Lua documentation.

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.

[Home]


Written by Nick Gammon - 5K   profile for Nick Gammon on Stack Exchange, a network of free, community-driven Q&A sites   Marriage equality

Comments to: Gammon Software support
[RH click to get RSS URL] Forum RSS feed ( https://gammon.com.au/rss/forum.xml )

[Best viewed with any browser - 2K]    [Hosted at HostDash]