34

Matematyka w służbie graczom

Całka, wektor, graf. Dla wielu osób słowa te brzmią obrzydliwie, jednakże bez zastosowania matematyki nie byłoby możliwe stworzenie żadnej wartej uwagi gry komputerowej. Przyjrzyjmy się jakie znaczenie ma królowa nauk w rozrywce wirtualnej. Grafika 3D Aby poprawnie i realistycznie wygenerować obraz gry w ułamkach sekund musi zostać wykonany szereg złożonych obliczeń matematycznych. Tym zadaniem zajmuje […]

Całka, wektor, graf. Dla wielu osób słowa te brzmią obrzydliwie, jednakże bez zastosowania matematyki nie byłoby możliwe stworzenie żadnej wartej uwagi gry komputerowej. Przyjrzyjmy się jakie znaczenie ma królowa nauk w rozrywce wirtualnej.

Grafika 3D

Aby poprawnie i realistycznie wygenerować obraz gry w ułamkach sekund musi zostać wykonany szereg złożonych obliczeń matematycznych. Tym zadaniem zajmuje się silnik graficzny, a więc ta część kodu gry, która odpowiada za tworzenie grafiki na ekranie komputera. Oczywiście stworzenie takiego oprogramowania wymaga od jego twórców opanowania co najmniej kilku działów matematyki wyższej, przede wszystkim algebry liniowej, czyli działu matematyki zajmującego się wektorami i macierzami, ale także geometrii, trygonometrii (sinusy, kosinusy, itd.) oraz analizy matematycznej (m.in. zmora wielu studentów kierunków technicznych czyli całka). Programiści muszą też umieć posługiwać się trójwymiarowym układem kartezjańskim.

Oto przykładowy problem – w punkcie (1,2,5) znajduje się środek pudła w kształcie sześcianu o długości krawędzi równej 5 i w kolorze #0000ff. Gracz (czyli de facto kamera) znajduje się w punkcie (10,20,30). Jedyne źródło światła znajduje się w punkcie (100,100,100), ma ono kolor #f0f9b7 i natężenie 3000 lx. W jaki sposób pudło powinno być odwzorowane na ekranie? Pomiń wpływ światła odbitego od otoczenia. Fakt, iż z takim zagadnieniem świetnie sobie silnik radzi świadczy o bardzo dobrej znajomości zasad zachowania się światła i kunszcie matematycznym jego twórców.

Prawa fizyki

Silnik fizyczny jest to część kodu gry, która odpowiada za symulację układów fizycznych. Odpowiada między innymi za realistyczne odzwierciedlenie zachowania brył sztywnych oraz detekcję kolizji. Pięknym wyglądem falującej wody w Assassin’s Creed IV: Black Flag możemy się cieszyć dzięki zastosowaniu równań całkowych i rachunku różniczkowego, a na wygląd każdej fali wpływ ma także rachunek prawdopodobieństwa. Silnik fizyczny określa też z jakim przyspieszeniem spadają obiekty w grze. Aby był zachowany realizm muszą one spadać ruchem jednostajnie przyspieszonym, a przyspieszenie musi być równe grawitacyjnemu na Ziemi, tj. 9,81m/s2. Oczywiście przy założeniu że akcja gry toczy się na naszej planecie.

Duże znaczenie ma matematyka przy symulowaniu zjawisk związanych z kinematyką, czyli ruchem. Jeżeli chodzi o królową nauk, to przy stosunkowo prostych grach takich jak Angry Birds do zaprogramowania ruchu obiektów przeważnie wystarczy wiedza absolwenta liceum o profilu mat-fiz (funkcje kwadratowe, trygonometria, wektory), z drugiej jednak strony konieczna jest bardzo dobra znajomość kinematyki od strony fizycznej.

Gameplay

W rozgrywce matematyka ma zastosowanie o wiele szersze niż sprawdzenie czy można jeszcze umieścić jakiś przedmiot w przepełnionym ekwipunku albo jakie łącznie obrażenia zadaje gracz po zsumowaniu wszystkich bonusów. We wszelkiego rodzaju algorytmach (na przykład sortujących przedmioty w ekwipunku lub sprawdzających czy postać może się wdrapać na stojący przed nią klif) stosuje się kilka działów matematyki dyskretnej, tj. logika matematyczna (czyli działania których wynikiem jest prawda lub fałsz) i teoria zbiorów. Natomiast do określenia złożoności obliczeniowej algorytmów, od której zależy jak mocno będzie przeciążony procesor, stosuje się notację „duże O”, która informuje nas o tempie wzrostu funkcji (programiście zależy na tym, aby ten wzrost był jak najmniejszy). Oto jak w uproszczeniu wygląda lista kroków przykładowego algorytmu wykorzystywanego w grach FPS:

  1. Gracz A strzela do gracza B.
  2. Czy istnieje punkt wspólny z bryłą geometryczną reprezentującą gracza B oraz półprostą wychodzącą z lufy broni gracza A?
  3. Jeśli tak, to zostaje sprawdzone do jakiej części ciała należy punkt wspólny. W oparciu o tę informację zostaje wyznaczona wartość zadanych obrażeń, która zostaje odjęta od HP gracza B.
  4. Czy liczba HP gracza B jest równa lub mniejsza od 0?
  5. Jeśli tak, wówczas gracz B musi zaczekać na respawn.

