The website for Zee's Games: open source multiplayer games made with Godot and run on The Modding Community's gaming platform. The games code lives in the zees-games organisation.
A static Astro site styled with Tailwind CSS.
| Path | What |
|---|---|
/ |
Every game, with Zee's running servers first |
/goals |
Why these games exist |
/<game> |
A game: summary, how to play, modes, Play Now |
/<game>/maps |
Every map in the game's map pack, with a link to the pack on GitHub; ported maps show the Godot version next to a screenshot of the original |
Every page also exists in Spanish, French, German, Russian, Dutch, Japanese, Chinese and Portuguese under /es, /fr, /de, /ru, /nl, /ja, /zh and /pt (English has no prefix), the same languages as The Modding Community.
<game> is the game's app address on The Modding Community, so zeesgames.com/arena and moddingcommunity.com/arena are the same game.
npm install
cp .env.ex .env # optional; every value has a production default
npm run devnpm run build runs astro check and writes the static site to dist/.
The image builds the site and serves dist/ from nginx. .env is read twice: at build time for the PUBLIC_* origins, which are inlined into the pages, and at container start for the Umami settings and compose's ports.
cp .env.ex .env # set the origins, UMAMI_*, INTERNAL_PORT, BIND_ADDR, BIND_PORT
docker compose up -d --buildAnalytics: set UMAMI_SRC and UMAMI_WEBSITE_ID in .env to load Umami. They are read when the container starts, so docker compose up -d --force-recreate applies a change without a rebuild. The custom events are listed in src/lib/umami.ts.
The icon set and share banners in public/ and public/og/ are generated: npx playwright install chromium once, then npm run brand after adding a game or changing a cover.
Put a TLS-terminating reverse proxy in front of BIND_ADDR:BIND_PORT.
src/data/games.ts: the games, written by hand.src/i18n/ui/<locale>.ts,src/i18n/games/<locale>.ts: the site's text and each game's description, per language.src/data/maps.json: maps per game, generated from the map repositories byscripts/gen-maps.py.src/data/originals.json: for each ported map, a screenshot of the original and where it came from.
MIT, except the screenshots of original maps in public/images/originals/, which belong to their authors. See LICENSE.