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.
Nie mówimy, że jesteśmy tutaj bezużyteczni, ale prawdopodobnie otrzymasz bardziej ukierunkowane odpowiedzi na forach @ http: //gamedev.net . – ryeguy
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
@Robbie: Codziennie sprawdzam serwis Gamedev.net i nie pamiętam, żebym widział takie pytanie. Gdzie to opublikowałeś? – Kylotan