Dreamweaving 101

by the skullkitty (16th May, 2007 @ 10:19 am)

Despite common perception, there is nothing esoteric about dreamweaving; the Furcadian term for creating custom ‘maps’ called dreams. Astute readers may notice that one of the main pastimes of F!W is reviewing dreams, and that many of these are indeed quite terrible. The good news is that terrible dreamweaving is almost invariably caused by things that are easily avoidable, such as bad planning and over-ambition (what’s known as featuritis in programming). Making beautiful dreams isn’t difficult, and you don’t even need anything other than the default Furcadia patches.

Shall we begin?

Dream Editor Overview

Dreamweaving 101: Dream EditorFirst things first; boot up the Dream Editor (DreamEd.exe), which you should be able to find in your main Furcadia directory. If you already have a dream open, select File > New in order to ‘clear’ the current dream from the editor’s memory. Note that the editor can only have one dream open at a time, and that dream is what is uploaded to Furcadia by pressing the Place Dream (Ctrl+T) button; though that being said you do not need to have the editor open in order to upload a dream.

By default, the editor opens up a 140×70 tile map, with a default ‘green grass’ background. Before we start, I’ll let you explore the editor a little bit (assuming this is your first time working with it). The main tools that you will be using are found to the left of the screen, under the minimap (which gives you a very small rendition of your overall dream).

Dreamweaving 101: Object PropertiesThe first thing is the object properties palette. In Furcadia, there are three types of object; floors, walls and, well, objects. As suspected, floors go on the ground. They are usually (but not always) walkable, and can have objects and furres sitting on top of them. Walls are generally impassible barriers… except when they contain doors. They stand on the ‘edges’ of floor tiles, and do not interfere with objects. Almost everything else in Furcadia is an object. Trees, tables and lamps are all objects, as are ‘gettable’ items like keys and weapons. Only one object may be in a square at a time. Objects are rendered (drawn) ‘underneath’ any furres occupying their square, behind any object/furre occupying a square in front of them, and in front of any object/furre in a square behind them. If a large object is occupying the same space as a wall, it may be clipped awkwardly by the wall segment in front of it.

The object properties palette shows information about the currently selected object/floor/wall, including its ID number, what it looks like, and whether it is sittable/gettable/walkable. If an object is walkable it means your furre can walk on top of it. A sittable object will force your furre to sit when they come into contact with it (such as chairs and pillows). And a gettable object can be carried around.

