Skip to content

DamiJJJ/Breach

Repository files navigation

BREACH

Przeglądarkowa gra taktyczna top-down inspirowana Door Kickers. Real-Time with Pause · Canvas 2D · Vanilla JS (ES modules, bez bundlera) · PHP backend (od Sprintu 8).

Pełna specyfikacja: docs/DESIGN.mdBREACH – Game Design & Technical Brief v2 (konwencje, kontrakty, roadmapa).

Uruchomienie lokalne

ES modules + fetch() wymagają serwera HTTP (nie zadziała z file://):

# dowolny statyczny serwer w katalogu projektu, np.:
python -m http.server 8000
# → http://localhost:8000

Sterowanie

Akcja Klawisz
Zaznacz operatora LPM (Shift = wielu)
Rozkaz ruchu (zastępuje plan) PPM
Dołącz rozkaz do kolejki planu Shift + PPM
Ciche otwarcie drzwi PPM na zamkniętych drzwiach
Kopniak w drzwi (hałas → alarm) Ctrl + PPM na zamkniętych drzwiach
Ładunek wybuchowy na drzwiach (BREACH) Alt + PPM na zamkniętych drzwiach
Węzeł obserwacji kierunku (WATCH) Alt + PPM
Rzut flashbangiem w punkt pod kursorem F (Shift+F dokleja do kolejki)
Przystanek w planie (STOP, czeka na GO) S
Sygnał GO (zwalnia wszystkie STOP-y) G (w akcji)
Start / pauza taktyczna SPACJA
Zoom kółko myszy (pod kursorem)

Struktura

js/core       Config, Game (state machine), GameLoop (fixed timestep), InputHandler, MathUtils
js/rendering  Camera (screenToWorld = odwrotność transformu renderu), MapRenderer (offscreen), EntityRenderer, FogRenderer (mgła + plany rozkazów ze znacznikami węzłów)
js/entities   Entity, Operator, Enemy, Door, Bullet (tracer z puli; encje nie importują systemów)
js/systems    AISystem (patrol/wartownik/alarm), DetectionSystem (stożek widzenia + LOS), VisionSystem (widzenie drużyny → mgła), DoorSystem (jedyne miejsce zmiany stanu drzwi; OPEN_SLOW/KICK/BREACH), CombatSystem (hitscan + friendly fire), CommandSystem (kolejka rozkazów MOVE/DOOR/WATCH/STOP/FLASH + sygnał GO), GadgetSystem (flashbang: lot, detonacja, stun)
js/map        MapData — walidacja, maski (collision ≠ LOS), konwersje tile↔px, pathfinding, raycast
js/ui         HUD (HTML overlay)
maps/         mapy w naszym formacie JSON (nie Tiled)
assets/       logo i ikony (PNG z kanałem alfa) + źródła 1024² (breach_logo*.png)

Biblioteki z CDN: PathFinding.js (A*), Howler.js (audio, od Sprintu 10).

Deploy (homeserver)

git push na main → GitHub Actions buduje obraz → GHCR (ghcr.io/damijjj/breach, prywatny) → Watchtower podmienia kontener na miniPC.

  • Stack Portainera: deploy/portainer-stack.yml (port 8086)
  • Adres: http://breach.home (proxy host w NPM → 192.168.1.115:8086)

Status sprintów

  • Sprint 1 — mapa + kamera + operator z pathfindingiem
  • Sprint 2 — DetectionSystem + wrogowie + AI
  • Sprint 3 — LOS + Fog of War (VisionSystem + FogRenderer, mgła dwustanowa)
  • Sprint 4 — drzwi + synchronizacja masek
  • Sprint 5 — walka (hitscan, tracery z puli, HP, śmierć, friendly fire)
  • Sprint 6 — pauza taktyczna + rozkazy na ścieżce (kolejka MOVE/DOOR/WATCH/STOP, sygnał GO)
  • Sprint 7 — gadżety (flashbang + breach charge, stan STUNNED, sloty gadżetów ze spawnów mapy)
  • Sprint 8 — PHP API + MySQL
  • Sprint 9 — UI/menu
  • Sprint 10 — dźwięk
  • Sprint 11 — edytor map

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages