Back to index

The copyright situation for this article is unclear. It does not belong to the author of this site. Please see the copyright notice. If you have information about the copyright contact me!

Dynamic Room Descriptions

by Eli Stevens

Of all the features present in a given mud setting, room descriptions can be both the most time intensive to create and are usually the most quickly ignored. If players know the area fairly well, any activity in that area, from getting to the lair of the Dragon of Westmount to roleplaying a wedding, is done with brief on. I have done it and you probably have too. Why though? Why do area builders invest so much creative energy, only to have players ignore it on the second trip through the room? I see three main problems all of which are related. First of all, the descriptions are static. If you have seen it once then you have seen it always, it will never change. Second of all, descriptions are often contradictory with other aspects of the mud. Have you ever been in a forest with a sunlight-dappled floor and bird chirping in the trees, even though it was 3 a.m. mud time, and during a blizzard to boot? Third of all, to combat the second problem (or because builders are lazy :P ), often the descriptions are pretty bland. Table here, chair there, door to the north. Blah.
A Muddy Street

Awash with mud and refuse, you can no longer see the street. You try to ignore the rubbish.

This article discusses a way to improve this using dynamically generated descriptions. The most obvious way is to make room descriptions contain information that is useful to the players, or at least interesting. Yes it is easier said than done, but not impossible. Let us consider how things are done commonly now. Many muds implement weather as a single line of spam that pops up every tick or so:

It starts to rain.
The wind blows softly.
The sun shines brightly.
Etc.

Every item dropped in a given room is also displayed an entering player, which can be a very evil thing if someone is rearranging his or her inventory in the city square. It can be done in a much better fashion. Consider a partial room description of a cobbled street in a small city. In the first example the weather is cloudless and there are also a great many worthless items on the floor. If a player was interested in seeing exactly what they were typeing "look floor" would reveal each and every item. In the second example there is heavy precipitation and no items.

Cracked, dry and covered in a fine brown dust, the cobblestones paving the streets look worn. Years of use have cracked them and dug long ruts filled with dust and pebbles. The gutters are clogged and overflowing with rubbish and litter, baking in the sun.

Awash with mud and refuse, the cobblestones paving the streets look worn. Years of use have cracked them and dug long ruts filled with dirty rainwater and rotting garbage. The gutters are swept clean of debris, allowing the runoff to flow freely.

Both of these descriptions can be displayed, provided the builder of the area invested sufficient time to fully flesh out the description. The following is a possible bit of description markup code that could be used to produce the above output. Note that the code below is essentially a markup language, one that will display the string inside the <condition> </> pairs when one of the conditions given inside the first <> is true, and will not display the text when none are true. Note also that they can be nested.

<FLOOR DESCRIPTION>

<cloudless, hazy, partlycloudy, cloudy, darkcloudy>
Cracked, dry and covered in a fine brown dust,
</>

<lightprecipitation>
Slickened and streaked with a thin brown mud,
</>

<heavyprecipitation, storm>
Awash with mud and refuse,
</>

the cobblestones paving the streets look worn. Years of use have cracked them and dug long ruts filled with

<cloudless, hazy, partlycloudy, cloudy, darkcloudy>
dust and pebbles.
</>
<lightprecipitation, heavyprecipitation, storm>
dirty rainwater and rotting garbage.
</>

The gutters

<noitems>
are swept clean of debris
<lightprecipitation, heavyprecipitation, storm>
, allowing the runoff to flow freely
</>
. </>

<someitems>
contain a few piles of
</>

<manyitems>
are clogged and overflowing with
</>

<cheapitems>
rubbish and litter
</>

<expensiveitems>
interesting looking trinkets
</>

<cloudless, partlycloudy>
, baking in the sun
</>
.

</FLOOR DESCRIPTION>

Given enough tags (weather, time of day, item presence, temperature, lighting level, lighting source, etc.) rooms could be described in a very detailed and realistic manner. The descriptions would reflect the environment that the players are immersed in.

"ACK," you say. "That is a lot of work for one part of one room description!" And I would have to agree. If a mud decided to implement this there would have to be serious commitments on the parts of the builders using this feature. However, to somewhat offset the extra work consider if four or five or nine items similar to the cobblestones above were created and used for the entire city. No two adjacent rooms would have the exact same floor and it makes sense that the streets would all look alike. If there were something special about one room's floor then a special customized object could be made. I think that intelligent text reuse can go a long way. Just make sure that, in the end, each room looks different. :)

For me, at least, these kind of touches are what make muds stop being scrolling text and become a world. Enjoy, and good luck.


Eli Stevens has been mudding for well over five years, most notably as KiZurich on The Creator's Shadow. He has no immortal experience to speak of, however he is working on a custom server project, Greymud.