APB9785
Creator of ECSx
ECSx
ECSx is a framework for using Entity Component System architecture to build real-time games and simulations. It is currently 100% Elixir, using :ets for managing Components, and GenServer for managing Systems under-the-hood.
Features
- Generators handle all boilerplate creation
- Type-checking for all component data
- Strict serializability of data operations
- Persistence with file system or Ecto (via ecsx_persistence_ecto)
- Integration with Phoenix LiveDashboard (via ecsx_live_dashboard)
How to Get Started
All you need to a functional game up and running:
- Install
:ecsxinto an existing Elixir app - Run
mix ecsx setup - Run
mix ecsx.gen.componentto define the various attributes which game entities may have - Run
mix ecsx.gen.systemto define the logical systems which update the game state over time - Write system logic using pure Elixir and a simple ECSx interface; e.g.
HitPoints.get(entity) - Develop your frontend using any technology you like (including LiveView)
To get you started quickly, there is a tutorial which walks you through each of the above steps, to create a game with a LiveView frontend, where you move around a battleship which automatically attacks any pirate ships which get within range
Resources
- DockYard blog post explaining ECS architecture and why it’s useful for Elixir gamedev
- ElixirConf 2023 talk with more examples and live ECSx demo
- Elixir Newbie podcast #34 where I discuss the history and key features of the project
- DockYard Elixir Roundtable podcast #21 the first public announcement of ECSx (starts at 28:00)
- Github repo
- Official documentation
- “Ship game” tutorial app repo
Trending in Announcing
Hey everyone!
Req is an HTTP client for Elixir that I’ve been working on for quite some time. There is already a lot of HTTP clients out...
New
Samly can be used to enable SAML 2.0 Single Sign On in a Plug/Phoenix application.
This library uses Erlang esaml to provide
plug enabl...
New
Flop is an Elixir library that applies filtering, ordering and pagination parameters to your Ecto queries.
offset-based pagination with...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Hi all!
I want to present a small library which provides a mix task for generating an Entity-Relationship Diagram for Ecto schemas.
You...
New
Hello
Published a new library - ProcessHub!
ProcessHub is a library designed to manage process distribution within the Elixir cluster. ...
New
Other Trending Topics
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
I am seeing a lot of aplications of Argumentum ad Vericundiam in software discussions. They do link some piece of writing and point us to...
New
Hey folks,
I just published a post about Hologram’s funding and where the project goes next - the short version:
Curiosum as Main Spons...
New
This showed up on my feed.. anyone heard of it? Just hype?
Ox Alpha is a reasoning model designed for coding, sustained ag...
New
Today we’re releasing Oban for Python. Not an Oban client in Python. Not a pythonx wrapper embedded in Elixir. Nope, it’s a fully operati...
New
It’s not that it’s vocabulary is too advanced. It’s something worse.
I get lost trying to follow even a paragraph written by Claude. It’...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #ai
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming









