Very terribly explained :)
This expands on the ECS, Entity Component System architecture. A game Engine manages a list of Systems, each of whom follow and impact changes on a list of Entities. Entities have their list of components, which are discrete bags of state.
Instead, Wild-Magic will be component-first, so that components may reference other components in a graph-like way.
The ECS or Component-Graph-System means that the games programmer must operate on data, instead of designing complex webs of logic inside classes and handlers. This is a little hard to explain, I'd like to prove it in a demo.
The game system is immutable and stateless. Each activity produces an entirely new engine object. At any time data can be injected, for example, from local storage or from a server, and the game logic will rehydrate.
This project, at least the core package, aims to be functional where possible to aid in testing, and as a creative constraint. Here functional means using composition, unary functions, and disallowing certain code concepts such as classes and if blocks to limit side-effects.
Beta! The nature of this code is ever-shifting!
Note: If you don't have Node.js installed on your machine, you can run a "docker shell" with make dshell from which you'll have a fully working Node.js environment. Make sure you have already installed both Docker Engine and Docker Compose.
- Install dependencies:
make install
- Run in dev mode:
make start
- Build:
make build
- Test:
make test
- Lint:
make lint
- Clean:
make clean
This project is a mono-repo, setup using Lerna. All packages can be found under ./packages/
.
Some useful commands:
lerna run --scope package-name dev --stream
will run the dev script defined in package-name project