CAOS Change Comparisons
Apr. 24th, 2022 02:53 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
The Creatures Evolution Engine was used for four games in total – Creatures Village, C3, DS, and the Virtual Sea-Monkeys (yes, there was an official Sea-Monkeys game based on the Creatures engine; no, it was not very good). The engine was tweaked in various ways across those games, and one aspect that changed was what CAOS commands were included.
I recently updated some CAOS command articles on the wiki to section off DS-only commands from those used by both C3 and DS (useful if you want to develop for C3 standalone in conjunction with DS – though I don't know if anyone play C3 standalone nowadays), and it got me curious how CAOS evolved through those games. So I diff'd a bunch of CAOS guides against each other to find out. (That is, I used a tool to find the differences in two documents that have large amounts of similar text.) What commands were spin-off exclusive? What was added to DS besides the networking support?
(Thanks to ghostfishe for the CV CAOS guide and Doringo for the SM one! Post continues below the cut because of length.)
Creatures Village and C3
Surprisingly, the CV CAOS actually is more advanced compared to C3 and is listed as being a later version number. I suspect what happened is that Creatures Playground, which came out after C3 and merges with Creatures Adventures, included a lot of updates that would go on to be used for DS. But I only have the CV CAOS guide to go off of, not the CA standalone one.
Looking at the new commands, some of them are generally useful – and were inherited by DS – and some of them were concerned with CV-only features like clothing and mostly dropped by later games.
The new commands in CV are:
There were also three new attribute flags: one that makes an agent receive clicks without firing messages, one that makes an agent not fire its default push/click animation, and one that makes creatures unable to walk in cabins.
CV and DS
CV has 581 commands. DS has 666 (lucky number!). Now, a lot of those are related to online features, but some of them are also useful for your average agent-maker who isn't screwing around with Albian Warp. Some of the descriptions were also added on to, and some commands were given both get and set versions (cwiki often calls these 'functions' and 'commands', but I'm not sure where that convention came from, because that's not how the words are used in programming). By get and set variations, I mean a version of the same function used to either get some property or to set that property. ATTR, for examples, can be used by itself to return the attributes of an agent, or can be used with an attribute flag to set it.
There are a lot of new commands, so I've split them by category for ease of reading.
Agents:
Brain:
[various CD player commands]
Compounds:
Creatures:
Debug:
[various network commands like webb, hist netu, etc)
Input:
Motion:
Resources:
Time:
Variables:
There is also 'varc', which is definitely unimplemented per documentation. PRAY SIZE has been deleted.
These commands were changed from CV:
These commands received a new get version:
DS also gets new additional attributes instead of the CV ones – rotatable and presence – though it's not clear if they were implemented.
DS and Sea-Monkeys
The SM CAOS is overall pretty similar to the DS one with web commands removed; the version number for the engine is also listed as the same. Nevertheless, a few new commands for visual effects were added.
SM CAOS also loses TINO for some reason.
I recently updated some CAOS command articles on the wiki to section off DS-only commands from those used by both C3 and DS (useful if you want to develop for C3 standalone in conjunction with DS – though I don't know if anyone play C3 standalone nowadays), and it got me curious how CAOS evolved through those games. So I diff'd a bunch of CAOS guides against each other to find out. (That is, I used a tool to find the differences in two documents that have large amounts of similar text.) What commands were spin-off exclusive? What was added to DS besides the networking support?
(Thanks to ghostfishe for the CV CAOS guide and Doringo for the SM one! Post continues below the cut because of length.)
Creatures Village and C3
Surprisingly, the CV CAOS actually is more advanced compared to C3 and is listed as being a later version number. I suspect what happened is that Creatures Playground, which came out after C3 and merges with Creatures Adventures, included a lot of updates that would go on to be used for DS. But I only have the CV CAOS guide to go off of, not the CA standalone one.
Looking at the new commands, some of them are generally useful – and were inherited by DS – and some of them were concerned with CV-only features like clothing and mostly dropped by later games.
The new commands in CV are:
- alph – In C3 standalone, your options for transparency are 'make every other pixel transparent' and that's it. Though it's said to be more processing-intensive, ALPH lets you just make something translucent in every other game. (Unless it's a creature, far as I can tell.)
- bmps, imge, prnt – CV only; they save sprite images as a bmp in My Pictures or print them, which sounds like part of some child-oriented CV features.
- drop – C3 has code forcing ettins to drop off gadgets in the desert, and yet it doesn't have the drop command!
- hedx, hedy – CV only; looks like these are used for accessories.
- ontv – Renamed to visi in DS.
- scle – CV only; scales up images, which sounds like it might have been used for visual effects.
- show, tran, char, expr, wear – CV only, kind of – the commands were changed in DS
- mirr – CV only; mirrors either whole scene or just agents.
- scrl – CV only, controls scrolling setting.
- tnto – CV only; tint but for clothing.
- pat: char – CV only; makes a part that receives keyboard input – not really sure how this is different from using pat: text or keyd + script numbers, but maybe it was a convenience function?
- bred – CV only; returns the variant number for the body part of a particular creature
- dyed – CV only; sets clothing layers
- rset – CV only; puts the last stored clothing set on the creature, which is set by stre.
- stre – CV only; stores the current clothing set.
- swap – CV only; swaps a body part with that of another variant.
- tntc – CV only; tints only part of a body! That would've been nice to have in DS :(
- file exec – CV only; launches an exe file.
- lang – CV only; returns the preferred language (e.g. French, English, etc). DS did language support in different ways.
There were also three new attribute flags: one that makes an agent receive clicks without firing messages, one that makes an agent not fire its default push/click animation, and one that makes creatures unable to walk in cabins.
CV and DS
CV has 581 commands. DS has 666 (lucky number!). Now, a lot of those are related to online features, but some of them are also useful for your average agent-maker who isn't screwing around with Albian Warp. Some of the descriptions were also added on to, and some commands were given both get and set versions (cwiki often calls these 'functions' and 'commands', but I'm not sure where that convention came from, because that's not how the words are used in programming). By get and set variations, I mean a version of the same function used to either get some property or to set that property. ATTR, for examples, can be used by itself to return the attributes of an agent, or can be used with an attribute flag to set it.
There are a lot of new commands, so I've split them by category for ease of reading.
Agents:
- abba – Returns the absolute base for a compound agent.
- call – Call a subroutine script on the script owner with a specified event number.
- cata – Returns a target's classifier.
- cato – Change the target's classifier.
- core – Manually set a bounding box.
- tcor – Tests manual setting of the bounding box to check if it is okay to use.
- dcor – Show the bounding box graphically.
- dsee – Show all agents that can be seen by any creature.
- gall – Return the sprite file (aka gallery) used by an agent.
- tino – Tint only the current image.
- ucln – Frees up memory by un-cloning the agent, which is usually done for things like TINT. This does mean that it will lose any tint.
Brain:
- adin – Add an instinct to the brain processing queue.
- doin – Make a creature process some number of instincts.
[various CD player commands]
Compounds:
- pat: move – Moves a compound part to a new relative position.
- pnxt – Cycles through compound agent parts.
Creatures:
- boot – Loads in bootstrap folders.
- calg – Choose or return how creatures decide which object in a category to look at.
- limb – Returns the filename for a specific part of a creature.
- mind – Set or return whether a creature's neural network is frozen.
- motr – Set or return whether a creature's motor faculties are being processed.
- new: crag – Make a non-skeletal creature – a creature that has genetics and a brain but whose body is a normal agent.
- plmd – Dumps dendrites in a tract to file.
- plmu – Configures dendrites in a tract from a file.
- seen – Returns the agent which the creature is focused on for a specified category.
- soul – Enable or disable, or return the status, of updating various creature faculties (brain, biochemistry, etc).
- step – Does one update of one creature faculty.
Debug:
- bang – Cause a divide by zero exception (for stress-testing the engine).
[various network commands like webb, hist netu, etc)
Input:
- hotp – Returns the part number under the pointer for a compound agent.
- calc – Recalculates all navigational CAs (useful if door glitches them).
Motion:
- admp – Get or set angular velocity damping (unsure if this is actually implemented).
- avel – Get or set angular velocity (ditto).
- fdmp – Get or set forward velocity damping (ditto).
- fvel – Get or set forward velocity (ditto).
- sdmp – Get or set sideways velocity damping (ditto).
- svel – Get or set sideways velocity (ditto).
- angl – Gets the angle from TARG's position to the given x y coordinate.
- rotn – Supposed to automatically rotate agents given the sprite files – not sure if implemented.
- spin – Rotate to a particular heading – not sure if implemented.
- vecx/vecy – Returns a vector for the given angle.
Resources:
- pray back – PRAY PREV except it stops cycling when it gets to the beginning.
- pray fore – Ditto for PRAY NEXT except it stops cycling at the end.
- pray kill – Deletes the resource file that contains a specified string.
- ject – Inject cos files from the bootstrap directory.
Time:
- buzz – Sets or gets the ideal interval in milliseconds for ticks. Tempting to play with on modern machines, though it tells you not to.
Variables:
- dele/deln – Delete EAME/NAME variables.
- eame – Set engine variables.
- eamn/namn – Scroll through EAME/MAME variables.
- name/mame – Named variables.
- lowa/uppa – Make a string all lower/upper case.
- sins – Search through a string for a substring.
- modu – Returns a string listing the loaded modules and the display engine type (not sure what it means by modules; using it just tells me DS is using DirectX).
- ufos – Returns the operating system.
- notv – Perform bitwise NOT.
There is also 'varc', which is definitely unimplemented per documentation. PRAY SIZE has been deleted.
These commands were changed from CV:
- tran – Returns 1/0 instead of True/False, and now returns whether a pixel is transparent instead of not transparent.
- show/wear – Lost the get version for some reason.
- char – Goes from returning the last input character to a receiver to getting or setting a character in a string.
- expr – The setter function is changed to FACE.
These commands received a new get version:
- tint
- part
- volm
DS also gets new additional attributes instead of the CV ones – rotatable and presence – though it's not clear if they were implemented.
DS and Sea-Monkeys
The SM CAOS is overall pretty similar to the DS one with web commands removed; the version number for the engine is also listed as the same. Nevertheless, a few new commands for visual effects were added.
- blck – It says 'set the block width and height', so maybe like the bounding box?
- flip – Gets or sets whether the current sprite is vertically mirrored.
- outl – Draws a colored outline on an agent.
- rota – Sets or gets how rotated a sprite is by degrees.
- scle – Scales an image; sounds the same as the CV version.
- shad – Draws a shadow for an agent.
- strc – Stretches the sprite for an agent.
SM CAOS also loses TINO for some reason.