[devblog] Jak nauczyliśmy misia obracania się?

  • Rozpoczynający wątek DeletedUser1170
  • Data rozpoczęcia
Status
Zamknięty.

DeletedUser1170

Gość
Gość
Pierwszy prototyp Instancji Multiplayerowych miał już niedźwiedzia z zaimplementowanym działającym systemem znajdowania ścieżki. Niestety działał on tylko dlatego, że był niedokończony, a sam niedźwiedź mniejszy. Teraz został on przemodelowany i jego rozmiar się zwiększył - z objektu 2x2 do 2x3. Niestety ta zmiana doprowadziła do problemu, którego się wcześniej spodziewaliśmy, ale którego rozwiązanie odkładaliśmy na później. Na czym on polega? Otóż obiekty mogą się się obracać, ale także mają “przód” (przeważnie twarz). Teraz spróbujcie obrócić kwadrat wokół własnej osi - będzie w tej samej pozycji, mimo że jego przód będzie skierowany w inną stronę. A teraz spróbujcie zrobić to samo z dużym obiektem 2x3 - jego pozycja się zmieni.

1_turning.jpg

Stary niedźwiedź się nie obracał. Zawsze był skierowany w jednym kierunku i szedł do przodu, tyłu lub na boki, ale nigdy by się nie obracał - bo nie musiał, w pierwotnej wersji jego pole widzenia miało 360 stopni, a nie - jak teraz - 90 stopni. To, nad czym pracowaliśmy ostatnie kilka dni to sprawienie, by niedźwiedź się obracał - dzięki temu jego ścieżka wyglądałaby dużo lepiej i bardziej naturalnie.

Okazało się to dużo trudniejsze niż moglibyście pomyśleć. Stary algorytm działał, ale miał kilka wad. Szukanie ścieżek w praktyce sprowadza się do przejrzenia sąsiadujących pól i określenia ich pozycji względem aktualnego celu. Zanim będzie można ocenić każde z pól, trzeba sprawdzić czy nie są zajęte. W starym systemie zajmowało to sporo czasu, bo de facto próbował on przesunąć duży obiekt i postawić go w nowym miejscu - jeśli się to udało, to było ono oceniane pozytywnie, w przeciwnym wypadku pole było odrzucane. Im więcej pól zajmował obiekt, tym więcej czasu zajmowało ich sprawdzenie. Było to bardzo nieefektywne, więc zaczęliśmy szukać zastępczego rozwiązania, którym okazała się być metoda zwana clearance-based pathfindingiem.

Według artykułu, wartość komórki definiuje rozmiar obiektu, który się w nim zmieści. Jeśli ta wartość wynosi 8, to każdy obiekt wielkości 8x8 lub mniejszy może zostać do niej przeniesiony. Dzięki temu zamiast sprawdzania każdego pola z osobna wystarczy porównać wielość obiektu z wartością pola docelowego.

Jest jednak jeden haczyk: działa to tylko z kwadratowymi obiektami, a nasz niedźwiedź zdążył już urosnąć do rozmiarów 2x3. Użycie wartości komórki 3 nie zawsze działa, bo są miejsca gdzie obiekt 3x3 się nie zmieści, ale 2x3 już tak. Wartość komórki nie dawałaby więc kompletnych informacji.

2_blocked_area.jpg

Bazując na tej wartości myśleliśmy o sposobach prekalkulowania tego, czy obiekt zmieści się w konkretnym miejscu. Skończyło się na wyliczaniu wartości pola dla każdego możliwego układu mapy. Układ 2x3 jest przenoszony do każdej niezablokowanej komórki w celu sprawdzenia, czy się zmieści. Jeśli tak, to komórce przyznawana jest wartość 1, w przeciwnym wypadku 0. Nie wystarcza to jednak w pełni, bo gdy obiekt 2x3 się obróci, to będzie obiektem 3x2 dla którego osobno trzeba przeliczyć wszystkie pola. Na końcu trzeba połączyć obie wartości - jeśli zarówno 3x2 jak i 2x1 zmieszczą się do danej komórki, to jej wartość wynosi 3, jeśli mieści się tylko 2x3 wynosi 1, a jeśli tylko 3x2 to ma wartość 2 - w ostatnich dwóch przypadkach niedźwiedź będzie mógł przejść do danej pozycji tylko po obróceniu się w odpowiednim kierunku.

Następnym problemem na liście było blokowanie obiektów. Obiekty blokują się nawzajem, co oznacza, że muszą być brane pod uwagę przy przeliczaniu wartości komórek. W chwili obecnej działa to tylko dla statycznych elementów, takich jak budynki (ponieważ są rozmieszczane z wyprzedzeniem i się nie ruszają). Mapa wartości musi być aktualizowana za każdym razem gdy obiekt (np. gracz) pojawia się na mapie lub przesuwa w inne miejsce. Na szczęście aktualizacja jest stosunkowo prosta, i tylko komórki w lewej górnej części muszą być ponownie przeliczane.

3_clearance_recalc.png

Jedną z rzeczy, na którą do tej pory nie zwracaliśmy uwagi było rozstawianie obiektów na siatce. Każdy obiekt ma środek rotacji, który definiuje także jego położenie. Niestety, wartość komórki nie uwzględnia środka rotacji, tylko lewą górną komórkę zajmowaną przez obiekt. Rozwiązanie było proste: należało przesunąć punkt obliczania wartości komórki do środka obiektu lub pozwolić układowi mapy na branie pod uwagę lewego górnego rogu obiektu dla każdego kierunków. Wybraliśmy to drugie, problem rozwiązany.

Dzięki tym wszystkim prekalkulowanym i dynamicznie aktualizowanym wartościom mogliśmy wrócić do właściwego problemu: umożliwienie niedźwiedziowi obracania się. Jak napisałem wcześniej, wszystko sprowadza się do sprawdzania sąsiednich komórek. Rozważane są nie tylko komórki znajdujące się w kierunku, na które patrzy niedźwiedź, ale także wszystkie pozostałe. Znacznie zwiększyliśmy więc szansę na wybranie jednego z bocznych pól, dzięki czemu niedźwiedź obraca się i idzie w lewo zamiast bokiem.

3_1_default.png

4_good_path.png

(zielony: idzie na północ, żółty: idzie na wschód, niebieski: idzie na południe, czerwony: idzie na zachód; żółty teren na początku jest tylko punktem startowym)


Czy to już wszystko? Niestety nie, algorytm nadal ma trochę błędów - na przykład niedźwiedziowi w trakcie drogi zdarza się czasem nagle zrobić obrót o 360 stopni, a potem iść dalej jakby nic się nie stało.

5_weird_path.png

Dodatkowo w obecnej wersji mamy problem z AI, które nie potrafi wybrać sobie celu, do którego ma dojść, mimo że wytyczanie ścieżki działa bez problemu. W ostatnim miesiącu jednak bardziej skupialiśmy się na aspektach wizualnych, co mogliście zobaczyć w ostatnim odcinku InnoGames TV.
 
Ostatnio edytowane przez moderatora:

DeletedUser1404

Gość
Gość
algorytmy i wielllle mądrych zdań
ale co MY zwykli zjadacze dopalaczy mieć z tego będziemy ?

kiedy to to bedzie ?
jakie dropy?
jakie umiejki do tego stosować ? fortowe ? pvp ?

fantastycznie że coś nowego ale coś sie mocno przeciąga to to ulepszanie :kak:
 

DeletedUser182

Gość
Gość
algorytmy i wielllle mądrych zdań
ale co MY zwykli zjadacze dopalaczy mieć z tego będziemy ?

kiedy to to bedzie ?
jakie dropy?
jakie umiejki do tego stosować ? fortowe ? pvp ?

