2009-10-02 11 views
5

Jestem w trakcie projektowania RPG i wpadłem w mały szkopuł. Nie jestem pewien, czego użyć do moich map świata. W zeszłym tygodniu przyjrzałem się różnym formatom i ustaliłem, że nie ma żadnych map (które można znaleźć ...), które są dobre dla środowiska zewnętrznego. Zauważyłem, że mapy .bsp (quake 4 lub doom 3) byłyby dobre dla wnętrz, ale niezbyt dobre dla ustawień na zewnątrz ze względu na sposób ich wykonania.Różne formaty map gry (wewnątrz i na zewnątrz)

Próbuję znaleźć coś, co pozwoli mi tworzyć ogromne mapy zewnętrzne, przypominające zapomnienie lub morrowind. To prawda, że ​​nie mogę korzystać z map do tego stopnia, że ​​jest miło mieć miejsce na rozbudowę, jeśli tego potrzebuję.

Dzięki, Robbie

+1

Nie mówimy, że jesteśmy tutaj bezużyteczni, ale prawdopodobnie otrzymasz bardziej ukierunkowane odpowiedzi na forach @ http: //gamedev.net . – ryeguy

+0

Próbowałem tego i nikt nie odpowiedział. Czas reakcji jest tu znacznie lepszy niż w przypadku grydev. Przynajmniej na moje pytania ... Idk, może mnie nie lubią, bo czasami zadaję proste pytania. No cóż ... – Robbie

+0

@Robbie: Codziennie sprawdzam serwis Gamedev.net i nie pamiętam, żebym widział takie pytanie. Gdzie to opublikowałeś? – Kylotan

Odpowiedz

3

This article wprowadza stosowanie quadtrees do przechowywania terenu, który moim zdaniem są powszechnie stosowane. Zasadniczo są one podobne do drzew BSP używanych w grze Quake, ale lepiej nadają się do przechowywania map wysokości.

+0

Jedyne czego nie rozumiem, to jak powiązać informacje graficzne z quadtree. Załóżmy, że mam plik bmp 16x16, którego używam jako mapy, a najmniejszy węzeł to kwadrat 1x1. Jak miałbym rysować mapę za pomocą quadtree? Czy nie zrobiłbym tego w ten sposób i jest inny sposób na zrobienie tego? – Robbie

+0

@Robbie: Wydaje mi się, że wykorzystanie kwadratu do przechowywania mapy wysokości jest bardziej oczywiste, gdy chcesz przechowywać rzeczywiste dane 3D wierzchołków, generowane z mapy wysokości. Następnie możesz użyć hierarchii, aby uporządkować dane w sposób hierarchiczny. Więcej informacji można znaleźć na stronie http://www.gamedev.net/community/forums/topic.asp?topic_id=410611. – unwind

+0

Link jest teraz martwy :( – Kjellski

6

środowisku zewnętrznym są zwykle wykonywane przy użyciu mapy wysokości terenu. Jest to po prostu gigantyczna siatka z informacją o wysokości na każdej komórce. Każda komórka zawiera również informacje o używanej fakturze.

Można tworzyć te mapy za pomocą fraktali i perlin hałasem generatory terenu

+0

Ah ok. Nigdy nie myślałem o zrobieniu tego w ten sposób. Zawsze myślałem, że zostały wykonane w blenderze lub innym programie do modelowania 3D, a następnie zostały załadowane do gry. Teraz, jak na tej mapie umieścić rzeczy takie jak dom lub drzewa? Po prostu modeluj osobno, ładuj je i umieszczaj na mapie gdzie chcesz? – Robbie

+0

Dość dużo, tak. –

+0

Huh ... To fajne. – Robbie

1

Istnieje wiele sposobów realizacji światów map.
W każdym razie, na ogromnych mapach sprawdzeniu Spatial indexes, a konkretnie Quadtrees.

2

Myślę, że szuka sposobu na zapisanie i załadowanie map z pliku, a nie sposobu na zapisanie ich w pamięci. (A może źle mnie zrozumiałem?)

IMHO są cztery drogi do rozwiązania tego problemu.


Extremum: Tworzenie własnego formatu

Można tworzyć jesteś właścicielem format pliku. Najprostszym sposobem byłoby wybranie szeroko stosowanego i rozszerzalnego formatu plików (takiego jak XML), ponieważ znajdziesz mnóstwo parserów dostępnych bezpłatnie w Internecie. (przejdź do aplikacji Applica- Mathematics.net, aby uzyskać prosty, ale kompletny analizator składni XML).

Problem polega na tym, że musisz utworzyć własny edytor map. Bez wątpienia jest to "najlepszy" sposób, jeśli chcesz poznać mnóstwo rzeczy i mieć czysty format. Ale musisz także wziąć pod uwagę czas, który musisz poświęcić na tworzenie wszystkich tych narzędzi.

Extremum: Użyj formatu innego gier/narzędzia

Można również wybrać format pliku istniejącego gry i retro inżynier to (lub po prostu użyć formatu otwartego meczu źródłowym takie jak Quake).

Problem polega na tym, że odziedziczysz po ograniczeniach wybranego formatu. Ale czas opracowywania jest dość ograniczony, wystarczy znaleźć sposób na załadowanie tych formatów.

kompromis 1: oddzielić geometrię z metadanych

Można również wybrać, aby wybrać rzeczy, które trzeba z istniejącego formatu, a do przechowywania danych meta gdzie indziej.

Na przykład można użyć stworzyć format, który wyglądałby następująco:

<?xml version="1.0" encoding="UTF-8"?> 
<map> 
    <name>MyMap</map> 
    <geometry type="bsp">my_map.bsp</geometry> 
    <spawn id="1"> 
    <monster type="1" spread="5" /> 
    </spawn> 
</map> 

Tutaj masz najlepsze z obu światów. Możesz zaprojektować mapę w dowolnym edytorze .bsp (3DSmax, Blender) i przechowywać potrzebne dane w formacie XML.

Bliski 2: Dostosowanie nawzajem formatów do Twoich potrzeb

Chodzi o to, żeby stworzyć swój własny format zunifikowany i tworzyć eksporterów dla powszechnie używanych edytorów. Możesz na przykład napisać skrypty eksportera do Blendera, które generują pliki dla twojego własnego formatu.


Jeszcze kilka wskazówek, jeśli źle zrozumiałem i szukałeś pamięci do przechowywania swoich map. (W przypadku po prostu zapytaj, a ja uzupełnię moją odpowiedź :))

  • Poszukaj Quad/Octrees. To sposób na wycięcie mapy w kwadraty/kostki. Wtedy będziesz w stanie wdrożyć szybkie wyszukiwanie w tych strukturach, a więc wyświetlić tylko widoczne części map, LOD itd.
  • Zapnij ładowanie mapy, wybierając format pliku zbliżony do układu pamięci mapy.
  • Łączenie kilku paradygmatów do przechowywania map. Mapy wysokościowe są dobre dla dużych map zewnętrznych, ale są bardzo ograniczone (szczególnie w przypadku map wielopoziomowych). Możesz użyć wysokości map dla podłogi, a składowanie kamieni/kwiatów to kwadratury itp.
Powiązane problemy