
Pierwsze rysunki
· 6 min czytania
Zanim powstała jakakolwiek rozgrywka, chciałem sprawdzić, czy zboże, kamienie, kombajn i bocian będą czytelne na ekranie telefonu, bo poprawka rysunku kosztuje dużo mniej niż przebudowa gry. Akurat miałem około 150 dolarów środków na API firmy Anthropic (płaci się z nich za każde użycie modelu przez API, a dostaję je co miesiąc razem z abonamentem i niewykorzystane przepadają), które za kilka dni miały przepaść, więc rysowanie zleciłem agentom AI, którzy pracowali sami, bez mojego udziału.
Rysunek, który jest programem
Każdy agent dostał do narysowania jeden element i nie generował przy tym obrazka, tylko pisał program, który rysuje ten element piksel po pikselu (w ten sposób powstaje cała grafika w moich większych grach, na przykład w Zenogrodzie (otwiera się w nowej karcie)). Agent nie widzi, co narysował jego program, więc robił zrzuty ekranu i na ich podstawie sam oceniał, czy rysunek jest czytelny. Każdy pracował przy tym na osobnej kopii projektu, żeby agenci nie wchodzili sobie w drogę.
Każde zlecenie miało też limit kosztów, żeby agent, który utknie, nie przepalił wszystkich środków. Najpierw ruszyło jedno zlecenie na próbę, potem trzy naraz, a każdy rysunek kosztował tyle:
- Kamienie:1,38 USD
- Pole ze zbożem:3,94 USD
- Bocian:3,91 USD
- Kombajn:6,82 USD
Kamienie wyszły od razu
Z kamieniami nie było żadnego kłopotu: szary granit wyraźnie odcina się od złotego zboża, a dzięki ciemnemu obrysowi ich kształt widać nawet wtedy, gdy są bardzo małe. Agent narysował trzy rodzaje: mały kamień schowany do połowy w zbożu (to on ma być ukrytym zagrożeniem), średni, który można wypatrzyć przy odrobinie uwagi, i duży głaz, który zawsze widać i który trzeba objechać. Z małego kamienia w zbożu widać tylko dolną połowę i jeden jasny piksel, bo według koncepcji w dzień kamień ma zdradzać tylko przerwa w zbożu albo błysk.

Kamienie z pierwszej wersji rysunku: u góry w zbożu, na dole na ściernisku, od lewej mały, średni i duży głaz. Zboże z tego rysunku nie trafiło do gry.
Zboże jak gąbka
Ze zbożem poszło gorzej: na rysunku kamieni pszenica wyglądała jak gąbka albo żwir, bo kłosy były rozsiane gęsto i nieregularnie na tle, którego każdy piksel miał losowy kolor, i z tego powstał szum zamiast kłosów. Agent, który rysował pole, znalazł tę przyczynę i narysował zboże inaczej: każdy kłos ma trzy piksele, które jaśnieją albo ciemnieją razem, a kłosy stoją w regularnych rzędach, co drugi przesunięty. Do tego po polu przechodzą szerokie jaśniejsze i ciemniejsze pasy, jakby zboże czesał wiatr, a wzdłuż niego biegną podwójne ślady kół. Dopiero wtedy zaczęło to wyglądać jak pole, a agent zapisał w notatkach, że zboże od żwiru odróżnia właśnie porządek: równe rzędy, co drugi przesunięty, i kłosy pochylone w jedną stronę.


Ta sama pszenica w tym samym powiększeniu, oba fragmenty z tego etapu: przed, z rysunku kamieni, i po, z rysunku pola.
Kombajn w 32 kierunkach
Najwięcej pracy wymagał kombajn. Gra jest pikselowa, a rysunek pikselowy obrócony o dowolny kąt trzeba przeliczyć na nową siatkę pikseli, przez co krawędzie się rozmywają i maszyna traci kształt. Z tego powodu każdy kierunek jazdy to osobny rysunek, a żeby zakręt wyglądał płynnie, kierunków jest 32 (co 11,25 stopnia).
Żeby nie rysować wszystkich 32, część kierunków powstaje z innych przez obrócenie o 90 stopni albo lustrzane odbicie, bo w obu tych przypadkach każdy piksel trafia dokładnie w miejsce innego piksela i nic się nie rozmywa. Tak samo powstają kierunki kosiarki w Zenogrodzie, gdzie działa to bez zarzutu.
(otwiera się w nowej karcie)Wszystkie 32 kierunki kombajnu, od jazdy w prawo, zgodnie z ruchem wskazówek zegara, już po poprawce opisanej niżej.
Kosiarka w Zenogrodzie jest symetryczna, więc lustrzane odbicie niczego w niej nie psuje, ale kombajn symetryczny nie jest, bo kabinę i rurę do wysypywania ziarna ma tylko z lewej strony. W lustrze lewa strona staje się prawą, przez co w 12 z 32 kierunków kabina i rura trafiły na złą stronę maszyny, a kombajn sypałby ziarno po stronie przeciwnej do przyczepy.
Naprawiły to trzy dodatkowe rysunki maszyny celowo odwróconej w lustrze, z kabiną i rurą po prawej: po drugim odbiciu kabina i rura wracają na lewą stronę. Każdy z tych rysunków daje cztery kierunki (po jednym w każdej ćwiartce obrotu), więc trzy wystarczyły na wszystkie dwanaście.


Dwa kombajny wysypujące ziarno: lewy jedzie prawie w dół ekranu, prawy dokładnie w dół. Obraz „przed” jest odtworzony później, bo wersja z błędem nie została zapisana: to obecne rysunki złożone dawną metodą.
Czy to w ogóle wygląda jak kombajn, sprawdzał inny agent: dostał sam wycinek obrazka, bez podpisu, i w obu próbach odpowiedział, że to kombajn zbożowy (jako drugie skojarzenie podał raz czerwony traktor lub ciężarówkę z pługiem śnieżnym albo kosiarką z przodu, a raz mały traktor z kosiarką albo pługiem z przodu). Z notatek agenta wynika, że kombajn rozpoznaje się przede wszystkim po szerokim hederze, bo bez niego sama maszyna wyglądałaby jak ciężarówka.
Bocian, który trafił do poprawki
Bocian w locie wyglądał jak bocian: białe skrzydła z czarnymi lotkami, wyciągnięta szyja, długi czerwony dziób i nogi wystające za ogon. Na ziemi wypadł gorzej, bo zwrócony w górę albo w dół ekranu przypominał długopis albo lotkę do badmintona. Do tego był za duży: stojący bocian miał 17 pikseli długości, czyli ponad połowę szerokości hedera kombajnu (27 pikseli). Z obu tych powodów trafił do poprawki.

Bociany z pierwszej wersji rysunku: ustawione bokiem wyglądają jak bociany, a ustawione ukośnie, wąskie i podłużne, łatwiej wziąć za długopis.
Cały ten etap kosztował około 16 dolarów i dał na razie same rysunki, bez gry, ale... właśnie na rysunkach najtaniej było się przekonać, że zboże z losowych pikseli wygląda jak żwir, a lustrzane odbicie przestawia kabinę na drugą stronę maszyny. Żaden z tych problemów nie był trudny do naprawienia, ale każdy trzeba było najpierw zauważyć i nazwać, a samo polecenie „narysuj mi kombajn” raczej by tego nie załatwiło.
DevlogSeria: Żniwowo
- Część 1Od pomysłu do koncepcji
- Część 2Plan, zanim powstał kod
- Część 3Pierwsze rysunkiCzytasz teraz
- Część 4Kolejny wpis już wkrótce