ensy v1.5.2
ensy: Entity System for JavaScript
ensy is a JavaScript implementation of the Entity System model as described by Adam Martin
in his blog post series Entity Systems are the future of MMOs.
Component/Entity Systems are an architectural pattern used mostly in game development. A CES follows the Composition over Inheritance principle to allow for greater flexibility when defining entities (anything that's part of a game's scene: enemies, doors, bullets) by building out of individual parts that can be mixed-and-matched. This eliminates the ambiguity problems of long inheritance chains and promotes clean design. However, CES systems do incur a small cost to performance.
ā From the Entity Systems Wiki
Installation
This module is available on npm as ensy. It has no dependencies.
npm install --save ensy
Usage
import EntityManager from 'ensy';
let manager = new EntityManager();
// Create a component and add it to the manager.
const PlayerComponent = {
name: 'Player',
description: "The player's state",
state: {
life: 100,
strength: 18,
charisma: 3,
}
};
manager.addComponent(PlayerComponent.name, PlayerComponent);
// Create a new entity.
const playerId = manager.createEntity(['Player']);
// Update the player's state:
let playerData = manager.getComponentDataForEntity('Player', playerId);
playerData.life = 80;
// Which is equivalent to:
manager.updateComponentDataForEntity('Player', playerId, {
life: 80,
});
// Which can also be done when creating the entity:
const playerId = manager.createEntity(['Player'], null, {
Player: {
life: 80,
},
});
console.log(playerData);
// { life: 80, strength: 18, charisma: 3 }
}Documentation
The documentation is available on Read the docs. All methods are well documented and parameters are described.
For an overall explanation of ensy, you can read my blog post ensy - Entity System Reloaded.
Examples
There are examples in the examples directory:
- Concentration
- Total Madness Arena (Jam game, made in 3 days)
- Made something with
ensy? Add it here!
For developers
Install the dependencies with npm install. The source files are in src/.
The code uses es6 features, and is compiled to es5 using babel and rollup.
Building the code
$ npm run buildWe use rollup and babel to compile the code from es6 to es5, and uglify to minify the source code.
Running tests
$ npm testTo have tests watch your files and re-run when they change:
$ npm run test-wTo run the tests in your browser:
$ npm run test-browserBuilding the API documentation
$ npm run build_doc