X-Git-Url: https://git.r.bdr.sh/rbdr/serpentity/blobdiff_plain/85861d6720c30adc4afd1e041fd7e27fb596dde7..6869172198b8cf67a5d532bc4fbb04005d452b4d:/README.md?ds=sidebyside diff --git a/README.md b/README.md index 3878dd1..6724652 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,20 @@ -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: @@ -26,7 +29,7 @@ Remove entities or 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 @@ -42,9 +45,9 @@ eventually be consumed by "Systems" } }); -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. @@ -70,28 +73,37 @@ that comply with that API 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/