Nelderim DevBlog #38

Uff, jak gorąco.

Ostatnie upały ostro dały nam się we znaki, a ulewy z piorunami nie zachęcały do siedzenia przy włączonym komputerze.

Jednakże nie powstrzymało nas to przed dowiezieniem DevBloga z tylko malutką obsuwą, niezależną z resztą od pogody 🙂

CentrED#

Mamy nadzieję, że temat nowego edytora map wam się jeszcze nie przejadł 😀

Pierwszym wyzwaniem ostatnich dwóch tygodni było zaimplementowanie możliwości zaznaczania poszczególnych obiektów na mapie za pomocą myszy i jak się przekonaliśmy, nie jest to takie proste zadanie.

Na samym początku należało w ogóle zapoznać się z tematem i poznać istniejące rozwiązania, aby nie wymyślać koła na nowo.

Po dość obszernym googlowaniu, udało się wyodrębnić dwie metody, które potencjalnie pasowałyby do naszego edytora:

  1. Mouse Picking with Ray Casting
  2. Framebuffer 3D Color Picking

Na pierwszy rzut oka, pierwsza metoda wydawała się prostsza, jednakże po wstępnym eksperymencie, okazało się że wykrywanie przezroczystości w grafikach będzie wymagało zdecydowanie zbyt wiele pracy i ta metoda, raczej sprawdziła by się w pełni trójwymiarowej aplikacji z pełnoprawnymi modelami 3D.

Druga metoda posiada tą przewagę, że dużo obliczeń jest wykonywane przez kartę graficzną i wiele problemów najzwyczajniej rozwiązuje sie samo, jednakże nie udało się znaleźć żadnego pełnego przykładu użycia tej metody z naszym językiem programowania i frameworkiem graficznym.

W praktyce, metoda ta okazała się być banalnie proste w implementacji i po dosłownie kilku iteracjach udało nam się osiągnąć sukces 🙂

Poniżej możecie zobaczyć jak “wygląda” zastosowanie takiej metody. 🙂

Kolor kodowanie poszczególnych grafik w osobnym buforze graficznym, bez obsługi przezroczystości.
Prawie kompletny obraz, z obsługą przezroczystości oraz poprawnym formatem kolorów, teraz już chyba poznajecie co to za miejsce 🙂

Teraz wystarczy tylko odczytać kolor pixela pod kursorem, odkodować z tego numer obiektu i gotowe.

Proste, prawda? 🙂

Mając zaimplementowaną obsługę myszy, szybko przydrutowaliśmy tu i tam i w efekcie udało nam się wykonać pierwsze edycje w postaci podmiany grafiki kilku obiektów 🙂

Widzicie co się zmieniło?

Przy okazji bardzo proste okazało się dodanie możliwości zmiany rozmiaru okna i nie jesteśmy już teraz limitowani do zaledwie 1024×900 pikseli 😀

Po uzyskaniu kilku punktów umiejętności w renderowanie do przeróżnych buforów graficznych, okazało się, że bardzo proste jest renderowanie obrazu w dowolnej rozdzielczości prosto do pliku!

Tak więc możecie zobaczyć na własne oczy tasandorę w rozdzielczości 16K, tylko uwaga, ponieważ zajmuje to bagatela 300MB.

TASANDORA_16K.jpg

Jeżeli macie wrażenie, że może się to bardzo przydać do tworzenia map użytych na naszej stronie www, to macie rację i na pewno skorzystamy z takiej możliwości 🙂

Następnym krokiem było stworzenie prototypów pierwszy narzędzi edytora, aby zobaczyć z czym to się je i czy komunikacja z serwerem na pewno działa ( oczywiście nie działała ) i powstały bardzo prymitywne, aczkolwiek użyteczne narzędzia do kolorowania obiektów i zmiany wysokości obiektów.

Proste testy tychże narzędzi wykazały, że architektura klienta nie ma prawa działać i należało ją dość mocno zmienić, żeby miało to ręce i nogi.

W międzyczasie poprawiania klienta, udało się również stworzyć pierwszą, już funkcjonalną iterację okienka logowania do serwera, a także wspaniałą funkcję startowania lokalnego serwera z poziomu klienta.

Ostatecznie udało nam się wyprostować sytuację nowego klienta, a naszym następnym celem jest zaimplementowanie pierwszego zestawu narzędzi edytora, a pierwsze efekty prezentują się następująco

Ostatnie podziały:

Jak ostatnio informowaliśmy, jesteśmy na końcówce podziału dungeonów na podregiony. Z racji dość obłożonego grafiku naszych ekipantów, udało się jedynie podzielić jeden kolejny Dungeon – Leże Lodowych Smoków.

Do podziału został jeszcze Gorogon, potem tylko wpięcie wszystkiego w spawnery i system jest gotowy pod gradację mobów na ServUO 🙂

Powyżej przykład istniejącego już spawnera, który jest wpisany w jeden z regionów. Później będziemy mogli w pliku XML nadać intensywność danego poziomu moba w danej puli regionu.

Co nowego przynosi ServUO

Dzisiejszy wpis o ServUO ucieszy w szczególności Drowy. Mamy do zaprezentowania nowego bossa – pająka: Navrey (nazwa robocza: Navrey Nocne-Oko), która znajduje się w OSIowym dungeonie Underworld.

Jest podatna na typy zabójców Arachnidów i Pająków. Posiada potężne zaklęcia, potężne ataki wręcz oraz zdolność paraliżowania postaci za pomocą rzuconych sieci.

(fragment przetłumaczony z oryginalnego artykułu z uoguide – informacje mogą różnić się od tego co finalnie zastaniecie na servuo)

Powszechnie uważa się, że jest to możliwe, ale trudne, aby gracze mogli ją zabić samodzielnie. Niektóre dialogi (z questa, który można wziąć od goblina w dungu) sugerują, że efektywnie rządzi jednym z plemion Goblinów znalezionych w Podziemiach. Można ją znaleźć w Leżu Navrey Night-Eyes, do którego można się dostać przez teleporter na 57° N, 17° W, wewnątrz dungeonu Underworld.

Kiedy postać zostanie sparaliżowana jej rzuconą siecią, może uciec, zakładając i zdejmując Kamienne Buty (Artefakt z dodatku SA). Mikstury niewidzialności również działają, gdy jesteśmy w sieci, ale nie pomogą, gdy rzuci na nas zaklęcie “Reveal”.

Podsumowanie

Jak widać, prace cały czas trwają i pewnie jeszcze trochę potrwają, ale systematyczność i upór z pewnością doprowadzą nas do końca migracji 🙂

Do następnego!

Tags:  ,