Ahoj!
Szukam informacji o mapach kafelków, a raczej o tym, jak nazywany jest określony typ mapy kafelków.
Interesuje mnie rodzaj implementacji zastosowanej w potentacie rollercoastera lub serii gier potentata transportowego. Patrzyłem na teren pola wektorowego i mapę wysokości, ale nie jestem pewien, czy nadają się do tego, czego szukam rozwijać.
Trudno było znaleźć jakieś przyzwoite informacje, ponieważ większość ludzi nazywa je mapą kafelków izometrycznych, ale chcę stworzyć coś w 3D ze stałą perspektywą ortograficzną. Rozumiem, że podstawowe przechowywanie mapy kafelków nie ma nic wspólnego z tym, jak jest renderowana, ale nie zamierzam tworzyć mapy kafelków 2D, takich jak stare pokemony / gry zelda, a raczej diablo z możliwością włączenia wystające klify i pochyłe tereny.
Próbuję tylko znaleźć odpowiednie hasła do wyszukiwania w Google i Stackoverflow w poszukiwaniu zasobów, które pomogą mi zdecydować, którą ścieżkę wybrać.
Do tej pory udało mi się opracować podstawową mapę kafelków bez użycia komponentu wysokość / rok przechowywanego w VBO i renderowanego jako szkielet. Na razie wygląda to dobrze, ale przewiduję, że napotkam problemy podczas próby manipulowania jednym wierzchołkiem w celu tworzenia klifów i stoków bez wpływu na sąsiednią płytkę.
Czy jest jakiś konkretny typ wdrożenia, nad którym powinienem się zastanowić? Myślałem, że złamałem go, gdy znalazłem sporo, jeśli informacje o terenie pola wektorowego, ale nie jestem pewien, czy to przyniosłoby prawidłowe wyniki.
Jeśli ktoś może rzucić nieco światła na to, proszę, pomoc byłaby bardzo mile widziana :)
Aktualizacja
Dołączyłem obraz w celu dalszego wyjaśnienia, co chciałbym osiągnąć:
Obraz zapożyczony z Jak utworzyć nachylone (wysokość) płytki izometryczne
Ten obraz pokazuje rodzaj terenu, który chciałbym wygenerować, ale nie obejmuje „klifów” ani wystających typów terenu, które jestem zainteresowany modelowaniem. Rodzi to jednak kilka innych pytań, których nie rozważałem, a mianowicie;
- Jak obchodzić się z „warstwami”, takimi jak woda (lewy górny róg zdjęcia), aby uwzględnić widoczny grunt pod wodą?
- W jaki sposób zostałyby zaspokojone „krawędzie” mapy, aby ziemia / błoto były renderowane w celu przedstawienia świata jako niepłaskiej istoty?
- Czy podstawowa pamięć tego rodzaju terenu może być wykorzystana do modelowania fizyki, takiej jak piłka staczająca się ze wzgórza lub prędkości ruchu gracza przemierzającego zbocze?
Wpadłem na pomysł, że każdą płytkę terenu można modelować za pomocą 8 wierzchołków, przy czym 4 główne wierzchołki pokrywają samą płytkę, a pozostałe 4 wierzchołki służą do modelowania boków / ścian każdej płytki. Dwa problemy, które widzę w tej implementacji, to to, że a) mapa świata jest zasadniczo podwojona ib) biorąc pod uwagę, że nie wszystkie płytki będą zawierać „ściany”, niektóre płytki będą miały zbędne wierzchołki, które nie zostaną użyte.
Chciałbym stworzyć edytor terenu, który pozwala na deformację każdego kafelka, a także umożliwia zmianę terenu podczas gry. To samo w sobie stawia dodatkowe pytania, takie jak; Czy można używać VBO do przechowywania i renderowania terenu podczas modyfikacji w locie, a także czy można modyfikować wierzchołki bez wpływu na sąsiednie płytki?
Mam wrażenie, że albo nadmiernie komplikuję, albo wpadam w paraliż analityczny, ponieważ zaniedbuję pisania jakiegokolwiek kodu, aby rozwiązać problem, nie mając jasnego pojęcia, jak osiągnąć to, czego chcę.
Znów, po prostu szukam w tym celu pchnięcia we właściwym kierunku. Czy istnieje konkretny typ implementacji mapowania terenu / terenu, który uwzględniałby deformację mapy 3D zarówno przez edytor map, jak i podczas gry, czy też muszę rzucić własną, że tak powiem? Nie próbuję tutaj wymyślać koła, ale staram się znaleźć jakieś zasoby, biorąc pod uwagę, że nie jestem pewien, czego szukać.
Jeśli ktoś może podać jakieś informacje, zasoby lub fragmenty kodu, byłoby to bardzo mile widziane, ponieważ chętnie ubrudzę sobie ręce i zacznę produkować coś innego niż płaski szkielet, który aktualnie posiadam.
Dziękuje za przeczytanie!
To: http://30.media.tumblr.com/tumblr_m06qv6OREt1r2qjpao1_500.png to przykład mapy, którą zrobiłem jakiś czas temu.
Miałem XML reprezentujący mapę i różne rodzaje kafelków. Każdy typ miałby kilka atrybutów:
ALL
(jeśli powinien scalić się z dowolnym kafelkiem wokół niego),EQUAL
(tylko scal z kafelkami tego samego typu),NONE
(nigdy nie scalaj).Następnie przeczytałem wszystkie kafelki i utworzyłem je w scenie. Po pierwsze, biorąc pod uwagę pozycję. Każdy kafelek musiał wiedzieć, że jest sąsiadem, więc musiałem dwukrotnie przejść przez mapę, raz, aby wszystko stworzyć, i jeszcze raz, aby przesunąć każdy wierzchołek do właściwej pozycji.
Chociaż moje modele są heksami, koncepcja jest taka sama, potrzebujesz kostki do reprezentowania swojej płytki, a następnie przesuniesz wierzchołki podstawy na najniższy poziom i „wygładzisz” górę sześcianu z sześcianami wokół niego. Sprawdziłbyś również, czy dwie strony kostek zostały scalone, więc możesz po prostu usunąć tę stronę z kostki (jeśli nie są scalone, prawdopodobnie jest to klif lub coś takiego).
O fizyce zależy od celu. Jeśli robisz coś takiego jak rollercoaster potentat, tak naprawdę ich nie potrzebujesz. Możesz po prostu sprawdzić wysokość gracza między poszczególnymi płytkami i zdecydować o prędkości chodzenia. Możesz zrobić to samo dla obiektu, który porusza się sam (jak piłka), możesz sprawdzić płytki wokół (lub aktualny kąt płytki) i zdecydować o kierunku / prędkości. Jeśli potrzebujesz realistycznej fizyki (np. Grawitacji, tarcia itp.), Musisz użyć silnika fizyki i możesz użyć reprezentacji 3D kostki w silniku.
Warstwy są również możliwe, ale potrzebujesz czegoś takiego jak Minecraft (z wygładzaniem na kostkach w najwyższej warstwie). Jeśli potrzebujesz tylko warstw do wody, możesz mieć „źródło wody” na kafelku i mieć kod wypełniający każde miejsce wokół niego, które jest na tej samej wysokości lub mniejszej (rozwiązanie rekurencyjne dobrze by się tutaj mieściło).
Edytor terenu byłby również prosty, jeśli kod jest wystarczająco elastyczny, możesz zastosować przekształcenia do pojedynczego kafelka (tego, który zmieniasz) lub do listy kafelków (jeśli używasz „pędzla” do wybierz i przenieś je). Tego samego kodu można użyć do zmodyfikowania terenu w grze. I tak, możesz zmienić wierzchołki na VBO, można również zmieniać wierzchołki bez wpływu na inne (zależy to również od tego, jak kodujesz w ten sposób).
źródło