O programowaniu grywalności

Heyah!

Dziś o miejscu, które do mojego repertuaru opowieści dołożyło całkiem solidną cegiełkę, więc będzie o pracy. Ta jest z czasów wcześniejszych, bliżej domu. O Torontońskiej Fabryce na pewno jeszcze napiszę, bo jest o czym.

Gry.

Zarabiam na chlebek, robiąc gry. W dosłownym sensie, więc jeśli trafiłem tu na zatroskanych, to tak, jestem bezpośrednio odpowiedzialny za to wcielenie szatana, które zmusza wasze niewinne pociechy do strzelania do siebie w szkołach (jeśli wierzyć specjalistom dajmy na to, miesięcznika NaY). Moja wina! Wy jesteście spoko. Jeśli natomiast w tej konkretnej ludzkiej barykadzie stoicie pod katowickim Spodkiem i dopingujecie naszych jak tym “innym” konkretnie kopią dupsko, piona! Gracze świata, krzyczmy głośno, chyba zaczynają nas słyszeć.

Disclaimer.

Moja podstawa profesja, to pan programista, ale z tych śmieszniejszych, bo od tak zwanego Gameplaya (*grywalności). Zamiast podawać wymyślne nazwy i słowa, których się generalnie nie rozumie, postaram się to wytłumaczyć najłatwiej jak potrafię, używając baaaardzo dużych skrótów myślowych (bo ten proces jest mocno skomplikowany).  Ważna uwaga. Jak mówię pewne specyfiki, to o projektach, jakie były ukończone, wydane i w innych firmach w ogóle. Fabrykowe sprawy to jeszcze tajemnica. Pluton egzekucyjny już na mnie czeka, jak powiem za dużo o tym, co robię TERAZ. Co wtorek rozstrzeliwują pana od kanapek. To nie są żarty. Nie zgadywać, nie wypsnie się.

Tu akurat opowieść z poprzedniej przygody, projektu, który do końca życia będzie mi ciepło leżał na sercu.

Historia pewnej funkcjonalności

Robimy grę o strzelaniu do siebie.

W pewien poniedziałek przychodzi Pan z problemem (zazwyczaj w tych wypadkach mają jakieś dodatki do imienia – “lead”, “mngr”, “po”, “dir”), a w moich obowiązkach leży ten problem rozwiązać. Ten brzmiał tak: “ej Radek, ale by było fajnie, jak byśmy mogli w grze uchylać się przed kulami, nie?!”. Powiedziałem mu, że zrobię, co mogę.

Tester się obudził.

Jak się taki problem kuli rozwiązuje? Praktycznie. Najpierw trzeba pogadać, na przykład z mistrzem projektowania. Tak ustala się zasady. W którym momencie sekwencja uniku ma się aktywować? Co ma Gracz zrobić żeby wygrać? A co się stanie jak przegra? Jak ma działać ta mała mechanika w kontekście pełnej produkcji? Czy kula ma lecieć szybciej, gdy ktoś zmieni opcję z “łatwy” na “trudny”? Jak ma to działać gdy Gracz wstanie, kucnie i będzie akurat z balkonu spadał i mu kula zza pleców od wroga przez dziurę w płocie przeleci? Cały kwintylion zasad.

Zasady jak to zasady, są po to by je łamać. Pierwsze założenia zazwyczaj umierają około pół godziny od ustalenia. Działając w zgodzie z duchem precedensu, robimy co możemy.

Tester czekał.

Następny punkt to kurs do mistrza animatora dogadać kontrakt. Ma plan na animację unikania kul taki, że jak Michael Bay mu podejrzał portfolio, to od razu chciał to w nowych transformatorach realizować. Potem spojrzeliśmy na budżet. Wiedzieliśmy, że musimy spotkać się gdzieś po środku. Szeroko pojętym.

