Skip to content

Kengine 4.0

Compare
Choose a tag to compare
@phisko phisko released this 30 Nov 10:07

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 and ImGuiAdjustableManager
  • Added DebugGraphicsComponent
  • Added GUIComponent
  • Used an actual ThreadPool in EntityManager (i.e. in `Mediator)

Major changes:

  • Renamed GameObject to Entity
  • 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 to Entity::XXX (e.g. getComponent became get)
  • 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)