PlayPendium

Salvo · Żywność dla myśli

Salvo od środka

Pod prostym klikaniem w pola kryje się deterministyczny silnik, który modeluje ukryte floty, rozumowanie ważone prawdopodobieństwem i klasyczny pojedynek ukrywania i odkrywania. 3

Napisane i zredagowane po angielsku. Ta polska wersja powstała w wyniku tłumaczenia maszynowego; tam, gdzie liczy się precyzja, rozstrzygający jest angielski oryginał. Przeczytaj oryginał po angielsku →

Dwie plansze

W sercu gry siedzi para obiektów Board: jeden reprezentuje twoją ukrytą pozycję, a drugi ukrytą pozycję przeciwnika. Każda plansza niesie flotę okrętów rozstawionych na liniowanej siatce, ale ich położenie pozostaje ukryte przed drugą stroną. Ty strzelasz we wrogą siatkę, a SI strzela w twoją, i każdy strzał albo trafia okręt, albo wpada w pustą wodę. Ta architektura dwóch plansz ustanawia fundamentalną asymetrię informacyjną pojedynku ukrytych flot: każda ze stron zna własną planszę w pełni, ale konfigurację drugiej może jedynie wywnioskować z układu swoich strzałów. 3

Symetria tego układu nadaje grze jej charakter. Żadna ze stron nie widzi okrętów drugiej bezpośrednio. Zamiast tego obie strony muszą zbudować mentalny model ukrytej siatki ze skąpych informacji zwrotnych o trafieniach i pudłach. Każdy strzał staje się danymi, każde trafienie zawęża możliwości, a każde pudło wyklucza kolejny obszar z rozważań. Koordynator gry w silniku zarządza tymi dwiema planszami, dbając o to, by strzały były rejestrowane, trafienia poprawnie przypisywane, a gra kończyła się dopiero wtedy, gdy cała flota jednej ze stron zostanie zatopiona. 3

Deterministyczny model zamienia ślepe zgadywanie w świadome przeszukiwanie.

Losowe rozstawienie, deterministyczne reguły

Zanim rozpocznie się gra, silnik wywołuje randomFleet, aby rozstawić okręty SI w losowy sposób. Ta losowość nie jest dowolna; ma ziarno, co oznacza, że dana wartość ziarna zawsze da ten sam układ. Ten determinizm oparty na ziarnie to decyzja projektowa, która czyni grę odtwarzalną i testowalną. Jeśli uruchomisz grę z tym samym ziarnem, otrzymasz te same położenia okrętów, tę samą sekwencję decyzji SI i ten sam wynik. Ta własność jest cenna przy debugowaniu i przy poznawaniu, jak SI zachowuje się w różnych warunkach. 3

Gdy flota jest już rozstawiona, reguły rządzące rozgrywką są stałe i deterministyczne. SI nie rzuca kośćmi, a silnik nie wprowadza losowości w trakcie gry. Każda decyzja SI wynika z modelu prawdopodobieństwa, który ona utrzymuje, a każdy oddany przez ciebie strzał jest rejestrowany i analizowany. Jedynym źródłem zmienności jest ziarno, które wyznacza początkowe rozstawienie floty. Oznacza to, że gra jest w gruncie rzeczy łamigłówką: czy przy ograniczeniach narzuconych przez reguły i informacjach zwrotnych ze strzałów zdołasz wydedukować ukrytą konfigurację, zanim SI wydedukuje twoją? 3

Oddanie strzału

Kiedy oddajesz strzał, silnik zapisuje go na planszy celu i sprawdza, czy strzał trafił, czy chybił. Odbywa się to przez funkcję fire, która aktualizuje stan planszy i ustala wynik. Trafienie oznacza pole jako zajęte przez okręt, a pudło oznacza je jako pustą wodę. Następnie silnik sprawdza, czy okręt zawierający to pole został całkowicie zatopiony, badając wszystkie jego pola. Jeśli wszystkie pola okrętu zostały trafione, okręt jest zatopiony, a ta informacja jest przekazywana obu stronom. 3

Warunek zwycięstwa jest prosty, ale brzemienny w skutki. Strona wygrywa, gdy wszystkie okręty przeciwnika są zatopione. Sprawdza to funkcja allSunk, która bada, czy każdy okręt na planszy przeciwnika został całkowicie trafiony. Gra kończy się natychmiast, gdy ten warunek jest spełniony. Taka natura warunku zwycięstwa, wszystko albo nic, oznacza, że liczy się każdy strzał, a presja, by szybko zatapiać okręty, jest równoważona potrzebą niezdradzania własnej konfiguracji. 3

SI poluje według prawdopodobieństwa, a dobija celowaniem.

Silnik prawdopodobieństwa

