Skip to content

TiagoAFontana/Entity

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Entity

This is an Hierarchical Data-Oriented Entity System (wow) highly inspired on bitsquid's blog post series.

From Wikipedia:

Entity-component system (ECS) is an architectural pattern that is mostly used in game development. An ECS follows the Composition over inheritance principle that allows greater flexibility in defining entities where every object in a game's scene is an entity (e.g. enemies, bullets, vehicles, etc.). Every Entity consists of one or more components which add additional behavior or functionality. Therefore, the behavior of an entity can be changed at runtime by adding or removing components. This eliminates the ambiguity problems of deep and wide inheritance hierarchies that are difficult to understand, maintain and extend. Common ECS approaches are highly compatible and often combined with data oriented design techniques.

Bundled Dependencies

External Dependencies

How to compile and run the tests

(Tested on Linux Manjaro)

1. Ensure you have all the dependencies installed:

sudo pacman -S sfml boost cmake

2. Clone and cd Entity:

git submodule update --init --recursive
mkdir Build && cd Build
cmake ..
make -j

3. Run the tests:

./Entity/Core/SystemTest
./Entity/Core/PropertyTest
./Entity/Core/HierarchyTest
./Entity/Core/TupleVectorTest
./Entity/Graph/GraphTest

Current features

  • Entity System without erase operation
  • Entity System with erase operation
  • Property creation for both types of Entity Systems
  • Composition (hierarchy)
    • Strong: Erasing an Entity will erase its children
    • Weak: As you can imagine, erasing an entity will not erase its children

Built on top of the Core Entity System

  • Graph
    • Directed and Undirected Graph (the former is more mature than the latter)
    • Dijkstra
    • Shortest Path View (ranges-v3)

TODO

  • Improve this readme :)
  • Make Dijkstra work on both Graph and Digraph
  • Create Graphs with support for erase operation
  • Create a wiki for presenting the memory model

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.7%
  • CMake 0.3%