Dopo aver trascorso del tempo oggi a scrivere alcune note relative all'implementazione dei muri nel mio gioco basato su piastrelle, improvvisamente mi sono reso conto che non sarebbe stato così semplice come immaginavo prima. Mentre l'attuale fase del mio lavoro non è nemmeno vicina alla realizzazione del codice relativo al muro, ho escogitato tre modi diversi per farlo. In questo momento non sono sicuro di quale delle mie idee funzionerà meglio e se ho perso qualcosa o no.
Importante: un personaggio PUO ' stare su una tessera che ha muri, indipendentemente dalla loro forma.
La cosa comune per tutte e tre le varianti: il tilemap verrà "mantenuto" in un contenitore basato su std :: vector (o simile) a dimensione singola. Le ragioni di ciò sono (sorprendentemente) spiegate nelle risposte a una domanda diversa.
Classi contenitore in giochi basati su tessere.
Di nuovo ai muri.
A) L'approccio semplice.
Niente di speciale qui. Ogni contenitore di tessere può contenere non solo personaggi, ma uno o più oggetti Muro, che sono attaccati al bordo all'interno della tessera.
Pro: facile da implementare, niente da cambiare nel motore. Contro: due cose. Uno: potrebbe essere solo nella mia testa, ma alcune combinazioni sembrano solo brutte. Secondo: questo approccio consente di realizzare una doppia parete da due tessere adiacenti. La costruzione sarà una parte importante del gioco e le doppie pareti consentiranno ai costruttori di rinunciare eventualmente all'aggiornamento del materiale delle pareti attraverso i mezzi di gioco e raggiungere una maggiore durata con il raddoppio della parete esistente. Non è desiderabile. Certo, potrei includere una procedura che proibisce il doppio muro, ma avrà una brutta sensazione.
B) L'approccio intelligente (?).
Invece di lasciare ai giocatori una doppia parete dell'intera mappa, li batterò su di essa. Ogni muro ha due metà che sono attaccate al bordo della piastrella dall'interno. Quindi, per creare un singolo "Wall unit" dovrò creare due oggetti Half-Wall in due tessere adiacenti.
Pro: è simmetrico !!! Inoltre, non è necessario alcun cambiamento significativo delle attuali specifiche del motore. Contro: più problemi, più oggetti e, naturalmente, i "tappi". Come puoi vedere nella figura, un angolo pianterà fondamentalmente per un oggetto "cap". In realtà sono fico, non è così difficile da aggiungere. Ehi, ho già un piano per colonne sottili composte da quattro tappi collegati. Dolce. Tuttavia, ho alcune preoccupazioni per quanto riguarda i possibili problemi relativi al campo visivo e alla linea di vista.
C) La variante di revisione totale.
Oppure, potrei semplicemente creare bordi e angoli come contenitori separati per gli oggetti di gioco. Proprio così.
Pro: Neppure sicuro. Bene, è semplice. Decisamente. Contro: richiederà una revisione. Non di codice, per fortuna, ma dell'attuale mentalità della meccanica di gioco - questo è certo. I benefici non sono così evidenti. Inoltre, questo approccio richiede molti più contenitori rispetto ai due precedenti. Anche la matematica di indicizzazione sarà un po 'dolorosa.
Quindi qui ce l'abbiamo - tre modi distinti di fare muri tra le piastrelle. Se ci sono alternative là fuori, sarò felice di darle un'occhiata. Se ci sono vantaggi / svantaggi in uno qualsiasi degli approcci che non ho visto, ti preghiamo di segnalarli.