Dreamweaving 101: PaletteClicking on the preview of the object will bring up the full object palette. The interface is a little dated, but from this window you can pick which object/floor/wall you wish to place. Space bar will move to the next page of objects, until the selection has been exhausted and it comes back to the beginning. Left clicking an object will turn that into your ‘brush’ and you can then place it anywhere you like on the map. Left click to place the object. Objects ’stick’ to your brush, so in order to drop them you will either have to select another object, or to right-click in an empty square. Right-clicking onto of any object will also turn your brush into that object. Note that this will work depending on your brush type — as indicated by the three icons below and to the right of the object properties. If you’re currently working on walls, right-clicking on an object in a square with no wall will clear your wall brush rather than pick up the object. You can remove objects/floors/walls by either over-writing them with something else or by ‘drawing over’ them with an empty brush (object type #0). Note that floor #0 is grass; represent ‘dead space’ with black (#161) instead, though note that by default this is walkable.

Dreamweaving 101: ToolbarThe next thing to lookout for is the brush-type toolbar. Generally you want to be placing single objects (the pen), however to fill in a defined area you can use the selection. To fill in the whole area, use the bucket.

Dreamweaving 101: Square InformationThe final thing we’re going to look at is the Information palette. This will give you info some details about the square your brush is currently hovering over, as well as the general size of your dream. The Current X and Current Y values are especially useful, and we’ll be pulling them out later on when we start up with DragonSpeak.

Anyway, get the hang of the editor by laying down some random floors, walls and objects. The interface is pretty archaic (though as of the Kitterwing update you can actually resize the viewing window; gasp) and I find it takes a lot of getting used to. When you feel that you’re doing okay, ‘clear’ your existing dream by going to File > New. We’re ready to build our dream.

F!W’s Tutorial Dream: The Grotto

There are a lot of big dreams in Furc. In fact, oversized and empty dreams seem almost de rigueur. I hate these things with a passion, so we’re not going to make one of those. Instead, we’re going to make a small ‘grotto’ space where we can hang out and chat with a few friends. In keeping with this theme, we’re going to make a small forested area; not unlike the one that graces the current F!W header image. In this tutorial we’re also going to start up with some basic DragonSpeak, including commands and an animation. Sound good? I thought so.

Dreamweaving 101: Dream SettingsOkay, first things first; before we even lay down a single floor tile, go to Patches > Dream Settings (Ctrl+L). This window is fairly self-explanatory, and you can pretty much fill it in however you want. Note that we aren’t using a custom patch. For now, the default stuff that comes with Furc is good enough for us. When you’re done, click OK. Before we continue, we should really save our dream. Stick it wherever you think you’ll be able to find it again; mine’s in My Documents/Furcadia/Dreams/fwtutorial.

Dreamweaving 101: Landscaping 1With that saved, it’s time to start building our dream. This is the fun part. We’re going for a secluded forest grotto, so start out with a square of grass in the top left corner of your map. You’ll have to expand this out later, but for now this is a good starting point. Now it’s time to start adding the detail. I built up the map in the following way:

  • First I added a ‘frame’ of large trees around the north-west and north-east borders.
  • Next I started to lay down some mid-size shrubs and ferns. We want a real ‘enchanted forest’ kind of vibe, so keep everything tight and busy; but remember to leave it open in the middle.
  • More details, including the long grasses. I originally added a border of shrubs around the south in order to give the place a ‘cross-section’ kind of view. However it looked way too regular. Hrm…
  • More big trees! This time, we want to completely pad out the viewer’s windows (it’s that large square that appears around your cursor) so that no matter where they’re standing all they can see is green.
  • I laid down grass floor underneath my ‘forest’. Small gaps were filled in with more smallish shrubs/trees.
  • Once satisfied with the greenery, I threw in a few random rocks.
  • Finally, I added a pond (#1070) to the northern corner.
Dreamweaving 101: Landscaping 2 Dreamweaving 101: Landscaping 3 Dreamweaving 101: Landscaping 4

The trick here is wabi-sabi; you’re trying to emulate a ‘natural’ scene, so don’t be too regular. There is enough default greenery in the basic Furcadia items list that you should be able to avoid have too many of the same object standing next to itself (except for the grass, since this is the look we’re going for). Essentially, you want to landscape like a bowl; high stuff around the outside, lower stuff in the centre. Use a few rocks as accents, but not too many since it will weigh down the scene. Remember; enchanted forest!

Once you’re happy with your initial landscape, go Walkthrough > Run Walkthrough (R). This will open up a kind of faux Furcadia session. Wander around a bit. Check your clipping. Check that you can’t walk off the map. Check that you can’t see any ‘black space’ devoid of trees. I should point out that the editor’s walkthrough renders objects a little differently to the real Furcadia, and it sometimes misses the corners of large objects that have their base off screen. Furcadia itself doesn’t do this, but if you’re worried about ‘holes’ around the edges, backfill underneath the outside trees with smaller shrubs.

Dreamweaving 101: Walkthrough 1 Dreamweaving 101: Walkthrough 2

Dreamweaving 101: The Unwalkable ObjectAnyway, I found two errors in the walkthrough. One was a path were I could walk off the map; back in the editor I blocked this up with a larger, non-walkable bush. The second was the fact that my furre could walk under the pond. This is a classic example of bad clipping and something that should be cleaned up. The area was too open to add in more bushes, so instead I went and found object #254; the Unwalkable Object. Technically invisible, the Unwalkable Object does exactly what it claims; furres can’t walk onto any square it occupies. Since the ‘base’ for the pond is actually in the object’s bottom right corner, I filled in the rest of the tiles underneath it with Unwalkable Objects. I then re-ran the walkthrough a couple of times to make sure I was satisfied with the ‘neatness’ of my creation. Neatness is very important in ‘weaving, and easily separates out the great dreams from the mediocre ones. Yes, your visitors do notice, so make sure to take some time to clean up.

Dreamweaving 101: Starting the DS EditorOkay, so now we’re reasonably happy with the look of our dream, but what about what it does? Well, right now it does nothing. Let’s fix that; go DragonSpeak > Run DS editor (D).

Basic DragonSpeak

Dreamweaving 101: The DS EditorThere’s nothing scary about DragonSpeak. While you can do some crazy fun stuff with it, the basics are pretty basic and it doesn’t take much to make some impressive dream effects. The first thing you have to know about DS is that it’s pretty much written in English; commands do exactly what they sound like they do. The second thing is that the default DS editor neatly lists out all the DS commands, numerically by type, and clearly marks up what variables each line expects.

The first time you open up the DS editor in a new dream, you’ll see a few lines similar to the ones above. It’s not doing much; nothing really except for suggesting a start location for furres who warp into the dream. This location is probably wrong. To fix it, find the co-ordinates of a tile that is better using the Information window (see, I told you Current X & Y would come in handy). Change the brown numbers in the brackets on 5:15 to these co-ordinates. Test it with the walkthrough. That’s your start location. Easy.

Some more notes about the DS Editor. The layout is fairly intuitive; the main part of the screen is filled with the raw commands, while the bottom pane lists all possible commands broken down into Causes, Additional conditions, Areas, Filters and Effects. Have a flip through these tabs to get a bit of an understanding on what the difference is and how to use them. To add a command to your script, simply double-click it in the bottom pane and it will appear at the position of your text cursor, all neatly indented and everything. Variables are marked by the editor in brown; the brown text indicates that you should add in your own values.

One more thing before we start; hit the little + button just above the commands reference until it reads Expert (variables). This will open up all DS commands instead of just giving us a basic list.

Okay, let’s start coding. We’ve got something that plunks a new furre in the dream down at some starting location, but that’s it. We should probably be nice and give them some kind of direction when they get there. This is called the entrytext, and we set it using 5:210.

/* setting up the dream */
(0:0) When everything is starting up,
(5:212) set silent speech prefix (for spoken commands) to {*}
(5:210) set entrytext to {Welcome to <b>The Grotto</b>. Type <b>*help</b> for help.}

0:0 indicates to us that the following effects will be executed when the dream is first uploaded, and will continue to be in effect for the entire life of the dream. We’ve set two effects to occur; 5:212 and 5:210.

5:212 is a great effect that not nearly enough dreams use and I can’t for the life of me fathom why. You use it in conjunction with spoken dream commands to ’squelch’ (silence) the output. I’ve used an asterisk here, so anything anyone says anywhere in the dream, whether it is a command or not, starting with an asterisk will not be broadcast to other furres. Technically you can use any character — or string of characters — here, but be wary of anything used internally by Furcadia (such as `) or by common proxies (like Furnarchy’s use of @).

5:210, meanwhile, sets the dream’s entrytext. This will be shown to any furre upon entry into the dream. The ‘usual’ Furcadia HTML (<b>, <i>, <u> and <a>) works here; and in fact in any text DS sends to Furc’s chat buffer.

To test your DS, you can either upload your dream to Furcadia somewhere or run it in a dev environment like Dreamer. Actually, Dreamer is pretty awesome and y’all should download it anyway. Go do it now.

The next thing we’re going to do is the animation, mostly because it’s really easy and looks cool. The code for it is:

/* the animation */
(0:100) When 1 seconds have passed, offset by 0,
(3:1) everywhere on the whole map,
(5:400) Cycle the three object types in this sequence one step forward: 1070, 1071, 1072.

0:100 sets up what is called a ‘tick’. The first number (in this case 1) represents the number of seconds that you want each tick to ‘fire’. This particular cause ticks every one second. The second number is how many seconds ‘delay’ do you want before the tick starts. We want it to start immediately, so we put 0.

3:1 is a filter, but it’s a pretty all-inclusive one; it tells the cause to work everywhere on the whole map.

Finally, 5:400 does the actual animation. It takes three object IDs and simply cycles through them; so Object #1070 becomes Object #1071 and so on. The three objects we’ve specifies here are all versions of the pond with different surface ripples, the end effect looks animated.

The next set of commands are all variations on a theme, so I’m going to lump them together. They’re the different dream commands.

/* dream commands */
(0:31) When a furre says {*help},
(5:200) emit message {You may use the following commands within this dream:} to whoever set off the trigger.
(5:200) emit message {<b>*help</b>: You’re looking at it.} to whoever set off the trigger.
(5:200) emit message {<b>*about</b>: Basic dream information.} to whoever set off the trigger.
(5:200) emit message {<b>*look <i>[object]</i></b>: Look around or at objects.} to whoever set off the trigger.

(0:31) When a furre says {*about},
(5:200) emit message {<b>The Grotto</b>, a tutorial dream developed by the nice folks at <a href=”http://furc.void-star.net/wank”>Furc!Wank</a>.} to whoever set off the trigger.

/* looking */
(0:31) When a furre says {*look},
(1:8) and they can see position (18,21),
(5:200) emit message {You have reached a small clearing in the forest. A small <i>pond</i> ripples gently to the north, and a small ring of <i>rocks</i> have been laid out in the south.} to whoever set off the trigger.

(0:31) When a furre says {*look pond},
(1:8) and they can see position (18,17),
(5:200) emit message {A small <i>pond</i> ripples gently in the breeze. You think you can see something glinting at the bottom…} to whoever set off the trigger.

(0:31) When a furre says {*look rocks},
(1:8) and they can see position (18,23),
(5:200) emit message {A small ring of stones has been arranged here. They look perfect for sitting and enjoying the scenery.} to whoever set off the trigger.

Dream commands! Note that we’ve prefixed them all with our squelch-character (*).

I suspect at this point it’s fairly obvious, but I’m a big fan of those old-style command-based adventure games; things like King’s Quest and Zork. To that end, here I’ve set up a system of ‘looking’ very similar to the one which used to appear in those old games. They all use the additional condition 1:8, which is pretty useful in this kind of situation since it checks what is drawn on a furre’s screen, and whether they can ’see’ a certain object (there are other conditions that you can use instead, including make sure a furre is standing in a particular spot, or within a certain area). Obviously it makes no sense to *look pond if there’s no pond to look at. Objects that can be looked at are marked with italic text in descriptions just as a little visual clue to the visitor.

Dreamweaving 101: One Last LookAnd that’s about it. Save your DS and re-test your dream; congratulations, you’ve successfully made a neat little semi-private where you and some mates can hang out, enjoy the gentle ripples of your animated pond and relive 1989 with your text-based look commands. You’ll note that in my final product I re-arranged my previously semi-random rocks a bit into a sitting ring. Hopefully by now you’ve had enough of an introduction to the dream and DS editors that you can start compiling more extensive dreams. Remember; have fun and experiment!

As to the glinting object in the bottom of the pool? Well, you’ll have to wait for the next tutorial, won’t you?

Dreamweaving 101: Finished Product

More…

Popularity: 28% [?]