A text based MMO server written in Elixir.
Powerful web admin
- Everything is editable by the web admin panel and live in the game on save
- There are no text files to edit, everything is stored in PostgreSQL
- Using Phoenix Channels, ExVenture ships with a built in web client
- Hosted by the app itself, accessible by browsing to
Cross Game Chat
- ExVenture fully supports the Gossip network
- Cross game channels
- Cross game tells
- News announcements
- Help is web accessible
- Classes, skills, and races are all available on the home page
- Send and receive in game mail from your account page
- Chat with players in the game from the web chat
- The telnet connection does not allow passwords to be entered over plaintext
- Add TOTP to your account
- Crashes are contained in the room that they occur and those processes restart cleanly
- Player connections are not dropped during session recovery
- Use the power of elixir to start a cluster for your game
- The world is spread across the entire cluster
- Building on local resiliency, the app will stay alive if a node goes down
- PostgreSQL 10
- Elixir 1.7.2
- Erlang 21.0.5
- node.js 8.6
mix deps.get mix compile cd assets && npm install && node node_modules/brunch/bin/brunch build && cd .. mix ecto.reset mix run --no-halt
This will start a server on port 5555 that you can connect with using the
local.tin tintin++ config. Ecto reset will include a sample area, classes, skills, and a login. You can also load http://localhost:4000/ in your browser for the admin panel and web client.
MIX_ENV=test mix ecto.create MIX_ENV=test mix ecto.migrate mix test
A web client is hosted by the game. Once it is running locally, you can access it via http://localhost:4000/play.
There is an admin panel located at http://locahost:4000/admin that you can build out the game in. Create zones, rooms, npcs, items, etc. in the panel. They will become live instantly on creating or updating.
You can see more on exventure.org.
Prometheus metrics are set up and will be reported on
/metrics. You may want to have nginx deny requests to this endpoint or whitelist it for IPs, etc.