Jeżeli nie możesz sobie z czymś poradzić - wysadź to Happy

seradio-ituneslogo-150x140
Dziś rano słuchałem sobie jednej z audycji radia Software Engineering Radio, a ściślej mówiac jednego ze starych odcinków: Episode 92: Introduction to Game Development. Generalnie odcinek odbiega nieco od reszty, bo nie jest o rozwiązaniach Enterprise, o Model Driven Development, czy rozmaitych aspektach bycia zwinnym (agile). Zawierał jednak ciekawe informacje o tym z jak innymi wyzwaniami borykają się osoby tworzące gry. Poruszane są kwestie wykrywania kolizji, zapewnienia realizmu postaci, testowania itp.
Najzabawniejszy jednak wydał mi się aspekt rozwiązywania konfliktów w grach sieciowych. Tytułem wstępu - każda z końcówek jak i centralny serwer posiadają ten sam silnik wirtualnej rzeczywistości. W każdym z tych miejsc odgrywana jest ta sama sytuacja. Końcówki przekazują do centralnego serwera zmiany w swoim świecie, który synchronizuje to z pozostałymi graczami i rozsyła zainstniałe zmiany.
Wyobraźmy sobie sytuację, gdzie we wspólnej wirtualnej czasoprzestrzeni znalazło się dwóch graczy. Nadlatuje jakiś obiekt (np. statek kosmiczny). Obaj zaczynają do niego strzelać. Pierwszy z graczy strzela w jego lewą stronę, co powoduje, że statek zaczyna się przechylać w lewo (na skutek poniesionych ran). Jego komputer propaguje tę sytuację do serwera.
W tym samym czasie drugi gracz także strzela, z tym, że w jego prawą stronę, co powoduje, że statek zaczyna się przechylać w prawą stronę. Także propaguje zmiany do centralnego serwera. Tam jednak okazuje się, że nastąpił konflikt. Opóźnienie wynikające z sieci było tak duże, że informacje dostarczone przez graczy są sprzeczne. Żeby wszystko wyglądało realistycznie takie konflikty są rozwiązywane przez zaawansowane algorytmy, próbujące zamodelować takie synchronizowane zmiany. Puentą jest jednak jedna ciekawa zasada - jeżeli coś jest zbyt skomplikowane i nie można sobie z tym sensownie poradzić - po prostu wysadź to Happy Ludzie zawsze oczekują, że w grze coś wybuchnie, rozpadnie się, że się coś unicestwi - to dlaczego akurat nie w tym momencie?...

A tak nawiasem mówiąc, to polecam powyższe podcasty. Warto posłuchać, tym bardziej, jak poruszany temat nie jest zgodny z naszymi głównymi kierunkami zainteresowań. Zawsze warto się dowiedzieć czegoś nowego.
A teraz? Teraz zastanawiam się gdzie zastosować nowo poznaną technikę rozwiązywania problemów Happy
blog comments powered by Disqus