Overworld Game Server

<< Join us on Discord >>

Overworld is a multiplayer game server framework powered by Erlang/OTP. The project is focused on building tools for the creation of player-driven worlds of all kinds, with a special focus on account management, database persistence, instances/sharding, NPCs, server-side scripting and more.

The project draws inspiration from classic large-scale multiplayer games like Ultima Online, EverQuest, Star Wars Galaxies, and the many amazing user-generated worlds built with platforms like BYOND, Neverwinter Nights, and Roblox.

Overworld is Free Software, available under the GPL.

Getting started

First, install OTP from the Erlang website or your local package repository. The framework has mostly been developed with OTP 21+. It has not been tested with older versions.

You will also need the rebar3 build tool in order to build, test and deploy the server.

You can consult the documentation directory for some examples on using Overworld. The Chat application demo is a good place to get started.

Style

Please try to annotate functions with type specs and edoc comments. This will make dialyzer happy, it will make the maintainers happy, and it may even make you happy.

Before creating a merge request

Please ensure that all proposed code changes have been run through rebar in the following way:

  rebar3 fmt --write

.hrl files are explicitly excluded because some of the data is formatted in a particular way there.

Run dialyzer and try to eliminate errors to the best of your ability:

  rebar3 dialyzer

Ideally, any new function would have a corresponding test written for it following the function definition. You should validate that eunit:run_test(<your module>) succeeds as expected.

You should also attempt to annotate functions with type specs as best as possible.