Developed by Ragnar, Jabari and Waydya (wow!)
Three years ago (1998) I decided to see if I could build a dynamic maze that is easy to change so it provides new challenges all the time. I wrote some generic programs for generating mazes of different sizes and descriptions, then got a bit more specialized and did some more work on a 7*7 maze that I called the Rainbow Maze.
The first Rainbow Maze was built on FuzzyLogic by Jabari; when he left the project was taken over by Waydya who rebuilt the maze on SpinDizzy. So far it has been solved by twenty (!) players that I know about for the simple reason that they all claimed the prizes found at the other end.
About the time the second prize was claimed (check the Hall of Fame) I had some trouble with my hard disk and ended up reformatting the work partition. A lot of files were lost, including my maze files. Well, nothing to do but start from scratch (with some data downloaded from Waydya's maze) then. So this is kind of Mark 2...
Enough talk! How do you make one? Well I had to write and test a lot of programs, you are lucky because most of the work is done already. Let's go through the steps...
(Of course there are ways around everything...)
Step 2 is to create a room and enter it. This is best to do manually and it's only two lines anyway, so get on the MUCK and type
Yes, that's two equal signs! You can call the room anything you like, but it's important that it gets registered as "$maze". If the second line fails try @tel me=$maze instead. This is going to be the parent/environment room of the maze, so
Step 3 is to set up various properties and create some actions. Just download this file and send it to your character, and it should set up various properties on the room and create some actions to boot. More about this later.
Step 4 is where you start squandering your qouta ;) by building
ROOMS! This file does all the hard work, just treat
it like the previous one.
Now take a look at the room. You should see all the new rooms inside it - this is because it got set as their parent room. (You may want to set the room Dark to avoid getting spammed every time you enter...)
You can now take a bit of time off from construction to make a little test.
Teleport to any of the rooms (they don't have exits yet, right?) and try to
move in any of the main compass directions. Then type map and
check that you see an empty 7*7 grid. This is another thing that will
become a bit more sophisticated later. ;)
Check any of the other rooms and you should see the same thing there. The place sure could use some exits, right? Well guess what next step is about!
Step 5 is where you really start getting wasteful - it's time to make exits from all the rooms into all the neighbouring ones! Don't worry, this file takes care of that bit. And it does it all with regnames, so you don't even have to move!
Now you can teleport back to the maze (unless you did the last step from there, which should be quite possible.) and try to move around a bit. A bit boring without exit messages? Fear not,
Step 6 is where you stop creating things and start modifying them.
First make something - it can be an object or an action, but you've made so
many actions already, so an object would probably be better. The important
thing is to call it xx then use this little
file to put some cryptic properties on it. Then use
this file to copy the properties to all the exits in
"Wait a sec," you say."All the exits? Shouldn't the different directions be, uhm, different?" The answer is no, there is a bit of clever (?) code taking care of that.
A note: This last step assumes that the cp command is installed on your MUCK and that it accepts wildcards (to copy all properties). Look at the file and type one of the lines manually first to check. If it doesn't work, let the staff know what a handy command cp is, particularly when it can accept wildcards. If they refuse to listen, contact me and I'll show you the hard way. ;)
Step 7 may not be necessary if you can already see the exits from
the maze rooms. Some MUCKs are like that (SpinDizzy is one), most others
need to run a special program when you look at a room. It is generally
registered as $ObvExits, so check that first. ex
$ObvExits, for instance. If that doesn't work, go to a room you own
that shows its exits and see what's in the "Success:" setting,
then edit this file to set that @succ on all the rooms.
(global replace is a great function, huh? ;))
Oh, and treat it the usual way once you have established that it works!
Time to make one of the maze's functions a bit more interesting. Remember when you typed map and got an empty grid?
Step 8 takes care of that. This file sets some properties on the different rooms that make the map a bit more interesting. Sure it would be great if the map could show where you have been and what doors you found leading away from there, but that would require some special MUF programming I think. What I have done is use a bit of coding and cross references to make the map command show your position in the maze. (By all means, if you are a coder and think you can make a program to produce a display as described above, Let Me Know! <g>)
Step 9 That's it.
Well, almost. There is a manual (and creative) part left: Making
descriptions for all your new rooms! I have described a handful of the
rooms in Waydya's maze, but don't really want
everyone (assuming anyone wants to build a maze at all and it isn't just
me) to just copy those. And if your quota can take any more strain, you can
put some actions and objects in some of the rooms as well to liven it up a
bit (like I did).
Oh, and one more thing. Remember that you need a way to get people into your maze! A door (or several doors fur that matter) from somewhere, or just make the Red Square a public teleport location (My maze can be reached through one of several "Rainbow Crystals"). You should also think about what to give anyone who solves the maze. Waydya gave the first ten who solved a maze a Bastdan (Big And Shiny Thing that Does Absolutely Nothing) but that's my gimmick...(the past tense is because I changed that after the first ten. What is the new prize? Solve the maze (first) and find out!)
More later... If you want to see my maze "live", connect to SpinDizzy and start looking for a Rainbow Crystal. Okay, the simplest way to find one is to teleport to #5000 (!) (Yes, even guests can teleport on SD - I checked.), go out and enter the Crystal Room. Look at the crystal and the rest should be pretty obvious.