Changelog
Lista zmian technicznych i projektowych dla MVP Nexus Ashes.
0.22.0 - prywatność, ochrona przed botami i widoczna beta
2026-07-14
- Dodana Polityka prywatności i informacja o cookies (RODO): strona
docs/prywatnosc.html, link z bramki logowania oraz z paska bocznego. Używamy wyłącznie niezbędnegolocalStoragena sesję — bez śledzenia i analityki. - Ochrona logowania i rejestracji przed botami: ukryte pole-pułapka (honeypot) plus podpisany HMAC-em token wyzwania z oknem czasowym (formularz wysłany zbyt szybko albo bez ważnego tokenu jest odrzucany). Uzupełnia istniejący limit prób po IP.
- Widoczna informacja o wersji beta: pigułka „BETA · vX.Y.Z" przy logo (bramka i pasek boczny) zasilana z
/api/version, plus wyraźny komunikat na ekranie logowania, że gra jest w rozwoju i postęp może zostać zresetowany.
0.20.0 - opłacalne wyprawy i spójne Badania
2026-07-14
- Łup z wypraw PvE skaluje się z Radiolatarnią: nagroda × (1 + poziom_radia × 0,6), więc rozbudowa Radiolatarni sprawia, że wyprawy stają się opłacalne (przy poziomie 0 bez zmian).
- Spójność UI: zakładka Badania przebudowana tak, żeby wyglądać jak Budynki — siatka 2-kolumnowa kart plus szczegóły pod spodem, usunięty baner Biotec.
0.18.0 - mapa świata i dekontaminacja
2026-07-14
- Zakładka Ranking przebudowana w hub świata: „Mapa świata" listuje wszystkie enklawy wg dystansu na Pierścieniu Ruin (pozycja + dystans + moc), z akcjami Sonda/Napad — nawigacja jak „galaktyka" w OGame. Obrony celu nie widać na liście — poznajesz ją sondą. Tablica mocy pokazuje teraz wzór na moc.
- Cena Dekontaminacji rośnie ×2 za każde użycie w ciągu doby, a licznik użyć resetuje się codziennie o 8:00 UTC (usunięto stały cooldown).
0.17.0 - powrót floty i odbudowa obrony
2026-07-14
- Ginąca obrona ma teraz natychmiastową częściową odbudowę: 60% zniszczonych jednostek obronnych wraca od razu po przegranej obronie, więc słabszy nie wpada w death-spiral (a próg na stratach i tak chroni małe stacki obrony przed zejściem do zera).
- Powrót floty z łupem jako osobny etap: po walce łup i ocalałe jednostki nie doliczają się od razu — lecą z powrotem do bazy (czas dolotu wg dystansu i prędkości ocalałej floty) i dopisują się dopiero po dotarciu. Napad to teraz pełny cykl: dolot → walka → powrót.
- Poprawki UI: badania bez limitu poziomu pokazują „Poziom N" (zamiast „N/undefined"); e-mail konta i Wyloguj przeniesione do paska bocznego, zbędna belka konta usunięta.
0.16.0 - wybór floty, świat i sonda w czasie
2026-07-14
- Napad nie wysyła już całej klasy assault automatycznie — otwiera się ekran wyboru floty: ile których jednostek szturmowych wysłać, z podglądem siły ataku, udźwigu, czasu dolotu i szacowanego ryzyka.
- Atak na cały świat: można napaść lub sondować dowolną enklawę z tablicy rankingu, nie tylko najbliższych sąsiadów. Ranking pokazuje dystans do celu, ale nie jego obronę — obronę poznajesz sondą.
- Sonda w czasie: jednostka recon leci do celu (czas dolotu wg dystansu i prędkości zwiadowcy) i raport wraca dopiero po dotarciu — koniec natychmiastowego rozpoznania.
- Widoczność rozstawienia celu zależy od przewagi Kartografii sondującego nad sondowanym: gap ≥ 0 ujawnia obronę stacjonarną, gap ≥ 2 także flotę w bazie; Widmo (pierce) widzi zawsze, a Zagłuszacz obrońcy zawsze maskuje.
0.15.0 - świat, dystans i cięższe skażenie
2026-07-14
- Świat jako Pierścień Ruin: enklawy leżą na okręgu (pozycje 0–1000 wyliczane z id bazy, nie galaktyki), a odległość między nimi to najkrótszy łuk (0–500), pokazywany przy celach jako „dystans".
- Prędkość jednostek i czas dolotu: każda ruchoma jednostka ma prędkość, flota leci z prędkością najwolniejszej jednostki, a czas dolotu = 90 s + dystans × 18 / prędkość floty.
- Transporter przebudowany na ciężarówkę łupu: udźwig 200 → 2000.
- Skażenie ma teraz realne skutki: powyżej 50% spowalnia całą produkcję (do −40% przy 100%) i zwiększa straty jednostek w walce (do ×1,5 przy 100%).
- Ginąca obrona: udany napad niszczy ułamek jednostek obronnych celu (ok. 12%, skalowane skażeniem obrońcy, z dolnym progiem chroniącym pojedyncze emplacementy). Wcześniej obrońca nie tracił żadnych jednostek.
0.12.1 - balans floty i ekonomia ludzi
2026-07-13
- Strojenie oparte na symulacji na silniku gry. Walka: straty przy udanym napadzie 8% → 15%, dzielnik ryzyka /4 → /3 (obrona realnie podbija ryzyko), minimalna siła floty do napadu 6 → 20 (koniec darmowego nękania jedną jednostką).
- Ekonomia ludzi (jedyny zasób bez mnożnika): Szpital daje 0,30 zamiast 0,18 ludzi/poziom, a Szturmowiec i Strażnik kosztują 1 zamiast 2 ludzi.
- Ożywiono słabe jednostki: Transporter dostał atak 2 (był 0), tańszy i szybszy; Sztab polowy +10 dowodzenia (parytet slotu z Taranem); Łupieżca atak 7 i tańsza energia; Zagłuszacz przeceniony (kupujesz go za zagłuszanie, nie obronę).
0.12.0 - flota i rozbudowana Zbrojownia
2026-07-13
- Rozbudowano Zbrojownię do 12 typów jednostek w 3 klasach (recon, assault, obrona) z drzewkiem wymagań — poziom Zbrojowni plus czasem poziom badania (Kartografia, Odzysk ogniw).
- Nowy model walki flotowej: napad wysyła całą klasę assault, siła floty = Σ(atak + dowodzenie) + kartografia×5, obrona bazy = 20 + mur×10 + Σ obrony jednostek defense. Minimalna siła floty do napadu wynosi 6, a łup ogranicza sumaryczny udźwig ocalałych jednostek.
- Sondowanie oparte na jednostkach recon: Dron zwiadowczy i Widmo mają stealth, Widmo dodatkowo przebija maskowanie danych celu, a sonda używa najtańszej dostępnej jednostki recon.
- Dodano Zagłuszacz (klasa obrony), który zawsze maskuje dane enklawy przed cudzą sondą niezależnie od statusu online.
- Dodano obrazy jednostek.
0.11.0 - przejrzystość
2026-07-13
- Przebudowa nawigacji: usunięto martwe zakładki, które nie miały wpływu na rozgrywkę — Dzielnice, Frakcje i Mitologia. Mitologia świata została jako opcjonalna lektura na osobnej stronie dokumentacji.
- Zbrojownia jest teraz osobną zakładką w grze (rekrutacja Zwiadowców, Szturmowców i Strażników).
- Sonda pokazuje raport rozpoznania od razu przy celu na liście sąsiadów oraz w Raportach, z czytelnym feedbackiem po wysłaniu.
- Dodano akcję Dekontaminacja na Bazie (200 wody + 150 energii, obniża skażenie o 12 punktów, cooldown 10 minut) oraz czytelny opis działania skażenia w UI.
- Poprawki serwera: sonda nie wyzwala już cooldownu napadu; sondowanie działa pod lockami obu graczy; mutacje botów odbywają się pod lockiem.
0.10.0 - próg wejścia, oddziały i boty
2026-07-13
- Dodano panel „Jak grać" w Bazie: budynki dają surowce, Laboratorium odblokowuje badania, Zbrojownia odblokowuje oddziały.
- Dodano budynki Laboratorium i Zbrojownia oraz uproszczono wymagania badań do poziomu Laboratorium.
- Dodano rekrutację Zwiadowców, Szturmowców i Strażników w kolejce rozkazów. Limit oddziałów wynosi 30 × poziom Zbrojowni, a oddziały liczą się do mocy enklawy.
- Napady PvP używają teraz Szturmowców zamiast ludzi. Ryzyko liczy siłę ataku, mur, Strażników i Kartografię; łup ogranicza 10% zasobów, cap 4000/surowiec i udźwig ocalałych Szturmowców.
- Dodano Schron: kosztuje energię, działa 30 minut, ma cooldown 2 godziny i zmniejsza pulę łupu z 10% do 4%.
- Dodano sondowanie enklaw przez Zwiadowców, raporty rozpoznania, maskowanie danych przy aktywnym graczu lub schronie oraz ryzyko utraty sondy przez Strażników.
- Dodano 16 botów-enklaw. Boty rosną pasywnie po stronie serwera i po przekroczeniu progu mocy gracza mogą okresowo wysyłać napady.
- UI rankingu pokazuje Strażników, schron i osobne akcje „Sonda" oraz „Napad"; Baza i Ranking pokazują panel Zbrojowni, Schronu i nadchodzących ataków.
0.9.0 - balans i napady
2026-07-13
Balans (audyt ekonomii)
- Zasoby startowe obniżone do 2600 złomu, 1600 wody i 520 energii — pierwsze decyzje wymagają wyboru zamiast kupowania wszystkiego naraz.
- Dłuższe timery: czasy budowy ×2, czasy badań ×1.5.
- Trudniejsze cele rozdziału 2: „Utrzymaj Nexus" wymaga 320 ludzi i 90 danych, „Ustabilizuj sektor" skażenia poniżej 40%.
- Ryzyko bazowe Laboratorium Biotec podniesione do 36%.
- Zwiad przynosi 5 + 3×poziom Radiolatarni danych — radio realnie napędza zwiad.
- Nagrody fabularne przycięte: splądrowanie Biotec 1400 złomu / 300 energii / 30 danych, oddanie węzła Kultowi 1400 złomu i 10 ludzi, zestrojenie 80 danych, wyciszenie +400 wody i +250 energii.
- Łup z Wieży Nexus zmniejszony do 220–460 energii i 16–36 danych.
- Wydarzenia sektora: uchodźcy dają +5 ludzi za 260 wody, osłony przeciw kwaśnemu frontowi zbijają skażenie o 6%.
Rywalizacja (PvP)
- Napady na sąsiednie enklawy z listy rankingowej (GET /api/neighbors): oddział 10 ludzi, operacja zajmuje slot wyprawy i trwa 7 minut.
- Mur z wraków jest realną obroną: każdy poziom muru obrońcy podnosi ryzyko napadu o 6% (bazowo 22%, kartografia atakującego zbija po 4%, widełki 8–80%).
- Tarcza początkującego: enklawy o mocy poniżej 80 lub z kontem młodszym niż 24 godziny są nietykalne.
- Cooldown 3 godziny na parę atakujący→obrońca.
- Łup to maksymalnie 10% surowców obrońcy (złom, woda, energia; cap 1500 na surowiec). Obrońca nigdy nie traci ludzi, danych ani budynków.
- Raporty walk dla obu stron (GET /api/reports) — wynik, ryzyko, łup i straty trafiają też do dziennika enklawy.
0.8.0 - wymagane konto
2026-07-11
- Gra jest dostępna wyłącznie po zalogowaniu: sesje gościa zostały usunięte w całości, endpoint POST /api/guest już nie istnieje, a GET /api/state i POST /api/action od zawsze wymagały sesji — teraz nie ma innej drogi.
- Rejestracja zawsze tworzy nowego gracza ze świeżą enklawą (201). Usunięto podpinanie konta do sesji gościa przez Bearer — walidacje (poprawny e-mail, hasło minimum 8 znaków, duplikat 409) bez zmian.
- Nowa pełnoekranowa bramka autoryzacji: przed zalogowaniem widać tylko logo, opis i formularze logowania/rejestracji z resetem hasła; layout gry (sidebar, panele, zasoby) pozostaje ukryty. Po udanym logowaniu lub rejestracji klient pobiera stan i startuje pętlę gry.
- Wylogowanie i wygaśnięcie sesji (401) wracają do bramki z komunikatem; panel konta w grze uproszczony do paska zalogowanego: e-mail, wylogowanie i komunikaty synchronizacji.
- Sprzątanie martwego kodu po sesjach gościa: bootstrapGuest, przycisk „Nowa gra", jednorazowy import starego lokalnego zapisu (nexus-ashes-save-v1) i osobny rate-limit gościa.
- Publiczny GET /api/ranking pozostaje dostępny bez logowania.
0.7.0 - serwer autorytatywny i SQLite
2026-07-11
- Przebudowa architektury na server-authoritative: timingi, produkcja zasobów, kolejki, wyprawy, wydarzenia sektora i cała losowość liczone są wyłącznie na serwerze (server/engine.mjs). Klient renderuje stan, interpoluje zasoby między synchronizacjami (rates z serwera + offset zegara serwerowego) i wysyła akcje przez POST /api/action.
- Baza danych: SQLite przez node:sqlite (Node 22) w server/db.mjs, plik data/nexus.db (WAL). Stary data/db.json migruje się automatycznie przy pierwszym starcie.
- Sesje gościa: gra nadal działa od razu po wejściu — POST /api/guest tworzy gracza-gościa na serwerze, z jednorazowym importem starego lokalnego zapisu z localStorage (clampowanym). Rejestracja e-mail+hasło podpina konto do gościa bez utraty postępu.
- Usunięto PUT/GET /api/save — stan nie jest już przesyłany blobem, więc heurystyczny anty-cheat z 0.6.0 stał się zbędny i został usunięty (po stronie klienta nie ma już czego oszukiwać). localStorage trzyma już tylko token sesji.
- Usunięto service worker sw.js i offline-cache: gra wymaga połączenia z serwerem. Manifest i ikony zostały — aplikacja pozostaje instalowalna.
- Synchronizacja klienta: przy starcie, po każdej akcji, przy powrocie do karty, co 30 sekund i dokładnie w momencie zakończenia najbliższego timera. Przy braku połączenia badge offline z automatycznym retry.
- Dokeryzacja: node:22-alpine, uruchomienie bez roota, healthcheck, docker-compose.yml z bind-mountem ./data (persystencja SQLite). deploy.sh przez rsync + docker compose na OVH VPS.
- Testy jednostkowe przeniesione na silnik serwerowy.
0.6.0 - rozdział drugi, finał kampanii i ranking
2026-07-11
- Rozdział 2 „Miasto odpowiada": misje gałęziowe zależne od decyzji Biotec (Odbuduj zaufanie po splądrowaniu, Kanał wymiany z Konwojem po zabezpieczeniu, Przetwórz archiwa Biotec po uruchomieniu), widoczne tylko na zgodnej ścieżce fabularnej.
- Dwa nowe wydarzenia sektora dostępne wyłącznie w rozdziale 2: Konwój przy bramie i Kult pod radiolatarnią.
- Pierwsza udana wyprawa na Wieżę Nexus otwiera serwerownię węzła, a po odebraniu wszystkich celów rozdziału 2 gracz podejmuje finałową decyzję Węzeł Siódmy: wyciszenie, zestrojenie z Radiolatarnią albo oddanie częstotliwości Kultowi.
- Po decyzji kampania MVP przechodzi w epilog. Dodano 6 nowych wpisów Archiwum Nexus: rachunek Konwoju, trzy ścieżki Biotec, serwerownia Wieży i Węzeł Siódmy.
- Nowa zakładka Ranking: publiczny GET /api/ranking z top 20 enklaw, moc liczona z poziomów budynków i badań, własna baza podświetlona na liście.
- Bezpieczeństwo backendu: whitelist plików statycznych (data/db.json przestał być osiągalny przez HTTP), atomowe zapisy bazy, rate-limit endpointów /api/auth/* (10 prób na 15 minut per IP), token resetu hasła zwracany tylko przy NEXUS_DEV=1.
- Luźny anty-cheat przy PUT /api/save: serwer odrzuca cofnięte poziomy i nierealne przyrosty odpowiedzią 409 ze stanem serwera, a klient przyjmuje wtedy stan serwera.
- PWA: manifest.webmanifest, service worker (kod network-first, assety cache-first, /api/ bez przechwytywania) oraz ikony instalacji 192 i 512 px.
- Refaktor UI: monolityczny src/ui.js (1285 linii) podzielony na moduły src/ui/ z osobnymi widokami bazy, budynków, badań, wypraw, dzielnic, raportów i rankingu.
- Dodano testy jednostkowe w tests/ (node --test) i skrypt deploy.sh dla OVH VPS.
0.5.1 - domknięcie budynków MVP
2026-07-09
- Dodano buildowalne budynki MVP: Szpital polowy i Mur z wraków.
- Badania dostały wymagania budynków zgodne z opisem MVP.
- Mur z wraków obniża ryzyko wypraw, a Szpital odblokowuje Medycynę skażeniową.
0.5.0 - backend i konta
2026-07-09
- Dodano backend Node.js bez zewnętrznych zależności, serwujący grę i endpointy `/api/*`.
- Dodano rejestrację, logowanie, wylogowanie, przypomnienie hasła i reset hasła przez token dev-MVP.
- Po zalogowaniu gra synchronizuje stan sektora z backendem, zachowując lokalny tryb gry bez konta.
0.4.7 - ikony badań i celów
2026-07-09
- Wygenerowano spójny zestaw ikon dla pięciu badań i czterech celów wypraw.
- Karty badań używają teraz obrazkowych ikon zamiast znaków tekstowych.
- Lista wypraw dostała osobne ikony celów, a panel szczegółów nadal pokazuje duże grafiki lokacji.
0.4.6 - panel frakcji
2026-07-09
- Dodano panel Siły w mieście w widoku Raporty.
- Statusy frakcji są wyliczane z postępu gracza: skażenia, Radiolatarni, badań, Biotec i decyzji fabularnych.
- Panel pokazuje doktrynę, opis, aktualny status i napięcie każdej siły świata.
0.4.5 - archiwum mitologii w grze
2026-07-08
- Dodano Archiwum Nexus w widoku Raporty.
- Wpisy mitologii odblokowują się przez postęp: Radiolatarnię, badania, Biotec i decyzje fabularne.
- Raporty zaczęły łączyć dziennik mechaniczny z wiedzą o świecie.
0.4.4 - mitologia świata
2026-07-08
- Dodano osobny dokument Mitologia z kosmologią technologiczną Nexus City.
- Rozpisano epoki miasta, mity założycielskie, frakcje, miejsca święte, język świata i tajemnice kampanii.
- Dokumentacja dostała link do mitologii jako źródła dla przyszłych raportów, eventów i rozdziałów.
0.4.3 - panel szczegółów wypraw
2026-07-08
- Karty wypraw wybierają cel zamiast natychmiast wysyłać oddział.
- Dodano panel szczegółów celu z obrazem, opisem, ryzykiem, czasem, wymaganą załogą i zakresem łupu.
- Wysłanie oddziału odbywa się osobnym przyciskiem, spójnie z budynkami i badaniami.
0.4.2 - panel szczegółów badań
2026-07-08
- Karty badań wybierają badanie zamiast natychmiast rozpoczynać analizę.
- Dodano panel szczegółów badania z opisem, efektem, poziomem, kosztem, czasem i statusem.
- Rozpoczęcie badania odbywa się osobnym przyciskiem, spójnie z budynkami.
0.4.1 - panel szczegółów budynków
2026-07-08
- Karty budynków wybierają teraz budynek zamiast od razu rozpoczynać rozbudowę.
- Dodano panel szczegółów budynku z opisem, kosztem, czasem, obecną produkcją i produkcją po rozbudowie.
- Rozbudowa startuje z osobnego przycisku, co ogranicza przypadkowe kliknięcia.
0.4.0 - rozdzielenie widoków i zasoby
2026-07-08
- Dodano osobną podstronę Budynki.
- Dodano osobną podstronę Raporty.
- Baza dostała hero z ruinami i panel aktywnych działań po prawej stronie.
- Przydział awaryjny ma cooldown 15 minut.
- Dodano wygenerowane ikony zasobów: złom, woda, energia, ludzie i dane.
- Poprawiono mobile layout topbaru i raportów.
0.3.0 - grafiki i styl świata
2026-07-08
- Podpięto wygenerowane grafiki lokacji, budynków i scen fabularnych.
- Ujednolicono klimat assetów: bez napisów, bez postaci, ciemne ruiny Nexus City.
- Dzielnice i wyprawy dostały miniatury.
0.2.0 - mechaniki MVP
2026-07-08
- Dodano produkcję zasobów, kolejkę rozkazów i offline progress.
- Dodano wyprawy, ryzyko, łupy i osobną listę aktywnych ekspedycji.
- Dodano badania i pierwszą decyzję fabularną Biotec.
- Dodano zdarzenia sektora wpływające na skażenie.
0.1.0 - prototyp interfejsu
2026-07-07
- Utworzono statyczną aplikację HTML/CSS/JS.
- Dodano podstawową nawigację, zasoby, karty budynków i szkic klimatu postapo.