- Elixir 99.9%
| .gitlab/merge_request_templates | ||
| cache | ||
| config | ||
| lib | ||
| priv | ||
| rel | ||
| scripts | ||
| test | ||
| .credo.exs | ||
| .dialyzer_ignore.exs | ||
| .dockerignore | ||
| .envrc | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| devenv.nix | ||
| docker-compose.yml | ||
| Dockerfile | ||
| flake.lock | ||
| flake.nix | ||
| mix.exs | ||
| mix.lock | ||
| README.md | ||
| test_cache.exs | ||
About
High-Level Alchemy is a game server emulator compatible with the 377 game client. It makes some attempt to emulate the popular MMORPG RuneScape around 2005. The project is a heavy work in progress. Many features are not even considered with the current design(s) and I would classify this as experimental at best.
Requirements
elixir>=1.18Erlang/OTP>=28
bzip2postgresql>=14
Client
For 377, I use refactored-377 fork
Usage
Nix/devenv
Use devenv to bring up a shell that can service both the game server application and a postgresql database:
$ devenv up # Bring up the Game Server, a PostgreSQL database and run migrations against it.
Docker
You can use docker-compose to bring up a stack that includes the application along with a postgresql database:
$ docker compose up
Manual
- Create a
config/.env.dev.exsfile. Fill it in with elixir environment variables.
System.put_env("HLA_DATABASE", "hla-dev")
System.put_env("HLA_DATABASE_USER", "hla")
System.put_env("HLA_DATABASE_PASSWORD","hla")
System.put_env("HLA_DATABASE_HOST","localhost")
System.put_env("HLA_DATABASE_PORT", "5432")
System.put_env("HLA_GAME_HOST", "localhost")
System.put_env("HLA_GAME_PORT", "43594")
System.put_env("HLA_JAGGRAB_PORT", "43595")
System.put_env("HLA_HTTP_PORT", "8080")
- Use
ectoto create the database and run migrations.
$ mix ecto.create
$ mix ecto.migrate
- Run the game server application
$ mix run --no-halt
or (with iex)
$ iex -S mix
RSA Login Encryption (Optional)
RSA encrypts the login block between client and server. Disabled by default — both sides must match.
- Generate a keypair:
mix rsa.keygen - Enable on the server:
export HLA_RSA_ENABLED=true - Copy the printed modulus into the client's
config/client-config.yamland setrsaEnabled: true - Restart both server and client
For Docker, the hla_rsa volume persists the key. Generate inside the container with docker exec hla_app mix rsa.keygen.