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.
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.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)
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.
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?Code:U:\golem\work\source\engine\plugins\plfxgrass\ge_main.cpp
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.
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.Code:E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_States\ZS_Freeze.cpp
After manually filtering and beautifying the output further, I ended up with this.
Spoiler:(zum lesen bitte Text markieren)C:\Windows\system32\ageia\pcmpLocation.txt
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Cooking\src\ConvexHullBuilder.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Cooking\src\ConvexMeshBuilder.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Cooking\src\InternalTriangleMeshBuilder.c pp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Cooking\src\TriangleMeshBuilder.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\CCDTest.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\ContactBoxMeshICE.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\ContactConvexHeightfield. cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\ContactMeshMesh.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\ContactPlaneMesh.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\ConvexMesh.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\EdgeList.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\HeightField.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\HeightFieldShape.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\IceAdjacencies.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\InternalTriangleMesh.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\Joint.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\PenetrationMap.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\Scene.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\Shape.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\SphereShape.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\TriangleMesh.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\cloth\Cloth.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Core\Common\src\cloth\ClothManager.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Opcode\src\IcePrunable.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Opcode\src\OPC_MeshInterface.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Opcode\src\OPC_Model.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\Actor.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpBoxShape.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpConvexMesh.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpCylindricalJoint.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpD6Joint.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpDefaultScheduler.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpDistanceJoint.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpFixedJoint.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpHeightField.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpJoint.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpMaterial.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpPhysicsSDK.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpPointInPlaneJoint.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpPointOnLineJoint.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpPrismaticJoint.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpPulleyJoint.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpRevoluteJoint.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpScene.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpSphericalJoint.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpSpringAndDamperEffector.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\NpTriangleMesh.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\cloth\NpCloth.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\cloth\NpClothMesh.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\fluids\NpFluid.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\fluids\NpFluidEmitter.cpp
C:\dev\Workspace_Release\Piranha Bytes\Gothic III\work\source\NovodexPhysicsAPI\SDKs\Physics\src\npactor.cpp
C:\dev\sh8\SHW32.pdb
C:\p4\release\PhysX_2.4.1\novodex\HLSoftSim\Hs32bitAddrMem.cpp
C:\p4\release\PhysX_2.4.1\novodex\HLSoftSim\HsDME.cpp
C:\p4\release\PhysX_2.4.1\novodex\HLSoftSim\HsDMEController.cpp
C:\p4\release\PhysX_2.4.1\novodex\HLSoftSim\HsEMUController.cpp
C:\p4\release\PhysX_2.4.1\novodex\HLSoftSim\HsExternalMem.cpp
C:\p4\release\PhysX_2.4.1\novodex\HLSoftSim\HsPCEThreadProgram.cpp
C:\p4\release\PhysX_2.4.1\novodex\HLSoftSim\HsSyncNet.cpp
C:\p4\release\PhysX_2.4.1\novodex\HLSoftSim\HsVCUThreadProgram.cpp
C:\p4\release\PhysX_2.4.1\novodex\HLSoftSim\HsVPUThreadProgram.cpp
C:\p4\release\PhysX_2.4.1\novodex\PhysX-DDI\HLP\fluid\HOST\hlpPipelineStages.cpp
C:\p4\release\PhysX_2.4.1\novodex\PhysX-DDI\common\fluid\src\types\BucketArrayHLP.cpp
C:\p4\release\PhysX_2.4.1\novodex\PhysX-DDI\common\fluid\src\types\CellArrayHLP.cpp
C:\p4\release\PhysX_2.4.1\novodex\PhysX-DDI\common\fluid\src\types\ParticleArrayFW.cpp
C:\p4\release\PhysX_2.4.1\novodex\PhysX-DDI\common\fluid\src\types\portableIntVectors.cpp
C:\p4\release\PhysX_2.4.1\novodex\SDKs\Core\Hardware\src\NfPhysicsSDK.cpp
C:\p4\release\PhysX_2.4.1\novodex\SDKs\Core\Hardware\src\NfRBFwPipeline.cpp
C:\p4\release\PhysX_2.4.1\novodex\SDKs\Core\Hardware\src\NfScene.cpp
C:\p4\release\PhysX_2.4.1\novodex\SDKs\Core\Hardware\src\NfShape.cpp
C:\p4\release\PhysX_2.4.1\novodex\SDKs\Core\Hardware\src\fluids\NfFluidPPUInterf aceHw.cpp
C:\p4\release\physx_2.4.1\novodex\hlsoftsim\HsMailbox.h
C:\p4\release\physx_2.4.1\novodex\sdks\core\hardware\src\NfPPUDataStream.h
D:\Devel\projects\bink\build\binkw32.pdb
E:\8397\vc98\self\bin\x86\msvcrt.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\Engine.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\Exporter.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\FileSystem.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\GFC.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\GUI.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\Game.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\Importer.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\SCM.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\Script.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\Scripts\Script_Game.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\SharedBase.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\ge3Prototype1.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\ge3dialogs.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\bin\sapi_lipsync.pdb
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\admin\ge_application.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\animation\propertysets\ge_ps_resource_animatio nactor.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\console\ge_consolecommands.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Admin\ge_windowmanager.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Fonts\ge_fontresource.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Windows\Controls\ge_buttonctrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Windows\Controls\ge_contextmenu.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Windows\Controls\ge_dllinfoctrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Windows\Controls\ge_entityctrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Windows\Controls\ge_listboxctrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Windows\Controls\ge_listctrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Windows\Controls\ge_progressctrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Windows\Controls\ge_propertyctrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Windows\Controls\ge_propertysetctrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Windows\Controls\ge_staticctrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Windows\Controls\ge_tooltipctrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\gui\Windows\Controls\ge_treectrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\physics\admin\ge_physics_scene.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\rendersystem\stages\PVSPrefetcher\ge_pvsprefet cher3.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\resource\propertysets\collision\ge_ps_resource _collisionmesh.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\resource\propertysets\ge_ps_resource_base.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\resource\propertysets\mesh\ge_ps_resource_ligh tmap.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\resource\propertysets\mesh\ge_ps_resource_mesh complex.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\resource\propertysets\mesh\lightmaps\ge_lightm ap.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\resource\propertysets\speedtree\ge_ps_resource _speedtree.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\resource\speedtree\ge_speedtree_renderbuffer.c pp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\scene\admin\ge_entityadmin.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\scene\context\ge_entity_templatecontext.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\scene\entity\ge_dynamicentity.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\scene\entity\ge_entity.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\components\scene\entity\ge_templateentity.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\io\archivesystem\ge_archivefile.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\io\physical\ge_configfile.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Engine\io\physical\ge_unicodeconfigfile.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Importer\helpers\scenecompiler\ge_sectorcompiler.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Action.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_AniStateAction.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Attack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Cast.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Dialog.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Die.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_DropInventoryItem.c pp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Enjoy.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_EquipInventoryWeapo ns.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_FinishingAttack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_GetUpAttack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_GetUpParade.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Goto_Ext.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_HUD.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_HackAttack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_HeavyParadeStumble. cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_HoldInventoryItems. cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_HoldItems.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Jump.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_JumpAttack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_JumpBack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_LieKnockDown.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Parade.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_ParadeStumble.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_PierceAttack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_PierceStumble.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_PowerAttack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_QuickAttack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_QuickStumble.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Say.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_SelectWeapon.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Shoot.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_StandUp.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Stumble.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_TakeItem.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_TransferItem.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_TwirlAttack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_Unlock.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_UseInventoryItem.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_UseItem.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\AI_WhirlAttack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\EquipBestMeleeWeapon.c pp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\GiveDefeatXP.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\GiveXP.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\SelectCombatMove.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\StartSayAttackEnd.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\StartSayAttackReason.c pp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Commands\StartSayRefuseTalk.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\CanParade.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\CanSleep.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\GetAttitude.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\GetFollowTime.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\GetThreatenTime.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\HasAttackReasonToKill. cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\HasDangerousWeapon.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\IsEvil.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\IsGuard.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\IsHumanoid.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\IsLivestock.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\IsOwner.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\IsSlave.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\IsUndead.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\IsUpset.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\WantToEat.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\WantToFlee.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\WantToRansack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\WantToSwim.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Decision\WantToThreaten.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Memory\GetAttribute.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Memory\GetPlayerCrime.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Memory\MemorizePlayerCrime.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Memory\SetAttackReason.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessActivePercepti on.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessBody.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessCmdAttack.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessDefeat.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessDoor.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessFightSound.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessHit.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessMurder.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessNearNpc.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessPlayer.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessPlayerSneaking .cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessPlayerWeapon.c pp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessPlayerZone.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessPrey.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessTakeItem.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessTalk.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessTarget.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessUseInteractObj ect.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\AssessWarn.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Perception\SendPerception.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Party_Tasks\ZS_Arena.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Party_Tasks\ZS_FollowPlay er.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Party_Tasks\ZS_GuidePlaye r.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Party_Tasks\ZS_WaitForPla yer.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_Attack. cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_Dead.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_EatBody .cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_Flee.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_Hunt.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_Inspect Body.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_Observe Suspect.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_Ransack Body.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_ReactTo Damage.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_ReactTo Weapon.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_ReactTo Zone.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_Stumble .cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_Talk.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_Threate n.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_Unconsc ious.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\AI\AI_Tasks\Reaction_Tasks\ZS_WatchFi ght.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Enclave\Enclave.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\GetAniStateByA ction.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\GetCombatMoveL ength.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\GetDCCRadius.c pp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\GetFocusEntity Priority.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\IsFirstPersonC ameraAllowed.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnCheat.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnDamage.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnDoor.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnEnterArea.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnEnterProcess ingRange.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnExitProcessi ngRange.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnGameStartUp. cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnHit.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnInit.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnLeaveArea.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnMovementMode Changed.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnProcessRouti ne.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnResetPlayer. cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnReturnFromMe nu.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnTick.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnTouchCharact er.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnTouchDamage. cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnTouchItem.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_Callback\OnTouchZone.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_States\IS_Idle_Closed.c pp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_States\IS_Idle_Trade.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_States\IS_Running_NoEnc laveReputation.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_States\IS_Running_NoLea rnRequirements.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_States\IS_Running_NoPar ty.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_States\IS_Running_NoPol iticalReputation.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_States\IS_Running_NotEn oughGold.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_States\IS_Running_NotEn oughLP.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_States\IS_Running_Proce ssInfo.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_States\IS_Running_Selec tInfo.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Engine\Engine_States\ZS_SwitchTask.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_Barrier\OnTouchMagicBarri er.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_Decision\CanTameAnimal.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_Decision\CanTransformInto .cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_Spells\Magic.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_Spells\MagicAdanos.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_Spells\MagicBeliar.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_Spells\MagicInnos.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_Spells\MagicMisc.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_States\ZS_Burn.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_States\ZS_Freeze.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_States\ZS_MagicSleep.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_States\ZS_Misc.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_States\ZS_Summoned.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Magic\Magic_States\ZS_WaitForDawn.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Player\Player_Interface\OnPlayerChang ed.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Player\Player_Interface\OnPlayerGameK eyPressed.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Player\Player_States\Bookstand.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Player\Player_States\PS_DuskToDawn.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Player\Player_States\PS_Ghost.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Player\Player_States\PS_HUD.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Player\Player_States\PS_Interact.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Player\Player_States\PS_Inventory.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Player\Player_States\PS_Magic.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Player\Player_States\PS_Melee.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Player\Player_States\PS_Normal.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Player\Player_States\PS_Ranged.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Commands\ContinueRout ine.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Commands\SelectRoutin eDestination.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Commands\SelectRoutin eTask.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Decision\GetRoutineTi me.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Decision\GetTravellin gWalkMode.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Decision\IsFreeDestin ation.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\Routine_Callbac k.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Alchemy.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Ambient.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_AnimalSleep. cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Barbecue.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Bard.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Boss.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Break.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_CarryStones. cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Cook.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Digger.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Farmer.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Goblin.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Grind.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Guard.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_HangAround.c pp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Herd.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Listen.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Lumberjack.c pp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Monster.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_OrcParty.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Pray.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Preach.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_RunToAttackP oint.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_SlaveBabe.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Sleep.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Smalltalk.cp p
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Smith.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Study.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Trader.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Routine_Tasks\ZS_Woodwork.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Rtn_Monster.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Rtn_Player.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Routine\Rtn_Test.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Test\TA_Test_NavOffset.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Test\TestEffect.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Test\ZS_NavEval.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\Scripts\Script_Game\Script\Test\ZS_NavOffset.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\bugslayer\BSUFunctions.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\bugslayer\CrashHandler.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\bugslayer\GetLoadedModules.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\bugslayer\IsNT.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\bugslayer\NT4ProcessInfo.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\bugslayer\TLHELPProcessInfo.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\World\ge_world.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\admin\ge_gameapp.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\entity\ge_gameentity.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\gui\ge_dialogManagerCtrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\gui\ge_npcInfoCtrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\gui\ge_questLogCtrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\gui\ge_screenOutputCtrl.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\inventory\objects\ge_inventoryslots.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\inventory\propertyobjects\ge_inventoryslot.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\layers\ge_templatelayer.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\movement\propertysets\ge_ps_charactermovement.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\quests\ge_ps_quest.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\game\session\ge_session.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\container\map\ge_indexmap.inl
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\kernel\ge_basemem.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\kernel\ge_fpuadmin.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\kernel\ge_message.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\kernel\ge_validatemem.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\math\3d\ge_octtree.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\math\interpolation\ge_keyframerdata.inl
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\propertysystem\accessors\ge_accessor_type.inl
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\propertysystem\base\ge_po_puresmartptr.inl
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\propertysystem\factories\ge_propertyobjectfactory.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\propertysystem\factories\ge_propertyobjectsingleton.c pp
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\propertysystem\objects\ge_propertyobject.inl
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\propertysystem\persistence\ge_propertylayout.cpp
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\propertysystem\types\ge_propertytype.inl
E:\Workspace\Piranha Bytes\Gothic III\work\source\sharedbase\propertysystem\types\ge_propertytypebase.cpp
F:\rtm\vctools\vc7libs\ship\atlmfc\include\afxwin2.inl
F:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\filecore.cpp
F:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\filetxt.cpp
At this point I asked myself "what if i did the same to the CodeCreatures Benchmark?". Sure enough, this was the result.
Spoiler:(zum lesen bitte Text markieren)T:\DOut\GELibShared\GELibShared.pch
T:\DOut\GELibShared\GELibShared.pch
T:\DOut\GELibShared\ge_basemem.obj
T:\DOut\GELibShared\ge_message.obj
T:\DOut\GELibShared\ge_string.obj
T:\DOut\GELibShared\vc60.pdb
T:\DOut\gedi8drv\ge_di8_device.obj
T:\DOut\gedi8drv\ge_di8_keyboard.obj
T:\DOut\gedi8drv\ge_di8_mouse.obj
T:\DOut\gedi8drv\ge_di8_sys.obj
T:\DOut\gedi8drv\ge_di8_sys.objJ
T:\DOut\gedi8drv\ge_di8interface.obj
T:\ROut\GELibShared\GELibShared.pch
T:\ROut\filemanager\filemanager.pch
T:\ROut\gecore\gecore.pch
T:\ROut\gedx8graphicdrv\gedx8graphicdrv.pch
T:\ROut\ploutdoor\plOutdoor.pch
T:\ROut\plrender\plrender.pch
T:\ROut\plscene\plscene.pch
T:\ROut\plsmartrenderer\plsmartrenderer.pch
T:\ROut\sysmanager\sysmanager.pch
U:\Golem\work\engine\debug\gedi8drv.dll
U:\Golem\work\engine\debug\gedi8drv.exp
U:\Golem\work\source\engine\enginecore\gecore\admin\ge_admin.cpp
U:\Golem\work\source\engine\enginecore\gecore\admin\ge_cacheadmin.cpp
U:\Golem\work\source\engine\enginecore\gecore\admin\ge_itemadmin.cpp
U:\Golem\work\source\engine\enginecore\gecore\admin\ge_render.cpp
U:\Golem\work\source\engine\enginecore\gecore\admin\ge_subadmin.cpp
U:\Golem\work\source\engine\enginecore\gecore\camera\ge_camera.cpp
U:\Golem\work\source\engine\enginecore\gecore\interface.cpp
U:\Golem\work\source\engine\enginecore\gecore\system\ge_CPUIDdump.cpp
U:\Golem\work\source\engine\enginecore\gecore\system\ge_SysProbe.cpp
U:\Golem\work\source\engine\enginecore\gecore\system\ge_optimize.cpp
U:\Golem\work\source\engine\enginecore\gecore\system\ge_processor.cpp
U:\Golem\work\source\engine\enginecore\gecore\system\ge_sysinfo.cpp
U:\Golem\work\source\engine\enginecore\gecore\system\ge_timer.cpp
U:\Golem\work\source\engine\plugins\plCollision\Primitives\ge_bbox.cpp
U:\Golem\work\source\engine\plugins\plCollision\Primitives\ge_cylinder.cpp
U:\Golem\work\source\engine\plugins\plCollision\Primitives\ge_primitive.cpp
U:\Golem\work\source\engine\plugins\plCollision\Primitives\ge_sphere.cpp
U:\Golem\work\source\engine\plugins\plCollision\ge_interface.cpp
U:\Golem\work\source\engine\plugins\plOutdoor\ge_cubemaplight.cpp
U:\Golem\work\source\engine\plugins\plOutdoor\ge_fog.cpp
U:\Golem\work\source\engine\plugins\plOutdoor\ge_interface.cpp
U:\Golem\work\source\engine\plugins\plOutdoor\ge_lensflare.cpp
U:\Golem\work\source\engine\plugins\plOutdoor\ge_mirror.cpp
U:\Golem\work\source\engine\plugins\plOutdoor\ge_odbase.cpp
U:\Golem\work\source\engine\plugins\plOutdoor\ge_outdoor.cpp
U:\Golem\work\source\engine\plugins\plOutdoor\ge_quad.cpp
U:\Golem\work\source\engine\plugins\plOutdoor\ge_sky.cpp
U:\Golem\work\source\engine\plugins\plOutdoor\ge_skybody.cpp
U:\Golem\work\source\engine\plugins\pladmin\ge_admin.cpp
U:\Golem\work\source\engine\plugins\pladmin\interface.cpp
U:\Golem\work\source\engine\plugins\plcamera\Interface\ge_plugincamera.cpp
U:\Golem\work\source\engine\plugins\plfxgrass\ge_interface.cpp
U:\Golem\work\source\engine\plugins\plfxgrass\ge_main.cpp
U:\Golem\work\source\engine\plugins\plparticle\ge_interface.cpp
U:\Golem\work\source\engine\plugins\plphysics\ge_interface.cpp
U:\Golem\work\source\engine\plugins\plrender\ge_interface.cpp
U:\Golem\work\source\engine\plugins\plrender\main\ge_GOO.cpp
U:\Golem\work\source\engine\plugins\plrender\main\ge_admin.cpp
U:\Golem\work\source\engine\plugins\plrender\main\ge_culler.cpp
U:\Golem\work\source\engine\plugins\plrender\main\ge_cullobject.cpp
U:\Golem\work\source\engine\plugins\plrender\main\ge_pipeline.cpp
U:\Golem\work\source\engine\plugins\plrender\main\ge_renderer.cpp
U:\Golem\work\source\engine\plugins\plrender\main\ge_renderzoneadmin.cpp
U:\Golem\work\source\engine\plugins\plrender\main\ge_supportrender.cpp
U:\Golem\work\source\engine\plugins\plscene\ge_interface.cpp
U:\Golem\work\source\engine\plugins\plscene\ge_sceneadmin.cpp
U:\Golem\work\source\engine\plugins\plscene\main\ge_scenecontainer.cpp
U:\Golem\work\source\engine\plugins\plscene\main\ge_scenelink.cpp
U:\Golem\work\source\engine\plugins\plscene\main\ge_sceneobject.cpp
U:\Golem\work\source\engine\plugins\plscene\main\ge_zonecache.cpp
U:\Golem\work\source\engine\plugins\plscenehandler\Interface\ge_plugin_scenehand ler.cpp
U:\Golem\work\source\engine\plugins\plsmartrenderer\ge_interface.cpp
U:\Golem\work\source\engine\plugins\plsmartrenderer\main\ge_admin.cpp
U:\Golem\work\source\engine\plugins\plsmartrenderer\main\ge_smartrenderer.cpp
U:\Golem\work\source\engine\plugins\plsmartrenderer\main\jobs\ge_srjobattenuatio nlightandshadow.cpp
U:\Golem\work\source\engine\plugins\plsmartrenderer\main\jobs\ge_srjobbasic.cpp
U:\Golem\work\source\engine\plugins\plsmartrenderer\main\jobs\ge_srjobcubemap.cp p
U:\Golem\work\source\engine\plugins\plsmartrenderer\main\jobs\ge_srjobimpostor.c pp
U:\Golem\work\source\engine\plugins\plsmartrenderer\main\jobs\ge_srjobmirror.cpp
U:\Golem\work\source\engine\plugins\plsmartrenderer\main\jobs\ge_srjobshadowmap. cpp
U:\Golem\work\source\engine\plugins\plsmartrenderer\main\jobs\ge_srjobvertexligh tandshadow.cpp
U:\Golem\work\source\engine\system\filemanager\ge_archivestream.cpp
U:\Golem\work\source\engine\system\filemanager\ge_filemanager.cpp
U:\Golem\work\source\engine\system\filemanager\stream\ge_fmfilestream.cpp
U:\Golem\work\source\engine\system\filemanager\stream\ge_fmstream.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\ge_dx8framedrawbase.c pp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\ge_dx8generalservice. cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\ge_dx8image.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\ge_dx8imagedrawbase.c pp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\ge_dx8interface.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\ge_dx8interfaceservic e.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\ge_dx8renderbase.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\jobs\ge_jobarchiveloa d.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\jobs\ge_jobbasic.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\jobs\ge_jobblend.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\jobs\ge_jobempty.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\jobs\ge_jobmulti.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\jobs\ge_jobplugin.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\jobs\ge_jobprimary.cp p
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\jobs\ge_jobrectcopy.c pp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\jobs\ge_jobscale.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\jobs\ge_jobscene.cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\jobs\ge_jobuncompress .cpp
U:\Golem\work\source\engine\system\graphic\GEDX8GRAPHICDRV\jobs\ge_jobvirtualloa d.cpp
U:\Golem\work\source\engine\system\input\gedx8input\ge_di8_device.cpp
U:\Golem\work\source\engine\system\input\gedx8input\ge_di8_device.h
U:\Golem\work\source\engine\system\input\gedx8input\ge_di8_keyboard.cpp
U:\Golem\work\source\engine\system\input\gedx8input\ge_di8_mouse.cpp
U:\Golem\work\source\engine\system\input\gedx8input\ge_di8_sys.cpp
U:\Golem\work\source\engine\system\input\gedx8input\ge_di8interface.cpp
U:\Golem\work\source\engine\system\sysmanager\ge_basmem.cpp
U:\Golem\work\source\engine\system\sysmanager\ge_errorsys.cpp
U:\Golem\work\source\engine\system\sysmanager\ge_heap.cpp
U:\Golem\work\source\engine\system\sysmanager\ge_linklist.h
U:\Golem\work\source\engine\system\sysmanager\ge_syncobjects.cpp
U:\Golem\work\source\engine\system\sysmanager\ge_sysmanager.cpp
U:\Golem\work\source\shared\GELibShared\container\map\ge_indexmap.h
U:\Golem\work\source\shared\GELibShared\engine\interfaces\common\ge_cachebase.cp p
U:\Golem\work\source\shared\GELibShared\engine\interfaces\ge_archivehelp.h
U:\Golem\work\source\shared\GELibShared\engine\interfaces\items\ge_item_visual.h
U:\Golem\work\source\shared\GELibShared\engine\interfaces\items\ge_item_visual_a rrays.h
U:\Golem\work\source\shared\GELibShared\engine\interfaces\items\ge_items.cpp
U:\Golem\work\source\shared\GELibShared\engine\interfaces\plugins\ge_plugins.cpp
U:\Golem\work\source\shared\GELibShared\engine\interfaces\subsystems\ge_inputdrv interface.h
U:\Golem\work\source\shared\GELibShared\engine\interfaces\subsystems\ge_subsyste m.h
U:\Golem\work\source\shared\GELibShared\gfx\ge_imagedescriptor.cpp
U:\Golem\work\source\shared\GELibShared\io\logical\ge_amarchive.cpp
U:\Golem\work\source\shared\GELibShared\io\logical\ge_amfile.cpp
U:\Golem\work\source\shared\GELibShared\io\logical\ge_ampackage.cpp
U:\Golem\work\source\shared\GELibShared\io\logical\ge_amresourcegroup.cpp
U:\Golem\work\source\shared\GELibShared\io\logical\ge_archivemanager.cpp
U:\Golem\work\source\shared\GELibShared\io\logical\ge_archivestream.cpp
U:\Golem\work\source\shared\GELibShared\io\physical\ge_diskmanager.cpp
U:\Golem\work\source\shared\GELibShared\io\physical\ge_filestream.cpp
U:\Golem\work\source\shared\GELibShared\io\streams\ge_iostream.cpp
U:\Golem\work\source\shared\GELibShared\kernel\container\ge_map.h
U:\Golem\work\source\shared\GELibShared\kernel\container\ge_queue.h
U:\Golem\work\source\shared\GELibShared\kernel\container\map\ge_indexmap.h
U:\Golem\work\source\shared\GELibShared\kernel\ge_basemem.cpp
U:\Golem\work\source\shared\GELibShared\kernel\ge_baseobject.cpp
U:\Golem\work\source\shared\GELibShared\kernel\ge_message.cpp
U:\Golem\work\source\shared\GELibShared\math\3d\ge_eulerangles.cpp
U:\Golem\work\source\shared\GELibShared\math\3d\ge_matrix.cpp
U:\Golem\work\source\shared\GELibShared\math\3d\ge_octtree.cpp
U:\Golem\work\source\shared\GELibShared\math\3d\ge_quaternion.cpp
U:\Golem\work\source\shared\GELibShared\math\3d\ge_sphericalrotation.cpp
U:\Golem\work\source\shared\GELibShared\math\3d\ge_vector.cpp
U:\Golem\work\source\shared\GELibShared\math\interpolation\ge_interpolatorfactor y.cpp
U:\Golem\work\source\shared\GELibShared\system\win32\ge_memorymappedfile.cpp
U:\Golem\work\source\shared\GELibShared\system\win32\ge_win32_guid.cpp
U:\Golem\work\source\shared\GELibShared\types\ge_datetime.cpp
U:\Golem\work\source\shared\GELibShared\types\ge_def.cpp
U:\Golem\work\source\shared\GELibShared\types\ge_guid.cpp
U:\Golem\work\source\shared\GELibShared\types\ge_string.cpp
U:\Golem\work\source\shared\GELibShared\types\ge_string.h
U:\Golem\work\source\shared\GELibShared\types\ge_variant.cpp
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.
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.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
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.kernel\ge_basemem.cpp
kernel\ge_message.cpp
math\3d\ge_octtree.cpp
Risen:
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: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
CodeCreatures:
Gothic 3:Code:Integer-persistence poses a cross-processor incompatibility threat. Consider using explicit byte-size-types such as GEU32 etc. GECOutputStream::Read( GEInt )
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.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 )
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