Przeciwnik w tej grze nie jest prostym losowym strzelcem. To SI celująca według prawdopodobieństwa, która waży, jak prawdopodobne jest, że dane ukryte pole zawiera okręt. SI utrzymuje model prawdopodobieństwa wrogiej siatki i aktualizuje go w miarę oddawania strzałów i napływu informacji zwrotnych. Pola, które nie mogą zawierać okrętów ze względu na ograniczenia rozmieszczenia pozostałych okrętów, są oznaczane jako mało prawdopodobne, a pola, które muszą zawierać okręty, aby pomieścić pozostałe rozmieszczenia, są oznaczane jako prawdopodobne. Następnie SI strzela w pole o najwyższym prawdopodobieństwie, zamieniając zgadywanie na ślepo w świadome przeszukiwanie. 3

Ten model ma oparcie w matematycznej teorii prawdopodobieństwa, w której zdarzenia opisuje się liczbami z przedziału od zera do jednego 2. Prawdopodobieństwo równe zero oznacza, że zdarzenie nie może zajść, a prawdopodobieństwo równe jeden, że musi zajść. SI używa tych liczbowych opisów do kierowania swoimi strzałami, faworyzując pola, w których prawdopodobieństwo znalezienia okrętu jest najwyższe. To podejście odróżnia SI od czysto losowego strzelca i nadaje jej charakterystyczne zachowanie łowcy.

Polowanie i celowanie

Zachowanie SI można opisać w dwóch fazach: polowanie i celowanie. W fazie polowania SI szuka okrętów, strzelając w pola, w których nieodkryte okręty najprawdopodobniej się znajdują. To szerokie przeszukiwanie, którego celem jest nawiązanie pierwszego kontaktu z wrogimi okrętami. Gdy zarejestrowane zostanie trafienie, SI przechodzi do fazy celowania, w której skupia się na polach sąsiadujących z trafieniem, aby dokończyć zatapianie tego okrętu. To dwufazowe podejście odzwierciedla sposób, w jaki do gry podchodzą ludzie: najpierw znajdź okręty, potem je zatop. 3

O przejściu między polowaniem a celowaniem decyduje to, czy ostatni strzał był trafieniem, czy pudłem. Jeśli ostatni strzał chybił, SI wraca do trybu polowania i szuka pól o najwyższym prawdopodobieństwie. Jeśli ostatni strzał trafił, SI wchodzi w tryb celowania i strzela w pola sąsiadujące z trafieniem. Ta prosta reguła, połączona z modelem prawdopodobieństwa, tworzy spójną strategię, która równoważy eksplorację i eksploatację. SI eksploruje siatkę, by znaleźć okręty, i eksploatuje wiedzę o trafieniu, by sprawnie zatopić dany okręt. 3

Trzy poziomy siły dostrajają zachowanie SI.

Trzy poziomy siły

SI ma trzy poziomy siły, które dostrajają jej zachowanie. Te poziomy wpływają na to, jak SI waży prawdopodobieństwa i podejmuje decyzje. Na niższych poziomach SI może popełniać więcej błędów albo celować mniej agresywnie. Na wyższych poziomach SI jest bardziej konsekwentna w obliczaniu prawdopodobieństw i bardziej bezwzględna w celowaniu. Ta rozpiętość poziomów pozwala graczom znaleźć wyzwanie, które im odpowiada, od gry na luzie po poważną rywalizację.

Dokładna implementacja tych poziomów mieszka w komponencie SI silnika, klasie SalvoAI. Poziomy trudności zmieniają to, jak SI interpretuje model prawdopodobieństwa i jak równoważy eksplorację z eksploatacją. Taka konstrukcja pozwala SI być zarazem przystępną dla graczy okazjonalnych i wymagającą dla doświadczonych, bez zmieniania podstawowych mechanik gry. 3

Ping sonaru

Na klasycznych regułach siedzi dodatek: ping sonaru. Ta zdolność pozwala stronie odsłonić odczyt obszaru 3×3 wrogiej siatki kosztem strzału w tej turze. Ping sonaru ujawnia, czy każde pole w obszarze 3×3 zawiera okręt, czy jest pustą wodą. Ta informacja może być bezcenna przy zawężaniu położenia okrętów, ale jej ceną jest utrata strzału w tej turze. 3

Decyzja o użyciu pingu sonaru jest decyzją strategiczną. Kiedy informacja jest warta swojej ceny? Jeśli z trudem znajdujesz okręty, ping sonaru może dać ci potrzebny przełom. Jeśli jesteś blisko zatopienia okrętu, koszt utraty strzału może być zbyt wysoki. Ping sonaru dodaje do gry warstwę zarządzania zasobami, zmuszając graczy do ważenia wartości informacji wobec wartości działania. 3

Przeniesienie to jednorazowa opcja obronna.

Przeniesienie raz na grę

Kolejnym dodatkiem do klasycznych reguł jest przeniesienie raz na grę. Każda strona może raz w trakcie gry przesunąć jeden ze swoich okrętów. Ten obronny unik nie kosztuje tury, co oznacza, że możesz przenieść okręt i wciąż oddać strzał w swojej turze. Zdolność przeniesienia pozwala wyprowadzić okręt z niebezpieczeństwa, gdy jest zagrożony, albo przesunąć go w miejsce łatwiejsze do obrony. 3