fantastycznie że coś nowego ale coś sie mocno przeciąga to to ulepszanie :kak:

Doko jedynie przetłumaczył devbloga (serdeczne dzięki za przebrnięcie przez ten technobełkot), więc pytania w tym wątku raczej nie urodzą żadnych odpowiedzi konkretnych.
 

DeletedUser14107

Gość
Gość
This blogpost was written – but not published – a month ago. I finally had some time to prepare the images which hopefully makes this post a little bit easier to understand.

Więc to i tak niezbyt aktualny wpis.
 

DeletedUser182

Gość
Gość

KozaK69

Elitarny Tester
Nie przesadzajcie że bełkot, przecież nie ma szczegółów jak ten algorytm oblicza konkretne wartości ;) Same ogólniki ;)

fantastycznie że coś nowego ale coś sie mocno przeciąga to to ulepszanie :kak:
Niech się przeciąga na ile tylko potrzeba. Czekamy już tyle czasu, że miesiąc czy dwa w jedną czy drugą nie zrobi różnicy, a lepiej żeby to było dopracowane na wejściu niż miałby być jakiś gniot ;)
 
Ostatnia edycja:

DeletedUser27164

Gość
Gość
I zdecydowanie dla nerdów :)
Zapraszam do oglądnięcia (obejrzenia jak ktoś nie z południa) tego ostatniego odcinka IG-TV tam można zobaczyć jak to mniej więcej będzie wyglądać.
Grałem PvP, jest jeszcze sporo do zrobienia (chociażby to żeby ludzik był widoczny przez obiekty), ale zabawa na pewno będzie fajna.

http://www.youtube.com/watch?v=5h9o1LyVdQU&t=12m7s

Na tym filmiku wygląda to już fajnie więc myślę że niedługo wejdzie :)
 

DeletedUser

Gość
Gość
Brakuje tylko jakiejś grafiki na podłodze, bo tak po zielonej kratce chodzić to psuje cały wizualny efekt.
 

DeletedUser

Gość
Gość
Takie małe odświeżenie nie wiadomo kiedy to wejdzie ?? tak orientacyjnie ?
miesiac? dwa ? a moze rok ?
 

DeletedUser21789

Gość
Gość
Czas Inno = czas w jakim można to normalnie zrobić * 3

Skoro jest to takie proste tylko Inno się z tym grzebie, to czemu sam tego nie zrobisz w krótszym czasie i nie prześlesz Inno gotowca? Autorzy będą mieli mniej pracy, a gracze szybciej aktualizacje. Zatem do pracy zamiast krytykować.
 

DeletedUser

Gość
Gość
Cóż tu wymagać szybkości skoro najdrobniejsze błędy są poprawiane wieczność albo wcale ::D:::D:
 

DeletedUser14107

Gość
Gość
Skoro jest to takie proste tylko Inno się z tym grzebie, to czemu sam tego nie zrobisz w krótszym czasie i nie prześlesz Inno gotowca? Autorzy będą mieli mniej pracy, a gracze szybciej aktualizacje. Zatem do pracy zamiast krytykować.

Ejj, ale ja nic [wbrew pozorom] nie krytykuję, skąd te nerwy :) To tylko [widać niezrozumiały] żart, wszyscy wiemy, że chwilę to potrwa, a Inno długo dopracowuje szczegóły takich przedsięwzięć
 

DeletedUser31491

Gość
Gość
Raczej robi tak żeby jakoś to wyszło bo nigdy te ich twory nie są dopracowane do końca.

---------------------------------------------------------------------------------------------------------------------------
Jakieś nowe wieści na temat instancji?
 
Ostatnio edytowane przez moderatora:

DeletedUser182

Gość
Gość
Ejj, ale ja nic [wbrew pozorom] nie krytykuję, skąd te nerwy :) To tylko [widać niezrozumiały] żart, wszyscy wiemy, że chwilę to potrwa, a Inno długo dopracowuje szczegóły takich przedsięwzięć

