A C1 CAOS Lesson for Everyone
Written onI shied away from Creatures CAOS for a long time, because it does require some time to learn and understand. By no means do I consider myself an expert, yet I’m pretty happy with how my knowledge is coming along! That’s always what I encourage everyone to do with Creatures: Find something new, know that you won’t be a master overnight, and have fun learning along the way! I often ran away, like this terrible graphic shows, but now I want to just introduce the concept of CAOS in Creatures 1. We’re going to start with a very simple script, which shouldn’t scare anyone away! Enjoy, and please feel free to ask questions! And never be afraid to offer a different opinion or correct me: I’m not always right!
First, what is CAOS? It is explained in detail at the Creatures Wiki, but simply think of it as a programming language. Although all of the Creatures games use it, it differs from game to game. I’m currently only looking at Creatures 1 CAOS, so keep this in mind if you plan on examining Creatures 2 or Creatures 3 and Docking Station! Every object in C1 has at least one script behind it, and this simply defines what it does. If we didn’t have scripts, objects wouldn’t do anything, and Albia would be one boring place. CAOS can be complex, but let’s take it one step at a time!
There are a couple of resources and programs I recommend for understanding C1 CAOS. First, download the Official Creatures CAOS Guide. It’s long, yet using the search feature to find specific commands works wonders and makes it seem a lot less intimidating! Another important resource is the List of Script Numbers. The values correspond to all different types of actions. Don’t worry about this list, though! Most objects only use a couple of these scripts, and this is simply a tool to understand some of the values in CAOS. The most important part of learning CAOS is to understand the scripts of a working object. This can be a COB, or an object already existing in Creatures 1 (like a carrot or spinning top). I use CrEd32 to extract the scripts from a COB file. As for existing objects, Amaikokonut kindly let me know about a feature in BoBCoB, called AutoScript. This works nicely, yet it can only extract the scripts for one object at a time… And it takes a long, long time.
As if by magic, a solution to extracting all of the C1 scripts was released today at The Shee’s Lost Knowledge! I have little else to say except: Try it out! In just under a minute, the program extracted 189 scripts from a brand new world in Creatures 1. It is simply amazing, and a perfect way to start looking at CAOS! Again, don’t worry about the fact that there are so many scripts. Take a simple object with just a few scripts, and it isn’t too terrible trying to understand what it all means. We’re going to be looking at the basic carrot, and it should become clear about what the problems are with it. Although I’m going to release an update myself very soon, please don’t think that means that you’re not allowed to make your own fix for the carrot! It might just be the perfect way to start understanding CAOS. Let’s jump in!
Annotating the Carrot’s Activate 1 Script (2 6 3 1)
I know this is the right script because it corresponds with the class number for the carrot (2 6 3), and is for the activate 1 script (script number 1). Need more help understanding this? Ask away: I’m happy to explain more!
CAOS Code | Explanation |
---|---|
scrp 2 6 3 1 | Some programs begin with this line, while others name the file by it. This simply creates a new script for 2 6 3 (carrot) for script number 1 (activate 1, or push). Everything included here will happen when a Creature pushes, or eats, a carrot. |
doif pose gt 4 | If the carrot’s pose is greater than 4, the following commands should be executed. You may need to use a program to open the sprite file for the carrot (pars.spr) to understand this better. However, poses for 5 and 6 are for the full grown carrot, while poses 0-4 are for seedlings. Hence, only full grown carrots will continue on with this set of doif (pronounced “do if”) instructions. |
stim writ from 10 255 0 0 35 100 34 70 57 100 0 0 | This looks long and crazy, but don’t rush off just yet! The first part, stim writ from means that a stimulus will be emitted onto the Creature who is pushing (eating) the carrot. The portion 10 255 0 0 is a little beyond the scope of this first lesson, but these values define the significance, sensory lobe neuron, intensity, and features. We’ll leave those for another time! 35 100 is in the format of the chemical number, followed by the amount of it. Simply put, this means 100 units of hunger decrease (chemical 35). 34 70 means 70 units of NFP decrease (chemical 34), while 57 100 means 100 units of starch (chemical 57). The final 0 0 means that a fourth chemical is not used with the carrot. We can understand this to be the set of chemicals that a Norn or Grendel gets from eating a carrot. |
snde chwp | Back to an easy one! If the object is on the screen, this line states that the sound file chwp.wav will play. We all probably know that sound! |
pose 0 | Here lies the part of the script that confuses Creatures to no end. This means that the carrot will now return to pose 0, which is a seedling. At this point, it was already eaten and we would have heard the chewing sound. The problem? The Norn or Grendel is still holding the carrot! Setting the pose like this is a useful piece of CAOS coding, but this is a surefire way to confuse everyone here. I’ll be explaining how I’ll fix this line in a later update: It’s a bit long, but not too bad! |
endi | A short piece of code comes with a short explanation: It marks the end of the current doif statement. Always pair this with a set of doif instructions! |
endm | Surprise: This terminates the current script! It’s another requirement, that is like a “The End” in the coding language for each script. |
Breaking Down the Script Even More
What does it all mean? When a Norn or Grendel pushes a full grown carrot, he or she receives 100 hunger decrease, 70 NFP decrease, and 100 starch. A chewing sound can be heard to indicate that the carrot has been eaten, and then said carrot turns into a tiny seedling. And that’s it! There are still several other scripts to go through, yet this one defines what happens at the most crucial moment: Mealtime! Check back soon to learn more C1 carrot CAOS!
so happy to see this post, I’m glad people are still playing. :)
Creatures is one of those games that really has stood the test of time! Do you still play? You can find updated versions of the games at GOG, and these work on many newer operating systems. There are still plenty of Creatures players out there, thankfully, and I hope that some new people will find the games, too!
This is really interesting. I’m looking forward to seeing more of this sort of stuff!
I actually quite liked the ‘terrible’ picture…
Thanks! I always find it fun to share what I’m learning. And watch out… I’m sure that’s not the end of my silliness with images! I did laugh when I made that one, though. We’ll have to see if I can find another one to represent CAOS!
I love this game, I’ve been trying to get into caos scripting but I’ve been having trouble getting on the gameware development website. Is there another place I can get these things besides that site?
Unfortunately, the Gameware domain expired a few weeks ago. I’ve been trying to contact the company, but have yet to receive a response. There are some pages and downloads that were archived, although not everything was saved. You can, however, download the Creatures CAOS Guide! Is there anything else in particular you’re looking for? I’m giving Gameware another week or two to respond before I look into getting together the archives from a few people who saved them. Hope this is of some help!
Thank you so much!
You’re very welcome! I’ll post a main update when I get somewhere with Gameware. Maybe that’s optimistic, but I’m not ready to give up just yet! If there’s anything else you can’t find in the meantime, feel free to post away!