Przeniesienie jest opcją jednorazową, co czyni je cennym. Kiedy go użyć? Jeśli okręt ma zaraz zostać zatopiony, przeniesienie może go uratować. Jeśli masz zaufanie do swojej obecnej pozycji, przeniesienie może być marnotrawstwem. Decyzja o przeniesieniu jest decyzją strategiczną, która wymaga starannego rozważenia bieżącego stanu gry i prawdopodobnych działań przeciwnika. 3

Jeden strzał na turę

U podstaw wszystkich tych mechanik leży klasyczna reguła jednego strzału na turę. Każda strona oddaje dokładnie jeden strzał na turę, na przemian, raz jedna, raz druga. Ta reguła ustanawia rytm gry i zapewnia obu stronom równą sposobność działania. Reguła jednego strzału na turę sprawia, że gra jest pojedynkiem umysłów, a nie wyścigiem szybkości. 3

Ta klasyczna reguła osadza grę w tradycji gry w statki, strategicznej gry zgadywania dla dwóch graczy, rozgrywanej na liniowanych siatkach, w której flota każdego gracza jest ukryta przed przeciwnikiem 1. Reguła jednego strzału na turę sprawia, że gra jest sprawdzianem dedukcji i prawdopodobieństwa, a nie sprawdzianem refleksu. To prosta reguła, ale to właśnie ona nadaje grze charakter i stanowi o jej wyzwaniu.

Czysty determinizm sprawia, że grę da się testować.

Determinizm oparty na ziarnie

Silnik jest czysty i deterministyczny względem ziarna, napędzany własnym generatorem liczb losowych z ziarnem. Oznacza to, że każdy aspekt gry jest wyznaczony przez wartość ziarna podaną na starcie. Przy tym samym ziarnie gra zawsze wytworzy tę samą sekwencję zdarzeń, od początkowego rozstawienia floty po ostatni strzał. Ta własność czyni grę testowalną, ponieważ ten sam scenariusz można odtworzyć i zbadać. 3

Determinizm oparty na ziarnie ma też znaczenie dla rozumienia gry. Jeśli chcesz zrozumieć, jak SI zachowuje się w konkretnym scenariuszu, możesz uruchomić grę z określonym ziarnem i obserwować wynik. Jeśli chcesz przetestować konkretną strategię, możesz uruchomić grę wielokrotnie z tym samym ziarnem i zobaczyć, jak się sprawdza. Ta odtwarzalność jest cenną cechą zarówno dla graczy, jak i dla twórców.

Sources & notes

  1. "Battleship (game)," Wikipedia, a strategy-type guessing game for two players, played on ruled grids on which each player's fleet of warships is marked and concealed from the opponent; players alternate calling shots at the other's grid to hit and sink ships, aiming to sink the entire fleet; the game evolved from a pencil-and-paper game dating to around the World War I era; the first commercial version was called Salvo, published by the Starex company in 1931, and in 1967 Milton Bradley published a version using plastic pegboards and miniature ships; and in the "salvo" variant a specified number of squares are targeted at one time, all attacked simultaneously. en.wikipedia.org/wiki/Battleship_(game).
  2. "Probability," Wikipedia, a branch of mathematics concerning numerical descriptions of how likely events are to occur; the probability of an event is a number between 0 and 1, where 0 indicates impossibility and 1 indicates certainty, and the larger the probability the more likely the event (for example, a fair coin flip has probability 0.5 for each outcome). en.wikipedia.org/wiki/Probability.
  3. This game's engine: a Battleship game where each side has a Board with a hidden fleet, the human fires at the enemy fleet and the AI at the human's, one shot per turn (classic rules), fire records a hit or miss, and a side wins when the opponent's ships are all sunk (allSunk); the opponent is a probability-targeting SalvoAI with three difficulty strengths that "hunts" for ships by favouring the cells where an undiscovered ship is most likely to sit and then "targets" the neighbours of a hit to finish it; two twists sit on the classic rules, a sonar ping reveals a 3×3 ship/empty readout but costs that turn's shot, and each side may reposition one of its own ships once per game (a dodge that does not cost the turn); and the engine is pure and seeded-deterministic.
  4. Further reading on Probability, Interpretations of Probability (Stanford Encyclopedia of Philosophy/Winter 2012 Edition). plato.stanford.edu.
  5. Further reading on Probability, Probability -- from Wolfram MathWorld. mathworld.wolfram.com.
  6. Further reading on Probability, Logical foundations and measurement of subjective probability. doi.org.
Was this worth reading?
← Back to Salvo
PlayPendium · About · Contact · Privacy · Terms · Cookies · Accessibility · Copyright · Browse all games · Inspirations · © 2026