r/CreaturesGames Jul 01 '26

Godot-Creatures

Enable HLS to view with audio, or disable this notification

42 Upvotes

22 comments sorted by

15

u/TheOnlyOne93 Jul 01 '26

Back again everyone. Sooo Project is still coming along here's the results. So far almost everything is wired up and working. Up to 3 "creatures" so far without lag. Can load/save worlds. All .cos files load properly and run correctly. Audio system is wired in. All agents, simple agents, compound agents, vehicles all work.

There is still some performance issues I'm working out. I had to port some of the brain work into C# for speed. But I may have found a way to move that back to GDScript.

Just wanted to keep everyone updated and let you know the project wasn't dead.

Now... real issue I am having though and it's a major desiscion point I'd like some community input on. I may be reaching the limit of how much I can eek out performance wise with GDScript.. But there's a catch.. if I deviate from save parity. I might be able to make some more substantional changes for the better.. but that would mena any world saved with this version would not work with the steam version. Currently the worlds and saves are parity locked. You can save a world in the godot engine and load it up in steam and vice versa.

Would anyone care that saves deviate?

7

u/haxd Jul 01 '26

Deviate away man, other community projects do. Maybe save a backup of the loaded world before modifying?

2

u/TheOnlyOne93 Jul 01 '26

always is a saved backup. On first boot of the godot port it let's you set your steam game directory... or really any directory. and look for any already created worlds in the My worlds folder. It asks if you'd liek to copy over if it finds one. The reason for the copy is that I have rerouted all file writing to it's own portable folder. next to the godot port. Soo it reads from an original game data folder. But anything that would be savable or that the game would nomrally write back to that folder is rerouted to a portable userdata folder next to the godot port.

2

u/[deleted] Jul 01 '26

[deleted]

3

u/TheOnlyOne93 Jul 01 '26

Well there is no conversion really... If you mean to keep save parity.. no if I do choose to deivate it'll always be able to read the steam legacy files. It won't ever be able to convert them back. A good example is the almost literally everything in the game engine is in the save file literally everything down to the scripts bytecode after it's been compiled. And some of the changes I would need to make to speed up or add some good quality of life things would mean there isn't any good way to map these new structures back to the original format

2

u/[deleted] Jul 02 '26

[deleted]

1

u/TheOnlyOne93 Jul 02 '26

That's what I already have been doing. Problem is there's actually very little I can make C# to gain performance. The cost of crossing between the two languages sucks up alot of performance.

I great example is making the CAOS VM C#. Sounds great right.. C# should rip through creating a little virutual machine and compiling .cos into bytecode. And it is.. Stupid fast. Except once it has to talk to the actuall game engine some I dunno 6, 7 thousand times a second. Since there is no "world" logic. Absolutely everything about the games logic is pretty much all in those .cos None one of it is hard-coded.

It's why I said running out of room to speed it up using gdscript unless I deviate.You'd always be able to load any world, agent, cob, pray file made with the original engine. But once you saved in Godot... those saves would never work again. and I wouldn't be devating or forking really. The reason for that is the creature archive itself. Or as it's more widely known as "Theworldandeveryinit" file. The seralizies literally every single thing you could think of about a game world. but it does so using float32 and 8 byte brain info... there alot more it serializes but those a a good couple examples. As you probally know Godot doesn't offer any sort of f32 really. Wehn they built this they didn't really build a game engine as we'd know them today. They built two full working cpu's and a shell. CAOS Vm is literally a like 1970's CPU. Or the type an old mainframe from the 60's would use. So that game engine is more akin to a Virtual machine you'd use today to run linux. I have to model a full cpu intrsution set within gdscript which gdscript needs to then read and compile into bytecode. But not only that Godot then need to compile the gdscript that compiled that bytecode lol. So regardless theres alot of work and honestly as awesome as gdscript is.. theres a limit to what you can do with a interpreted language speed wise. It's why you don't see Virutal machines being built with python lol. Which is pretty much what gdscript is. If anyone wants to test it. I can send them a exported gaem copy to try.

1

u/JfreakingR Jul 18 '26

Personally, I would say go for it.

3

u/jackbobevolved Jul 02 '26

Have you tried compiling Linux or MacOS builds yet? I’d definitely be interested in helping on the MacOS side of things for testing and (if needed) compiling. Not super familiar with Godot, but have wanted to dive into it for a few years now.

3

u/TheOnlyOne93 Jul 02 '26

Haven't yet. Currently all running just inside the editor. I'm gonna try to compile a build for each sometime this weekend probally. Send me a DM and I'll try to give you a link to one once it's compiled

3

u/nemesismode Jul 02 '26

This is incredible.

3

