PlayPendium
Bulwark · Żywność dla myśli

Jak myśli watażka

Zagraj w pojedynkę, a trzech z czterech zamków broni maszyna. Każdy komputerowy watażka wykonuje tę samą krótką pętlę: znajdź piłkę godną strachu, zgadnij, gdzie przetnie twój mur, przesuń się jej na spotkanie — a cała różnica między ofermą a zagrożeniem sprowadza się do czterech liczb.

Łatwy · drżenie celowania 0,18 błąd w ułamkach szyny
kontra
Trudny · drżenie celowania 0,015 niemal idealne ustawienie

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 →

01 · Wybór tego, czego się bać

Nie każda piłka jest zagrożeniem

Pierwszym zadaniem watażki, sto dwadzieścia razy na sekundę, jest triaż. Gdy po arenie krąży do dwóch piłek, SI musi zdecydować, której należy się tarcza. Ocenia każdą aktywną, nietrzymaną piłkę według odległości od własnego króla, a następnie odejmuje stałą premię 250 jednostek każdej piłce, która faktycznie zmierza ku narożnikowi; piłka oddalająca się jest traktowana tak, jakby była o 250 jednostek dalej, niż jest w rzeczywistości. 1 Najniższy wynik zdobywa uwagę tarczy.

Efektem jest obrońca, który nie panikuje z powodu piłki przelatującej nieszkodliwie obok, a zarazem błyskawicznie przywiera do tej, która jest bliżej i nadlatuje. To zgrubny model tego, co człowiek robi bez namysłu: patrz na to, co leci na ciebie, ignoruj to, co odchodzi. Cały osąd to pojedynczy iloczyn skalarny prędkości piłki i kierunku do króla; dodatni znaczy „wycelowana we mnie”, i to wystarczy.

02 · Zgadywanie, gdzie wyląduje

Wyprzedzanie piłki na szynie

Wybrawszy zagrożenie, watażka musi zdecydować, gdzie na swojej ukośnej szynie stanąć. Nie rozwiązuje pełnej trajektorii odbić: żadnego śledzenia odbić, żadnego przewidywania rykoszetów od ścian. Bierze położenie piłki, popycha je o krótki krok naprzód wzdłuż bieżącej prędkości (wyprzedzenie 0,12 sekundy) i rzutuje ten przyszły punkt prosto na szynę, otrzymując docelowy ułamek między 0 a 1. 1

To celowo płytka predykcja i właśnie dlatego SI da się pokonać. Ponieważ wyprzedza zaledwie o jedną ósmą sekundy i nigdy nie przewiduje rykoszetu, piłka, która nadleci dopiero po odbiciu od ściany, zwodzi ją; watażka stawia na to, dokąd piłka jest skierowana teraz. Człowiek, który odbija strzały od krawędzi areny, wykorzystuje dokładnie ten martwy punkt. Maszyna reaguje na teraźniejszość z odrobiną przewidywania; ona nie planuje.

Komputer nie oblicza przyszłości piłki. Pochyla się o jedną ósmą sekundy w przód, kieruje tarczę tam, gdzie piłka byłaby, gdyby nic nie stanęło na drodze, a wszystko, co staje na drodze, zostawia jako twoją szansę.

03 · Trzy poziomy, cztery pokrętła

Trudność to tabela, a nie przepisany kod

Trzy poziomy trudności dzielą jedno i to samo ciało kodu. Między łatwym, średnim a trudnym zmienia się rząd czterech liczb strojeniowych. 1 Drżenie dorzuca losowy błąd do celu tarczy, więc celowanie łatwego watażki błądzi o niemal jedną piątą jego szyny, podczas gdy trudny jest niemal dokładny. Zasięg reakcji określa, jak blisko musi podejść piłka, zanim watażka w ogóle zacznie ją śledzić: łatwy ignoruje wszystko, co jest dalej niż 420 jednostek od jego króla, czyli nieco poniżej połowy szerokości planszy; trudny śledzi przez całą arenę. Szansa chwytu to prawdopodobieństwo, że złapie piłkę, która podleci do jego tarczy dostatecznie blisko. A celowanie w rywali to pojedynczy przełącznik, który decyduje, czy watażka w ogóle gra w ataku.

Tabela strojenia SI, czyli cała różnica między poziomami
PokrętłoŁatwyŚredniTrudny
Drżenie celowania (ułamki szyny)0.180.070.015
Zasięg reakcji (jednostki)4207002,000
Szansa chwytu0%25%55%
Celuje w rywali?nienietak

