Wpis z mikrobloga

Zdarza mi się pisać historyjki, więc się podzielę. A nuż komuś podpasuje.

Dzisiaj o tym, jak to się w całkiem dużej firmie gry komputerowe robi. Z dystansem.

Historia pewnej funkcjonalności

Robimy grę o strzelaniu do siebie. Ja wtedy zajmowałem się głównie programowaniem "grywalności" (gameplay), ale to był jeden z tych fajnych projektów, gdzie każdy był odpowiedzialny za wszystko.

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, 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 "uników stary! jak w Matrixie!" 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? Wszystkie 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 Micheal 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 układy z 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 zesrał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. On mi na to, że jakiś głąb 20 lat temu gdzieś zaprogramował, że wszystkie tekstury są o 10% większe bo tak kiedyś miało być i on się na te kąty tym razem nie zgadza, bo to była jakaś zaszła decyzja. 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.

Idę do mistrzów silnika (towarzystwo inżynierów, które pracuję nad tą magiczną technologią, która pozwala nam robić to co robimy), może mu naprawią te smutne kąty. Mówią, że zrobią co mogą.

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 jaka na pewno nastąpi, gdy nie wysłucha tej ważnej dla życia lekcji.

Pan Producent wybłagał, od mistrza tego jak to wszystko razem ma ładnie wyglądać spotkanie. 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 kombinuje 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, pragmatyk. 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 pokzauje 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 personalny 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żente (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ę unikwlewoszybko.fbx, a jak nie to unikwprawo.fbx
- Ok
Test. Oczywiście odwrotnie. Max źle przeeksportował.
- Krzywo mu noga stoi. - powiedział pan animator.
- Ale my nie mamy w grze nóg - zasugerowałem.
- Używam nogi, do kontrolowania dodatkowej rotacji na kamerze, żeby wyglądało to w stylu John'a Woo. Taki system 20 lat temu ktoś właśnie dodał jako poprawkę na szybko do eksportera 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ł:
- #!$%@?ł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.

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ą".

#programowanie #opowiesciradoslawa #gry
  • 4