{"id":17624562,"url":"https://github.com/dr-nekoma/lyceum","last_synced_at":"2025-05-16T16:04:57.468Z","repository":{"id":217018755,"uuid":"742696946","full_name":"Dr-Nekoma/lyceum","owner":"Dr-Nekoma","description":"An MMO game written in Erlang (+ PostgreSQL) + Zig (+ Raylib) ","archived":false,"fork":false,"pushed_at":"2025-05-11T00:19:41.000Z","size":18449,"stargazers_count":301,"open_issues_count":16,"forks_count":9,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-16T16:04:24.819Z","etag":null,"topics":["devenv","erlang","erlang-otp","game","justfile","nix","nix-flake","postgresql","raylib","raylib-zig","zerl","zig","ziglang"],"latest_commit_sha":null,"homepage":"","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dr-Nekoma.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-01-13T05:00:44.000Z","updated_at":"2025-05-09T14:54:36.000Z","dependencies_parsed_at":"2024-01-20T05:30:42.882Z","dependency_job_id":"9fa5466d-d7e0-4ad8-a0e9-c8e4c0f221f6","html_url":"https://github.com/Dr-Nekoma/lyceum","commit_stats":null,"previous_names":["dr-nekoma/mmo-server"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dr-Nekoma%2Flyceum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dr-Nekoma%2Flyceum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dr-Nekoma%2Flyceum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dr-Nekoma%2Flyceum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dr-Nekoma","download_url":"https://codeload.github.com/Dr-Nekoma/lyceum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254564124,"owners_count":22092122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devenv","erlang","erlang-otp","game","justfile","nix","nix-flake","postgresql","raylib","raylib-zig","zerl","zig","ziglang"],"created_at":"2024-10-22T22:04:35.884Z","updated_at":"2025-05-16T16:04:57.455Z","avatar_url":"https://github.com/Dr-Nekoma.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+TITLE: Lyceum 🏛️\n\n#+html: \u003ca href=\"https://builtwithnix.org\"\u003e\u003cimg alt=\"built with nix\" src=\"https://builtwithnix.org/badge.svg\" /\u003e\u003c/a\u003e\u003cbr\u003e\n#+html: \u003ca href=\"https://github.com/Dr-Nekoma/lyceum/actions/workflows/client_build.yml\"\u003e \u003cimg alt=\"[Client] Build\" src=\"https://github.com/Dr-Nekoma/lyceum/actions/workflows/client_build.yml/badge.svg\" /\u003e\u003c/a\u003e\u003cbr\u003e\n#+html: \u003ca href=\"https://github.com/Dr-Nekoma/lyceum/actions/workflows/server_build.yml\"\u003e \u003cimg alt=\"[Server] Build\" src=\"https://github.com/Dr-Nekoma/lyceum/actions/workflows/server_build.yml/badge.svg\" /\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/Dr-Nekoma/lyceum/actions/workflows/server_dialyzer.yml\"\u003e \u003cimg alt=\"[Server] Dialyzer\" src=\"https://github.com/Dr-Nekoma/lyceum/actions/workflows/server_dialyzer.yml/badge.svg\" /\u003e\u003c/a\u003e\n#+html: \u003ca href=\"https://github.com/Dr-Nekoma/lyceum/actions/workflows/server_deploy.yml\"\u003e \u003cimg alt=\"[Server] Deploy\" src=\"https://github.com/Dr-Nekoma/lyceum/actions/workflows/server_deploy.yml/badge.svg\" /\u003e\u003c/a\u003e\n\n* Announcement\n\nCurrently, Lyceum is in a paused state, i.e., this project may receive occasional commits and updates but major features' design and implementation are all\n*paused*. Feel free to make contributions/pull requests, one of our developers will eventually see it. We plan to return to this project at some point in the future.\n\n* About\n\nThis is Lyceum --- an MMO game with the server written in [[https://www.erlang.org/][Erlang]] and the client\nwritten in [[https://ziglang.org/][Zig]] (supercharged with [[https://github.com/raysan5/raylib][raylib]] and [[https://github.com/dont-rely-on-nulls/zerl][Zerl]]).\n\n#+html: \u003cp align=\"center\"\u003e\u003cimg src=\"./menu.jpg\" alt=\"The game menu\"\u003e\u003c/p\u003e\n#+html: \u003cp align=\"center\"\u003e\u003cimg src=\"./game.gif\" alt=\"game\"/\u003e\u003c/p\u003e\n\n* How to run\n\nThere are several ways to run this project, but they all leverage [[https://nixos.org/][Nix]]. We have a\nsingle [[https://devenv.sh/][devenv]] configured, that has all the tooling required to run this project,\nit also includes postgres.\n\n** Development Shell\n\nTo enter a development shell we assume you have at least [[https://nixos.org/][Nix]] installed:\n\n#+BEGIN_SRC shell\n  # To enter the developmet shell\n  nix develop --impure\n  # To spawn postgres (for instance)\n  devenv up -d\n#+END_SRC\n\nFor more commands, make sure to check ~just~.\n\n#+BEGIN_SRC shell\n    # Will list all commands we have right now\n    just\n#+END_SRC\n\nto migrate the local dababase, you can use ~just db-up~ or ~db-up~.\n\n*** Nix Builds\n\nYou can also build the server and related OCI images with Nix.\n\n#+BEGIN_SRC shell\n  nix build .#server\n#+END_SRC\n\nif you prefer running a container for the server:\n\n#+BEGIN_SRC shell\n  nix build .#buildImage\n  docker load \u003c ./result\n  docker container run --network=host lyceum:latest\n#+END_SRC\n\nor if you want to build the ~zig~ client, run ~nix build .#client~.\n\n** Testing the Game\n\nTo run our DEMO you need to follow the steps in this particular order:\n\n1. ~nix develop --impure~ (to enter a development shell)\n2. ~devenv up~ to launch a local ~postgres~\n3. Run the ~erlang~ backend in a separate shell with either:\n\n    #+begin_src shell\n      server\n      # or\n      just server\n      # or if you want a pure build\n      nix build .#server\n      ./result/bin/server foreground\n    #+end_src\n\n4. Followed by running the ~zig~ client in a third shell with either:\n\n    #+begin_src shell\n      client-release\n      # or\n      just client-release\n      # or if you prefer a pure build\n      nix build .#client\n      ./result/bin/lyceum-client\n    #+end_src\n\n    *Addendum*: We got [[https://github.com/Dr-Nekoma/lyceum/pull/83#issuecomment-2550476288][reports]] that (sometimes) non-NixOS users will have to rely on[[https://github.com/nix-community/nixGL][ nixGL]]. Make sure you run ~nix build .#client~ beforehand.\n\n    #+begin_src shell\n      nix run --impure github:nix-community/nixGL -- ./result/bin/lyceum-client\n    #+end_src\n\n5. Once you get the client to launch, connect to ~localhost~ and you can try\n   playing with any of the local credentials [[https://github.com/Dr-Nekoma/lyceum/blob/master/server/database/main.input.sql#L3][here]].\n\n** Deployment\n\nThis game is deployed in our [[https://github.com/Dr-Nekoma/trashcan][NixOS server]].\n\n* Assets\n\nReferences for assets used in this project:\n\n- [[https://opengameart.org/node/33425][sand_texture]]\n- [[https://opengameart.org/content/stylized-grass][grass_texture]]\n- [[https://opengameart.org/content/simple-seamless-tiles-of-dirt-and-sand-dirt-2-png][dirt_texture]]\n- [[https://opengameart.org/content/texture-water][water_texture]]\n- [[https://free3d.com/3d-model/-rectangular-grass-patch--205749.html][tile_model]] (used for all types of tiles)\n- [[https://free3d.com/3d-model/treasure-chest-v1--156264.html][chest_model]]\n- [[https://opengameart.org/content/fern][bush_model]]\n- [[https://opengameart.org/content/tree-24][tree_model]]\n- [[https://free3d.com/3d-model/rock-v2-lp-63239.html][rock_model]]  \n- [[https://www.dafont.com/eari.font?text=Lyceum][logo_font]]\n- [[https://www.dafont.com/kelmscott.font?text=Connect][text_font]]\n- [[https://tholgrimar.bandcamp.com/track/linear-b][background_music]]\n- [[https://opengameart.org/content/menu-selection-click][button_select_sound]]\n- [[https://opengameart.org/content/click][button_click_sound]]\n- [[https://opengameart.org/content/soundpack-04][error_sound]]  \n- [[https://youtu.be/gFf5eGCjUUg?si=cmJcKlSzoV4ES0p8][character_model]] (slightly modified in blender)\n\nEverything else was made by developers from the project or generated using tools.  \n\n* Lore\n\nAt the dawn, a solitary tower rose at the very heart of creation. Its\nheights soared beyond measure, each stone wrought by the hand of\nAdraman. Within its lofty chambers, knights slumbered in homage to\ntheir lord, their dreams steeped in profound reverence, each to an\nultimate idea.\n\nWith time, some knights, restless and wide awake amidst the collective\nslumber, were drawn by the haunting whispers of the wind. Captivated\nby the unseen melodies that danced upon the breeze, he cast himself\nfrom the tower's precipice. As he plummeted, his trumpet echoed\nthrough the realms, a clarion call that shattered the tranquility of\nages past.\n\nThe reverberations of the trumpet stirred the knights from their deep\nrepose, igniting a tumultuous awakening. With swords unsheathed and\nhearts ablaze, they clashed in a thunderous symphony of war, each\nseeking to claim dominance over the waking realm. Now at each strike,\nthe meanings of such ideas changed; losing the ideas with time.\n\nIn the aftermath of countless battles, only one knight remained\nstanding amidst the echoes of strife. His valor and defiance marked\nhim as both hero and pariah, banished to the realm of the lowly ones\nwhere he ascended to rule over the twin cities of Tlova.\n\nTo reclaim the lost harmony and seek redemption in Adraman's eyes, the\nLyceum arose — a monumental testament to humanity's quest to bridge the\nchasm between the heavenly mind and the mortal libraries.\n\nNow far from the tower, a new era dawns as humanity's torch flickers\ninto darkness, its once radiant light dimming against the encroaching\nshadow of over their minds! With trepidation etched upon their faces,\nbarbarian tribes lay claim to the northern realms, and their conquests\nmarking a steady advance southward. Meanwhile, corruption festers\nwithin the cities' beating heart, severing its ancient ties to the\nsource of all truth.\n\nIn the fading twilight of their former glory, the heavens whisper of\nimpending change, and the lands tremble beneath the weight of\nuncertainty. As the cities now struggle to stem the tide of internal\ndecay and external aggression, the balance of power shifts perilously,\ncasting doubt upon the fate of civilizations wrought by the hands of\ngods and men alike. It is your duty, oh great Philosopher, to mend the\nmeanings and bring us all closer to truth once again.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdr-nekoma%2Flyceum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdr-nekoma%2Flyceum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdr-nekoma%2Flyceum/lists"}