We all now C2 has an complex ecology model, where temperature,wind light, radiation and others such parameters dynamically shape the worlds face.
But did you know that basic ecology elements are also present in C1 to some extent?
Let's find out about those together.
So where did it all come from?
One of the very first times ever I opened the C1 genetics kit, I stumbled upon gene 139 called "Get sleepy in the dark"
This got me wondering.
Well, I didn't know C1 had a light level system !
Browsing through the whole C1 Caos guide shows no sign of a "light level" parameter.
It shows that a wind and a temperature parameter exist though!
|Norns also seem to be able to perceive external temperature via emitter genes|
|Feeling outside hotness should inject the Norn with the corresponding Hotness chemical.|
That looks promising.
What about mapping the whole Albian room layout along with their attributes ( interior/exterior ) and wind and temperature levels ?
We can get the current games number of rooms by running :
dde: putv rms#
Which returns 29 in my world ( including a couple shelf cobs )
The following CAOS command can then list all room parameters for us :
setv var1 rms#,loop,dde: putv room var1 0,dde: putv room var1 1,dde: putv room var1 2,dde: putv room var1 3,dde: putv room var1 4,subv var1 1,untl var1 lt 0
This outputs a long ugly chain in the form:
Where the values are in order of appearance: room left, room top, room right, room bottom, room type(0=indoors,1=surface,2=undersea).
I'll spare you details of implementation this time as it's not that interesting, but by using python and the "PIL" module, we can easily make sense of that data and map in on Albia:
Here blue rectangles are outdoor areas, while red ones are indoors.
You might have noticed that no "underwater" room shows up.Actually they do, but they have some strange boundaries expressed with negative numbers that the quick script can't handle.I decided it wasn't worth bothering as only two underwater rooms are defined anyway.
So ok, we now know which rooms are considered indoors and which ones are outdoors.Not that useful.
Yet it at least shows us that contrary to C2, in C1 the rooms are only sparsely covering the map, and are not interconnected with any common edges.Passing from one room to another is always done through a vehicle.
This explains why using the "edit" CAOS command in C1 to carry a Norn won't allow you to get it out of the current room ( as Norns have the "roombound" attribute set.In C2 most of the rooms share common edges through which stuff can pass.
But what about temperature and wind then?
If you read the C1 caos guide, you'll realise that although "temp" and "wind" commands do exist, they are not tied to rooms.
Actually, even in C2, those return "values around current Targ", meaning you can't get a temp value by room, but must pick a target inside the room and check the perceived temperature/wind levels there.(Which explains why in C2 the t° information in the status bar doesn't change when you move around, it represents temperature as perceived by your currently selected creature.)
What about C1 temperature/wind map ?
The quickest way to find out is to enumerate through all possible objects in the world and get temperature around them while they're current Targ:
enum 0 0 0,dde: putv temp,next
The result isn't really as expected :
What about wind ?
enum 0 0 0,dde: putv wind,next
Let's check that against C2 just to be sure our approach isn't flawed:
So yeah, it seems that although present, both temperature and wind are unused in the original game.
That makes for a rather...anticlimactic conclusion for a climatology post.
(And I swear I didn't write the whole article for the sole purpose of this pun)
What more can we try to save from that failed experiment?
I still would like to understand whether those parameters are just present but unused or if they aren't even implemented.In the later case that would leave us an interesting opportunity to mod the simple C1 Albia to something more complete.
The way to check that is slightly more involved.
By digging inside the game executable code by itself with IDA, we can quickly locate the part where the CAOS interpreter operates:
Just as a quick example of what is found in there:
|This is the place where the "temp" keyword is detected when parsing CAOS scripts|
|And this is the place where a value to be given "temp" is computed|
If we have a peek at this function, we can see that there is some code actually running inside the "CAOSComputeTempVarValue" and supposed to give "temp" a value based on the passed target's coordinates.But in practice, it seems to handle "dead" unused data, and therefore always returns the same value.
This simply shows us that C1 already had some of the bases for the implementation of the C2 model, but that they weren't fully implemented in the released game (Nothing in there seems to feed the temperature/wind map).
This is a dead end for us, we won't be able to implement CAOS stuff that would "reactivate" the unused functions, as the mechanisms that should handle them backstage are inoperant (nothing in the game executable seems to set or manipulate the data those commands read out).
|This....is a lie.|
That having critically failed, what else can we check on the topic of understanding the environmental stuff?
Unfortunately in C1, the brain applet is pretty much useless and won't allow us to study the brain in an helpful way to determine if the "Creature->Sensimotor->Light level " "air is this hot/cold" environemental parameters actually trigger neurons at any given time inside the Norn.This isn't a big loss as we've shown that there's no variation in temperature or wind in the game anyway.
One last thing we could check though is the light system.
There's no light command defined in the C1 CAOS documentation.I also checked at the source inside the game executable, and although I've found a couple undocumented functions (nothing really groundbreakingly useful though) nothing light related.
So what does define the ambient light level supposed to make Norns sleepy (if the mechanism is used at all) ?
Maybe it's the indoors/outdoors qualification of each room that carries an inherent ambient light level acting upon our Norn's inputs?
We could check that.
The best we could do is to modify a test Norn's genome so light levels directly map to unused chemical level.By moving the Norn around we could then monitor the associated chemical for any changes.(drop me a note if you have any better/complimentary ideas!).
Let's do this :
|First we will add a new test chemical that will be easy to track.Don't forget to install the chemicals list.|
|...then add a new chemical emitter dedicated to this chemical.|
The conclusion is then that light levels also seem to be totally inactive in C1 despite being mentioned in the genetics kit.
My best guess is that all of this was unfinished work in progress that got released with the game, but was not yet in active use at the time.Since C1 and C2 seem to share a lot of common code, I'd say C2 is based directly on an improved version of the C1 engine, and those functionalities only came to full use after the second release( I'd be glad if anyone with "inside" information could confirm that btw.)
Sorry if you feel that I've wasted your time with a promising article title giving so few exploitable conclusions.But that is how exploration is.Sometimes you find cool stuff to share, sometimes not.Anyway, all of this contributes to its small extent to our overall comprehension of the game series.
I promise the next posts will contain much more interesting and readily exploitable information :)