where did you find the class names?
does the engine have some sort of reflection like unreal engine?
The class names were the more interesting and ground breaking parts 😃
There are some class names left in the EXE
And that's because the engine has some way to identify classes
When the game is started, it will run several code that will register these classes.
For example this will call a function that will register the class CKSpeechManager.
The first two arguments are IDs for this call.
So the game can refer to a class by their ID, which is the case in the game files.
Also it associates to the class functions that will create an instance of this class, and functions to destroy ones, which happen to be the same for all classes (DestroyKCL1/2 in the screenshot)
Actually, the destructor just calls the virtual destructor from the vft.
Also all the registered classes are subclasses to a common class. In my XXL inspector I call it KClass:
```C++
struct KClass {
virtual void destructor_placeholder() = 0;
virtual char isSubclass(int cls) = 0;
virtual void unknown1() = 0;
#if XXLVER >= 2
virtual void unknown2() = 0;
#endif
virtual int getClassGroup() = 0;
virtual int getClassID() = 0;
}
```
yeah it's similar in unreal engine
I have never used Unreal Engine, but nice to learn this.
The KClass also has virtual functions for saving and loading from KWN files.
So often KWN files are just files containing serialized instances of these registered classes.
https://www.unrealengine.com/en-US/blog/unreal-property-system-reflection
Looks more complicated in Unreal than in XXL 😄
I see Unreal also has names for data members and functions