Encompass + LÖVE: Statically typed ECS development
Posted: Wed Jun 12, 2019 6:57 pm
Hello everyone!
First of all, thanks to the maintainers of LÖVE. This is an incredible project and my favorite 2D game engine hands down.
However, as my projects grew larger, the dynamically typed nature of Lua began to impede my development as unexpected nils and other nasty problems crept into my code. I also found myself increasingly frustrated with object-oriented patterns.
Because of this, I began looking into ECS, and spent the past year developing the Hyper ECS architecture, an enhancement of ECS that attempts to fix some common problems with the architecture. It has some nifty features, like automatic system ordering and race condition prevention.
I also started looking into ways I could do statically typed development for LÖVE. Encompass-TS is an implementation of the Hyper ECS pattern in TypeScript. Thanks to the TypeScriptToLua project, you can develop in TypeScript and compile to Lua.
Encompass-TS fully supports LÖVE. There is a full tutorial and a few example projects in existence.
A fully-featured tutorial is located here:
https://encompass-ecs.github.io/
The Encompass + LÖVE starter pack is here:
https://github.com/encompass-ecs/encomp ... 2d-starter
API Docs are hosted here:
https://encompass-ts.readthedocs.io/en/latest/api.html
And all Encompass-related code is hosted on our GitHub organization:
https://github.com/encompass-ecs
I hope you make some cool projects with Encompass and LÖVE, please let me know if you do! Feel free to join our Discord chat as well!
First of all, thanks to the maintainers of LÖVE. This is an incredible project and my favorite 2D game engine hands down.
However, as my projects grew larger, the dynamically typed nature of Lua began to impede my development as unexpected nils and other nasty problems crept into my code. I also found myself increasingly frustrated with object-oriented patterns.
Because of this, I began looking into ECS, and spent the past year developing the Hyper ECS architecture, an enhancement of ECS that attempts to fix some common problems with the architecture. It has some nifty features, like automatic system ordering and race condition prevention.
I also started looking into ways I could do statically typed development for LÖVE. Encompass-TS is an implementation of the Hyper ECS pattern in TypeScript. Thanks to the TypeScriptToLua project, you can develop in TypeScript and compile to Lua.
Encompass-TS fully supports LÖVE. There is a full tutorial and a few example projects in existence.
A fully-featured tutorial is located here:
https://encompass-ecs.github.io/
The Encompass + LÖVE starter pack is here:
https://github.com/encompass-ecs/encomp ... 2d-starter
API Docs are hosted here:
https://encompass-ts.readthedocs.io/en/latest/api.html
And all Encompass-related code is hosted on our GitHub organization:
https://github.com/encompass-ecs
I hope you make some cool projects with Encompass and LÖVE, please let me know if you do! Feel free to join our Discord chat as well!