|
-
[CC -> PB] Relations of PB's very own Genome Engine to the CodeCult CodeCreatures engine
Hello,
I would like to start this thread to bring the rumours to rest and perhaps start a discussion about the history of the Genome Engine and its relation to the CodeCreatures engine by CodeCreatures. Let's start with the basic facts
A short backstory
In the late 90s, a small German company called "Codecult Software Research & Development GmbH", was developing its own "CodeCreatures" engine. CodeCreatures was conceived as a "GDS" or a Game Development System, which was meant to be licensed by other game companies for their games.
Around the same time Piranha Bytes was working on their Gothic RPG game. As you might have known, Piranha Bytes ran out of money around the latter half of 1999 and was acquired by Phenomedia AG.
With the new cash injection Piranha Bytes received, they decided to expand and make plans for the next game after Gothic. That's why they acquired CodeCult and its CodeCreatures engine with plans to use it for their next game.
codecult software research & development GmbH aims to offer this technology on specializedlicensing markets as an international provider, and to utilize it within the Creative Products businessunit in the area of offline games (Piranha Bytes Software GmbH) and online games (Better DayCommunications Werbeagentur GmbH)
Also around this time in 1999/2000, Piranha Bytes was working on Project Zerberus, which, according to all known information, was only a demo made on the CodeCreatures engine.
After Gothic was released in March 2001 and subsequent patches came out, Piranha Bytes started working on the recently-discussed sci-fi shooter game, which used the CodeCreatures engine. This game was cancelled in October 2001 in favor of Gothic 2.
In 2002 Phenomedia AG's stock collapsed after it was found out that the company leaders were under investigation for falsifying balance sheets. While Phenomedia AG was going through the insolvency proceedings, Pluto 13 GmbH was formed by members of Piranha Bytes and bought the Piranha Bytes studio and its assets. The same happened for CodeCult, with the creation of H2Labs Creative Research GmbH and the acqusition of CodeCult's property.
This is where Piranha Bytes and CodeCult separated, with CodeCult slowly fading into obscurity and their engine sadly never being used in any released game (even though it was licensed by several companies).
Interestingly, sometime after the bankruptcy of Phenomedia AG, many of the programmers, like Oliver Höller, Kurt Pelzer, Philipp Krause or Roman Keskenti who had previously worked on CodeCreatures went on to work at Piranha Bytes on Gothic 3 and it's "Genome" engine, which was said to be created from scratch.
GE -> Genome?
In 2016 the user Avallach made post in which it was mentioned that Gothic 1 included and used the GEdialogs.dll library which originated from the CodeCreatures engine. The post also mentions the fact the file has the prefix GE (Gothic?, Genome?) and not CE (CodeCreatures). This might lead you to the conclusion that these are the origins of the Genome Engine. However, it's not as simple.
In 2002 the Codecult Codecreatures Benchmark was released. As the name suggests, it is based on the CodeCreatures engine (and also includes the GEdialogs.dll library). The most interesting part about it is when you decide to inspect all the .exes and .dll included in the benchmark. Using a tool like strings2, we can view strings and symbolic information which was leftover from the compilation process. Depending on the compiler options, the .exe/.dll can include paths to and file names of the original source code files.
Using this method, we can easily explain the prefix GE. If you use strings2 on any of the benchmark's .exes or .dlls, eventually you will encounter one of these file paths.
Code:
U:\golem\work\source\engine\plugins\plfxgrass\ge_main.cpp
As you can see, the source code of the engine was stored in a folder called Golem. This leads us to the conclusion that the engine was internally called the "Golem engine" hence the prefix GE and has nothing to do with the name Genome. Case solved?
A closer look
If you're as curious as me, you might find yourself performing this kind of autopsy on Gothic 3. When doing so, you will find that the compilation process of Gothic 3 also left behind these file paths.
Code:
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_States\ZS_Freeze.cpp
This is where I thought that finding all these paths would help me take a closer look at the technical side of the game. For that purpose I ended up putting together a small tool which roughly filtered out all the paths from the output of the strings2 tool.
After manually filtering and beautifying the output further, I ended up with this.
At this point I asked myself "what if i did the same to the CodeCreatures Benchmark?". Sure enough, this was the result.
If you compare both of these lists, you might notice that there is some overlap. In fact, there are at least 3 files that have the same name and same directory path in both CodeCreatures and Genome.
U:\Golem\work\source\shared\GELibShared\kernel\ge_basemem.cpp -> E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\kernel\ge_basemem.cpp
U:\Golem\work\source\shared\GELibShared\kernel\ge_message.cpp -> E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\kernel\ge_message.cpp
U:\Golem\work\source\shared\GELibShared\math\3d\ge_octtree.cpp -> E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\math\3d\ge_octtree.cpp
You can see that in both cases, all of these files are in the "shared" part of the engine (to my understanding this is the part of the engine which is shared by all modules), which in one case is called GELibShared and sharedbase in the other. Beyond that, the paths and names are identical.
kernel\ge_basemem.cpp
kernel\ge_message.cpp
math\3d\ge_octtree.cpp
To gain more information, I performed the same analysis on the rest of PB games. Risen has only 2 of the paths shown above and in newer games (particularly ELEX), the team at Piranha Bytes was more "careful" with the compilation process.
Risen:
Code:
U:\Golem\work\source\shared\GELibShared\kernel\ge_basemem.cpp -> C:\Project\platform\pc\source\sharedbase\kernel\ge_basemem.cpp
U:\Golem\work\source\shared\GELibShared\math\3d\ge_octtree.cpp -> C:\Project\platform\pc\source\sharedbase\math\3d\ge_octtree.cpp
This led me to examine the extracted strings further to see if I could spot anything else that looked similar. This is one of the things i found:
CodeCreatures:
Code:
Integer-persistence poses a cross-processor incompatibility threat. Consider using explicit byte-size-types such as GEU32 etc.
GECOutputStream::Read( GEInt )
Gothic 3:
Code:
bCOutputStream::Read( GEInt )
Integer-persistence poses a cross-processor incompatibility threat. Consider using explicit byte-size-types such as GEU32 etc.
bCOutputStream::Read( GEUInt )
Another similarity between the engines is how they're both structured into multiple modules that are loaded at runtime. They both have similarly named library files that seem to do the same thing.
For example, in CodeCreatures there is gedialogs.dll, while in Gothic 3 there is ge3dialogs.dll or the CodeCreatures library file gecore.dll which's functionality in Gothic 3's case is taken care of by SharedBase.dll.
Not so fast
Even if the information shown so far might make you think that Genome was based on CodeCreatures, the truth may be much more benign than you think. As mentioned above, the same programmers that worked on CodeCreatures later worked on Gothic 3 and Genome. In that case there are bound to be similarities.
With all of the information presented here taken into consideration, I would narrow it down to 3 scenarios:
Scenario n.1
The Genome engine is a direct fork of the CodeCreatures engine, which was slowly moulded into the shape we know it as today. In my opinion, this is the most unlikely option. If such was true, there would be many more similarities and Gothic 3 would not have taken 3 years to develop.
Scenario n.2
The similarities in project structuring and filenames are just down to both engines being coded by the same team of programmers. The structuring and naming is the same because that's how they structure and name all of their projects.
Scenario n.3
Only the most basic code which is the starting point of any engine (such as matrix calculations or perspective projection) was brought over in order to speed up the development process. People are lazy... efficient and don't like to do the things they have just done all over again.
I think scenario n.3 is the most likely option. Piranha Bytes was a small team and starting totally from scratch would not make sense.
Of course it could be a combination of all of the scenarios. Perhaps PB only reused the core of the CodeCreatures engine and built the rest of the engine and game around it.
Conclusion
I would like you to again reconsider all of the info laid out here before jumping to any conclusions. There is not a reasonable way to find out what actually happened without either comparing both of the engine's source codes or letting somebody who knows how it was answer it. In the end it doesn't really matter. It's just an interesting piece of video-game history.
If you wish to explain this or have spotted a mistake feel free to tell me and I will correct the record.
Finally, I would like to thank Odin68 and Lali for their amazing work in researching the origins of the cancelled PB sci-fi shooter and CodeCult itself.
Stay safe people
Stay safe! 
-
I've added it to the archive with a subpage on its own and wrote a news.
-
-
 Zitat von lali