Podobny kontrakt zawieram z mistrzem modelarstwa, żeby mi taką ładną ołowianą kuleczkę wymodelował. On sam ma potem własne kontrakty ze swoimi wspólnikami, mistrzami malarstwa i wszystkiego. Biegają po lasach i zamieniają zdjęcia liści w teksturę metalu z chropowatą powierzchnią, co wygląda ładnie na ekranie. Ja panu mistrzowi wyjaśniam jak ma wyklikać i ustawić, żeby się na produkcji nie zjebało. On mi mówi, że mnie nie rozumie. Tłumaczy mi coś o kątach światła i że mu w ogóle wszystko wypali i że nie da rady tak. Ja mu mówię, że go nie rozumiem. To mi wykłada, że jakiś głąb 20 lat temu gdzieś zaprogramował, że wszystkie tekstury (obrazki w grze) są o 10% większe bo tak kiedyś miało być i on się na te kąty nie zgadza, bo to była jakaś zaszła decyzja. Pomarudził, pomarudził, potem polazł do mistrzów silnika (towarzystwo inżynierów, którzy pracują nad tą magiczną technologią, która pozwala nam robić to co robimy), może mu naprawią te smutne kąty. No miał chłopak rację, nie wiem, o co chodzi w tym całym wypalaniu, ale obrazek na ekranie po lewej stronie był brzydki, a ten po prawej ładny. Robimy, co możemy.

Tester czekał.

Pan animator wynajął aktora, żeby mu się przed kulą uchylał. Bodzio Linda był zajęty, więc poszło na pana stażystę. Stażysta jak ognia unika spotkania, na którym mamy go o tym poinformować wykręcając się jakąś bzdurą o tym, że ma trening bezpieczeństwa i higieny. Doświadczeni, złapaliśmy go przed, skazując tym samym na perspektywę niechybnej śmierci z powodu porażenia prądem z klawiatury, która na pewno nastąpi, gdy nie wysłucha tej ważnej dla życia lekcji. Robiliśmy, co mogliśmy.

Pan Producent wybłagał spotkanie od mistrza tego, jak to wszystko razem ma ładnie wyglądać. Jako że ten człowiek był najbardziej obleganym z cyklu, spotkanie wyznaczono na pewien czerwcowy wtorek. Pomiędzy 14:37 a 15:12. Pod warunkiem, że producent z drugiego projektu nie przyjdzie do pracy. Ja kombinuję, jak upchnąć 24 luźne punkty, które mam mu do przekazania. Pan Producent chyba ma plan, bo googluje “Produkcja bakterii wąglika w tydzień”. Z komputera przełożonego, pragmatycznie. Robi, co może.

Tester czekał.

Stażysta zaczyna kwestionować czarny spandeksowy strój z białymi piłeczkami ping-pongowymi. *I dopiera teraz poinformował nas, że nie umie zrobić salta. Miał się uczyć programować. Pan animator tłumaczy mu, że to jak w “Karate Kid”, najpierw trzeba trochę miotłą powiosłować, a potem dopiero robimy pompki. No z grubsza uwierzył. Animator pokazuje, jak ma się tan nasz nieszczęśnik w uniku rzucanej poduszki cofnąć i machnąć nogą, by kamera dobrze nakręciła. Coś chyba ustalili, bo po podwójnym piruecie wszyscy wydawali się być zadowoleni. Jakoś w tym momencie nie miałem serca im powiedzieć, że potrzebowaliśmy tylko animacji kamery i rąk… bo nóg to nasza postać Gracza nawet nie ma. Taka nowa zasada.

Tester czekał.

Mój osobisty mistrz zadał mi kilka kluczowych pytań na temat pierwszego zamysłu systemu do unikania kul. Znalazł 4 luki, które przesuną implementację/wdrożenie w 22 wiek. Ma odpowiedzi na trzy z nich, nad czwartą się prześpi. Robi, co może.

Tester czekał.

Mam ołowianą kuleczkę i podstawową animację uchylania. Zatrudniam siły matematyki i ogarniania komputerów w podstawowy grywalny prototyp. Zakładam zerowe podstawy techniczne, więc tak też tłumaczę: umiem zapytać komputera o coś i potem mu powiedzieć, żeby coś zrobił. Jest to efekt pracy miliarda ludzio-godzin, z każdej dziedziny komputeryzacji, bo teraz nawet taki miś jak ja może się tego nauczyć. Więc ja z komputerem (czy innym urządzeniem co do grania służy) mogę, po godzinach krwi i łez (które każdy programista rozumie), potoczyć taki dialog:

– Hej właśnie ci Gracz umiera i zaraz ten pan cię zastrzeli.
– Czekaj! Czekaj! Stop!
– Jak kurde stop, nie zabijamy?
– Nie. Spowolnij czas o milion razy. Pamiętasz to rozmycie i kolor od mistrza efektów? Walnij na ekran.
Pan mistrz efektów wraz z mistrzem tego co wygląda, dopingują przez ramię i krzyczą – “więcej madżenty! więcej niebieskiego! wchodzi za szybko, wolniej rozmywaj!” – madżentę (chyba to jakiś kolor) umiałem, z niebieskiego potrzebowałem konsultacji specjalistycznej.
– Oka, komputer, jak kula pół metra od nas, pauza na sekundę. Jak Gracz da gałką w lewo to odpal na nim animację -> unik_w_lewo_szybko, a jak nie to unik_w_prawo.
– Ok
Test. Oczywiście odwrotnie. Max źle przeeksportował #pdk.
– Źle mu noga stoi.
Powiedział pan animator.
– Ale my nie mamy w grze nóg – zasugerowałem.
– Używam nogi do dodania dodatkowej rotacji na kamerze, żeby wyglądało to w stylu Johna Woo. Taki system 20 lat temu ktoś właśnie dodał jako poprawkę na szybko do systemu animacji. Zgłosiłem do supportu, w 2026 będą mieli jakieś permanentne rozwiązanie.
Producent zapytał czemu stażysta z projektu obok biega w spandeksie ping pongowym i czy HR wie, że go porwaliśmy. Powiedzieliśmy mu, że nie wie i żeby się tym nie przejmował, więc przestał.
– Przydałoby się wziuuuuuuuuuuut.
– To samo pomyślałem komputer.
Pobiegłem po mistrza dźwiękowca. Kochany podejrzał przez okno, że na jednym spotkaniu o unikaniu kul gadamy i hobbystycznie zamienił dźwięk skrzypienia furtki przy bramie, w całkiem zacne wziuuuuuuut. Hobbystycznie umieścił też w naszych komputerach, różne wersje wziuuuuuuut, po postprodukcji, posortowane i zgodnie z normami projektowymi gotowe do użycia.
– Zagraj wziuuuuut_v14.wav. Zabij Gracza, jak zrobi źle.

Tester czekał.

Mój mistrz rozwiązał ostatni problem. Akurat przechodził obok, jedząc kanapkę. Spojrzał w lewo i pokazał palcem w kod źródłowy. Powiedział:
– Zjebałeś tę funkcję. Pomyśl.
Zawsze mnie wkurzał tą sztuczką.

**Mamy to! Otwieramy butelki szampana, a wszyscy w autobusie wstają i klaszczą.

A potem Tester pokazał nam jak bardzo, ale to bardzo się myliliśmy. Więc drodzy Gracze, na sam koniec…

Zrobiliśmy… co mogliśmy.

Ale po co?

Lubię to co robię, dlatego że jestem w kameralnym gronie osób, które w tym wszystkim nauczyły się rozmawiać z komputerem… intymniej, gdy trzeba coś takiego poskładać w całość. Dzięki temu na koniec mogę szepnąć słówko i przemycić Graczowi coś od siebie.

Stają w szranki z tym ludzie różni, ale wielu to fascynaci. Jeśli jesteś w branży to wiesz że ty albo ktoś obok jest jednym z nich. Z fascynatami pracuje się łatwo, pomimo różnic. Jest podobny cel. Zrobić coś strasznie fajnego. Dla tego celu żyjemy poza światem 9-17. Mimo, że na końcu drogi, jako twórców, czeka nas rzut monetą. Kwiaty? Czy tylko gówno?

Dla mnie robienie gier to sudoku, kakuro, zagadka, łamigłówka, problem, węzeł, który jakoś trzeba rozwikłać. Niestety tylko przez 5 procent czasu. Reszta to smutna orka, ale wiecie co? Mi ten procent wystarcza by w poniedziałek wstać delikatnie mniej wkurzonym niż standard. Wszystkim tego życzę.

Czołem!

* Motion-Capture. Dla niewtajemniczonych – przebiera się człowiek w czarny strój z takimi właśnie piłeczkami w kluczowych pozycjach (podstawowe kości, pozycja klatki, a czasem nawet seria kropek na buzi, trochę jak piegi, by zebrać tak delikatny ruch jak mimika) i odgrywa scenkę w specjalnie zaprojektowanym pomieszczeniu z kamerami, które “widzą” te wszystkie punkty. Mistrzowie są w stanie przetłumaczyć pozycję tych punktów na wirtualny szkielet ludzki i użyć tego jako bazy do animacji rzeczy, które widzicie na ekranach.

** Po prawdzie, “mieliśmy to” po przeprowadzeniu tego dialogu pierdyliard razy z różną publicznością, w różnym gronie i z różnymi fantastycznymi ludźmi, których bardzo pozdrawiam, a to był tylko jeden “klocek” tego, co można zacząć nazywać “grą”.

One Reply to “O programowaniu grywalności”

Daj znak/sygnał

Komentarz