Duże znaczenie przy symulowaniu sztucznej inteligencji, widoczne szczególnie wyraźnie w grach RTS, ma zagadnienie pathfindingu, czyli wyznaczanie najkrótszej ścieżki po której jednostka może przejść z punktu A do punktu B. W rozwiązaniu tego problemu może pomóc nam między innymi algorytm Dijkstry, reprezentujący dział matematyki jakim jest teoria grafów. Dobrym przykładem gier, które dobrze ukazują wykorzystanie wiedzy z zakresu grafów są dwie pierwsze części serii The Settlers, w której mali osadnicy poruszali się po wyznaczonych przez gracza ścieżkach.

Rachunek prawdopodobieństwa i statystyka matematyczna ma duże zastosowanie w balansowaniu rozgrywki. Jest to tak stary jak gry komputerowe problem polegający na takim zaprojektowaniu broni, ataków czy cywilizacji dostępnych w grze, aby żadne z nich nie było nadmiernie potężne względem innych. Na przykład w grze jest dostępny potężny czar, ale wymaga on bardzo dużej ilości many w wyniku czego nie jest nadużywany. Warto jednak nadmienić, że stworzenie idealnie zrównoważonej gry jest niemożliwe – wszakże nawet w szachach ktoś musi wykonać ruch jako pierwszy.

Problem balansowania rozgrywki staje się szczególnie uciążliwy w grach wieloosobowych, takich jak LoL. To właśnie nie do końca poprawne zrównoważenie wszelkich parametrów i zdolności bohaterów sprawia, że co każdą rotację jeden z nich jest wybierany podczas gry wyraźnie częściej niż pozostali. Jest też inny problem – jaką cenę powinien mieć dany przedmiot, aby była ona rozsądna względem bonusów jakie daje? Z odpowiedzią na te pytanie przychodzą pewne tajne formuły matematyczne wykorzystywane przez twórców, które każdemu przedmiotowi przypisują pewną uniwersalną, również niejawną wartość zależną od jego kosztu, bonusów i efektów nakładanych na wroga.

Wpływ królowej nauk na sam gameplay widać wyraźnie zwłaszcza w grach RTS, gdzie każdy aspekt rozgrywki jest oparty o wzory. Formuły matematyczne są używane na przykład do określenia prędkości z jaką poruszają się jednostki robotnicze w grze StarCraft 2 (ich prędkość nie jest bowiem stała), jak też do bardziej istotnych zagadnień takich jak zależność czasu wznoszenia budynku od liczby konstruujących go robotników w Age of Empires 2.

Kryptografia

Matematyka ma w produkcji gier jeszcze jedno ciekawe zastosowanie, nie mające bynajmniej na celu uprzyjemnienie zabawy lecz utrudnienie jej pewnej grupie graczy. Mowa oczywiście o systemach zabezpieczających przed piraceniem gier (tzw. DRM) opartych o mechanizmy kryptograficzne.

Specjaliści zajmujący się tworzeniem i obsługą tego typu mechanizmów muszą wykazać się znajomością między innymi krzywych eliptycznych, kombinatoryki (silnia, itp.), teorii liczb (szczególne zainteresowanie dotyczy liczb pierwszych), arytmetyki modularnej oraz teorii pierścieni i ciał (ciekawostką jest, iż w ciele Z3 2+2=1). Warto zauważyć, że rozwiązania matematyczne zastosowane przy tworzeniu algorytmów kryptograficznych zależą jedynie od wyobraźni autorów, toteż każdy dział matematyki może zostać w nich użyty. Liczy się tylko to, aby powstały system był niezawodny.

Królowa nauk

Jeśli ktoś, podobnie jak wielu uczniów i studentów uważa matematykę za stratę czasu, która nigdy nie przydaje się w życiu, to prawdopodobnie ma rację – o ile nie ma zamiaru zostać twórcą gier komputerowych. Każda gra komputerowa jest to bowiem jeden wielki algorytm, który bez przerwy coś rachuje, a efekty tych obliczeń są następnie widoczne na ekranie.

Foto binary background via Shutterstock.

Wykorzystane materiały:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20.