elixir-raknet
stm_agent
Our great sponsors
elixir-raknet | stm_agent | |
---|---|---|
2 | 1 | |
211 | 0 | |
0.5% | - | |
0.0 | 0.3 | |
7 months ago | over 3 years ago | |
Elixir | Elixir | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
elixir-raknet
-
Bootstrapping a multiplayer server with Elixir at X-Plane
The core of the X-Plane server is our RakNet UDP protocol, which is open sourced under the MIT license here:
https://github.com/X-Plane/elixir-raknet
It's not a full game server, but the "Usage" section of the README provides a sketch of what the rest of the server (the part that implements the business logic) looks like.
-
10 Years(-Ish) of Elixir
Happy Elixir user here. At work we have a use case that isn't covered by José's high-level overview of the domains Elixir's used in: we run a massive multiplayer game server on it.
This is actually a really good fit. (It kind of rhymes with the original use of Erlang, being telecoms infrastructure.) We get outstanding concurrency support, high reliability, and really efficient development times. I can't imagine shipping this feature with a server written in C++ (the language I'm most comfortable in), and I can't imagine scaling it the way we need to if we'd gone for a traditional web language like Node, PHP, etc.
If you're interested, you can see the RakNet (game networking protocol) implementation we use on the server here:
https://github.com/X-Plane/elixir-raknet
The README gives a good overview of the full MMO server's architecture, too: each client connection is a stateful Elixir process (not to be confused with a heavy-weight OS process!), acting asynchronously on a client state struct; clients then asynchronously schedule themselves to send updates back to the user.
stm_agent
-
10 Years(-Ish) of Elixir
Do you use it for server side game logic too?
It's not as ambitious as an MMO, but I like to use MUDs to learn new languages. I've been (slowly) working on one to learn Elixir and I'm actually finding the concurrency model somewhat difficult to use for the MUD - especially the single world that every player connects to.
I ended up writing my own kind of software transactional memory library to help me out: https://github.com/stevbov/stm_agent
But relying on a library like this feels fairly un-Elixir-like. It seems like the language would shine more in a problem space where there's not so much potential for arbitrary processes to depend upon eachother.
What are some alternatives?
scrivener_ecto - Paginate your Ecto queries with Scrivener
ex_venture - Text based MMORPG engine written in Elixir
credo - A static code analysis tool for the Elixir language with a focus on code consistency and teaching.
phx_gen_auth - An authentication system generator for Phoenix 1.5 applications.
canada - Easy permission definitions in Elixir apps!