Is that from 1.01e? It includes the aforementioned gedialogs.dll file.
What's strange is that it says "Version 0.0 Build 0" even when inside the DLL it says
Codecreatures Engine
Version 0.4 Build 360
Copyright 1999, 2000 by
Codecult Research and Development GmbH
Stay safe! 
-
Hello,
since I am not sure what is the legal situation behind sharing files from the CodeCult CodeCreatures Benchmark, I decided to write an extractor for its archive format. A win32 binary and source code is included:
https://drive.google.com/file/d/1yjK...ew?usp=sharing
Feel free to share, expand or modify it.
The usage is very simple:
- Within the files of the benchmark navigate to the "content" directory and then to the "WORKSPACE" directory.
- Every directory there is considered a package, pick one and open it.
- Now you will see a directory structure that looks something like this:
Code:
Bitmaps
Materials
RawImages
Scenes
Textures
Visuals
Inside each one of these directories is an archive file. Pick the directory from which you want to extract and open it (If you're looking for the textures then go to RawImages). - Now you will see the archive file which has no extension. Simply drag and drop it over Extract.exe, which is included in the bin folder of the tool you have downloaded.
- Depending on the content of archive, files should start appearing in the same directory as the archive file.
If you wish to do this from the command-line, here is how:
Code:
Usage: extract [-l] [-f filename] archive
Example usage:
extract -f LeavesTexture04.tga RawImages
Arguments:
-f filename : The name of the file in the archive to extract.
If not specified, all files will be extracted.
-l : List all files in archive. Output will be in JSON.
Since the benchmark has higher resolution versions of some Gothic 2 textures, now you can create a Gothic 2 HD texture pack with 3 upgraded textures for your personal use. 
I don't expect this to be used much, since it's a tool for an old forgotten engine that was only ever used in one benchmark. This was just something i quickly put together for fun. Still, it might become useful one day in case a game running on CC is ever found. Although in that case, modifications might be needed, since the Benchmark archives have no compression and they would all be probably bundled in one big "pak" file in a production or even a development build.
Stay safe! 
-
In my search to find the answer, I found this old post by Michael Rüve. I think that explains it.
 Zitat von Michael Rüve
Es geht nicht um Epic an sich, sondern um die Tatsache, dass die in dieser Interpretation seit 1999 "dieselbe Engine" verwenden. Ich hätte auch Microsoft (Windows) oder irgendeine beliebige andere Engine hernehmen können - nur die kennt dann keiner.
Überhaupt, wenn schon dann bitte richtig unsinnig:
"PB verwenden eine Engine von 1999!". Es sind (oder waren, k.A. wieviel davon noch übrig ist) nämlich Bestandteile der "Codecult" Engine von Codecult/Phenomedia enthalten. Das sind/waren zwar so Banalitäten wie Stringverwaltungsklassen, aber falscher als "dieselbe wie bei G3" ist das auch nicht.
Case closed.
I'll update this thread if anything new pops up.
Stay safe! 
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|
|