This is Lyceum — an MMO game with the server written in Erlang and the client written in Zig (superchanged with raylib and Zerl).
There are several ways to run this project, but they all leverage Nix. We have a single devenv configured, that has all the tooling required to run this project, it also includes postgres.
nix develop --impure
devenv up
(ordevenv up -d
) to launch a localpostgres
just db-reset
ordb-reset
, to initializepostgres
for local development- Initialize the map:
just shell
# (...)
(lyceum_server@euclid)1> map_generator:main(["Pond", "./maps/Pond"]).
Connecting to "127.0.0.1" at "5432"
Successfully connected to "127.0.0.1"
ok
(lyceum_server@euclid)2>
After populating the maps inside the DB, you can now:
server
- followed by
client-release
- Once you get the client to launch, connect to
localhost
and you can try playing with any of the local credentials here.
# To enter the developmet shell
nix develop --impure
# To spawn postgres
devenv up -d
For more commands, make sure to check just
.
# Will list all commands we have right now
just
to migrate the local dababase, you can use just db-up
or db-up
.
You can also build the server and related OCI images with Nix.
nix build .#server
if you prefer running a container for the server:
nix build .#buildImage
docker load < ./result
docker container run --network=host lyceum:latest
This game is deployed in our NixOS server.
References for assets used in this project:
- sand_texture
- grass_texture
- dirt_texture
- water_texture
- tile_model (used for all types of tiles)
- chest_model
- bush_model
- tree_model
- logo_font
- text_font
- background_music
- button_select_sound
- button_click_sound
- error_sound
- character_model (slightly modified in blender)
Everything else was made by developers from the project or generated using tools.
At the dawn, a solitary tower rose at the very heart of creation. Its heights soared beyond measure, each stone wrought by the hand of Adraman. Within its lofty chambers, knights slumbered in homage to their lord, their dreams steeped in profound reverence, each to an ultimate idea.
With time, some knights, restless and wide awake amidst the collective slumber, were drawn by the haunting whispers of the wind. Captivated by the unseen melodies that danced upon the breeze, he cast himself from the tower’s precipice. As he plummeted, his trumpet echoed through the realms, a clarion call that shattered the tranquility of ages past.
The reverberations of the trumpet stirred the knights from their deep repose, igniting a tumultuous awakening. With swords unsheathed and hearts ablaze, they clashed in a thunderous symphony of war, each seeking to claim dominance over the waking realm. Now at each strike, the meanings of such ideas changed; losing the ideas with time.
In the aftermath of countless battles, only one knight remained standing amidst the echoes of strife. His valor and defiance marked him as both hero and pariah, banished to the realm of the lowly ones where he ascended to rule over the twin cities of Tlova.
To reclaim the lost harmony and seek redemption in Adraman’s eyes, the Lyceum arose — a monumental testament to humanity’s quest to bridge the chasm between the heavenly mind and the mortal libraries.
Now far from the tower, a new era dawns as humanity’s torch flickers into darkness, its once radiant light dimming against the encroaching shadow of over their minds! With trepidation etched upon their faces, barbarian tribes lay claim to the northern realms, and their conquests marking a steady advance southward. Meanwhile, corruption festers within the cities’ beating heart, severing its ancient ties to the source of all truth.
In the fading twilight of their former glory, the heavens whisper of impending change, and the lands tremble beneath the weight of uncertainty. As the cities now struggle to stem the tide of internal decay and external aggression, the balance of power shifts perilously, casting doubt upon the fate of civilizations wrought by the hands of gods and men alike. It is your duty, oh great Philosopher, to mend the meanings and bring us all closer to truth once again.