Come fare un gioco di difesa della torre con RPG Maker MV
Come ogni altro concetto di gioco, dovrai distillare il gioco che hai in mente nei pezzi di cui hai bisogno, e poi capire come implementare ogni pezzo.
Quindi, cos'è un gioco di difesa della torre?
- I nemici progressivamente più difficili nascono in un luogo, poi seguono un percorso scriptato verso un altro luogo.
- Un giocatore costruisce torri lungo quel percorso che sparano ai nemici vicini. Spesso, questo include anche il potenziamento o la vendita di queste torri.
- Se N nemici raggiungono la posizione finale, allora è game over.
Queste sembrano tutte abbastanza fattibili in RPGMV. Quindi facciamolo!
Prima di tutto, abbiamo bisogno di una mappa. Ha bisogno di un'entrata per i nemici, un'uscita per i nemici e un percorso che li colleghi.
In questo gioco, invertiremo i ruoli e giocheremo come un mostro. Gli avventurieri partiranno dalla città (a sinistra) e seguiranno il sentiero fino alla grotta in cui viviamo (a destra). Se un solo avventuriero arriva alla grotta, possiamo supporre che ucciderà tutta la nostra famiglia di mostri ed è game over.
Allora, andiamo avanti e scriptiamo un avventuriero che segue il sentiero. Usiamo un percorso autonomo personalizzato per questo. Usiamo anche velocità e frequenza normali, e impostiamo la priorità su "Sotto i personaggi" in modo che il giocatore non possa mettersi davanti all'avventuriero per bloccarne il movimento.
A questo punto assicuratevi di premere play per testare il percorso di movimento e assicurarvi che l'avventuriero segua il percorso che avete disegnato.
Fico: abbiamo le basi qui. Quello che ancora manca è:
- Consentire al giocatore di creare torri che attacchino l'avventuriero
- Qualche tipo di sistema di salute per l'avventuriero
- Spawnare un avventuriero più forte ad ogni ondata
- Finire il gioco se l'avventuriero arriva alla caverna
Quindi... affrontiamo ognuno di essi.
Consentire al giocatore di creare torri che attacchino l'avventuriero. I giochi di difesa della torre sono tutti incentrati sulla scelta di combinazioni vincenti di ogni tipo di torre. Ovviamente, avremo bisogno di alcuni tipi di torri. Avremo anche bisogno di un qualche tipo di sistema di valuta per evitare che il giocatore costruisca semplicemente una torre gratis su ogni piazza.
Un approccio sarebbe quello di creare degli "hotspot" dove costruire torri (con una priorità "Sotto i personaggi" e un trigger "Pulsante d'azione"). All'attivazione di questi eventi hotspot, possiamo mostrare un menu che chiede al giocatore che tipo di torre vorrebbe costruire.
Se si adotta questo approccio, si dovrebbe avere ogni scelta impostare un auto-interruttore sull'evento che la trasforma in quella torre. Su questi eventi "attivati", si può poi offrire la scelta di vendere quella torre per un rimborso (che disattiverà l'auto-interruttore e la trasformerà di nuovo in una torre hotspot).
Tuttavia, penso che un approccio più fresco qui sarebbe un sistema basato sugli oggetti. Diciamo che si inizia con una manciata di torri tascabili consumabili nel proprio inventario, e l'utilizzo di una di esse colloca quella torre nella posizione attuale. Possiamo anche dire che l'uccisione di un avventuriero fa cadere una cassa del tesoro con un oggetto casuale della torre tascabile.
Con questo approccio, si può semplicemente creare un evento comune per ogni tipo di torre che controlla le coordinate del giocatore attuale e determina se c'è una torre o no (e se c'è, aggiunge l'oggetto della torre di nuovo al tuo inventario, poiché sarebbe consumato nel momento in cui l'evento viene eseguito). Se non c'è una torre, puoi usare uno script come MV Event Spawner di Galv per creare un evento di un particolare ID nella tua posizione attuale. In questo caso, vorrete impostare degli eventi "modello" per ogni tipo di torre che potrete duplicare ogni volta che il giocatore crea un'altra torre.
Prossimo: l'avventuriero ha bisogno di un qualche sistema di salute, e dovrebbe diventare più forte ad ogni ondata.
Questo porta alla parte probabilmente più complicata del gioco, perché RPG Maker MV non ha interazioni tra eventi, ma solo interazioni tra evento e giocatore. Se vogliamo che le nostre torri "attacchino" o interagiscano in altro modo con l'avventuriero (anch'esso un evento), dobbiamo creare un evento parallelo (sempre in esecuzione) che gestisca la collisione/rilevazione del tocco.
Per far funzionare questo, tutto quello che dobbiamo fare è memorizzare le coordinate e il tipo di torre ogni volta che viene creata una nuova torre (nei nostri eventi comuni per la nascita delle torri di cui sopra). Questo può essere memorizzato in variabili che sono poi accessibili al nostro evento parallelo. Ogni tick dell'evento (regolabile dalla "Frequenza" dell'evento) guarderà poi le coordinate dell'avventuriero e le confronterà con quelle di ogni torre. Se si toccano (o, se volete torri a lungo raggio, entro un raggio di R), allora "infliggeranno danni" all'avventuriero.
Per questo, avrete probabilmente bisogno di uno script come MV Plugin: Orange Hud per creare una sorta di display sempre visibile sia per la salute dell'avventuriero, sia per qualsiasi altra informazione che volete mostrare (come il livello/onda corrente). Potete semplicemente memorizzare la salute dell'avventuriero in una variabile e mostrarla nell'HUD.
Similmente, vogliamo anche creare un ulteriore evento parallelo che controlli il completamento dell'onda. In questo evento, possiamo semplicemente controllare se la salute dell'avventuriero è inferiore o uguale a zero (nel caso in cui infliggiamo abbastanza danni da portarli in negativo, vogliamo che anche questo conti!) Quando questo è vero, despawniamo l'evento dell'avventuriero, resettiamo la salute dell'avventuriero alla quantità di salute della prossima ondata, e impostiamo le cose per la prossima ondata di avventurieri.
A questo punto, potremmo anche modificare l'evento che spawna l'avventuriero di ogni ondata per spawnare anche N avventurieri in base all'onda in cui siamo. Questo richiederebbe la memorizzazione del numero dell'onda in una variabile (probabilmente al posto del moltiplicatore di salute dell'onda che stiamo usando sopra), così come la memorizzazione della salute di ogni avventuriero in qualche struttura dati diversa dal nostro attuale scalare.
Infine, abbiamo bisogno di terminare il gioco in un game-over se qualche avventuriero arriva alla grotta. Se siete arrivati fin qui, l'ultimo passo è un gioco da ragazzi.
Nello stesso modo in cui calcoliamo i danni alle torri confrontando le coordinate dell'avventuriero con le torri vicine, possiamo anche creare un ulteriore evento parallelo per confrontare le coordinate dell'avventuriero con le coordinate alla fine del suo percorso. Se ci arriva, si innesca un Game Over.
Ovviamente, si può anche memorizzare una variabile Lives che viene decrementata per ogni avventuriero che arriva alla fine, se si vuole permettere a più avventurieri di entrare nella grotta - ma come tutti sappiamo, basta un solo avventuriero per massacrare una famiglia di demoni. Come demone, non possiamo assolutamente permetterlo!
Similmente, questo evento potrebbe anche essere incaricato di determinare la condizione di vittoria del gioco se non volete una modalità infinita. Si può semplicemente controllare la variabile Wave e, diciamo, se è uguale a 10 o 20 o 100, allora si attiva un evento comune che si congratula con il giocatore e fa partire i titoli di coda.
Articoli simili
- Ha senso usare RPG Maker rispetto a qualsiasi altro motore di gioco per fare giochi RPG?
- Come bilanciare un gioco di difesa della torre? E c'è qualche strumento che può aiutare con esso
- Qual è il miglior layout generico di labirinto per un gioco di difesa della torre?
- Posso fare un gioco hack and slash come Diablo 3 in RPG Maker VX Ace?