How To Build a World

I. Background

Make a background 8352 pixels wide by 1200 pixels high.  Make this using Creatures 256-color palette.  Save it as a BMP.  Convert it into a background sprite file with CrEd32 or a similar utility.  Give the sprite file a name four letters long.  Put the background sprite file in the Images subdirectory if it is not already there.

II. Rooms

Make a room layout plan to fit into a map 8352 pixels wide by 1200 pixels high.  Point 0,0 is at the upper left.  The bottom right is 8351, 1199.  Define all your rooms in terms of left, top, right,and bottom co-ordinates.  For purposes of installing them later you must define them as indoor, outdoor, or underwater.  Assign numbers to them, starting with 0.

1.	Don’t make the floors of the uppermost rooms higher than 200 (that is, less than 200 in value).  Floors higher than 200 may result in jerky screen motion when the camera tracks norns walking in that room.
2.	Make an import room in the vicinity of  2240 760 2970 930.  The creature import spot is hard-coded so you must have a room there for the incoming creatures.  You can experiment to refine this area if you want to make it smaller.  Eggs injected by the GK will also appear near here.
3.	No rooms can cross the wrap-around point, 8351 => 0.  You can cross this point with rafts, doors, or any type of transportation COB.
4.	You must have at least one room defined at every point across the width of the map or you will have one or more black holes.  Black holes are points where there is no room anywhere from top to bottom of the screen.  Anything or anyone dropped at these points will fall out of the graphics engine.  You needn’t use all of the rooms for anything if some of them conflict with your plan, but they must be there.
5.	Make sure the rooms are tall enough for the COBs you plan to put in them.
6.	If you don’t work well analytically you can use the “sys: edit” command below to design your rooms with the background in place.  However, the above guidelines still apply.

III. Matching Up I and II

To match the output of these two steps, use a copy of the blank world that you get when you open Creatures under the “doctor” cheat.  Save it under some name, then quit Creatures.  Alternatively use one of the starter sfc files I have available on my site.  Hexedit the sfc file to use your background file.  The name of the Albian background file, “back”, will be very near the beginning of the file.  Change this to the name of your file.  In the case of Terra Nornia I changed “back” to “buro”.  Save the file and quit the hex editor.  If you open that world now under Creatures you will see your new background.  There will be one room defined, at the import point.  You can ignore that and begin entering your own room definitions.  Rooms are defined thusly:

room # left top right bottom type

where type is

indoors = 0
surface = 1
underwater = 2

So “room 0 20 27 120 227 1” defines a surface room numbered “0”, 100 pixels wide and 200 pixels tall.  This is a rather worthless room, as defined.  A useful command is

sys: edit left top right bottom

This command displays a pink box.  You can test your room definitions against your background appearance with this command.  To remove a room, define it as “room # 0 0 0 0 0”.  It will be, if not actually gone, as good as gone.

IV. Connecting the Rooms

Lifts should be used for vertical movement unless you want to define a special class of vertical transportation such as sinkholes.  Installation of lifts is a very touchy and tedious operation but basically simple.

1.	Inject a lift by hand (using the edit command to place it) and place it on one of the floors where you plan for it to stop.
2.	Inject call buttons by hand (using the edit command to place each one), starting at the topmost floor and working your way down.  Make sure each call button is placed within a room or Creatures will crash immediately.
3.	Once you have completed all these steps for one lift you may go on to the next.
4.	You may make adjustments in the locations of the call buttons but you may not change the floors at which the lift stops.  You may adjust the lift itself from side-to-side.
5.	You may remove all the lifts and call buttons, but the call buttons remove as “2 2 0” instead of as “2 2 1” which is how they are installed.  You may not remove just one lift or part of one lift set.

I recommend that you save the world file and keep a copy at this stage in a safe place.

Rafts, doors, teleporter networks, cable cars, etc are all easily injected and removed by ordinary means.  You can test the world now.  Many of the creature scripts are missing, but you can see how it looks with norns inside it if you need some encouragement.  They will not be able to breed, nor will eggs hatch.

V. Finishing the Basic World:

1.	Add/modify creature and system scripts.  This is already done in the starter sfc files.
2.	Add egg scripts and an incubator.  
3.	Adjust the Incubator camera location with a hex editor.  Here’s how to do this last step.  Go in with the cheat and line up the camera for a nice view of your incubator.  Save the world as world.sfc (be sure you don’t need world.sfc before you do this!).  Go in without the cheat so you can save with camera locations.  Save the opening location by some name.  Exit.  Hex-edit the world.sfc file and search for “Incubator”.  You will see your saved camera location directly following that one.  Write down the four bytes following.  Open the working copy of your world with the hex-editor.  Look for Incubator.  Put those four bytes you wrote down into the file immediately following “Incubator”.  Save the working sfc file.  From now on Creatures will have that location correct when it opens your new world.
4.	Add the grendel mother, if desired.
5.	Add background sound effects (jungle, garden, etc), animated invisibles (torches, water drops, etc), and scenery.  I have not found any way of removing scenery, so be cautious here.  Scenery is basically foreground.  If you want to remove a continuous sound effect be sure to turn it off with a “stpc” command before removing the invisible COB which controls the sound.  Otherwise you will be left with a stranded sound effect and no way to remove it.  If the sound is controlled be a timer loop turn off the timer with a “tick 0” before executing the “stpc” and removing the COB.
6.	Optionally you can adjust the ground levels and disease populations.  Ground levels can be set with a COB.  Disease population adjustment is hex-editor work and has already been done in the starter sfc files.  Ground levels are used by some COBs but are otherwise not needed.
7.	Test, and keep on testing.

VI. Adding other COBs

You will discover that a lot of COBs are tailored specifically for Albia (or some other world).  Adapting them may be a lot of work but can be done.  Some COBs are perfectly OK the way that they are.  You can either analyze the CAOS code or just inject them and wait and see.  Which approach you use depends on how many testers you have and how good you are at CAOS coding.

VII.  Polishing

If you have the time and the ability, you really should go through your new world and verify what COBs are in it and what scripts they are using.  It makes your world easier to use if you make a list of what’s in there for your users, and the list makes a good checkoff list for final release.  You need to be sure you are supplying all the required sounds and images with your new world or you will be spending a lot of time in E-Mail correcting your errors.

VIII. Done!

Well, all except for the patches and user support . . .