Back to roadmap
DoneKolejka Game

Visually clear indication of whose turn it is - animated overlay on the map

Author: pawel007Created: 2026-04-09Last status change: 2026-04-20

User Story

As a player playing against AI opponents, I want to clearly see when each player's turn starts (including mine), so that I don't have to track the GameLog to understand what is happening and not lose track of the game's dynamics.

Context and Problem

Player feedback (2026-04-06):

"Think about more clearly marking the end of rounds and the moves of opponents. Currently, it’s like chat and nice for history, but (...) it would be clearer if there was a modal appearing with a clear indication of what a given player did. (...) And regarding marking rounds - a bit like a big end-of-era title in Civilization VII - a big title without a modal, e.g.: 'Player Conductor Zenek's Turn' placed in the center of the map in the player's color, large font, with a fade in -> fade out effect."

Current State:

  • GameLog in the side panel (right side) shows a timeline of moves
  • ActionPanel shows "Conductor Zenek is thinking..." during AI moves
  • No visual distinction between turns on the map itself
  • The player must consciously look at the GameLog to know what is happening

Why the Problem: When playing with 2-3 AIs, actions happening "somewhere on the side" make the game's dynamics unclear - it's hard to catch the rhythm of "now it's him, now it's me."

Solution

An animated overlay in the center of the map displaying the name of the current player in their color at the start of each turn. Inspiration: the "End of Era" text in Civilization VII.

Key Rules:

  1. The overlay does not block interaction with the map (pointer-events: none)
  2. Short display time (about 1.5s) - does not slow down gameplay
  3. Fade in -> hold -> fade out (smooth transition)
  4. Large font in the player's color with a glow effect (consistent with the "Pendolino" theme)
  5. Appears ONLY when the active player changes (not after every action)

Acceptance Criteria

  • [ ] Overlay appears in the center of the map when current_player_index changes (new turn)
  • [ ] Overlay text: player name (e.g. "Your turn" for human, "Conductor Zenek" for AI)
  • [ ] Text color = player color (e.g. Zenek = red, human = blue)
  • [ ] Animation: fade in (300ms) -> hold (900ms) -> fade out (300ms), total about 1.5s
  • [ ] Text-shadow/glow effect in the player's color (according to the Pendolino theme)
  • [ ] Space Grotesk font (headline), size ~64-96px
  • [ ] Overlay does not block clicking on the map (pointer-events: none)
  • [ ] Overlay does not appear on the first mounting of the component (only on turn change)
  • [ ] Overlay does not appear in the initial_tickets or finished phases
  • [ ] With fast AI turns (larger models take longer, smaller ones shorter), the overlay does not stack - if a new turn starts before the end of the animation, the previous overlay is immediately replaced
  • [ ] Option for the player to disable: setting in options "Show turn indication" (default enabled)
  • [ ] Setting persisted (cookie or localStorage)

Standard functionality expected by players

Plan wdrożenia 2026-04-09

Wersja zrewidowana. Poprzedni szkic powyżej zachowany jako zapis historyczny; ten rozdział zastępuje go do publikacji. W porównaniu do szkicu: dopasowana struktura do wymaganego formatu, usunięte nazwy elementów z kodu, usunięta wzmianka o "trybie jasnym" (gra ma wyłącznie ciemny motyw), decyzje zebrane w osobnej sekcji, kryteria akceptacji rozbite per etap.

W skrócie

Na początku każdej tury w środku mapy przez chwilę rozbłyśnie duży napis w kolorze aktywnego gracza: dla Ciebie "Twoja tura", dla przeciwników ich imię (np. "Konduktor Zenek"). Napis pojawi się płynnie, przytrzyma przez moment i tak samo płynnie zniknie - łącznie około półtorej sekundy. Nie zasłoni mapy, nie zablokuje klikania, nie spowolni gry. Jeżeli efekt Ci nie odpowiada, wyłączysz go jednym kliknięciem w ustawieniach, a wybór zostanie zapamiętany między rozgrywkami.

Czego dotyczy / nie dotyczy

Dotyczy:

  • Momentu, w którym "pałeczka" przechodzi na kolejnego gracza w trakcie normalnej rozgrywki.
  • Ostatniej rundy gry (każdy gracz dostaje jeszcze jedną turę - ogłoszenie działa tak samo jak wcześniej).
  • Wyboru: kto aktualnie gra (Ty czy konkretna postać AI) i w jakim kolorze.

Nie dotyczy:

  • Zasad gry, punktacji, kosztów dworców, kar za bilety, kolejności tur, warunków końca gry - wszystko zostaje dokładnie takie jak dotąd.
  • Sposobu, w jaki AI podejmuje decyzje. Postacie grają identycznie, zmienia się tylko sposób, w jaki ich wejście jest zaznaczone wizualnie.
  • Tego, jak gra zapamiętuje Twoje rozgrywki i postępy.
  • Tego, jakie dane gra o Tobie zbiera. Ustawienie "Pokazuj oznaczenie tury" żyje wyłącznie w Twojej przeglądarce.
  • Fazy wyboru biletów startowych (wszyscy decydują "jednocześnie", nie ma wtedy klasycznej tury) ani ekranu wyników po zakończeniu gry.

