Czy na siatce kafelków, w której ruch w dowolnym z 8 kierunków zajmuje dokładnie taką samą liczbę tur (zasady stylu szachownicy), czy mogę zapobiec wyświetlaniu większej liczby nowych ruchów po przekątnej przez ruch po przekątnej?
Na przykład: Jesteś czerwonym polem na obrazku poniżej. Zielone komórki są obecnie widoczne (kwadratowe pole widzenia). Możesz przesunąć odległość jednego kafelka w dowolnym z ośmiu kierunków.
Poruszając się na północny wschód , odkryjesz 13 nowych płytek (pokazanych na niebiesko). Jeśli zamiast tego przejdziesz na południe , odkryjesz tylko 7 nowych płytek (pokazanych na fioletowo).
Jak sprawić, by podróżowanie w każdym kierunku było równie korzystne dla eksploracji?
movement
grid
line-of-sight
Pan Smith
źródło
źródło
Odpowiedzi:
Dungeons and Dragons 3.5 (RPG na papierze) ma rozwiązanie stosowane zarówno do obliczeń ruchu, jak i promienia siatki: ruch po przekątnej kosztuje 1,5, co kosztuje ortogonalność. Ponieważ przekątna kwadratu jednostkowego wynosi około 1,414, 1,5 jest dość blisko.
Ponieważ D&D 3.5 obsługuje tylko ruchy całkowite, sposób, w jaki jest to obliczane, polega na tym, że ruch ortogonalny kosztuje „jedno pole”. Twój pierwszy ruch po przekątnej kosztuje tylko „jeden kwadrat”, ale druga przekątna kosztuje „dwa kwadraty”. Zamieniasz jeden i dwa kwadraty dla każdego ruchu po przekątnej. Wdrożenie tej reguły ruchu w grze rozwiąże kilka problemów z ruchem ukośnym.
Jak pokazuje ten schemat, ta reguła ruchu tworzy rozsądne przybliżenie okręgów, a także nie jest wyłączana o więcej niż 1 w porównaniu z rzeczywistą odległością (w odległości 15 jednostek od początku).
Jeśli twój promień widzenia / eksploracji jest również obliczany w ten sposób, ruch po przekątnej i odkrycia po przekątnej będą tak bliskie lub dalekie, jak odkrycia ortogonalne.
źródło
Musisz zmienić kształt pola widzenia.
Tak więc, gdy poruszasz się w dowolnym kierunku, widoczna jest taka sama liczba nowych kwadratów.
Oto jedna z możliwości:
źródło
Aby ruch ukośny i ortogonalny ujawniał w przybliżeniu ten sam obszar, potrzebujesz dwóch rzeczy (z których każda, sama, została już zasugerowana w innej odpowiedzi lub komentarzu):
Przybliżony okrągły widok :
Samo w sobie nie da to dokładnie takiego samego ujawnionego obszaru dla obu rodzajów ruchu. Na przykład na powyższym obrazie ruch ortogonalny ujawnia 9 kwadratów, a ruch ukośny ujawnia 13. Jest to jednak nadal lepszy niż stosunek 13/7 dla kwadratowego obszaru widoku w twoim przykładzie.
W rzeczywistości, wraz ze wzrostem promienia widoku, stosunek obszarów ujawnionych na krok po przekątnej / ortogonalnym dąży do √2 ≈ 1,414 dla obszaru kołowego, podczas gdy ten sam stosunek dla pola widzenia kwadratowego dąży do 2.
Wolniejszy ruch po przekątnej :
W prawdziwym życiu spacer po przekątnej przez kwadratowe pole zajmuje więcej czasu niż spacer po jednej ze stron. W rzeczywistości zajmuje to około √2 ≈ 1,414 razy dłużej. Jeśli chcesz, aby ruch w grze wydawał się realistyczny, powinieneś to zrobić również w swojej grze.
W praktyce 3/2 = 1,5 to całkiem dobre przybliżenie √2. Zatem możesz po prostu sprawić, aby każdy krok ortogonalny zajął dwie jednostki czasu, a każdy krok po przekątnej zajął trzy. W powyższym przykładowym obszarze widoku daje to 9/2 = 4,5 ujawnionych kwadratów na jednostkę czasu dla ruchu ortogonalnego, a 13/3 = 4,33 ujawnionych kwadratów na jednostkę czasu dla ruchu po przekątnej. Całkiem blisko, co?
Alternatywnie, jeśli chcesz trzymać się „1 krok = 1 jednostka czasu” dla ruchu ortogonalnego, możesz użyć czegoś takiego jak sugerowany system D&D Dane i sprawić, że co drugi krok po przekątnej zużyje dodatkowy obrót. (Jeśli to zrobisz, musisz podać każdej jednostce wyraźny licznik wykonanych kroków po przekątnej; w przeciwnym razie możesz skończyć z exploitami, na przykład E, NE, E, NE, ... . sekwencji ruchu, dzięki czemu gracz, aby zbadać szybciej niż to było zamierzone).
źródło
Ponieważ używasz siatki i wiesz, w którym kierunku podąża użytkownik, nic nie stoi na przeszkodzie, aby dostosować wcześniejszą odpowiedź i użyć różnych pól widzenia w zależności od kierunku.
Na przykład możesz rozszerzyć pole, tak aby obejmowało narożniki podczas podróży w głównych kierunkach i zmniejszyło je o dwa kwadraty na każdym końcu w skrzyniach po przekątnej, aby każdy odkrył 9 kwadratów.
Inną alternatywą w zależności od tego, jak działa oświetlenie, byłoby lepsze przybliżenie okręgu z wygładzaniem krawędzi, aby częściowo odsłonić niektóre kwadraty.
źródło
A może zamiast mieć ustalony zasięg widzenia, obszar widoczności gracza zależy od kierunku, w którym gracz był skierowany, a także od kierunku, w którym gracz był skierowany w ostatnich kilku turach (gracz, który poruszał się na północ, może natychmiast zrób krok na południe, ale może zająć kilka obrotów, aby uzyskać maksymalną odległość oglądania w tym kierunku). Gracz, który kieruje się na północ wąskim korytarzem do dużego pokoju i kontynuuje podróż na północ, miałby ograniczoną widoczność na wschód i zachód i prawdopodobnie powinien. Gdy gracz przestaje się poruszać, system może automatycznie „eksplorować” niewidoczne obszary, które znajdują się w aktualnym promieniu wzroku gracza, ale gdy gracz aktywnie porusza się, pole widzenia powinno być bardziej ograniczone.
źródło
Jako alternatywę dla bardziej złożonego pola widzenia (które, jak omówiono powyżej, dodaje własne problemy z powodu ograniczeń układu opartego na siatce), możesz spróbować naśladować efekt ruchu w grze, która nie jest oparta na dyskretnym krata. Tam, gdzie możliwy jest swobodny ruch, ruch po przekątnej jednej jednostki byłby dokładnie taki, a nie ~ 1,41 jednostki ruchu widzianej z kwadratową siatką.
Chociaż nie możesz wymusić ruchu pojedynczej jednostki bez utraty descreet gridu (co znacznie zmieniłoby Twój projekt gry), być może mógłbyś śledzić dodatkowy ruch podjęty i upuścić ruchy później: śledź dodatkowe 0,41 s, a gdy sumują się one później niż 1.00 niech ta jednostka pominie ruch. Lub na odwrót: uważaj przekątną za normalną, zsumuj 0,41 dla każdego ruchu poziomego lub pionowego i dodaj dodatkowy kredyt za ruch, który jest większy niż 1 (lub 1,41 dla ruchu ukośnego).
Musisz uważać, jak przedstawisz to swoim graczom w sposób, który sprawi, że będzie wyglądał zarówno gładko, jak i sprawiedliwie. W scenariuszu z wieloma graczami takie zmiany mogą stać się czymś, co gracze wykorzystują strategicznie - może to stanowić problem lub może istnieć naturalny sposób na połączenie tego z mechaniką gry (być może pozwolą graczom na przechowywanie małej kwota „niewykorzystanego kredytu na ruch”, którą mogą wykorzystać, aby szybko zareagować w późniejszym czasie i mieć dodatkowe 0,41 s ruchu na zasilenie (lub wyciągnięcie) z tej puli.
To działałoby najlepiej, gdyby jednostki kontrolujące gracza poruszały się o jedną jednostkę w każdej turze. Na przykład trzy punkty ruchu mogą być użyte jako trzy ruchy w poziomie lub dwa ukośne z 0,16 pozostawionymi w puli na później. Gdy osiągnie 1,00, gracz otrzymuje „wolny” hor / bardzo ruch, a przy 1,41 darmowy przekątny. Możesz ograniczyć dodatkową wartość 1,5, aby zmusić ją do użycia lub zagubienia w tym momencie, aby powstrzymać gracza od przechowywania tej zgromadzonej energii przez wieki lub pozwalania na jej wzrost.
Oczywiście jest to komplikacja twoich zasad gry, która może być całkowicie niepożądana, i byłoby niepraktyczne w przypadku gry nieskomputeryzowanej, ale jeśli możesz sprawić, by działała w ramach istniejących zasad gry, ograniczyłaby różnicę eksploracji między kierunkami ruchu bez potrzeby porzucić format siatki.
źródło
Możesz zmusić gracza do przesunięcia się o dwa pola, jeśli poruszą się w górę, w dół, w lewo lub w prawo i tylko o jedno pole po przekątnej. Nie wyrównałoby to całkowicie, ale byłoby znacznie bliżej.
źródło