Developed by Ragnar, Jabari and Waydya (wow!)

Every now and then someone on a MUCK gets an idea to build a maze. The problem with most such mazes is that their layout is fixed, there is only one solution. Once you have found the exit, you're finished with it. Also, most if not all mazes are built by hand by someone walking around and saying "Okay, I think I'll put a door here!"

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...

Step 1 is of course to check if yor MUCK has any quota limitations. If it does, ask the quota wiz if you can have yours increased by 50 rooms and 171 actions. (!) If there is no limit, no problem. Proceed.

(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

@dig MazeCore==maze
t $maze

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 the maze!
"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.

That's it??? Yes, you are now the proud owner of the framework of a Rainbow Maze, and can theoretically make it a proper maze by locking selected doors and setting the locked ones dark to avoid confusion. (Look at a door before and after setting it dark, and you should see something interesting!) Hovever, one point with the Rainbow Maze is that you don't have to do that - I have written (and reconstructed) this clever program that generates a maze and writes a command file to create it (or rather set up the maze you just created!), but that and other things come under maintenance, and there is a special page for that. This one deals with background and creation, which is now finished.

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.

Rainbow Maze © 1999-2K2 Ragnar Fyri. All rights reserved.
(That includes software, graphics and web page.)