I'm still tinkering on my multiplayer game server framework when not grinding away at my day job.
The idea is essentially: An Erlang-based control plane, supporting ENet and WebSocket connection modes, with Protobuf for messages. Erlang has an excellent concurrency story, and I think it's a great fit for game servers. I've wrapped up a bunch of this work into behaviors on the Erlang side, such that developers can target the "gen_zone" behavior (for instance) to implement a tick-based game server. I'd like to expand that into other types of games, such as turn-based games.
I've also got a Godot plugin for generating a client library based on your protobuf schema. The plugin handles session stuff, exposes functions for client-to-server messages, and emits signals for server-to-client messages.
These days I'm working on integrating Luerl (Lua in Erlang) and Love2D support. I want to be able to take advantage of Erlang on the back-end while writing the majority of game logic in Lua. Further down the road I want to explore hot reloading parts of the Lua game state on the client/server, perhaps with an in-game editor, to develop the game "inside-out", in a way.
Godot has a nice netcode story with ENet, WebSocket and WebRTC integration. If you just want a off-the-shelf product instead of bespoke Erlangy stuff, I think there are a lot of good options out there like Godot's native high-level networking, products like Nakama, etc.
The idea is essentially: An Erlang-based control plane, supporting ENet and WebSocket connection modes, with Protobuf for messages. Erlang has an excellent concurrency story, and I think it's a great fit for game servers. I've wrapped up a bunch of this work into behaviors on the Erlang side, such that developers can target the "gen_zone" behavior (for instance) to implement a tick-based game server. I'd like to expand that into other types of games, such as turn-based games.
I've also got a Godot plugin for generating a client library based on your protobuf schema. The plugin handles session stuff, exposes functions for client-to-server messages, and emits signals for server-to-client messages.
These days I'm working on integrating Luerl (Lua in Erlang) and Love2D support. I want to be able to take advantage of Erlang on the back-end while writing the majority of game logic in Lua. Further down the road I want to explore hot reloading parts of the Lua game state on the client/server, perhaps with an in-game editor, to develop the game "inside-out", in a way.