APB9785
Creator of ECSx
ECSx - an Entity-Component-System framework for Elixir
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
First Post!
AstonJ
Popular in Announcing
In short
Plug n’ play OAuth 2.0 provider library. Just set up a resource owner schema with Ecto (your user schema), install the dependen...
New
import Meeseeks.CSS
html = HTTPoison.get!("https://news.ycombinator.com/").body
for story <- Meeseeks.all(html, css("tr.athing")) do...
New
Bandit is an HTTP server for Plug and WebSock apps.
Bandit is written entirely in Elixir and is built atop Thousand Island. It can serve...
New
I’ve just released version 3 of Comeonin, a password hashing library.
The following small changes have been made:
changes to the NIF c...
New
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
parameterized pipe in elixir: |n>
edit: negative index in |n> and mixed usage with |> are supported
example:
use ParamPipe
...
New
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine)
This is a plugin that adds support for Elixir to JetBrains IntelliJ...
New
Hi! Today, after a couple weeks of development I’ve released v0.1 of LiveVue.
It’s a seamless integration of Vue and Phoenix LiveView, i...
New
Hi,
I thought I had posted my library before but seems I hadn’t. The project is still in early stages but it’s growing and so I think it...
New
Hi! :waving_hand:
I would like to present LiveSelect, a little library that I wrote to easily add a dynamic selection input to your LV f...
New
Other popular topics
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!)
This post collects co...
New
Hi All,
I set a environment variables in dev.exs , like below code.
when i start server, how can i set the ${enable} value?
thanks.
d...
New
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
Hello, how can I check the Phoenix version ?
Thanks !
New
What learn first? Rust or Elixir
Hi Elixir community!
I’m here because i want learn a new language. I’m a junior developer and mainly i ...
New
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum.
...
New
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
There are pre-rolled solutions for other frameworks that do work. However, Phoenix does not seem to have these. Have people had good expe...
New
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
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
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #hex