Etapy wdrożenia

Etap 1 - Ogłoszenie tury na mapie

W każdym kluczowym momencie, gdy tura przechodzi na kolejnego gracza, na środku mapy pojawi się duży, wyraźny napis w kolorze tego gracza:

  • Gdy to Twój ruch: napis "Twoja tura" (w języku angielskim: "Your turn") w Twoim kolorze.
  • Gdy gra postać AI: imię postaci (np. "Konduktor Zenek", "Pani Jadwiga", "Pan Mieczysław") w jej kolorze. Imiona postaci nie są tłumaczone - są ich nazwami własnymi.
  • Wokół napisu zobaczysz subtelną poświatę w tym samym kolorze, spójną z neonowym, kolejowym stylem gry.
  • Napis będzie płynnie się rozjaśniał (~0,3 s), przytrzymywał na ekranie (~0,9 s) i płynnie znikał (~0,3 s) - razem około półtorej sekundy.
  • Napis nie blokuje interakcji - możesz cały czas klikać trasy i miasta, nawet gdy jest widoczny.
  • Napis nie pojawia się przy wejściu do gry ani przy kontynuacji zapisanej rozgrywki - tylko wtedy, gdy realnie zmienia się aktywny gracz.
  • Napis nie pojawia się w fazie wyboru biletów startowych ani po zakończeniu gry.
  • Gdy tury AI lecą szybko jedna po drugiej, napis nie nakłada się sam na siebie - płynnie podmienia treść na bieżącego gracza.

W tym etapie efekt jest włączony na stałe, dostępny od razu w obu językach (polskim i angielskim), dla wszystkich konfiguracji liczby graczy (1 vs 1, 1 vs 2, 1 vs 3).

Efekt dla gracza: Od razu, bez jakiegokolwiek ustawiania, widzisz na mapie wyraźny sygnał "teraz jest tura X". Nie musisz już szukać wzrokiem panelu z listą ruchów, żeby zrozumieć, kto właśnie gra.

Jak poznasz, że etap jest gotowy:

  • Rozpoczynasz grę 1 vs 1, 1 vs 2 i 1 vs 3 - w każdej z nich, przy każdej zmianie tury, widzisz duży napis w kolorze aktywnego gracza.
  • Napis pojawia się w Twojej turze z tekstem "Twoja tura" (lub "Your turn" w angielskiej wersji).
  • Napis pojawia się w turach AI z imieniem postaci i w jej kolorze.
  • Napis znika po około półtorej sekundy i nie wraca, dopóki tura nie zmieni się ponownie.
  • W trakcie gdy napis jest widoczny, możesz spokojnie klikać trasy, miasta i przyciski akcji - napis niczego nie blokuje.
  • Przy bardzo szybkich turach AI (kilka zmian pod rząd) napisy nie nachodzą na siebie - płynnie przechodzą jeden w drugi.
  • W fazie wyboru biletów startowych napis nie pojawia się ani razu.
  • Po zakończeniu gry, na ekranie wyników, napis nie pojawia się ani razu.

Etap 2 - Możliwość wyłączenia w ustawieniach

Dla osób, które wolą minimalistyczny interfejs, dodamy przełącznik:

  • Nazwa opcji: "Pokazuj oznaczenie tury" (w angielskiej wersji: "Show turn indicator").
  • Domyślnie: włączone. To jest cel całego zgłoszenia - większość graczy chce ten efekt widzieć.
  • Zapamiętywanie: Twój wybór jest trwały. Zostaje między rozgrywkami, między sesjami, między zamknięciem i ponownym otwarciem przeglądarki.
  • Szybki dostęp: przełącznik znajdziesz w panelu ustawień gry, razem z innymi preferencjami interfejsu.
  • Efekt wyłączenia: jest natychmiastowy. Po przełączeniu opcji kolejna zmiana tury przechodzi bez żadnego napisu - wszystko inne działa tak samo.

Efekt dla gracza: Masz pełną kontrolę. Jednym kliknięciem wyłączasz efekt na dobre, jeśli Ci nie pasuje, a kolejnym tak samo łatwo włączasz go z powrotem.

Jak poznasz, że etap jest gotowy:

  • W ustawieniach gry widzisz przełącznik "Pokazuj oznaczenie tury", który domyślnie jest włączony.
  • Po wyłączeniu przełącznika i rozegraniu kilku kolejnych tur napis ani razu się nie pojawia.
  • Po zamknięciu gry, ponownym jej otwarciu i zaczęciu nowej rozgrywki przełącznik pamięta Twój poprzedni wybór.
  • Po ponownym włączeniu przełącznika napis od razu wraca w kolejnej turze.

