2009-10-02 3 views
5

Sono in procinto di progettare un rpg e mi sono imbattuto in un piccolo intoppo. Non sono sicuro di cosa usare per le mie mappe del mondo. Ho esaminato diversi formati durante la scorsa settimana e ho determinato che non ci sono mappe (che io possa trovare ...) che siano buone per un ambiente esterno. Ho trovato che le mappe .bsp (quake 4 o doom 3) sarebbero buone per un ambiente interno, ma non molto buone per le impostazioni esterne a causa del modo in cui sono fatte.Vari formati di mappe di gioco (interne ed esterne)

Sto cercando di trovare qualcosa che mi consenta di realizzare enormi mappe esterne, come oblio o morrowind. Certo, non posso usare le mappe a quell'estremo, è bello avere la stanza per l'espansione se ne ho bisogno.

Grazie, Robbie

+1

Non dicendo che siamo inutili qui, ma probabilmente otterresti una risposta più mirata @ forum http: //gamedev.net . – ryeguy

+0

Ci ho provato e nessuno ha risposto. Il tempo di risposta qui è molto meglio rispetto a gamedev. Almeno per le mie domande ... Idk, forse a loro non piaccio perché a volte faccio domande semplici. Oh bene ... – Robbie

+0

@Robbie: Controllo Gamedev.net ogni giorno e non ricordo di aver visto una domanda come questa. Dove l'hai postato? – Kylotan

risposta

3

This article introduce l'uso di quadtrees per la conservazione del terreno, che a mio avviso sono comunemente usati. Fondamentalmente, sono come gli alberi BSP usati in Quake, ma sono più adatti per la memorizzazione di heightmaps.

+0

L'unica cosa che non capisco è come associare le informazioni grafiche con il quadrifoglio. Supponiamo che io abbia un file bmp 16x16 che sto usando come mappa, con il nodo più piccolo un quadrato 1x1. Come andrei a disegnare la mappa con il quadrifoglio? O non dovrei farlo così e c'è un altro modo per farlo? – Robbie

+0

@Robbie: Penso che il punto di utilizzo di un quadruplo per la memorizzazione di una heightmap sia più evidente quando si desidera memorizzare i dati dei vertici 3D effettivi, generati dalla heightmap. Quindi si utilizza il quadrifoglio per organizzare i dati gerarchicamente. Vedi http://www.gamedev.net/community/forums/topic.asp?topic_id=410611 per maggiori dettagli, per esempio. – unwind

+0

Il link è morto ora :( – Kjellski

6

ambienti esterni sono in genere fatto utilizzando le mappe altezza del terreno. È fondamentalmente una griglia gigante con informazioni di altezza su ogni cella. Inoltre ogni cella contiene informazioni sulla trama (s) da utilizzare.

È possibile creare queste mappe usando il rumore basato generatori terreno frattali e Perlin

+0

Ah ok. Non avevo mai pensato di farlo in quel modo. Ho sempre pensato che fossero fatti in frullatore o in qualche altro programma di modellazione 3d e sono stati poi caricati nel gioco. Ora, come metteresti le cose come una casa o degli alberi su quella mappa? Basta creare i modelli separatamente, caricarli e posizionarli sulla mappa dove vuoi? – Robbie

+0

Praticamente, sì. –

+0

Huh ... Questo è abbastanza bello. – Robbie

1

Ci sono molti modi per implementare le mappe mondi di gioco.
In ogni caso, per le mappe enormi check out Spatial indexes, e in particolare la Quadtrees.

2

Penso che stia cercando un modo per salvare e caricare le mappe da un file, non un modo per archiviarle in memoria. (O forse ho frainteso?)

IMHO ci sono quattro percorsi per gestire questo problema.


Extremum: creare il proprio formato

È possibile creare i propri file di formato. Il modo più semplice sarebbe quello di scegliere un formato di file ampiamente utilizzato ed estensibile (come XML) poiché troverai moltissimi parser disponibili gratuitamente su Internet. (vai su applied-mathematics.net per un parser XML semplice ma completo).

Il problema qui è che dovrai creare il tuo editor di mappe. Senza dubbio questo è il modo "migliore" se vuoi imparare tantissime cose e avere un formato pulito. Ma devi anche considerare il tempo che dovrai dedicare alla creazione di tutti questi strumenti.

Extremum: Utilizzare il formato di un altro gioco/strumento

Si può anche scegliere di utilizzare il formato di file di un gioco esistente, e retrò ingegnere (o semplicemente utilizzare il formato di un gioco open source , come Quake).

Il problema qui è che erediterai dai limiti del formato che hai scelto. Ma il tempo di sviluppo è abbastanza ridotto, hai solo bisogno di trovare un modo per caricare questi formati.

Tradeoff 1: Disaccoppiare geometria dalla meta dati

Si può anche scegliere di prendere le cose che avete bisogno di un formato esistente, e per memorizzare i metadati altrove.

Per esempio si potrebbe usare creare un formato che sarebbe simile:

<?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> 

Qui si ha il meglio dei due mondi. È possibile progettare la mappa in qualsiasi editor .bsp (3DSmax, Blender) e memorizzare i dati necessari in XML.

Medio 2: Adattare di altri formati per le vostre esigenze

L'idea qui è solo per creare il proprio formato unificato, e creare gli esportatori per i redattori ampiamente utilizzati. Puoi ad esempio scrivere script di esportazione per Blender, che genererebbero file per il tuo formato personale.


Solo qualche altro consiglio se ho frainteso e stavi cercando l'archiviazione di memoria delle tue mappe. (Nel caso chieda e io completerò la mia risposta :))

  • Cerca Quad/Octrees. È un modo per tagliare la tua mappa in quad/cubi. Quindi sarai in grado di implementare la ricerca veloce in queste strutture e visualizzare solo le parti visualizzabili delle mappe, LOD, ecc.
  • Fissa il caricamento della mappa scegliendo un formato file vicino al layout di memoria della mappa.
  • Combina più paradigmi di memorizzazione della mappa. Le mappe altezza sono carine per le mappe esterne di grandi dimensioni, ma sono molto limitate (specialmente per le mappe multilivello). Potresti usare heightmaps per il pavimento, e memorizzare rocce/fiori è quadruple, ecc.