X-Git-Url: https://git.r.bdr.sh/rbdr/serpentity/blobdiff_plain/c2c83a18d5c42264d7aea3ee1c7c91e02311a7c1..refs/heads/support/deprecate-old-package:/README.md?ds=sidebyside diff --git a/README.md b/README.md index 174c5db..bb38c70 100644 --- a/README.md +++ b/README.md @@ -1,97 +1,10 @@ -Serpentity is a simple entity framework inspired by Ash. +# Serpentity -Usage: +Serpentity has moved! - require('serpentity'); +Check out: [@serpentity/serpentity][serpentity-package] -## Instantiating an engine +This package will stay at 2.0.0 (initial release of +@serpentity/serpentity) but won't receive further updates. - var engine = Serpentity(); - -Add entities or systems: - - engine.addEntity(entityFactory()); - engine.addSystem(new GameSystem()); - -Update all systems: - - engine.update(dt); - -Remove entities or systems: - - engine.removeEntity(entityReference); - engine.removeSystem(systemReference); - -## Creating Entities - -Entities are the basic object of Serpentity, and they do nothing. - - var entity = new Serpentity.entity(); - -All the behavior is added through components - -## Creating Components - -Components define data that we can add to an entity. This data will -eventually be consumed by "Systems" - - Class("PositionComponent").inherits(Serpentity.Component)({ - prototype : { - x : 0, - y : 0 - } - }); - -You can add components to entities by using the add method: - - entity.add(new PositionComponent()); - - -Systems can refer to entities by requesting nodes. - -## Working with Nodes - -Nodes are sets of components that you define, so your system can require -entities that always follow the API defined in the node. - - Class("MovementNode").inherits(Serpentity.Node)({ - types : { - position : PositionComponent, - motion : MotionComponent - } - }); - -You can then request an array of all the nodes representing entities -that comply with that API - - engine.getNodes(MovementNode); - -## Creating Systems - -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); - }); - } - } - }); - -## That's it - -Just run `engine.update(dt)` in your game loop :D - -## TO-DO - -* Removing components -* Implement the ashteroids demo (Serpentoids) -* Actually check performance +[serpentity-package]: https://www.npmjs.com/package/@serpentity/serpentity