Model wysokości dla sześciokątnych siatek do gry


16

TL; DR:

Gdzie należy zakotwiczyć elewację na sześciokątnej kratce w stylu obywatelskim? Środek, bok czy wierzchołek? (Lub bardziej złożony?)

Właściwe pytanie:

Zastanówmy się przez chwilę nad klasyczną grą, którą wszyscy znamy i lubimy (może?) Alpha Centauri Sid Meier. Model mapy wprowadził zupełnie nową koncepcję widocznego wyniesienia terenu do klasycznej formuły Civ. W SMAC każdy wierzchołek planszy miał wzniesienie, co umożliwiało mapie piękne, toczące się wzgórza, co jest absolutną koniecznością, biorąc pod uwagę, że robak umysłu gotuje się za każdym rogiem.

Czy mapa elewacji zawierająca tylko wierzchołki przełożyłaby się równo na siatkę heksagonalną?

Oczywistymi alternatywami są mapowanie elewacji z boku i mapowanie elewacji z centrum; a także mapowanie wysokości wierzchołków wewnętrznych (dające możliwość tworzenia klifów! Tak!)

Ostatnią opcją jest zastosowanie siatki trójkątnej do siatki gry obejmującej centra i wierzchołki oraz posiadającej tylko wierzchołek lub wzniesienie wierzchołka wewnętrznego.

Która z tych opcji prawdopodobnie zadziała dobrze? Które mogą w pośpiechu wyssać cały sok z procesora i pamięci RAM?

Odpowiedzi:


10

Czy mapa elewacji zawierająca tylko wierzchołki przełożyłaby się równo na siatkę heksagonalną?

To zależy od teselacji siatki. Jeśli tak sprzedajesz swój samolot, to tak.

Siatki

W takim przypadku możesz zmienić zielony trójkąt (x6) w dowolny sposób: hextri

Która z tych opcji prawdopodobnie zadziała dobrze?

Wszystkie działają dobrze. Są szanse, że i tak będziesz używać wielu metod. Nie możesz po prostu użyć wysokości w punkcie środkowym, chyba że chcesz po prostu funkcji górskich z jednym kafelkiem, musisz „podnieść” krawędzie, gdy wchodzisz na górę, jeśli chcesz topografii z wieloma kafelkami.

Które mogą w pośpiechu wyssać cały sok z procesora i pamięci RAM?

To nie stanowi problemu (chyba, że ​​piszesz to dla jakiegoś systemu osadzonego?), Ponieważ wszystkie prace związane z generowaniem mapy zostaną wykonane, zanim ktokolwiek zagra w grę, w fazie ładowania.


Podniesienie punktu środkowego mam na myśli sytuację, w której można ustawić i zapisać wysokość tylko dla punktu środkowego; jeśli dwa heksy mają wystarczająco różne rzędne, krawędzie wokół nich zostaną podniesione, aby pasowały do ​​rzędnych ich powierzchni. (np. 1,1 ma wysokość 3; 1,2 ma wysokość 5: powierzchnia 1,1: 1,2 ma wysokość 4, gdy jest renderowana).
Williham Totland

1
Nie jest to problemem w czasie wykonywania, ponieważ musisz być w stanie obliczyć ścieżki ruchu, różnice wysokości dla przewagi bojowej i tak dalej. Może to nie stanowić problemu w środowisku uruchomieniowym, ponieważ kilkanaście kolejnych liczb zmiennoprzecinkowych na heks nie jest tak źle na większości platform, ale dane nadal muszą być dostępne, aby korzystać z mapy.

-1

Wspaniale, że przynajmniej ktoś o tym pomyślał. Szkoda, że ​​spotkałem tę stronę dopiero kilka lat później. Jednak zamiast tego odpowiem na twoje pytanie dotyczące podstawowych sześciokątów. Zdjęcia, które były pokazywane do tej pory, nie są w 100%. Na mapie o długości 1 metra siatka nie będzie miała kształtu. Oznacza to, że nie jest możliwy obrót o 60 stopni.

Eksperymentowałem na:

  • Różne rozmiary sześciokątów: Który trójkąt (w pikselach) daje najwyższą dokładność na mapach 1 metra po wydrukowaniu. Obejmuje to, aby były tak idealne, jak to możliwe, gdy obracają je o 60 stopni. Również podczas obracania ich o 180 stopni w celu ponownego zamontowania.

  • Różne połączone warstwy sześciokątów.

  • Pojedyncze sześciokąty do wycinania bardzo szczegółowych zdjęć (RAM = niewystarczająca na dużych mapach).

  • Dokładne limity mojego komputera plus to, co czuję, jest dopuszczalne.

Nie eksperymentowałem jeszcze na wzniesieniu, wykonując sześciokąty o różnych kształtach. Ale wiem, że podstawa musi być poprawna przed wykonaniem elewacji.


Streszczenie:

  • Dokładność 1 mm lub mniej na mapie 1 metra. Zasada 60 stopni.

  • Potrzebuję linii, które pasują do siebie po obróceniu o 180 stopni.

  • Potrzebuję trójkąta, aby zmieścił się na ekranie przy maksymalnym powiększeniu.

Zawęziłem wybór do 3, stosując następujące zasady:

Mały:

  • Rozmiar; +26 x +45, 27 x 46 pikseli

  • Niedokładność na 1 metrze; 0,74 mm

  • Sekwencja; 131213131312131

Średni:

  • Rozmiar; +41 x +71, 42 x 72 piksele

  • Niedokładność na 1 metrze; 0,20 mm

  • Sekwencja; 1312131313121313131312131

Duży:

  • Rozmiar; +56 x +97, 57 x 98 pikseli

  • Niedokładność na 1 metrze; 0,05 mm

  • Sekwencja; 1312131313121313131213131312131

Te mają 1 piksel.

Dwie i trzy to grupy 2 pikseli. A 2 ma łącznie 4 piksele, a A 3 ma łącznie 6 pikseli.

Jeśli dodasz sekwencję, zobaczysz, że mają one szerokość w pikselach. Jeśli dodasz je i zliczymy 4 i 6 zamiast 2 i 3. Otrzymasz wysokość w pikselach.

Liczby + to te, które dodajesz w pikselach, gdy umieścisz 2 trójkąty jeden na drugim lub naprzeciw siebie.

Możesz zadawać pytania. Na mój email


1
Nie jest jasne, w jaki sposób rozwiązujesz rzeczywiste pytanie. Dyskutowałeś już trochę na ten temat, choć twoja ogólna uwaga jest trudna do wyodrębnienia. Co te rozmiary pikseli mają wspólnego z geometrią heksagonalną i rzędną?
Seth Battin,

1
Kolejna rzecz: StackExchange nie jest tradycyjnym forum. Pomocne informacje powinny być zawarte w poście, a czytelnicy nie powinni wysyłać Ci e-mailem, aby uzyskać pełną odpowiedź. Ponieważ nie jest to forum, ludzie nie mogą ponownie zadawać pytań. Nie tylko zachęcanie do zadawania pytań jest nieodpowiednie, ale nie zadziała. Zobacz gamedev.stackexchange.com/help/how-to-answer .
Seth Battin,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.