Kolejność i niezależność etapów

Etap 1 (ogłoszenie tury na mapie) i etap 2 (przełącznik w ustawieniach) są osobnymi krokami i mogą zostać opublikowane niezależnie od siebie, w tej kolejności:

  • Etap 1 jest samodzielny. Samo ogłoszenie tury, zawsze włączone, już realizuje główny cel zgłoszenia. Jeśli z jakiegoś powodu etap 2 miałby się opóźnić, etap 1 może pojechać pierwszy bez czekania.
  • Etap 2 buduje na etapie 1. Przełącznik nie ma sensu bez samego efektu, więc trafia do gry po etapie 1.
  • Etapy nie blokują się z innymi funkcjami gry - nie dotykają zasad, rozgrywki ani istniejących ekranów.

Co zostaje poza zakresem

Celowo odkładamy na później kilka rzeczy, żeby dowieźć główny efekt bez rozciągania zakresu:

  • Ogłaszanie poszczególnych ruchów (typu "Konduktor Zenek zajął trasę Warszawa - Kraków"). Była to druga część oryginalnego pomysłu gracza, ale dotyczy innej warstwy (opis akcji, a nie sama zmiana tury) i zasługuje na osobne zgłoszenie - z własnym głosowaniem, bo decyzje projektowe będą tam zupełnie inne.
  • Dźwięk przy zmianie tury. Gra nie ma dziś systemu dźwiękowego i dodawanie go przy okazji tej funkcji byłoby dużo szerszą zmianą niż sam napis. Jeśli pojawi się zapotrzebowanie, zajmiemy się tym jako osobnym tematem.
  • Suwak "jak długo ma być widoczny napis". Dobraliśmy stałe, sprawdzone tempo (~1,5 s). Dodanie konfiguracji od razu komplikowałoby interfejs ustawień bez wyraźnego zysku - do czasu, gdy okaże się, że wybrane tempo faktycznie nie pasuje.
  • Osobne tempo dla szybkich tur AI. Napis płynnie się podmienia przy kolejnych zmianach - to wystarcza, nie potrzeba dodatkowego trybu "szybszego".
  • Animacja innych elementów interfejsu (na przykład podświetlanie tablicy wyników na kolor aktywnego gracza mocniej niż dziś). To jest potencjalne rozwinięcie, ale nie jest tym, o co prosi zgłoszenie, i dokładamy je tylko wtedy, gdy pojawi się osobna prośba.

Podjęte decyzje

Tam, gdzie istniał więcej niż jeden sensowny wybór, podjęliśmy go od razu - poniżej krótkie uzasadnienia, żebyś wiedział/a, dlaczego zobaczysz właśnie to, co zobaczysz.

  • Tekst dla gracza: "Twoja tura" zamiast imienia gracza. W sytuacji, gdy jesteś sam/a przy ekranie, "Twoja tura" jest natychmiast jednoznaczne. Twoje własne imię w grze zobaczysz w innych miejscach interfejsu - napis na mapie ma przede wszystkim krzyczeć "teraz Ty".
  • Tekst dla AI: samo imię postaci, bez dodatkowej etykiety. "Konduktor Zenek" czyta się szybciej niż "Tura gracza Konduktor Zenek", a kolor i kontekst i tak jasno mówią, że chodzi o nową turę.
  • Czas trwania około 1,5 sekundy. Krótsze odczucie by nie dawało czasu na zauważenie; dłuższe by irytowało, zwłaszcza przy szybkich turach AI. Półtora sekundy to punkt, w którym mózg zdąży "zarejestrować i wrócić do gry".
  • Domyślnie włączone. To jest sens całego zgłoszenia. Gracz, który trafił na nie głosując, chce ten efekt widzieć od razu.
  • Ustawienie zapamiętywane na stałe, per przeglądarka. Nie synchronizujemy go między urządzeniami - to jest preferencja wizualna, a nie część konta. Dzięki temu nic nie zmienia się w tym, jakie dane gra o Tobie zbiera.
  • Napis w kolorze gracza, nie w neutralnej bieli. Kolor to szybka, nieczytelnikowa informacja "czyja to tura". Biel wymagałaby przeczytania tekstu, żeby się zorientować - kolor działa szybciej.
  • Bez napisu w fazie wyboru biletów startowych. W tej fazie wszyscy gracze podejmują decyzje "jednocześnie", nie ma klasycznej tury - napis byłby tu mylący.
  • Bez napisu po zakończeniu gry. Na ekranie wyników skupiamy Twoją uwagę na podsumowaniu, a nie na tym, czyja była ostatnia tura.
  • Nazwa opcji w ustawieniach: "Pokazuj oznaczenie tury". Krótka, opisowa, bez żargonu. Brzmi tak samo, niezależnie od tego, czy jesteś nowym graczem czy wracasz do gry po tygodniu.