|Creatures 1 on Mac with Wine and Swift
** Another Long Post. Long Story short, I am trying to recreate Creatures 1 Applets to run on Wine on MacOS **
So Creatures 1 is my favorite creatures game, and I love it. I also love my Mac and dislike Windows. I do however have a Windows virtual machine to play creatures on, along with a cheap Windows laptop I bought specifically for Creatures. Still, I wanted to run Creatures in Wine on my Mac without a virtual machine.
I was excited the first time I tried to run it, because it runs. It runs... but none of the Applets work. While developing a Creatures CAOS editor specifically for editing Creatures 1 CAOS(though my two editors handle 5 Creatures CAOS variants), I became very well acquainted with Creatures 1 CAOS, and I realized that all of those Applets can be recreated using CAOS code.
Now you cannot inject CAOS directly into C1 in Wine, because you cannot connect to the DDE interface, but using the instructions from Shee's Lost Knowledge's post on connecting to Creatures with Python (Here, I adapted it to C# and wrote DOTNet app that would launch Creatures and then listen for files to be written to a directory, then inject the code in the file, and print out the result to another folder. Since this on Wine app starts creatures and the watching process, they can communicate in Wine.
I could not get the file watcher code to work in Wine, so it simply polls the folder for changes. It is round about and inefficient, but it works.
I then Created a Mac App that would run my recreated applets in a single app. So I first created the CAOS injector using my Monaco Web Based CAOS editor, and when the inject button is clicked the MacOS app writes the editor code to a file into the folder being watched, and waits for the response.
It totally worked, so I moved on to the Hatchery. Because what's a game without Norns. So I used another post from the Shee's Lost Knowledge (Generating Arbitrary In Game Eggs), and recreated the Hatchery. My Interface skills are terrible, and I've never tried to program a cartoon interface, so I created a webpage version of the Hatchery, hooked it up into a window in the App so that when you double click on an egg, it injects it into the game. Again, by writing CAOS to a folder which is then read by the C# program running in Wine.
That worked, but I found I would click on the Applet icon in the Creatures window and get the messed up and broken Hatchery. So I set up the MacOS Applet to use an app url, so that I could launch the specific applets within the app from C# in Wine. I then wrote a simple EXE that simply calls the MacOS applet from Wine, and voila, I can now click on the Hatchery icon, and have it launch my Apps version of the Hatchery. Unfortunately, every time I do I get an error message in Creatures. I think the game is expecting some kind of response that it is not getting. But the window opens and the game suffers no ill effect.
I also found when generating the Eggs, that the genomes do not match up at all between mum/dad 4-6. So I had to account for that in my Hatchery, by assigning the values ahead of time in sets of sets. So it defined a slot, then two genome pairs of mum&dad. I set it up though so that if I ever publish the App, people can change the genome sets and then regenerate the Hatchery with them. I also had to add two more eggs to the hatchery because there is only one set of Purple norn genomes, and one set of Horse norn genomes. So when I randomly generate the eggs for the hatchery, it just creates two eggs from each of those genome sets, one of each gender. This gives me a need for 8 eggs, so I added two more. The sprites aren't great, but I am a programmer, not an artist.
I am now going to look at the Injector. I just download the BobCob source, so I need to look at how it works. It has been a long time since I have injected anything into Creatures 1 (ie. the 90's), so I should probably experiment with that a bit before I recreate it.
I also know the CAOS for the biochemistry tab in the Science Kit, and I know how to get the information . The other panels, I am not so sure. Some of the Genetics tab information I could recreate from CAOS output, but others I am not sure about. I certainly do not know what any of the Injections are made from, so I cannot really recreate them. If anyone knows the chemical combinations, let me know, so I can include them.
Breeder's Kit I think will be relatively straightforward, Shee's Lost Knowledge has some posts that would help with the Owner's kit as far as pictures go.
I added a MacOS menu option to rename the Norns without an actual Applet. It uses CAOS, and it does rename the Creature, but under the Norns menu, the name doesn't change for a while, but the Norn's name in the Game window title does change, and CAOS calls to get the Norn's name return back the expected values. So thats where I am right now. I got to play on my Mac with some Norns.
Here is a picture of what things look like:
You can see my two new eggs off to the right in the Hatchery.
Also if anyone knows if the eggs are random or preset in the original hatchery? I wasn't sure, so I set up pairs based on breed slot, and then two sets of mum/dad genomes. When the Hatchery is reset, I randomly make one of the two sets male, and the other female. I then shuffle them up, and assign them to a random egg image. Was Creatures like this? Could mum1/dad1 give you a different gender upon reset? I just do not understand why the genomes are so mixed up on my game version. I got mine on GoG.
I really like your new egg sprites!
The very first version of the game came with a floppy disk, called an egg disk, that it pulled genomes from. I'm not sure if it combined them at random to create 3 male and 3 female eggs, or if it was preset to have a male and female of each breed with a set egg sprite and position. I do know there have always been mutations in hatchery Norns, so the genomes were always being combined - it was never one per egg. Now, I'm not sure what mum?.gen/dad?.gen originally corresponded to, but there were only 6 breeds at that stage.
Since then, the hatchery app(let) has gone through various incarnations. It would have been updated numerous times even before the original Gameware Albian Years release, which was then tweaked by GoG. I suspect it was Gameware who added PMNs to the hatchery and that they probably made a few other changes to egg generation in the process. Adding another breed could certainly result in the filenames being screwed up.
Definitely don't worry about recreating the functionality of the original hatchery, because it was never consistent to begin with. What you've done looks really good. 8 creatures (4 males and 4 females) is the perfect number to start a wolfling run with as well, assuming you have enough food and game tweaks.
Edit: Regarding the science kit, I think injections have their own chemicals, which are then metabolized into various other chemicals. The chemical names should have "IV" or "infusion" in them somewhere.
WOW! Thank you so much for responding and answering my questions. I did not remember there being a floppy disk, but it has been a long time. Creatures 1 back then rocked my world, and I guess it still does, but that was a long time ago, and I wasn't very old at the time. But I was however old enough to explain to my parents that it was okay that I play a game where Creatures mate and have children. I thought it was an amazing aspect of the game, but my parents not so much.
And you were completely right about the injections -- they are chemicals directly, chemicals 101-106 to be exact. I would not have figured that out, so thank you.
Here is the Wiki page on egg disks. It isn't hugely informative and doesn't say when they stopped including them, but I'm sure the egg disk was later patched into the main install, and they weren't included with later retail versions. If you/your parents bought your copy of the game months or years after the initial release, it would never have had an egg disk.
Anyway, I'm interested to see what you'll come up with for the other apps!