top of page

Najpierw jeden rodzaj, potem pięć: jak rośnie ta gra 🪨

Zdjęcie autora: Marcel Dütscher
Marcel Dütscher
27 lip
3 minut(y) czytania

Kto zajrzy na naszą listę wersji, znajdzie 29 wydań w dobre pięć tygodni: od 0.1.0 z 20 czerwca do 0.9.0 wczoraj. Jak to możliwe? Na pewno nie tak, że siadamy i budujemy gotową funkcję jednym wielkim zamachem. Budujemy etapami: najpierw najmniejsza wersja, która naprawdę działa, a potem, gdy jest stabilna i daje frajdę, następny etap. Najlepiej pokazują to teraz asteroidy.


Etap 1: w ogóle istnieją. Gdy asteroidy trafiły do gry, liczyło się jedno pytanie: czy lądowanie, chodzenie i kopanie działa na malutkim ciele, które można obejść w kilka minut? Asteroida to nie mała planeta: ma własną klasę wielkości, inną grawitację, inny horyzont. To był etap 1 i wszystko inne celowo zeszło na bok. Dlatego był dokładnie jeden rodzaj: typ był wpisany na stałe, a ponieważ nie miał listy możliwych powierzchni, każda kolumna pokrywała się kryształem. Każda asteroida w całej galaktyce wyglądała tak samo. Różniły się tylko obwodem i tym, gdzie akurat leżały kratery.


Etap 2: teraz mogą się różnić. Etap drugi jest gotowy od wczoraj i trafi do gry z następną aktualizacją. Wtedy będzie pięć rodzin asteroid, a każda skała losuje własną z ważonym prawdopodobieństwem. Skalna jest koniem roboczym i niesie żelazo, krzemionkę, miedź i cynę. Metaliczna to prawie czysty metal: wszędzie tytan, a głębiej kobalt, wolfram i platyna. Lodowa ma −95 °C i zamiast metali niesie substancje lotne: węgiel, lit, siarkę. Węglowa jest czarna jak sadza, podziurawiona jaskiniami i ukrywa daleko w głębi uran i diament. A krystaliczna, dokładnie taka, jaka kiedyś była każda asteroida, jest teraz rzadkim znaleziskiem. Do tego każde ciało dostaje własną rzeźbę kraterów: gęstość, szerokość niecek, głębokość, wysokość krawędzi i to, jak falisty jest pył między nimi. Wcześniej było to pięć stałych liczb dla całego wszechświata, dlatego każde ciało bez atmosfery wyglądało tak samo. Z tego korzystają zresztą także księżyce, bo idą tą samą drogą przez kod.


Prawdziwa nagroda przychodzi potem. Piękne w czysto zbudowanym etapie drugim jest to, że daje etap trzeci: szósta rodzina to już nie praca programistyczna, tylko wpis w pliku z danymi: nazwa, powierzchnie, rudy, częstość i gotowe. „Ktoś powinien to dodać” zamieniło się w „moglibyśmy to wypróbować któregoś wieczoru”. Po to jest ta przebudowa.


Dlaczego zawsze robimy to w ten sposób. Trzy powody, wszystkie poznane na własnej skórze. Po pierwsze: z góry nie wiadomo, czy pomysł daje frajdę. Małą pierwszą wersję można wypróbować z Justusem w jeden wieczór, a potem wiadomo, czy rozbudowa ma sens, czy pomysł był jednak nudny. Po drugie: mały krok da się przejrzeć, przetestować i w razie potrzeby cofnąć. Nad gigantyczną funkcją, która sięga w pięćdziesiąt miejsc naraz, można się tylko modlić. Po trzecie, i to dla nas najważniejsze: w tę grę grają dzieci. Na wpół skończona wielka funkcja jest dla nich gorsza niż mała, która działa niezawodnie.


Wszędzie ten sam wzór. Bloki były najpierw sześcianami; rampy, schody i kule przyszły później, potem kolorowanie, potem drobne fazowanie krawędzi, żeby nic już nie wyglądało jak kartonowe pudło. Planety zaczęły jako szara skała; prawdziwe morza, systemy jaskiń, klimat zależny od wysokości i wulkany przyszły później, potem zamarznięte morza na zimnych światach, a teraz asteroidy. W bezpieczeństwie dzieci najpierw było tylko polecenie zgłoszenia na czacie, potem bany z powodami i przerwami, a ostatnio niewidzialny tryb obserwatora. A nasi bandyci, dopiero co wydani, sami są jeszcze etapem 1: trafiają was efektem bliskości, a nie prawdziwymi lecącymi pociskami. To nie przeoczenie, to zapisane w planie: etap 2, gdy etap 1 się sprawdzi.


Ile kosztuje taki sposób pracy. Szczerze: dwie rzeczy. Po pierwsze, istniejące światy się zmieniają: ponieważ typ ciała niebieskiego jest liczony na nowo przy każdym wczytaniu i nigdy nie jest zapisywany, asteroidy w waszych starych światach dostaną z następną aktualizacją inne rodziny i inną rzeźbę. Wasze zbudowane bloki przetrwają, ale mogą nagle wisieć w powietrzu albo tkwić w skale. Dlatego takie rzeczy zawsze trafiają do notatek wydania. Po drugie, nawet pierwszy etap trzeba zbudować tak, żeby drugi w ogóle był możliwy. Dla asteroid znaczy to: w kodzie jest teraz dokładnie jedno miejsce, które odpowiada na pytanie „czy to asteroida?”, i test, który dla każdej wygenerowanej rodziny sprawdza, czy naprawdę jest tak klasyfikowana. Pominiecie jednego wywołującego i wraca paskudny stary błąd: skała, w której nie da się wykopać ani jednego bloku.


I znowu testy nas uratowały. Przy budowaniu nowych rodzin zadziałała stara kontrola: pilnuje, żeby na każdym świecie ze złożami rudy dało się dojść do przepisu na kabel. Trzy z pięciu nowych rodzin po prostu nie miały miedzi, a gracze utknęliby tam w postępie. Żaden człowiek tego nie zauważył; zauważył to test napisany kilka tygodni wcześniej. Wszystkie rodziny mają teraz miedź i krzemionkę.


Następny jest kolejny taki etap, gdzieś między roślinami, zwierzętami i bandytami. Który, to zwykle decyzja Justusa. 🌟

Ostatnie posty

Zobacz wszystkie

Komentarze


Komentowanie tego posta nie jest już dostępne. Skontaktuj się z właścicielem strony, aby uzyskać więcej informacji.
bottom of page