Saturday, June 6, 2015

Making a C1 and C2 Tricorder (knowing exactly what any cob does at a glance)

Creatures 2 could easily have become my favorite game in the series.
But as has already been pretty well explained, it was way to frustrating on many levels.

One of the major reasons I never really got into the game was the overwhelming quantity of new game items, plants and foods .
No guide existed at the time to explain their effects, and even today the few that exist lack in completeness or precision.And without any reference it was a very frustrating experience not to know what could or could not be eaten.I'll admit it, many of my C2 Norns never ate anything beyond cheese carrots or nuts by fear of the unknown.

Writing such a guide might be an option, but what about the various additional cobs one might not be aware of , or all future additions?
Can we be a little more clever about that?
What if we got a tool that simply told us what a cob does by hovering the mouse over it ?
That would be a creatures Tricorder of sorts, that we will learn to build together in this article.





Thursday, May 28, 2015

Finding out what is what in Creatures 1 & 2

One of the most frustrating aspects of trying to understand C1 or C2 cobs might just be the first step you need to take.

Say you are looking at an object, and wonder "What is this object's classifier so I can look up it's scripts ?"
Or the other way round ? What if you find an interesting script and wonder which object it governs?

I've found no easy way so far to answer those questions, and got tired pretty quick of trying to manually look up my targets each time.
 
Cross referencing the various online lists of classifiers didn't cut it either: many of them are at best incomplete when not downright wrong.And they are limited to the standard game items, with obviously no way to reference every single COB ever made.

Things don't have to be this way.
Read through this very quick article with me, and grab a tool that makes the job as simple as hovering the hand over an object to get the needed information.



Friday, May 22, 2015

A smart(-ish) C1 scriptorium browser.


One of the hard aspects of trying to understand the C1 internals is trying to figure out which scripts exist for a given object.



C2 and C3, both have "Scriptorium browsers" available, that make it easy to visually browse ALL existing scripts for given classifiers.

Surprisingly, C1 seems to lack such a tool, and leaves us with no easy way to be sure we found all scripts governing a given object or behaviour.

Why is that so ? On what mechanisms do those scriptorium browsers operate ? And what can we do about it ?

Follow me for some technical exploration of the mysterious Shees CAOS library, and if you bear with me to the end of the article, a proper, exhaustive C1 scriptorium extractor will be the takeaway :)


Wednesday, December 24, 2014

Parsing the Creatures 1 Graveyard file

 
One more victim of my file format reversing spree : the "The Graveyard" file containing all entries of C1 cemetery.



Parsing it will allow us to retrieve/edit/add all entries from this game file.

Tuesday, December 23, 2014

