This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this tutorial in English
In questo progetto di esempio, che puoi aprire dall’editor o scaricare da GitHub, mostriamo un metodo per creare mappe RPG molto grandi in Defold. La progettazione si basa sui seguenti presupposti:
Per prima cosa, esegui l’esempio ed esplora il mondo di 3x3 schermate per farti un’idea di come è organizzato. Controlli il personaggio con i tasti freccia.
Apri “/main/main.collection” per visualizzare la collezione di bootstrap di questo esempio.

La collezione principale contiene l’oggetto di gioco del personaggio del giocatore, controllato in 8 direzioni con i tasti freccia, e un secondo oggetto di gioco chiamato “game” che controlla il flusso del gioco. L’oggetto “game” è composto da uno script e da una fabbrica di collezioni (collection factory) per ogni schermata del gioco. Le fabbriche sono denominate secondo lo schema di denominazione della griglia delle schermate.
Lo script “/main/game.script” tiene traccia della schermata in cui si trova attualmente il giocatore. Lo script risponde anche a un messaggio personalizzato chiamato “load_screen”. Questo messaggio carica una nuova schermata e la sostituisce a quella attuale nella direzione in cui si muove l’eroe. All’inizio viene caricata una schermata al centro dello schermo e non ci sono altre schermate con cui scambiarla.
L’eroe è controllato dallo script “/main/hero.script”. Lo script controlla se l’oggetto di gioco dell’eroe oltrepassa una linea superiore, inferiore, sinistra o destra vicina al bordo dello schermo:

factory.create() sul componente collectionfactory appropriato. Il contenuto della collezione viene posizionato fuori dallo schermo.Tutto questo avviene nell’arco di un secondo, quindi la transizione è fluida e non interrompe l’esperienza di gioco.
Ogni schermata del mondo di gioco è costruita all’interno di una collezione separata che contiene la mappa di tile, l’oggetto di collisione e gli altri oggetti di gioco specifici della schermata. Per facilitare la gestione e il caricamento delle schermate, le relative collezioni vengono denominate secondo uno schema semplice:

Ogni collezione di una schermata prende il nome dalla sua posizione nella griglia del mondo. Il primo numero è la posizione X nella griglia e il secondo è la posizione Y.
Nella vista Assets, trova e apri la collezione “/main/screens/0-0.collection”, che descrive la schermata nell’angolo in basso a sinistra della mappa:

Nota che c’è un oggetto di gioco chiamato “root” che è il genitore di tutto il contenuto della schermata. Questa è un’altra convenzione usata nell’esempio e ha uno scopo molto importante: quando una schermata viene portata nell’area visibile, è sufficiente spostare l’oggetto di gioco “root”. Tutti gli oggetti figli vengono spostati automaticamente insieme al genitore radice. Se in una schermata ci sono oggetti di gioco particolari, anche questi possono essere animati liberamente, poiché il loro movimento è relativo al genitore radice. Quando la schermata scorre verso l’interno o l’esterno, questi figli si muovono insieme a essa. Serve codice specifico solo se un oggetto deve spostarsi tra schermate diverse.
Le api nella schermata 0-1 sono semplici esempi di questa idea:

Ogni schermata ha la propria mappa di tile, che può essere modificata nell’editor di mappe di tile integrato. Tuttavia, il principale svantaggio di modificare ogni schermata isolatamente è che non è facile vedere come si collega a quelle adiacenti, un aspetto importante per creare continuità nel mondo di gioco.
Per questo motivo è stata creata una collezione apposita. Apri “/main/map/test_layout.collection” per visualizzare questa collezione di test della disposizione del mondo:

L’unico scopo di questa collezione è fungere da strumento di modifica durante lo sviluppo. Modificare una schermata specifica affiancandola alla collezione di test della disposizione ti permette di vedere il contesto della schermata su cui stai lavorando e rende il processo di modifica molto più comodo:

Qualsiasi modifica alla mappa di tile della schermata (qui nel riquadro di destra) si riflette immediatamente nella collezione di test (nel riquadro di sinistra). Nota inoltre che la collezione di test della disposizione non viene aggiunta alla gerarchia statica, quindi viene esclusa automaticamente da tutte le build.
Come hai visto, questo esempio è costruito secondo vincoli specifici riguardanti il mondo di gioco e il modo in cui l’eroe lo attraversa. Se il tuo gioco ha requisiti diversi, probabilmente dovrai trovare una soluzione diversa. Per esempio, se il tuo gioco richiede che la telecamera si muova senza interruzioni sulla mappa del mondo, ti serviranno un modo diverso di suddividere i contenuti, un meccanismo di caricamento diverso e anche strumenti diversi che ti aiutino a creare il mondo di gioco.
Questo conclude la presentazione dell’esempio di mappa RPG. Come sempre, puoi usare liberamente il contenuto dell’esempio nel modo che preferisci. Per saperne di più su Defold, consulta le nostre pagine di documentazione per altri esempi, tutorial, manuali e documentazione API.
Se incontri problemi o hai domande, visita il nostro forum.
Buon lavoro con Defold!