elixir-raknet
canada
Our great sponsors
elixir-raknet | canada | |
---|---|---|
2 | 2 | |
211 | 439 | |
0.5% | - | |
0.0 | 0.0 | |
7 months ago | about 3 years ago | |
Elixir | Elixir | |
MIT License | MIT License |
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.
canada
-
Authorization and Policy Scopes for Phoenix Apps
While it is definitely possible to roll out something by hand, it usually makes sense not to reinvent the wheel if well-maintained and tested libraries are available. Canada and Bodyguard are two of the more popular ones that I have seen in the community.
-
10 Years(-Ish) of Elixir
There are packages on Hex that haven't been updated in a long time but still work perfectly (Canada, for example: https://github.com/jarednorman/canada). Elixir itself doesn't change much... in fact there's no plans for a 2.0 on the horizon, so the fact that packages don't change often isn't a big deal if they still do what they say they do and aren't hurting for more features.
What are some alternatives?
scrivener_ecto - Paginate your Ecto queries with Scrivener
bodyguard - Simple authorization conventions for Phoenix apps
credo - A static code analysis tool for the Elixir language with a focus on code consistency and teaching.
canary
ex_venture - Text based MMORPG engine written in Elixir
authorize - Rule based authorization for Elixir
phx_gen_auth - An authentication system generator for Phoenix 1.5 applications.
Phauxth - Not actively maintained - Authentication library for Phoenix, and other Plug-based, web applications
stm_agent - Software transactional memory for Elixir.
terminator - 🛡 Modern elixir ACL/ABAC library for managing granular user abilities and permissions
policy_wonk - Elixir authorization and resource loading in Plug form for Phoenix
speakeasy - Middleware based authorization for Absinthe GraphQL powered by Bodyguard