Oglądnij (tak "oglądnij", jestem z południa i celowo nie będę pisał "obejrzyj") filmiki IG, tam wyraźnie jest powiedziane, że musieli wprowadzić całkiem nowy algorytm a to proste nigdy nie jest, mimo, iż może się takie wydawać. Cierpliwości zatem.
 

DeletedUser16941

Gość
Gość
Pardon, też jestem z południa i chodzę na pole, ale odróżniam oglądanie od obejrzenia :) czasownik dokonany i niedokonany...

A co do wszelkich "ulepszeń" w tej grze, to nie macie wrażenia, że byłoby lepiej bez nich ?
Obawiam się, że te misie tylko odciągną jeszcze bardziej graczy od tego, co spajało ludzi w grze. Odkąd mamy więcej dziwnych questów w których można zdobyć różne jeszcze dziwniejsze itemki, coraz mniej osób uczestniczy w bitwach fortowych, coraz mniej jest pojedynkowiczów z prawdziwego zdarzenia.
 

DeletedUser182

Gość
Gość
Pardon, też jestem z południa i chodzę na pole, ale odróżniam oglądanie od obejrzenia :) czasownik dokonany i niedokonany...

Może źle się wyraziłem... zawężę zatem "południe" do "krakowa" u nas się idzie coś oglądnąć a nie obejrzeć. Za chodzenie na pole masz plusa tak czy owak :D

A co do wszelkich "ulepszeń" w tej grze, to nie macie wrażenia, że byłoby lepiej bez nich ?

Czemu?

Obawiam się, że te misie tylko odciągną jeszcze bardziej graczy od tego, co spajało ludzi w grze. Odkąd mamy więcej dziwnych questów w których można zdobyć różne jeszcze dziwniejsze itemki, coraz mniej osób uczestniczy w bitwach fortowych, coraz mniej jest pojedynkowiczów z prawdziwego zdarzenia.


Misie nikogo nie odciągną. Będzie to nowy element gry, który właśnie spoi pomniejsze zorganizowane ( i to dobrze) grupy graczy. Aby mieć szanse na instancji będzie liczyć się zgranie.
 
Ostatnio edytowane przez moderatora:

DeletedUser14107

Gość
Gość
Oglądnij (tak "oglądnij", jestem z południa i celowo nie będę pisał "obejrzyj") filmiki IG, tam wyraźnie jest powiedziane, że musieli wprowadzić całkiem nowy algorytm a to proste nigdy nie jest, mimo, iż może się takie wydawać. Cierpliwości zatem.

Też miałem przejść na zasłużoną emeryturę i nie udzielać się w tematach poza typerkiem, ale zmuszasz mnie cytowaniem po blisko 2ch tygodniach.
Obejrzałem (jestem z północy, ale nie jestem jakimś Kaszubem, Ukraińcem, Ślązakiem czy Góralem i posługuję się mową wzorcową, mówię po polsku. Tak - wiem, gwary są "dopuszczone" do języka oznaczonego epitetem prawidłowy. Zaraz zaczną się przepychanki słowne, chce ktoś jeszcze swoje pięć groszy dorzucić?) wszystkie odcinki InnoTV, od początku byłem/jestem zafascynowany pomysłem IMPów i - co powtórzę - humorystyczny aspekt mojego wcześniejszego postu widać nie został zrozumiany. Nie krytykowałem, to był żart i nie nękajcie mnie już.

Wiecie czy będziemy się bawić tylko z misiami czy może od razu dostaniemy szersze spektrum przeciwników? Jakieś wieści z zamkniętej bety, screeny?
 

KozaK69

Elitarny Tester
Zamknięta beta ma to do siebie, że ma zakaz udzielania jakichkolwiek informacji :) Także nie licz na nic :)
 
Status
Zamknięty.
Do góry