DeletedUser1170
Gość
Gość
W ciągu ostatnich kilku tygodni pojawiło się sporo informacji dotyczących nowości zwanej Instancjami Multiplayerowymi, które w skrócie nazywamy IMPami - mało kreatywne, ale na razie musi wystarczyć.
Dzisiaj chcę zaprezentować trochę nowych informacji. Jak wspomniałem w pierwszym Raporcie The West, IMP-y bazują na mechanice z walk fortowych i, na chwilę obecną, są planowane jako zawartość PvE. W przeciwieństwie do bitew fortowych, udział w IMPach będzie można wziąć w dowolnym momencie (zakładając, że postać akurat nie robi nic innego) ze znajomymi lub losowymi graczami. Na chwilę obecną skupiamy się na pierwszej, prototypowej instancji, w której główną rolę - oczywiście oprócz graczy - gra Niedźwiedź. Fabuła wygląda tak: śpisz w lesie wraz z grupą znajomych, gdy nagle pojawia się niedźwiedź. Jako, że żaden z Was nie był dobrym harcerzem (w przeciwnym wypadku zauważylibyście, że tuż obok Waszego namiotu znajduje się jaskinia), jesteście zmuszeni bronić się i walczyć z misiem. Na szczęście nie jest to najmądrzejszy miś, na jakiego moglibyście trafić i atakuje tylko najbliższego gracza - na nieszczęście graczy miś ten braki w inteligencji nadrabia kilkoma bardzo silnymi atakami, a na dodatek jest bardzo szybki!
Sztuka rysowania
Mimo, że powyższa historia jest zupełnie zmyślona, to scenariusz już nie jest i zawiera kilka możliwości naszego silnika IMP (np. sztuczna inteligencja), niestety dzisiaj o nich Wam nie opowiem. Elementem, który nie zostały wspomniany w historii, ale o którym chcę trochę opowiedzieć są oczy niedźwiedzia i pozostałych graczy. Jasne, z pewnością fajnie wyglądają, ale dalej głównym powodem ich istnienia jest wzrok, który pozwala widzieć, co dzieje się dookoła. Element pola widzenia jest już zawarty w bitwach fortowych, ale tam jest on z góry ustalony dla każdej z map, ponieważ blokujące go objekty są z góry znane, a gracze nie zasłaniają wzroku sobie nawzajem.
W przypadku nadchodzących IMPów sytuacja wygląda zgoła inaczej. Każdy obiekt będzie zasłaniał pole widzenia. Przed Tobą stoi drzewo? Nie będziesz widział co za nim. Wielki, gruby niedźwiedź stoi przed Tobą na dwóch łapach? Cóż, powinieneś przyzwyczaić się do widoku jego włochatego brzucha (albo po prostu dać się zgnieść), bo to jedyna rzecz, jaką będziesz widział. Obok statycznych obiektów (np. drzew, ścian) pojawi się wiele ruchomych elementów, co oznacza, że pole widzenia każdego z graczy będzie się zmieniać niemal co rundę - wszystko będzie obliczane w czasie rzeczywistym.
Tak więc przez kilka ostatnich dni pracowaliśmy nad algorytmem obliczającym, co gracze widzą, a co znajduje się poza zasięgiem ich wzroku. Zaczęliśmy od lekcji rysowania - naszkicowaliśmy kilka ładnych linii i kółek, aby przygotować się do właściwego problemu. Oto, co powstaje, gdy programista wpadnie w szał rysowania:
Fajne, co nie? Zacząłem rozważać rozpoczęcie kariery artysty - a przynajmniej uświadomiłem sobie, że zawsze mam jakąś alternatywę. W każdym razie możecie tego nie dostrzec, ale za tym rysunkiem kryje się kilka pomysłów. Na początku wysililiśmy nasze umiejętności geometryczne i narysowaliśmy kilka prostych linii przy różnych kątach. Oznacza to, że będziecie mieli kilka dostępnych pól widzenia - jak na razie 90, 180 i 360 stopni. Naszym pierwszym podejściem było zaprojektowanie linii prowadzących z konkretnego punktu (w tym wypadku oczu gracza) w kierunku, w którym gracz w aktualnie patrzy. Metoda ta znana jest jako śledzenie promieni. Jeśli linia (lub promień) natrafi na blokujący obiekt, to wszystko co znajduje się za tym obiektem jest oznaczane jako niewidoczne. To jest tylko jedna z metod, a przyglądaliśmy się także innemu podejściu, które możecie zobaczyć w prawym górnym rogu grafiki.
Polega ono na na przeszukiwaniu pola widzenia gracza w poszukiwaniu blokujących obiektów, a w przypadku trafienia - obliczeniu jego cienia. Na końcu pola zidentyfikowane jako niewidoczne są dodawane do listy zawierającej wszystkie ukryte kwadraty. Po nałożeniu na mapę siatki wystarczy tylko sprawdzić, czy pole znajduje się na tej liście i w zależności od tego je ukryć lub pokazać jego zawartość. Najciekawszą rzeczą jest algorytm liczący cień danego obiektu. Stworzenie go było dosyć proste, z tym że mieliśmy problemy z kilkoma skrajnymi przypadkami. Nadal zostało kilka błędów do naprawienia.
Po jego zaimplementowaniu zaczęliśmy pracę nad algorytmem śledzenia promieni. Ze względu na to, że promień nie mieści się w kwadratowej siatce jeden do jednego, byliśmy zmuszeni do zastosowania Algorytmu Bresenhama do konwertowania informacji, żeby wpasować proste linie w kwadraty siatki. Kod okazał się być krótszym, prostszym i bardziej efektywnym, ale dawał odmienne rezultaty. Jak sprawdzić, czy są one prawidłowe? Nie chcieliśmy pisać do tego osobnego programu, tak więc stworzyliśmy prosty, niezależny od gry wizualizator pozwalający to zweryfikować. I teraz najlepsza część: jest on dostępny online. Zanim go otworzycie, pamiętajcie że jest to tylko niezoptymalizowana koncepcja. Działa on także dosyć wolno na starszych komputerach i nieodpowiednich przeglądarkach (w tym wypadku Firefox zaliczany jest niestety do nieodpowiednich, na Chrome jednak nie powinno być większych problemów).
Powrót Space Invaders!
Krótkie wyjaśnienie tego, co jest widoczne i co możecie zrobić:
Po najechaniu myszką na siatkę pod kursorem pojawi się czerwony kwadrat. To jesteś Ty, czyli gracz. Pozycja gracza jest używana do obliczania, co możesz zobaczyć z tego miejsca, a jakie elementy są ukryte. Ukryte elementy są ciemno zielone lub szare (spójrz na legendę po prawej stronie), jasnozielone kwadraty to obiekty, które będą blokowały pole widzenia czerwonego kwadratu, a co za tym idzie posiadające cień. Pozostałe, białe obiekty to rzeczy, które są widoczne dla gracza. Możesz dodawać i usuwać blokujące obiekty przez kliknięcie na jeden z kwadratów na siatce.
Po prawej stronie jest kilka rzeczy, które możesz zmienić:
- Radius: zmiana kąta widzenia (zmiana tej opcji wpływa na surowe pole widzenia)
- Direction: zmiana kierunku patrzenia
- Range: zmiana zasięgu wzroku gracza
Opcja Show Shadows (pokaż cienie) działa tylko wtedy, gdy druga z nich - Use Ray tracing (użyj śledzenia promieni) - jest nieaktywna i pokazuje aktualnie wyliczone cienie. Gdy zaznaczysz opcję śledzenia promieni, stosowany jest opisany wyżej algorytm, a gdy jest wyłączona, to stosowana jest pierwsza z opisanych metod.
Oto link do programu: http://map.the-west.de/view.html
Sam złapałem się na budowaniu wielu labiryntów i spacerowaniu po nich.
A co Wy zbudowaliście?
Dzisiaj chcę zaprezentować trochę nowych informacji. Jak wspomniałem w pierwszym Raporcie The West, IMP-y bazują na mechanice z walk fortowych i, na chwilę obecną, są planowane jako zawartość PvE. W przeciwieństwie do bitew fortowych, udział w IMPach będzie można wziąć w dowolnym momencie (zakładając, że postać akurat nie robi nic innego) ze znajomymi lub losowymi graczami. Na chwilę obecną skupiamy się na pierwszej, prototypowej instancji, w której główną rolę - oczywiście oprócz graczy - gra Niedźwiedź. Fabuła wygląda tak: śpisz w lesie wraz z grupą znajomych, gdy nagle pojawia się niedźwiedź. Jako, że żaden z Was nie był dobrym harcerzem (w przeciwnym wypadku zauważylibyście, że tuż obok Waszego namiotu znajduje się jaskinia), jesteście zmuszeni bronić się i walczyć z misiem. Na szczęście nie jest to najmądrzejszy miś, na jakiego moglibyście trafić i atakuje tylko najbliższego gracza - na nieszczęście graczy miś ten braki w inteligencji nadrabia kilkoma bardzo silnymi atakami, a na dodatek jest bardzo szybki!
Sztuka rysowania
Mimo, że powyższa historia jest zupełnie zmyślona, to scenariusz już nie jest i zawiera kilka możliwości naszego silnika IMP (np. sztuczna inteligencja), niestety dzisiaj o nich Wam nie opowiem. Elementem, który nie zostały wspomniany w historii, ale o którym chcę trochę opowiedzieć są oczy niedźwiedzia i pozostałych graczy. Jasne, z pewnością fajnie wyglądają, ale dalej głównym powodem ich istnienia jest wzrok, który pozwala widzieć, co dzieje się dookoła. Element pola widzenia jest już zawarty w bitwach fortowych, ale tam jest on z góry ustalony dla każdej z map, ponieważ blokujące go objekty są z góry znane, a gracze nie zasłaniają wzroku sobie nawzajem.
W przypadku nadchodzących IMPów sytuacja wygląda zgoła inaczej. Każdy obiekt będzie zasłaniał pole widzenia. Przed Tobą stoi drzewo? Nie będziesz widział co za nim. Wielki, gruby niedźwiedź stoi przed Tobą na dwóch łapach? Cóż, powinieneś przyzwyczaić się do widoku jego włochatego brzucha (albo po prostu dać się zgnieść), bo to jedyna rzecz, jaką będziesz widział. Obok statycznych obiektów (np. drzew, ścian) pojawi się wiele ruchomych elementów, co oznacza, że pole widzenia każdego z graczy będzie się zmieniać niemal co rundę - wszystko będzie obliczane w czasie rzeczywistym.
Tak więc przez kilka ostatnich dni pracowaliśmy nad algorytmem obliczającym, co gracze widzą, a co znajduje się poza zasięgiem ich wzroku. Zaczęliśmy od lekcji rysowania - naszkicowaliśmy kilka ładnych linii i kółek, aby przygotować się do właściwego problemu. Oto, co powstaje, gdy programista wpadnie w szał rysowania:
Fajne, co nie? Zacząłem rozważać rozpoczęcie kariery artysty - a przynajmniej uświadomiłem sobie, że zawsze mam jakąś alternatywę. W każdym razie możecie tego nie dostrzec, ale za tym rysunkiem kryje się kilka pomysłów. Na początku wysililiśmy nasze umiejętności geometryczne i narysowaliśmy kilka prostych linii przy różnych kątach. Oznacza to, że będziecie mieli kilka dostępnych pól widzenia - jak na razie 90, 180 i 360 stopni. Naszym pierwszym podejściem było zaprojektowanie linii prowadzących z konkretnego punktu (w tym wypadku oczu gracza) w kierunku, w którym gracz w aktualnie patrzy. Metoda ta znana jest jako śledzenie promieni. Jeśli linia (lub promień) natrafi na blokujący obiekt, to wszystko co znajduje się za tym obiektem jest oznaczane jako niewidoczne. To jest tylko jedna z metod, a przyglądaliśmy się także innemu podejściu, które możecie zobaczyć w prawym górnym rogu grafiki.
Polega ono na na przeszukiwaniu pola widzenia gracza w poszukiwaniu blokujących obiektów, a w przypadku trafienia - obliczeniu jego cienia. Na końcu pola zidentyfikowane jako niewidoczne są dodawane do listy zawierającej wszystkie ukryte kwadraty. Po nałożeniu na mapę siatki wystarczy tylko sprawdzić, czy pole znajduje się na tej liście i w zależności od tego je ukryć lub pokazać jego zawartość. Najciekawszą rzeczą jest algorytm liczący cień danego obiektu. Stworzenie go było dosyć proste, z tym że mieliśmy problemy z kilkoma skrajnymi przypadkami. Nadal zostało kilka błędów do naprawienia.
Po jego zaimplementowaniu zaczęliśmy pracę nad algorytmem śledzenia promieni. Ze względu na to, że promień nie mieści się w kwadratowej siatce jeden do jednego, byliśmy zmuszeni do zastosowania Algorytmu Bresenhama do konwertowania informacji, żeby wpasować proste linie w kwadraty siatki. Kod okazał się być krótszym, prostszym i bardziej efektywnym, ale dawał odmienne rezultaty. Jak sprawdzić, czy są one prawidłowe? Nie chcieliśmy pisać do tego osobnego programu, tak więc stworzyliśmy prosty, niezależny od gry wizualizator pozwalający to zweryfikować. I teraz najlepsza część: jest on dostępny online. Zanim go otworzycie, pamiętajcie że jest to tylko niezoptymalizowana koncepcja. Działa on także dosyć wolno na starszych komputerach i nieodpowiednich przeglądarkach (w tym wypadku Firefox zaliczany jest niestety do nieodpowiednich, na Chrome jednak nie powinno być większych problemów).
Powrót Space Invaders!
Krótkie wyjaśnienie tego, co jest widoczne i co możecie zrobić:
Po najechaniu myszką na siatkę pod kursorem pojawi się czerwony kwadrat. To jesteś Ty, czyli gracz. Pozycja gracza jest używana do obliczania, co możesz zobaczyć z tego miejsca, a jakie elementy są ukryte. Ukryte elementy są ciemno zielone lub szare (spójrz na legendę po prawej stronie), jasnozielone kwadraty to obiekty, które będą blokowały pole widzenia czerwonego kwadratu, a co za tym idzie posiadające cień. Pozostałe, białe obiekty to rzeczy, które są widoczne dla gracza. Możesz dodawać i usuwać blokujące obiekty przez kliknięcie na jeden z kwadratów na siatce.
Po prawej stronie jest kilka rzeczy, które możesz zmienić:
- Radius: zmiana kąta widzenia (zmiana tej opcji wpływa na surowe pole widzenia)
- Direction: zmiana kierunku patrzenia
- Range: zmiana zasięgu wzroku gracza
Opcja Show Shadows (pokaż cienie) działa tylko wtedy, gdy druga z nich - Use Ray tracing (użyj śledzenia promieni) - jest nieaktywna i pokazuje aktualnie wyliczone cienie. Gdy zaznaczysz opcję śledzenia promieni, stosowany jest opisany wyżej algorytm, a gdy jest wyłączona, to stosowana jest pierwsza z opisanych metod.
Oto link do programu: http://map.the-west.de/view.html
Sam złapałem się na budowaniu wielu labiryntów i spacerowaniu po nich.
A co Wy zbudowaliście?