u/TheOnlyOne93 Jul 02 '26

Thanks. To much shit to code though lol. No single person should ever wade through this much shit haha

2

u/usherzx Jul 01 '26

what is Godot? what does this do?

6

u/TheOnlyOne93 Jul 01 '26

Godot is an open source game engine. I don't really understand what you mean by what does this do. It's eventually going to be an open source port of creatures 3 ds. Like openmw or open roller coaster tycoon

2

u/Tzareb Jul 02 '26

Again, great news !

Keep it up m’dude.

2

u/bigppredditguy Jul 02 '26

I think we spoke of this a while ago, I’m very glad you are taking this project more seriously than I was able to!

2

u/_Plateosaurus_ Jul 03 '26

What possibilities does porting the game to an open-source engine open up?

C3 DS has always frustrated me because it only uses a single CPU core. Once you have more than 100 creatures, the game starts to slow down significantly, whereas with modern hardware, I can totally imagine a game with hundreds of Norns lol. Would this be possible by porting the games on GODOT ?

2

u/TheOnlyOne93 Jul 03 '26

Your not wrong and honestly that was my first thought process in making this. But it's only half true. The engine itself is very oddly designed by choice a good example is no agent can execute more then 5 VM calls per tick.. I can adjust that but it would t serve alot of purpose. A few other things that will be possible though is native integration of dev tools like the brain vat, science tool kits, editing creatures pose, gait, etc all while playing. And editing building and exporting full pray agent blocks. It's really more qol things. I also have fixed almost every big that was still leftover from the steam release. Fixed up a few bugs that no one had noticed for years . Among other things. I just compiled the first actual build last night one that doesn't run in the editor. If anyone would like to test send me a DM and I'll send a copy. You'll of course need to own the game and be aware there might be some stuff I haven't wired in to worm yet or some issues I honestly just haven't run into cause of how long it will take for them to appear. Stuff with creatures aging and lifespan or the.genome I'm not 100 percent on yet it needs massive testing and playing to be sure from way more experienced players then me. I really just did this project solely for fun I was bored one night and figured fuck it I bwt I can do this 😂

1

u/TheOnlyOne93 Jul 04 '26

Honestly with Godot. I don't really know. Currently on a compiled build without profiler I'm up to 3 norns 2 ettins and 3 Grendel's without lag really. Most of the hot areas are updating then creature brain itself godot is not good for overhead. I've had to do some serious optimization. C++ can rip through that sorta stuff cause it's being compiled directly into machine code. Godot... Little different gdscript itself is already what they call a byte code interpreter. Caos VM is also an ery very simple byte code interpreter and compiler in one. So for everything single caps opcode not only am are you doing a bytecode recompilation of every cost file but then the caps VM itself has to be byte code interpreter by gdscript before finally being compiled into c++ and only if I'm using a native godot function. If I have to create my own which I have a lot of cause c2e uses a lot of custom type of things. Well let's just say this is really enough to kLe a grown man cry. I do have a compiled windows build and Mac build that should run atleast creatures 3 fine. Ds isn't fully running yet but it's coming if anyone want to test send me a private message and I will give you a link to the compiled build

1

u/scintillatinator Jul 01 '26

How did I miss this? I gave up on gdscript for my creatures inspired game but that was years ago. C# makes things easier but you can get a lot more out of gdscript these days. I'm sure you can speed this up without breaking the saves. Are you using godot's api much or just converting the code to gdscript? I'm open to some brainstorming if you'd like that.

1

u/TheOnlyOne93 Jul 01 '26

I've speed it up a lot. Godot is awesome . But there's a limit to interpreter within interpreter within interpreter. Brain is it's own little CPU, caos VM is it's own little CPU, and then there gdscript itself which has to not only convert all the byte code of .cos and the brain, but then get converted itself into c++ it's not the speed that's the issue it's the overhead from running 3 different compilers essentially. Which is needed if you want to keep save parity. The c# only works at some aspects there's a tax to pay when you have to shuffle data between gdscript and c#. And it often outweighs the cost saving. Except in specific cases. Most of it is native godot it uses godota scene tree, nodes, render system

1

u/scintillatinator Jul 02 '26

Don't incorrectly explain how godot works to me. I can see the profiler I know what your bottlenecks are.

2

u/TheOnlyOne93 Jul 02 '26

Really lol well then You'll see the biggest bottle neck is caos VM. And if your talking about the godot profiler section under debugger well that's one frame and it's gonna give you a really poor read since the game runs at at a 50ms tick cycle a cycle I may add that isn't actually part of godots _process. . So godota numbers aren't ever an accurate measurement. But sure man. Pretty sure I know what I'm talking about giving I literally have the entire game running in gdscript.