-
Jak zbudowane są mapy?
Wydaje się, że do dobrego działu trafiłem
Ostatnio rodzą się w mojej głowie dziwne rozkminy i jedna z nich dotyczy tego jak wyglądają od strony technicznej mapy Tibii, OTS'ów i ogólnie gier tego typu. Czy plik z mapą zawiera n tablic (tyle ile pól ma mapa) odpowiadających każdym współrzędnym, zawierających id obiektów znajdujących się na danym polu? To jedyne rozwiązanie jakie mi przyszło do głowy, ktoś zaglądał do plików lub orientuje się jak to wygląda?
-
Jak wygląda format mapy cipsoftu wie tylko kilka osób, obecnie stosowany format map ots możesz sobie przeanalizować patrząc w źródło starej wersji rme, dowolnego tfsa lub w kod tfme. I nie jest to prosta tablica czterowymiarowa. Już bliżej do hashmapy, ale to też nie to, sam nieraz próbowałem to jakoś ogarnąć ale to jeszcze nie ten poziom
-
Programistą nie jestem, rozkmina czysto teoretyczna. O ile więc pojęcie zwykłej tablicy jest mi znane to już hashmapy niezbyt, pójdę się douczyć trochę w tym temacie
Jeśli ktoś wie coś to niech śmiało się wypowiada, zawsze pogłębimy trochę swoją wiedzę
-
hashmapa pozwala indeksować tablice po stringach i nie rezerwuje miejsca na niższe indeksy
także dzięki temu przy mapie o rozmiarze 10000x1000x7x255 nie masz 178500000000 pól tylko tyle, ile jest konieczne
poza tym różne przedmioty mają różne właściwości, depo ma id miasta, tablica ma opis itp, przez co tak naprawdę to w każdym polu znajduje się obiekt dowolnej klasy dziedziczącej po item czy coś w tym stylu
Ale tak to wygląda w przybliżeniu w pamięci edytora, na dysku nieogarniam :D
edit
Kod:
/*
OTBM_ROOTV1
|
|--- OTBM_MAP_DATA
| |
| |--- OTBM_TILE_AREA
| | |--- OTBM_TILE
| | |--- OTBM_TILE_SQUARE (not implemented)
| | |--- OTBM_TILE_REF (not implemented)
| | |--- OTBM_HOUSETILE
| |
| |--- OTBM_SPAWNS (not implemented)
| | |--- OTBM_SPAWN_AREA (not implemented)
| | |--- OTBM_MONSTER (not implemented)
| |
| |--- OTBM_TOWNS
| | |--- OTBM_TOWN
| |
| |--- OTBM_WAYPOINTS
| |--- OTBM_WAYPOINT
|
|--- OTBM_ITEM_DEF (not implemented)
*/
takie coś znalazłem w kodzie tfsa w iomap.cpp