Dwarf Fortress nie jest open source i chociaż istnieje wiele domysłów i inżynierii odwrotnej, które mogą wpłynąć na to, jak to wszystko działa, zamiast tego skupię się na kilku podstawowych technikach optymalizacji 3D (nie grafiki 3D, świata 3D) roguelike taki sam typ.
Podobnie jak w przypadku wszystkich gier wideo, istnieje wiele dymu i luster, które tworzą iluzję złożoności z prostych reguł i systemów. Są to zarówno proste liczby losowe do bezcelowego poruszania się, jak i wstępne wypalanie siatki węzłów wysokiego poziomu do wyszukiwania ścieżek.
Ruch
Mówiąc o wyszukiwaniu ścieżek, często może to być bardzo trudny problem do rozwiązania dla dużych przestrzeni, takich jak mapa DF (aż 768 x 768 x 64 IIRC), jednak problem można uprościć i przyspieszyć w następujący sposób:
- Wstępnie upieczona sieć węzłów: Po utworzeniu mapy świat można podzielić na części, a każda część może mieć zmapowane wyjścia i wejścia. Gdy porcja jest aktualizowana, na przykład gdy budowana jest ściana, należy zaktualizować tylko sieć porcji.
- Staged Pathfinding: Uruchomienie ścieżki na całej mapie, komórka dla komórki, zajęłoby dużo czasu, zamiast tego można by znaleźć ścieżkę w większej sieci fragmentów, która mapuje wszystkie połączenia między fragmentami, a następnie uruchomić ścieżkę wewnątrz fragmentu, gdy przechodzenie z porcji na porcję. To robi dla ciebie 2 rzeczy. Przyspiesza wyszukiwanie ścieżki, dzieląc ją na wiele mniejszych elementów, a także umożliwia jednostce zmianę kierunku częściowo wzdłuż ścieżki, gdy fragment jest aktualizowany. Zmieniłby ścieżkę w dużej sieci, jeśli którykolwiek z węzłów musi przejść przez aktualizację.
- Losowe sterowanie: gdy nie zbliża się do celu, jednostka musi jedynie chodzić bez celu. Wielu roguelike po prostu przesuwa jednostkę w losowym kierunku, co wydaje się nienaturalne. Można stosować różne techniki kierowania, z których najprostsze sprzyjają poruszaniu się po linii prostej i mają coraz mniejsze szanse na ruch w kierunkach promieniujących do tyłu, co miałoby tylko około 1% szansy. Dlatego jednostka czasami całkowicie zmienia kierunek, ale tylko rzadko.
Nie będę omawiał podstaw poszukiwania ścieżki. Większość roguelike używa A *, ale istnieją inne metody skórowania kota. Mmmm Skóra kota ..
Zadania osobiste
Jedną z głównych rzeczy, które sprawiają, że jednostki DF wyskakują i czują się żywi, jest ich osobista lista celów. W rzeczywistości wiele gier typu roguelike ma to na podstawowym poziomie. Zasadniczo każda jednostka ma listę pragnień (a dla twoich dorfów zadania, które mogą podjąć, o które prosisz), i wybiorą je na podstawie swojej osobowości (statystyki).
Niektóre zadania mają wymagania. Wykonanie skórzanej spódnicy wymaga, aby dorf był w takim a takim sklepie, który ma X przedmiotów. Wszystkie są sprawdzane i dodawane jako zadania do ich listy. Proste.
Ponieważ przez większość czasu jednostka będzie w tranzycie, kontrole tego, co robią jednostki, mogą być bardzo szybkie, tylko kilka jednostek dokona wyboru w danym momencie, więc ogólnie nie ma spowolnienia nawet dla setek lub tysiące jednostek. I pamiętaj, że w DF wszystko, od pszczół, troglodytów po drzewa, jest jednostkami.
Przeprowadzając dodatkowe badania, jasne jest, że w zabawny sposób DF wykonuje okropną robotę w poszukiwaniu ścieżki. Nie dzieli mapy na części, ale dzieli mapę na segmenty lub obszary, które są połączone (co jest lepsze niż nic na pewno), więc moja powyższa ocena jest jeszcze mniej przykładem działania DF, niż myślałem. :) Co nie znaczy, że DF jest niczym innym niż niesamowitym z miliona innych powodów.
Pokazuje, że w grze ważna jest gra. Nie grafika, nie świetne programowanie, nie świetne pisanie, nie świetna muzyka, nawet interfejs; nic innego nie jest tak ważne, jak 1%, jak sama gra.