Skip to content

Kanma/Athena-Entities

Repository files navigation

********************************************************************************
*                                                                              *
*                               Athena-Entities                                *
*                                Version 1.2.3                                 *
*                    http://github.com/Kanma/Athena-Entities                   *
*                                                                              *
********************************************************************************


---------------------------------------
- Summary
---------------------------------------

Athena-Entities is one of the modules of the Athena Game Framework, in the form
of a library written in C++.

It provides the basis of a system in which:
  1) everything is an 'entity'
  2) entities are grouped by 'scenes'
  3) entities can be arranged hierarchically, which means:
       - an entity can have several children entities
       - an entity can have a parent entity
  4) entities are defined by their 'components'
  5) each entity has a 'transforms' component (representing its position in the
     3D space relative to its parent, if any)
  6) each entity can also optionally have some:
       - visual components
       - physical components
       - audio components
       - debugging-purposes components
       - user-defined type of components
  7) each entity, component and scene maintains a list of the 'signals' it emits,
     allowing other entities/components/scenes (or any software part) to be
     notified when something happens
  8) the entities can be animated


This module only provides the basis of the system. Concrete implementations of
the different kind of components are in the following modules:

  - visual & debug components -> Athena-Graphics
  - physical components -> Athena-Physics
  - audio components -> Athena-Audio

The use of those modules is optional, you can choose to implement your own
components instead, or to leave out one kind of component.


This module can be used as a standalone library, or combined with the rest of
the Athena Game Framework (http://github.com/Kanma/Athena-Framework).

Additionally, when the Athena-Scripting (http://github.com/Kanma/Athena-Scripting)
module is built alongside this one, Athena-Entities will be usable from JavaScript.


---------------------------------------
- Dependencies
---------------------------------------

Athena-Entities requires the following dependencies:

   - XMake
   - Athena-Math
   - Athena-Core
   - UnitTest++
   - rapidjson

They are provided as GIT submodules of this repository and will be compiled
automatically during the compilation of Athena-Entities.

To download them, do:

    somewhere$ cd <path/to/the/source/of/Athena-Entities>
    Athena-Entities$ git submodule init
    Athena-Entities$ git submodule update


---------------------------------------
- Compilation
---------------------------------------

(Note: you'll need to install CMake to compile Athena-Entities)

To compile Athena-Entities (and all its dependencies), do:

    somewhere$ mkdir build
    somewhere$ cd build
    build$ cmake <path/to/the/source/of/Athena-Entities>
    build$ make

The library will be put in build/bin/


---------------------------------------
- Credits
---------------------------------------

The class 'Athena::Entities::Transforms' of this module is based on the
'Ogre::SceneNode' class of OGRE 1.7 (Object-Oriented Graphics Rendering Engine),
a scene-oriented and flexible 3D engine, released under the MIT License. OGRE is
the 3D engine used by the Athena Game Framework.

The license of OGRE is contained in the file 'docs/LICENSE-OGRE'.


---------------------------------------
- License
---------------------------------------

Athena-Entities is made available under the MIT License. The text of the license
is in the file 'LICENSE'.

Under the MIT License you may use Athena-Entities for any purpose you wish, without
warranty, and modify it if you require, subject to one condition:

   "The above copyright notice and this permission notice shall be included in
   all copies or substantial portions of the Software."

In practice this means that whenever you distribute your application, whether as
binary or as source code, you must include somewhere in your distribution the
text in the file 'LICENSE'. This might be in the printed documentation, as a
file on delivered media, or even on the credits / acknowledgements of the
runtime application itself; any of those would satisfy the requirement.

Even if the license doesn't require it, please consider to contribute your
modifications back to the community.

About

The Entities module of the Athena Game Framework

Resources

License

Stars

Watchers

Forks

Packages

No packages published