┌───────────────────────┐
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
└───────────────────────┘
GeoLocatr
~ Ian Mattas
--[ repository ]------------------------------------------------------------

    URL      : https://github.com/imattas/GeoLocatr
    Language : Batchfile
    Status   : active
    Stars    : 0
    Updated  : 2026-06-19

External GeoGuessr (Steam/Duels) location overlay for authorized private games —
single self-contained .bat

────────────────────────────────────────────────────────────────────────────────

--[ GeoLocatr — GeoGuessr (Steam / Duels) location overlay ]--

For authorized PRIVATE games only.

An external overlay that reads the true coordinates of the current GeoGuessr
round and shows them in-game — coordinates, country flag + place name, a marker
on the in-game guess map, and more. It does not modify any game files; it
attaches to the Steam app's Electron renderer over Chromium's debug protocol at
runtime.

 Use this only in private games you're authorized to use it in. Using it in
 ranked/public matchmaking against non-consenting players is cheating.

--[ Requirements ]--

- Node.jshttps://nodejs.org (used to run the controller; no build needed).
- GeoGuessr Duels on Steam.

--[ Run it ]--

Double-click `GeoLocatr.bat` (or run it from a terminal).

It will: close any running GeoGuessr, relaunch it through Steam with the debug
flag, wait for it, unpack the controller, and attach. Start a private round —
the overlay appears in-game. Keep the console window open; closing it stops
the overlay.

If GeoGuessr is already running with the debug flag, the bat just attaches.

--[ What it shows ]--

- Coordinates, auto-updating each round
- Country flag (image) + place name (city / region / country)
- Distance moved, compass heading (optional), and a round counter
- Marker on the in-game guess map at the real location
- 🎯 Guess here button, plus Maps ↗ and Street View ↗ links

--[ Mod menu — ⚙ gear (or Ctrl+Shift+M) ]--

Toggle any feature on/off (coordinates, place name, country flag, distance,
map marker, "Guess here" button, compass heading, private-games-only), adjust
opacity, or Reset position. All settings persist across sessions.

--[ Hotkeys / controls ]--

- Ctrl+Shift+L — hide / show the overlay
- Ctrl+Shift+M — open the menu
- Ctrl+Shift+G — place your guess at the real location
-  minimizes to the title bar (which then shows the coordinates)
- Drag the purple bar to move it (position remembered, kept on-screen)
- Click the coordinates to copy them

--[ Fallback: Steam Launch Options ]--

If the bat reports it couldn't open the debug port (Steam relaunched the game
without the flags), set them in Steam instead:

1. Steam → Library → GeoGuessr Duels → Properties → General → Launch Options
2. Paste:
   --remote-debugging-port=9222 --remote-allow-origins=* --disable-features=IsolateOrigins,site-per-process
3. Launch from Steam, then run GeoLocatr.bat again — it will just attach.

--[ How it works ]--

GeoGuessr Duels is an Electron app; the game runs in a www.geoguessr.com
iframe that loads the Google Maps SDK. Street View renders the real location, so
the overlay hooks google.maps.StreetViewPanorama and reads getPosition() —
which is the answer — and hooks google.maps.Map to drop the guess-map marker.
Country/place lookups run in the controller (Node) and are pushed into the
overlay, because the page's own geocoder request returns reduced data due to its
Origin header.

GeoLocatr.bat is self-contained: the Node controller and the injected overlay
are embedded as base64 after the ::JSB64:: marker at the bottom of the file.
The bat unpacks them to %TEMP% and runs them — nothing is written to the game
folder, and Steam's "Verify integrity" won't remove anything.

--[ Troubleshooting ]--

- "Node.js is required" — install Node from https://nodejs.org and re-run.
- Overlay doesn't appear — make sure you launched via GeoLocatr.bat; if you
  attached mid-round, start a fresh round so a new Street View panorama loads.
- Country shows as letters instead of a flag — fixed; flags are images
  (Windows/Chromium has no flag-emoji font).