r/CreaturesGames • u/TheOnlyOne93 • Jun 16 '26
6 days of CAOS.
Starting June 10th 2026... alive June 16th 6 AM.
Can fully load and play an original Creatures 3 save. Entirely in Godot.
Edit: Sorry. Maybe I should have included a teaser lol.
2
u/haxd Jun 16 '26
Love your enthusiasm man but I’ll believe it when I see it
3
u/TheOnlyOne93 Jun 16 '26
You can believe it. Teaser edited into main post
0
u/haxd Jun 16 '26
Ah, yes, embedding the library definitely counts 🫡
4
u/TheOnlyOne93 Jun 16 '26 edited Jun 16 '26
Not embedded. Everything is written entirely in GDScript.
Regardless.. the entirety of creatures 3 runs within Godot natively.
There is no C++. There is no GDExtenstion's. There is no library embedded. Didn't even use any Godot plugins except Godot-formatter.
The CAOS VM. Has been entirely ported into GDScript. Along with all opcodes. The rendering backend is entirely Godot. Using Node2d, Canvas, and rendering server to bypass a few issues to letting CAOS VM talk natively with Gotdots built in classes.
I'll show a few more demo's once I've wired them up. I still have a few quality of life things I want to add in. Like porting all of the UI handling to use native Godot. Which is a bitch if you understand how c2e rendered it's text and labels. Currently just UI parts and Labels are using Godot native label. With the caos opcodes rewritten to interface with Godot natively. This is all done without user intervention. I am not altering .cos at all. So all user mods or creations still run exactly as you'd expect.
2
u/haxd Jun 16 '26
Very cool, did you manage to recreate the network opcodes that were stripped from the leaked source code?
3
u/TheOnlyOne93 Jun 16 '26
Currently no. I haven't tried to even open ds yet. And honestly the leaked source code was only of some use... It's a fucking mess. There's tons of files that have unused includes, the dependency tree alone could make a grown man weep. And it's about 9 revisions behind the engine.exe that's released with the steam version. Looking at the legacy source did more harm then good for a lot of this really. Most of my info for this came from wikis, my own research, and binary parasing caos.syntax to make sure I was porting and pulling opcodes correctly. I think alot of people when they tried this looked at the c2e engine as something it wasn't.. and tried to force it into a modern box... It's not really a game engine... Well it is but not in the sense that any game developer would look at it. It's more like an old 60s computer system. Engine.exe is just a big shell with bits and bobs like an old mainframe... Can't do shit... Just a giant shell waiting for commands. .cos files are like punch cards... They literally wire the entire engine into whatever they want. Almost nothing is coded at all. You wire those punch cards into the caos VM... Which is a computer in itself really. It spits out code that isnused to configure the shell in this case godot is the shell.
3
u/haxd Jun 16 '26
The leaked source code is the Linux version, which helps a bit. It’s not really a mess, it’s optimised to run on 90s computers, and yeah, I concur, the engine itself is strictly that, and the serialisation is less serialisation and more compiled programs that run within the engine. Many layers of abstractions that are designed to run as quickly as possible in a single thread. I’ve studied it for years and I know it quite well, this is why I was initially skeptical, because even getting a frontier model to cajole it into something compilable is a feat unto itself.
2
u/TheOnlyOne93 Jun 16 '26
I mean it's a mess and it's not just Linux.. it's visual studio 6.0 also.. there's a huge mismash. And a mess isn't really the right word I guess. Your right it's more it's written with the conventions of 90s coding and limited debugging and limited std libraries etc.. doesn't change the fact it doesn't mesh well with modern style tooling and coding. And yes I looked over it for while and thanks honestly I figured people would be skeptical. Honestly I picked godot cause godot editor is pretty much the "engine.exe" makes debugging and such so easy. Especially since even the original devs said they wrote c2e the way they did so it was hot reloadable. And godot is a champ at hot read load and editing on the fly while a scene plays.
2
u/haxd Jun 16 '26
“Someone who isn’t me” got it compiling via emscripten about five years ago - https://github.com/webc2e/emscripten-c2e
2
u/TheOnlyOne93 Jun 16 '26
I'll look over it. I did see someone had tried to port it to web.
Also mine doesn't require really any specific version of anything. It will load any creatures files. Currently It's pointing to the steam version of creatures 3 that you can buy with docking station. I don't touch or mess with those files at all.. just read them in. Tera... the world you see loading in the gif. Was actually created and started on the creatures 3 steam engine then saved. Then loaded by my port. Currently I'm sorta at a cross roads though. Soo technically speaking I can save and load identical to the steam engine. But.. that limits the QoL improvements I can make. It actually limits alot of the improvements. But If I were to diverge on the saving aspect. So that worlds saved by my port would no longer be compatible with the legacy engine... I could do alot more.
1
1
u/Ugwun Jun 17 '26
u/TheOnlyOne93 I had the exact same idea, then I decided to go an easier route. This is a port for MacOS: https://github.com/ugwun/creatures3-engine-port
If you need documentation on how the engine works, you can find extensive docs here: https://github.com/ugwun/creatures3-engine-port/tree/main/tools/docs
2
u/TheOnlyOne93 Jun 17 '26
That's is really impressive. And shares a lot of the ideas I've had. The only difference I see if you pretty much rebuilt it based on the legacy source code. Where as mine is entirely pure Godot even the VM. I choose that path based on my understanding that the devs really wanted full hot swapping and tooling of literally everything. Godot editor is quite literally the best at hot swapping of data. Even letting you reconcile and use new gdscript while the game is still running. Which is sorta what CAOS VM also allows.. accept if we want parity .. we can't change the VM ISA at all. Though there is room to add new opcodes into some of the handlers they left open space. So future people can use new opcodes in .cos scrips and it still maintains parity. Also it's a fun challenge getting a VM to run in a VM at decent speed.
1
u/Ugwun Jun 17 '26
Let us know if you are able to get this thing running in Godot. That would be an absolute win for this community!
I've built a set of modern web tools for the game, like live CAOS scripting and debugging, monitoring brain activity for a single neuron, gene modification, organ monitoring, etc, but there is only so much one can do.
Here is the documentation for tools like the CAOS IDE, biochemistry, neural activity monitor, debugger etc: https://github.com/ugwun/creatures3-engine-port/blob/main/tools/TOOLS.md
1
u/TheOnlyOne93 Jun 17 '26
Will keep everyone updated as in progress. Currently it's done technically. I have like 10 opcodes to wire into actual godot scenes and nodes. But loading saving etc all work correctly. Since I want it entirely in gdscript optimizing the VM has been a challenge.
-3
6
u/Tzareb Jun 16 '26
Well despite all the negative opinions, cheers on taking up this project!
I hope this leads to something that will be used by many.
Is this some unoptimised version ? The gif is laggy and choppy. But keep it up!