Skip to content

dreamfarer/equinox-map

Repository files navigation

Equinox: Homecoming Interactive Map

This interactive map for Equinox: Homecoming is a community-driven project – created and maintained by players, for players. Try it out here!

Implemented Features

The following features are fully implemented and available in the live version:

  • Toggle marker categories on/off via click in the menu
  • Search markers, titles, subtitles, and content
  • Click a search result to fly to that marker on the map
  • Click a marker to open a popup with additional information
  • Collect markers via right-click (long-press on mobile)
  • Interactive tutorial that guides users through all features

Help, Feedback, Issues, Suggestions

Have feedback, found a bug, have a feature request, or need help? Open an issue on GitHub.

Technical Overview

Deployment

The project is currently running on free plans. The serverless Next.js frontend is hosted on Vercel, and the map tiles are stored in a Cloudflare R2 bucket.

Data Sourcing & Processing

This is a collaborative community effort, with data sourced by players exploring the game.

All markers are first added to /public/markers in the data branch. They are then processed, if necessary, and ultimately merged into the main branch via a pull request. A GitHub workflow resets the data branch to match the current main state. At build time, a script merges, validates, and converts marker data to GeoJSON for use with MapLibre GL.

Marker positions are stored in Cartesian coordinates (in meters), independent of any specific geographic projection. During the build process, these coordinates are converted to Web Mercator according to the transformation rules defined in map.json. This decouples the raw data from the runtime map projection, making it easier to adapt or scale in the future.

While a purely Cartesian system would be ideal for a flat game map, MapLibre GL currently requires geographic coordinates in Web Mercator projection.

Icon Processing

Icons are processed using a script prior to deployment. The script optionally crops the input image, resizes it, and exports it to WebP format at a specified quality setting.

npm run build:prepare -- <img> <quality> <cropX> <cropY> <size>

Map Tiling

To prepare a large map image for use with MapLibre GL, run the script scripts/tile.sh:

sh tile.sh <source-image.png> [<cropX_px> <cropY_px>]

This script adds transparent padding, centers and optionally crops the image, and generates tiles. It also prints a partial map.json configuration to the console.

Thanks to the separation between raw marker data and the runtime projection, you won’t need to adjust marker coordinates or apply runtime shifts when padding, shifting, or scaling the map image, unless the source image itself changes. All coordinates are resolved at build time.

Statistics

Since launch, the project has seen 17'910 unique visitors and 2'220'130 total requests, aggregated across all months. These statistics are provided by Cloudflare.

February 2026

Unique Visitors: 2'560
Total Requests: 394'500

January 2026

Unique Visitors: 1'640
Total Requests: 274'520

December 2025

Unique Visitors: 2'200
Total Requests: 296'770

November 2025

Unique Visitors: 2'420
Total Requests: 298'380

October 2025

Unique Visitors: 2'360
Total Requests: 273'980

September 2025

Unique Visitors: 1'780
Total Requests: 234'350

August 2025

Unique Visitors: 1'410
Total Requests: 119'880

July 2025

Unique Visitors: 1'530
Total Requests: 130'770

June 2025

Unique Visitors: 2'010
Total Requests: 196'980

Acknowledgements

This project wouldn’t be possible without the tireless efforts of the following individuals – and of course, Blue Scarab Entertainment, the studio behind Equinox: Homecoming:

  • CookieFox: Reported missing and incorrect locations, helped gather clothing and tack data, and tracked reputation gains for weekly quests initially.
  • dreamfarer: Leads overall concept, planning, communications, software engineering, DevOps, and data processing.
  • Kalyss: Submitted missing locations.
  • Laika: Created the original resource map in image form.
  • lil big guy: Submitted missing locations.
  • Onyx: Provided the artefact locations.
  • Snowhawk: Maintains a comprehensive Google Sheet tracking characters, quests, deliveries, clothing, tack, and more.
  • Sugertoxity: Helped plan the overall concept, communications and early location data sourcing and processing.
  • Yumemi: Submitted missing locations.
  • zaaap!: Produced a video showcase of the interactive map.
  • ☾ * 𝔉𝔢𝔢𝔩𝔦 ༓ ☽: Submitted a missing location.

Contributors