-Serpentity is a simple entity framework inspired by Ash.
+# Serpentity
+
+Serpentity is a simple entity framework inspired by [Ash][ash].
Usage:
-require('serpentity');
+ require('serpentity');
## Instantiating an engine
-var engine = Serpentity();
+ var engine = Serpentity();
-Add entities or systems:
+Add entities or systems, systems are added with a priority (the smaller
+the number, the earlier it will be called):
engine.addEntity(entityFactory());
- engine.addSystem(new GameSystem());
+ engine.addSystem(new GameSystem(), priority);
Update all systems:
Entities are the basic object of Serpentity, and they do nothing.
- var entity = new Serpentity.entity();
+ var entity = new Serpentity.Entity();
All the behavior is added through components
}
});
-You can add components to entities by using the add method:
+You can add components to entities by using the addComponent method:
- entity.add(new PositionComponent());
+ entity.addComponent(new PositionComponent());
Systems can refer to entities by requesting nodes.
Systems are called on every update, and they use components through nodes.
-Class("TestSystem").inherits(Serpentity.System)({
- prototype : {
- added : function added(engine){
- this.nodeList = engine.getNodes(MovementNode);
- },
- removed : function removed(engine){
- this.nodeList = undefined;
- }
- update : function update(dt){
- this.nodeList.forEach(function (node) {
- console.log("Current position is: " + node.position.x + "," + node.position.y);
- });
+ Class("TestSystem").inherits(Serpentity.System)({
+ prototype : {
+ added : function added(engine){
+ this.nodeList = engine.getNodes(MovementNode);
+ },
+ removed : function removed(engine){
+ this.nodeList = undefined;
+ }
+ update : function update(dt){
+ this.nodeList.forEach(function (node) {
+ console.log("Current position is: " + node.position.x + "," + node.position.y);
+ });
+ }
}
- }
-});
+ });
## That's it
Just run `engine.update(dt)` in your game loop :D
+## Checking it in the frontend (dev).
+
+You can link the bower package to test it out locally.
+Spawn a python server (`python -m SimpleHTTPServer`) to see
+the test page in `http://localhost:8000/browser_test/`
+
+
## TO-DO
* Removing components
* Implement the ashteroids demo (Serpentoids)
* Actually check performance
+
+[ash]: http://www.ashframework.org/