Skip to content

[Technikalia] Budowa murów

W poprzednich artykułach skupiliśmy się na opisaniu wyglądu i działania różnych przedmiotów w grze. Natomiast nie zajmowaliśmy się wyjaśnieniem, jak to wszystko ze sobą współpracuje i jak działa od podszewki. Rzeczy, które mogą na pierwszy rzut oka wyglądać na proste i oczywiste, w rzeczywistości często wymagają poświęcenia długiego czasu na ich obmyślenie i zaprogramowanie.

Pragniemy więc rozjaśnić trochę ten temat i w tym celu spotkaliśmy się z jednym z naszych programistów grafiki – Florianem. Zajmuje się on tworzeniem murów, których używacie w grze do obrony przed najeźdźcami. Nasze pierwsze pytanie do Floriana brzmi: czym dokładnie zajmuje się programista grafiki i jak wygląda jego dzień pracy?

Odpowiedź nie była aż tak prosta, jak myśleliśmy, ponieważ trudno opisać tę pracę. Osoba ta jest odpowiedzialna za wypracowanie rozwiązań dla artystów zajmujących się grą, tak aby wszystko na ekranie ładnie wyglądało. Dodatkowo realizuje także specjalne efekty graficzne.

Jeśli np. przyjrzymy się murom obronnym i systemowi fortyfikacji, zauważymy, że w pracę nad nimi zaangażowane są różne działy w studio, składające się z artystów, animatorów, programistów i programistów grafiki. Artyści tworzą mury z mniejszych, sześciennych elementów. Jednakże po postawieniu ich na ziemi, nie będą od razu wyglądać idealnie, tylko tak, jakby im czegoś brakowało.

W tym momencie do pracy wkracza Florian, który ma za zadanie wymyślić sposób na przekształcenie tych sześcianów tak, aby pasowały do otoczenia i miały atrakcyjny wygląd. Ponadto, musi też ciągle uważać na wydajność gry, ponieważ niektóre rozwiązania mogłyby ją zbyt obniżyć.

Celem Floriana jest uzyskanie gładkich i płynnych przejść pomiędzy poszczególnymi fragmentami murów oraz terenem znajdującym się pod nimi.

W swojej pracy musi on zwracać uwagę na następujące elementy:

  1. Płynne przejścia między fragmentami murów.
  2. Dopasowanie ścian do kształtu terenu.
  3. Trawa i inne elementy podłoża powinny wyglądać i zachowywać się w naturalny sposób.
  4. Jednostki wojskowe muszą być w stanie prawidłowo poruszać się po murach.

Od tego momentu rozpoczyna się prawdziwa praca. Florian będzie musiał rozważyć kilka pomysłów. W świecie „Osadników” wszystko dzieje się dynamicznie i każdy przedmiot powinien dostosowywać się do otoczenia, a w szczególności do otaczającego go terenu. Ściany muszą więc odzwierciedlać kształt i przebieg podłoża pod nimi. Końcówki murów mogą też mieć różne zakończenia w zależności od miejsca, w którym gracz ustawi następny fragment fortyfikacji. Z tego względu trzeba je odpowiednio przystosować do różnych modyfikacji.

By to osiągnąć, Florian wykorzystuje „krzywe sklejane”. Termin ten zazwyczaj odnosi się do szerokiej klasy funkcji. W omawianym przez nas przypadku funkcja ta jest krzywą składającą się z pięciu punktów kontrolnych. Są to punkty: początkowy, końcowy oraz jeden w środku, do którego dołączone są punkty po obu jego stronach, pozwalające zdefiniować właściwości tej krzywej. Dzięki nim łatwo jest manipulować kształtem takiego muru.

Punkty kontrolne krzywej sklejanej są umieszczane bezpośrednio na podłożu. Ponieważ ściany, tak jak niemal każdy inny obiekt w grze, są wykonane z trójkątów, możemy użyć krzywych sklejanych do wyświetlenia wysokości muru na narożnikach trójkątów.

Wciąż jednak mamy problem polegający na tym, że teren po obu bokach ściany może być położony niżej lub wyżej. Oznacza to, że przed umieszczeniem murów musimy go wyrównać. Nawet jeśli wymienimy ściany, krzywa sklejana nie zmieni się, jako że mury mają z góry określoną wysokość. Po rozpatrzeniu tych wszystkich aspektów rozpoczyna się praca i testowanie. Umieszcza się różne fragmenty murów w grze i sprawdza ich wygląd. Jeśli wszystko prezentuje się idealnie (a nigdy za pierwszym razem to się nie zdarza), cały ten system zostaje zaimplementowany w grze.

Co myślicie o pracy programisty grafiki? Czy w artykule nie zabrakło informacji, którymi jesteście zainteresowani? O jakich tematach chcielibyście poczytać na naszym blogu w przyszłości? Napiszcie poniżej w komentarzach.

de en es fr it pl ru

One Comment