Kengine 4.0
This new version features a greatly optimized memory architecture, better cache-efficiency, and a more advanced API.
This release changes the API for the kengine in various places. Refactoring code to work with this release should be rather straightforward, but some features have been temporarily removed:
- Entities no longer have names. If you really need to associate strings to your Entities you can create a
NameComponent
or something similar - Entities can no longer be serialized to ostream. I am currently working to re-implement this feature.
- Because of the previous point, it is no longer possible to save and load the game state. I am currently working to re-implement this feature, in a manner that will be better optimized than the original (binary saving instead of JSON serialization)
Features:
- Made it possible to get a collection of entities matching several component types
- Added
AdjustableComponent
andImGuiAdjustableManager
- Added
DebugGraphicsComponent
- Added
GUIComponent
- Used an actual
ThreadPool
inEntityManager
(i.e. in `Mediator)
Major changes:
- Renamed
GameObject
toEntity
- Entities no longer have names
- Entities are now created using a simple function, instead of a type/type name and a name
- Removed
Component
class. Any type can now be used as a component - Changed
Entity::XXXComponent
function names toEntity::XXX
(e.g.getComponent
becameget
) - Removed support for directories in ScriptSystem to stop iterating over FS every frame
- Removed any use of Ogre as it was very experimental
Minor changes:
- I changed my name 🙂 URL is now phisko/kengine
- Changed Z axis in SfSystem (up is now up)
- Used a real JSON library
Optimizations:
- Made
Entity
a simple ID and bitmask, instead of storing a map of components - Stopped dynamically allocating each entity and component, instead used pools of components
- Stored entities by "archetypes" to optimize iteration
Fixes:
- Suppressed an inheritance warning in MSVC (I know my inheriting class is using its parent's function, that's the point)