Browserowa gra car soccer — sforkowana baza z Wocket-Weague (MIT).
Stack: TypeScript · Vite · Three.js · Rapier3D
Inspireacja: car soccer w przeglądarce. Ignite nie jest powiązane z Epic Games, Psyonix ani Rocket League®.
Klawisz C lub przycisk © w lewym dolnym rogu — pełna lista licencji audio i kodu.
| Klawisz | Akcja |
|---|---|
| W / S | Przód / tył |
| A / D | Skręt (ziemia) · yaw w powietrzu |
| Shift + A/D | Powerslide (ziemia) · beczka / air roll (powietrze) |
| Q / E | Air roll (bez Shift) |
| PPM | Skok / flip |
| LPM | Boost |
| Spacja | Ball Cam |
cd Ignite # katalog repozytorium
nix develop # opcjonalnie — node 22 w shellu
npm install
npm run dev # http://localhost:5173Build produkcyjny: npm run build → dist/
Host tworzy pokój (tryb 1v1 lub 2v2), gość dołącza kodem lub z listy otwartych pokoi. Symulacja działa u hosta; serwer pokojów łączy graczy i przekazuje wejścia/snapshoty.
Terminal 1 — serwer pokojów:
npm run mp:server # ws://localhost:8765Terminal 2 — gra:
npm run devW menu: Online PvP → Host (wybierz tryb) lub Dołącz. W LAN gość wpisuje IP hosta, np. 192.168.1.10:8765.
Publiczny relay (Cloudflare): docs/MP_RELAY.md — bake endpoint, named tunnel, daemon.
Ograniczenia MVP: ranked tylko 1v1, bez publicznego matchmakingu — wymagany dostęp do hosta (LAN / port-forward / relay).
Mózg botów synchronizuje się między relayami — nie musisz grać na tym samym serwerze co ktoś inny.
-
Pobieranie — klient scala mózg z wielu źródeł równolegle:
public/policy-relays.json(lista publicznych relayów)public/mp-endpoint.json(ostatni tunel z bake)- lokalny
hostname:8765+ seed/assets/ai/bot-policy.json - opcjonalnie env:
VITE_IGNITE_POLICY_FETCH_URLS,VITE_IGNITE_POLICY_CANONICAL_URL
-
Wysyłanie — po golu/meczu klient POST na wszystkie relaye z listy (
sync), nie tylko lokalny. -
Serwer pokojów — przed merge robi
pullz relayów; po meczu wypycha na GitHub (jeśliGITHUB_TOKENw env).
Plik na gałęzi bot-brain w repo release:
https://raw.githubusercontent.com/Adam-LX/ignite-releases/bot-brain/global-bot-policy.json
Każdy klient pobiera ten URL (w policy-relays.json). Zapis tylko z serwera/skryptu — token nigdy w przeglądarce.
Pierwszy upload ręcznie:
npm run mp:server # kilka meczów vs boty
npm run publish:bot-policy # gh → gałąź bot-brainAuto-upload z serwera MP (relay 24/7):
export GITHUB_TOKEN=ghp_... # fine-grained: repo contents write
npm run mp:server
# po każdym syncu meczu → push na GitHub (max 1× / 90 s)Inne repo/gałąź:
export IGNITE_BOT_POLICY_GITHUB_REPO=Adam-LX/moje-repo
export IGNITE_BOT_POLICY_GITHUB_BRANCH=bot-brain
npm run publish:bot-policyEndpointy HTTP (na każdym relayu):
GET /policy— pobierz mózgPOST /policy/sync— wgraj wynik meczu/gola
Plik na dysku relay: data/global-bot-policy.json.
Menu: F12 · 5.2 = federacja (≥2 relaye), G = jeden globalny, L = offline/cache.
Dodaj własny relay do listy (np. stały VPS):
# w public/policy-relays.json — bake-mp-endpoint.sh dopisuje automatycznie
# albo env przy buildzie:
VITE_IGNITE_POLICY_SYNC_URLS=https://twoj-relay.pl/policy/sync
VITE_IGNITE_POLICY_FETCH_URLS=https://twoj-relay.pl/policyTrening offline (szybszy start mózgu):
npm run train:bots
npm run mp:server # załaduje nowy seed przy pierwszym syncu
./scripts/bake-mp-endpoint.sh # dopisze relay do policy-relays.jsonAktywny utwór: match_msx.mp3 (ACE-Step, MIT, seed 42) — patrz public/assets/audio/MUSIC.md.
Regeneracja:
flyball-music ace-step up
npm run music:vocalLicencje: public/assets/audio/LICENSE.md
Repo: codeberg.org/Adam-LX/ignite — kod gry + buildy w jednym monorepo (origin).
| Co | Gdzie |
|---|---|
| Kod | main na Codeberg |
| Binaria (zip, deb, źródła) | releases/ + tagi v*-* — tabela w DOWNLOADS.md |
| Muzyka match (LFS) | audio/ |
nix develop -c ./scripts/publish-codeberg.sh all
# albo: win | linux | sourceSkrypt: build → audyt prywatności → commit releases/ + DOWNLOADS.md → push + tagi LFS.
Push na main (zmiany w kodzie) → Forgejo Actions → build → publikacja w tym samym repo.
Jednorazowa konfiguracja (token API z ustawień Codeberg):
CODEBERG_TOKEN=<token> ./scripts/setup-codeberg-ci.shTo włącza Actions i ustawia secret CODEBERG_DEPLOY_KEY. Workflow: .forgejo/workflows/release.yml.
Bez tokenu: w UI repo włącz Units → Actions i dodaj secret CODEBERG_DEPLOY_KEY (zawartość ~/.ssh/id_ed25519).
git push origin main # nie pierwszy push — repo już istnieje; scala historię z buildamiMIT — oryginalny projekt: Aebel-Shajan/Wocket-Weague