Wszystkie cztery wartości pochodzą z jednej małej tabeli strojenia wewnątrz silnika gry Bulwark, po jednym wierszu na poziom. Zasięg reakcji na poziomie trudnym zapisano jako dwukrotność szerokości areny, a arena to kwadrat o boku 1000 jednostek, więc 2000 jednostek znaczy „śledzi zawsze”. 1

04 · Gdy maszyna atakuje

Jeden przełącznik, który czyni trudnego watażkę groźnym

Łatwy albo średni watażka nigdy nie chwyta z zamiarem uderzenia. Łatwy nie chwyta w ogóle, a średni tylko od czasu do czasu, bez planu na to, co począć z piłką, kiedy już ją ma. Przestaw przełącznik celowania w rywali — rzecz zarezerwowaną dla poziomu trudnego — a SI przestaje być czysto reaktywna. Trzymając piłkę, rozgląda się po planszy, wybiera najbardziej poranionego rywala (tego, któremu zostało najmniej cegieł) i celuje właśnie w niego. 1

Robi to bez żadnego szukania ścieżki. Próbkuje jedenaście kandydujących pozycji wzdłuż własnej szyny i dla każdej odtwarza silnikową matematykę wypuszczenia, by sprawdzić, w którą stronę poleciałby taki strzał, po czym zachowuje tę pozycję, której wektor wylotowy wskazuje najdokładniej na wybraną ofiarę. 1 To siłowe przeszukanie garstki opcji, a nie przebiegłość, ale robione cierpliwie: wybrawszy miejsce, watażka trzyma piłkę, dopóki tarcza faktycznie tam nie dojedzie, i puszcza ją dopiero wtedy, gdy ta dotarła albo gdy trzymał ją już tak długo, że dalsze czekanie kosztowałoby więcej, niż wart jest strzał. Zamiar jest bezsprzecznie strategiczny, dokładnie taki, jaki miałby człowiek polujący na łatwy łup. Wybieranie celu według „najmniejszej liczby cegieł” kieruje trzech niezależnych obrońców na tego, kto już przegrywa.

05 · Ten sam watażka za każdym razem

Losowość, którą da się odtworzyć

Każda „losowa” rzecz, jaką robi watażka — drżenie celowania, rzut monetą o to, czy chwytać — pochodzi z generatora z ziarnem, zwartej procedury znanej jako mulberry32, która zamienia jedną liczbę startową w długi, powtarzalny strumień wartości pseudolosowych. 2 Daj jej to samo ziarno, a na zawsze wytworzy tę samą sekwencję. Mecz na żywo bierze ziarno z zegara, więc żadne dwie partie nie zaczynają się tak samo, ale podaj to samo ziarno z powrotem, a mecz rozegra się dokładnie tak samo: te same kąty wyrzutu, te same drgnięcia, te same chwyty.

Ten determinizm nie jest kosmetycznym detalem. To on czyni grę testowalną — jej zestaw testów rozgrywa całe mecze komputer kontra komputer z ustalonego ziarna i oczekuje za każdym razem tego samego wyniku — i to on pozwala spakować całą symulację, łącznie z kursorem generatora, do formatu JSON i odtworzyć ją, dzięki czemu w trybie online gospodarz może strumieniować swój stan, a każdy z pozostałych graczy odbudowuje identyczną planszę. Watażkowie sprawiają wrażenie żywych, bo ich błędy wyglądają po ludzku; pod spodem ich „instynkty” to krótka rekurencja arytmetyczna, którą każdy może przewinąć do początku. Okazuje się, że maszyna strzegąca zamku potrzebuje tylko kilku liczb i strumienia odtwarzalnego szczęścia. 2

Sources & notes
  1. Bulwark game engine: the warlord AI. Threat scoring (distance from a ball to the king, minus a 250-unit bonus for inbound balls), the 0.12-second lead used to project the intercept point, the tuning table that holds jitter, react distance, catch chance and the aim-at-rivals switch for each tier, the “most wounded rival” target selection, and the eleven-sample search over release positions. Read from the game's own source.
  2. Bulwark game engine: the deterministic random generator, an implementation of mulberry32, the compact public-domain algorithm by Tommy Ettinger that maps a 32-bit seed to a repeatable stream. Its own comment notes that it seeds ball launches and AI jitter so that games are reproducible and testable, and it can save and restore its cursor so the state round-trips through JSON. Read from the game's own source.
    Algorithm origin: Tommy Ettinger, “Mulberry32 PRNG” (public domain).
Was this worth reading?
Play Bulwark
PlayPendium · About · Contact · Privacy · Terms · Cookies · Accessibility · Copyright · Browse all games · Classic arcade games · © 2026