Understanding in game stores (Doctor's page and Aprodisiacs). aka "Health" and "Aphro" files.

There are two "stores" in Creatures 1, at least that's how I call them.

Those are the panels allowing you to inject additional items to the world through the Doctor's page and the aphrodisiacs page from the reproduction kit.

The C1 "Stores"

In this post I will show you reversing of those stores file formats, so we can replenish, parse, and edit them.

Sunday, December 21, 2014

Parsing the Creatures 1 "TheRegister" file. (extracting Norn birthdates and owner information).

This will be a real quick article about parsing the Creatures1 "TheRegister" file.
This is like a primitive version of the C2 history files. It's the file that holds all creature information saved when you register a creature's birth.



They contain information about the Norn such as name, parents, date of birth and all owner info.

There's nothing really fancy about reversing and understanding the file format, so let's get this done.

Wednesday, December 17, 2014

Investigating Creatures 1 Teleporters

Alright, despite having loads of stuff in store, maybe I'll take a break from gory reversing stuff for this post, before I loose all of my readers (yeah, something like "both of them") :)

So why not take this opportunity to study something more generic? what about investigating how C1 teleporters work?


A happy Norn family, ready for exploration of time and space.



It only requires a bit of CAOS reading and your favorite C1 CAOS tool.

Sunday, December 14, 2014

Extracting information from Creatures 1 PhotoAlbum files (And uncovering a 20 years old 2 pixel bug :)

In the last article, we've seen how to manually use the "dde: pict" CAOS command to take picture of our Norns the way the Owner's kit does it.

When doing it the usual way through the Owner's kit, all pictures are saved in individual photo album files for each Norn.
In this article I will show you all you need to know to extract all information from those file : timestamps, comments, and obviously, the picture data.



Saturday, December 13, 2014

Repairing and understanding the lost "dde: pict" command (Taking photos of C1 Norns)


One promising nugget in the Creatures 1 CAOS reference, is the "dde: pict" command.

According to the documentation,


 Unfortunately, as many other things this command not only lacks critical bits of explanation but is also inherently broken (at least considering the above definition) and when used produces less than stellar results:




It's a shame we can't use this functionality in our own tools to take pictures as the Owner's kit does.
Or can't we ?

One of the main motives behind the site being uncovering such lost knowledge and abilities of the ancient Shee, come with me and find out how to understand and ultimately take advantage of this lost command.

Sunday, November 30, 2014

Reversing the C1 .exp file format part 1 (General layout and extracting the genome)

It's been all those years, and despite a lot of talented persons having contributed to making Creatures tools or documenting the game various features, there still isn't any available description of the .exp file formant anywhere as we're nearing 2015.



The .exp files are the format in which creatures are exported or imported from and to the game.

Obviously, they contain about anything one could need to know about a given Norn, and exploiting them for writing custom tools might allow for a lot of interesting options such as exporting a critically ill norn, performing offline surgery on the file, and reimporting it into the game.

This would allow curing a couple otherwise fatal issues since the ingame mechanics don't provide any means of removing a given chemical from a creature bloodstream or reinvigorating degraded C2 organs.
(See the case of C2 grendels being oversensitive to cyanide poisoning because they lack the chemical reaction genes that would allow them to lower their cyanide levels)

In this series of articles, I will describe the process of reverse engineering the C1 (and later C2) .exp file format so any programmer out there can use the information to implement .exp file manipulating programs.

The first articles of the series will show the process followed so more people can learn "how it's done" and maybe later take on reversing other undocumented game file formats.
Hopefully, if enough information can be gathered about the format, a final article will sum everything up into the cleanest and most complete description possible.

For this first article, we will analyse the general file layout, and learn how to extract a working genome file from an .exp file.

Let's dive into binary DNA !

Saturday, November 29, 2014

Parsing Creatures 1 .spr files (Extracting/Manipulating any of the game's graphics)

In a previous article I showed how to read Creatures 2 .s16 files to extract any of the game image data.
In this obvious follow up I will show you how to read out Creatures 1.spr files for the same result.

The Creatures 1 .spr file format is only marginally harder to parse than the .s16 format.
This is because the .spr files do not directly contain color information for each pixel, but rather an index number, to be used as a lookup index inside an external palette file to get the actual color data.
 
Thankfully, Python magic can once again save us most of the hard work and makes extracting an manipulating C1 images files a breeze.



Saturday, February 15, 2014

Connecting to the Creatures DDE interface from python

We've recently seen how easy it is to connect to the C1 and C2 DDE interfaces using VB.

This time we will show how easy it is to connect to those interfaces using python, which will prove useful in upcoming articles.



Connecting to a DDE server from inside python is can be a quick and easy process.
The hardest part is in acquiring the correct modules to do so, (which can be a real pain if you take it from the wrong side), there are also a couple specifics that make debugging the first DDE connections unreliable.
Fortunately I've sorted those perks out for you,and will show you the single quickest and easy way to connect to the Creatures 1 and 2 DDE interface from python.


Thursday, February 6, 2014

Parsing Creatures 2 .S16 files (Extracting/Manipulating any of the game's graphics).

"Back then" few easy image manipulation libraries were available, making the extraction of game image data an intricate process (that most creature fans/developers tackled in an easy but not very user friendly way as we will expose).Nowadays things got easier.

In this post I will explain the creatures 2 .s16 file format, and show you how you can now very easily extract any picture from the game using python.
Not only that but we can also harness the power of modern image manipulation libraries to convert the game sprites to any file format we like contrary to most legacy tools only proposing to export images as BMP's and letting us do the conversion work manually.




Monday, February 3, 2014

Connecting to the Game: accessing the DDE interface with 3 lines of code. (Tutorial)




We've been studying a lot of stuff lately, most of it involving running CAOS commands against C1 and C2 games.
C3 has a convenient built-in CAOS console, and various third party tools also propose that feature for C1 and C2.

But how would you go about implementing this kind of connectivity inside your own programs?
The simplest way to connect to a running C1 or C2 game is through the DDE interface (Dynamic Data Exchange). Also it REALLY is simple even if you barely know anything about programming, so this might be worth checking out.If you never programmed anything and don't have any development tools handy, you could initiate a DDE connection even from inside an Excel macro using VBA.Also the C1 and C2 DDE interfaces being strictly identical, you'll be writing code only once, and be able to use it in both games right now, without any change.

By sending the game some basic CAOS commands and reading their results you can reproduce all of the game functionalities and then some more: reading a Norn's needs and chemicals levels in realtime, selecting Norns and Grendels, carrying them, monitoring their brains,etc...

This time I show you a very quick overview to get you started in pumping CAOS in and out the C1 and C2 games.More advanced use cases or details will come in futher posts.
 

Thursday, January 30, 2014

Investigating C1 climate (for a huge fail)



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.


Sunday, January 26, 2014

Finally, a Creatures 2 Norn autopsy tool


So, we've just learnt how to extract various information from C2 History files, among which a list of concentrations for a Norn's bloodstream chemicals at time of death.

We've also learnt how to map a chemical's number to a readable chemical name.

We can finally get to perform autopsies of dead C2 Norns!

Friday, January 24, 2014

Getting C2 chemicals descriptions (chemicals.def file format)

What a sneaky bastard I am.
This was supposed to be a C2 Norn autopsy article! (I swear I'm not doing that to avoid awarding anyone the promised carrot.)

I just realised something was still missing from the last article.
In the C1 chemicals information article we were able to pull out both chemical names and descriptions from the chemicals.txt file.

So where's that information in C2 ?

Reversing and Parsing C2 allchemicals.str file format


Aright, we already covered how to obtain an up to date list of Chemical numbers and names inside our programs by extracting it from C1 game files.

Obviously this is an ability of much practical value for C2 too, so let's see how we could do that now.
I haven't found the allchemicals.str file format described anywhere so far, but the format is simple enough so reversing it should be Norn's play for us at this point :)

Thursday, January 23, 2014

Back to more traditionnal automated Norn genealogy using python and graphviz ( Intro )



We've already had a glimpse at using advanced tools for experiments in Albian genealogy.
Gephi is a nice tool for interactively browsing decently sized datasets on the macro scale, but what about more conventional genealogy tools ?

In this post I will show you basic use of graphviz in python to make some more traditional but far more detailed family trees automatically.This will once again be only a short glimpse at graphviz possibilities so we can use it as an useful tool further down the road.
Hopefully it will make you want to add this to your Albian explorer toolbox.

Wednesday, January 22, 2014

Parsing C2 histfiles

Once again, a quick filler post about parsing a random creatures file format.

This time we will be investigating the Creatures 2 "History file" format.

 This one is also already documented online, but being able to parse it can allow us to extract some interesting data.


I guess this post needed at least one picture