Dwa tygodnie temu zdecydowaliśmy się nie publikować DevBloga, ponieważ większość naszego wolnego czasu pochłonęły inne obowiązki i sprawy poza ultimowe, ale już wróciliśmy do normalności i przychodzimy do was z kolejną garścią nowniek z ServUO i nie tylko
Testy, testy, testy
Pomimo niedoboru czasu, udało nam się utrzymać naszą systematyczność w cotygodniowych spotkaniach ekipowych i od ostatniego DevBloga udało nam się spotkać zgodnie z planem 4 razy.
11.07 przejrzeliśmy naszą tablicę zadań i wyodrębniliśmy te zadania, które wymagają funkcjonalnego Systemu Frakcji, zanim cokolwiek zaczniemy przy nich robić. Ustaliliśmy, że nadszedł w końcu czas, żeby dokończyć dokończyć implementację Frakcji.
17.07 odbyły się ostatnie testy i poprawki systemu zleceń. Obecnie wydaje się, że wszystkie nagrody i punkty są odpowiednio dobrane i możemy finalnie zamknąć ten temat i przejść do następnych zadań.
23.07 testowaliśmy system mini-champów (wspominaliśmy o nim w DevBlog#47), który miał zostać użyty do naszych custom championów, ale ze względu na pewne braki w funkcjonalności, zdecydowaliśmy się pozostawić je w oryginalnym systemie championów i dokodować kilka małych zmian, by wszystko współgrało z naszymi założeniami
30.07 przetestowaliśmy lwią część ostatnich zmian, a mianowicie:
- odświeżenie kodu regionów, które miało też miejsce na RunUO
- ustawianie się frakcji NPC na podstawie regionów
- czy recalle dla Drowów działają w Podmroku, a nie działają dla innych ras
- system morderstw w frakcji i poza frakcją
- czy konto powiązane jest z frakcją po wyborze frakcji na pierwszej postaci
- przeniesionych z RunUO strażników-pająki u Drowów
- nowe bossy, które ostatnio wprowadzilismy na RunUO – Zhoaminth – zapomniane zło i Pancerny mechaniczny strażnik
- Stuck Menu w zakładce Help
- dodanie nowych miast do systemu miast
Nie wszystko działało zgodnie z założeniami, więc parę tasków mamy do poprawy, ale generalnie, znaczna większość przeszła do kolejki “Zrobione”.
Rework systemu NelderimRegion
Staramy się nie robić obecnie tzw. reworków partii kodu, ponieważ zazwyczaj dla was nie ma to żadnej różnicy, a jak przeszłość pokazuje, zaraz po zmianach jest nawet gorzej, ale zawsze jest to inwestycja na przyszłość.
Wszystko zaczęło się od tego, że chcieliśmy dołożyć do naszego systemu regionów, który rozszerza oryginalny system regionów, funkcjonalność, która miała nadawać frakcje dla NPC zależnie od miasta w którym się spawnuje.
Zadanie wydawaje się bardzo proste, ale ówczesny kod systemu dość mocno komplikował tą sprawę.
Toporny zapis i odczyt pliku z definicjami regionów, przestarzały format pliku definicji, totalnie zagmatwany kod, nieprecyzyjne nazewnictwo, czekało to na odświeżenie od dłuższego czasu i wreszcie się doczekało 🙂
Po pierwsze zamieniliśmy format XML na JSON i użyliśmy nowoczesnego sposobu zapisu opartego na tzw. refleksji. Sam format JSON jest dużo przystępniejszy w edycji, a odczyt pliku dzieje się w pełni samodzielnie i zajmuje całe 20 linijek kodu, zamiast oryginalnych 200+. Kod od zapisu został usunięty, bo powodował same problemy, dzięki czemu pozbyliśmy się kolejnych 200+ linijek 🙂
Wszystko czego dotykał NelderimRegion system zostało przejrzane i poprawione, kod został oczyszczony i ujednolicony, struktura konfiguracji została uproszczona i uporządkowana.
Nie obyło się oczywiście bez problemów z między innymi wydobywaniem surowców czy niewidzialnymi strażnikami, ale sytuacja wydaje się być opanowana po kilku małych fixach.
Jako zwieńczenie tej pracy zostało nam tylko wpięcie frakcji do regionów, co zajęło nam jakieś 15 minut, a następnie naprawienie kilku błędów, które nam jeszcze umknęły i NPC byli przypisani zgodnie z założeniem do konkretnych frakcji.
Było warto.
Podsumowanie
NPC z frakcjami z regionów było ostatnim elementem układanki, który był potrzebny abyśmy mogli uznać wstępna implementację systemu frakcji za gotową. Obecnie został nam do dokończenia jeden “duży” temat, czyli system osiągnięć, dość spora kolejka pomniejszych zmian i fixów i będziemy myśleć o kolejnej sesji testowej ServUO. No ale do tego to jeszcze trochę czasu 😉
Do następnego!