Credo che ogni sviluppatore di giochi dovrebbe utilizzare tutti gli strumenti che possono per migliorare il proprio flusso di lavoro, piuttosto che fare tutto a mano o da zero. Ma cosa intendo per strumenti? Level Editor, debugger, analytics ...? Tutti questi e molto altro! In questo articolo, analizzerò i diversi tipi di strumenti disponibili per gli sviluppatori di giochi e spiegherò perché vorresti utilizzarli.
Quando sviluppi un gioco, sicuramente verrà il momento in cui dovrai iniziare ad aggiungere contenuti ad esso. All'inizio questo potrebbe essere un compito facile: è sufficiente configurare alcuni array e oggetti all'interno del codice. Ma con il progredire del tuo sviluppo, posso quasi garantirti che il tuo codice dei contenuti inizierà a sembrare disordinato.
Immagina di avere dieci livelli di un gioco platform presentato in codice, con posizioni di nemici, oggetti, oggetti, tessere e tutto il resto. Mentre esegui il playtest, noti che devi cambiare la posizione di spawn di un nemico. Il contenuto del livello è in quel grande file con tutte le informazioni per tutti i livelli. Di sicuro sembra un mal di testa passare tutto il codice cercando la linea esatta da cambiare. E questo non prende nemmeno in considerazione i cambiamenti che possono influenzare altri cambiamenti, come la posizione di una piattaforma su cui si trova un nemico.
Naturalmente, potresti anche voler visualizzare il tuo livello ed essere in grado di cambiarlo al volo. Questo non è possibile guardando il codice.
Scrivere strumenti per aiutarti nel processo di sviluppo del tuo gioco è un approccio più complicato ma più gratificante. Potresti scrivere uno strumento che traduca visivamente tutto quel codice contenuto nel livello stesso per te, e mentre lo cambi, lo strumento cambierebbe il codice del contenuto. Puoi anche scrivere strumenti per creare più contenuti per il tuo gioco, aiutarti a eseguire il debug del tuo gioco e persino aiutare l'implementazione su più piattaforme. Oppure potresti salire di un livello più in alto e rilasciare lo strumento ai tuoi giocatori e lasciare che anche loro creino contenuti per il tuo gioco!
Questo può anche aumentare il successo del tuo gioco, come puoi notare se ti guardi intorno per i giochi recenti che lo hanno già fatto.
Diamo un'occhiata ai diversi strumenti che puoi realizzare, a come ognuno può aiutarti ad aggiungere e gestire i contenuti del tuo gioco e alle difficoltà che comporta la loro creazione.
Questa è la sezione più ampia. Uno strumento di creazione è tutto ciò che aggiunge contenuto al tuo gioco - oggetti, personaggi, livelli, musica ... Questi strumenti sono quelli con cui trascorri più tempo, perché finire il gioco ruoterà intorno a loro: creando i livelli, gli oggetti e nemici; mettere tutto insieme; lucidando ogni singolo dettaglio. Ognuna di queste attività potrebbe comportare uno strumento di creazione.
Anche se l'editor di livelli verrà utilizzato solo da te o dal tuo team, devi rendere la sua interfaccia intuitiva e facile da usare.
Supponiamo che tu abbia un gioco basato sul livello. Per creare un buon strumento per la modifica dei livelli, il primo compito è rendere lo strumento visivamente rappresentativo del livello per te. Ciò significa che deve mostrarti esattamente come il livello cercherà i tuoi giocatori. Dopodiché, ti deve consentire di modificare il contenuto in qualche modo, in modo che tu possa effettivamente creare il livello. Questo viene fatto attraverso un'interfaccia. Leggi attentamente ora, perché questo è importante: anche se l'editor di livelli verrà utilizzato solo da te o dal tuo team, devi rendere la sua interfaccia intuitiva e facile da usare. Perché? Perché a nessuno piace lavorare con qualcosa che richiede di premere una combinazione di pulsanti o fare clic su un gruppo di pulsanti per aggiungere qualcosa di semplice come un oggetto sullo schermo. E questo include te e la tua squadra.
Anche se sei tu a crearlo e sai tutto sull'editor, creare un'interfaccia facile da usare aiuta tutti ad aggiungere contenuti al gioco. E se a qualcuno capita di dimenticare la scorciatoia di come contrassegnare un oggetto come "collidabile", ad esempio, avere un'interfaccia intuitiva sarà di grande aiuto.
Ecco un esempio reale: un semplice editor di livelli che ho creato per un gioco di reazione a catena di Windows Phone 7:
Come forse avrai notato, l'intero editor di livelli esiste all'interno del software Adobe Flash Professional - Non ho creato un'app separata. Flash Pro era un ambiente perfetto: non richiedeva alcun sforzo per creare qualcosa per gestire la grafica dei disegni sullo schermo, dal momento che stavo cercando un semplice strumento che mi aiutasse a creare i livelli per il gioco. L'unica cosa che dovevo fare era creare un'estensione molto semplice (come puoi vedere sul video) per salvare tutte le informazioni di quel livello da qualche parte per me (ho usato un file XML).
Tutto il resto è stato gestito per me da Flash Pro: potevo impostare le dimensioni dello schermo esattamente per le dimensioni dello schermo del mio gioco, potevo posizionare tutti gli oggetti nella loro dimensione reale sullo schermo e inserire delle guide per aiutarmi a visualizzare dove sarebbero andati gli scatti dopo un l'oggetto era esploso. Il processo di test è stato semplice come "compilare" il progetto in Flash, che apriva una finestra in cui si chiedeva dove salvare il file XML; quando ho compilato di nuovo il mio gioco, avrebbe letto l'XML aggiornato.
Ora, immaginiamo di avere un gioco sparatutto. Hai mai provato a crearne uno prima? È noioso (e complicato) impostare tutti i movimenti nemici e gli schemi di tiro attraverso il codice stesso, e anche impostare i tempi è noioso.
Ecco un editor di livello shoot-'em che ho creato come un altro esperimento:
Questo è un esempio di cosa non fare. Anche se il mio editor aveva le funzionalità di base che ti permettevano di impostare i pattern di movimento nemici come ti piaceva e includeva anche alcune funzioni di aiuto (in questo caso rispecchiando il nemico che stavo modificando per creare un effetto "specchio" quando i nemici apparivano nel gioco), l'interfaccia era un fallimento completo.
Non ho avuto modo di visualizzare tutto il livello allo stesso tempo: tutto ciò che potevo fare era visualizzare wave by wave. Hai mai immaginato quanto sarebbe doloroso cambiare qualcosa al livello in quel modo? Se, ad esempio, volessi ritardare il tempo di spawn tra i nemici dell'onda corrente di 400 millisecondi, avrei bisogno di passare attraverso tutte le ondate successive e aggiungere (400ms * numero di nemici cambiati
) a tutti i tempi di spawn iniziali delle altre onde. Per questo motivo molto semplice, ho finito per dover ricreare lo strumento da zero.
Creare strumenti di creazione è un compito molto difficile. Forse questi sono gli strumenti più difficili da creare, dal momento che li gestirai quotidianamente per creare il tuo gioco. È necessario renderli il più rapidi e facili da usare possibile, e non devono intralciare il modo di realizzare i contenuti per il tuo gioco. Se scopri che devi passare minuti o addirittura ore a cambiare le cose nel tuo editor perché hai cambiato qualcos'altro che doveva essere corretto, allora potresti voler ripensare se lo strumento sta scontando il suo scopo.
Un approccio eccellente è creare editor di gioco. Questi strumenti ti consentono di modificare il contenuto mentre il gioco è in esecuzione e di testare ciò che hai modificato in fase di esecuzione.
Strumenti come questi spingono la tua produttività al limite, perché hai un feedback immediato sulle modifiche che hai apportato. Alcuni editor ti permettono di cambiare anche il valore degli attributi mentre il gioco è in esecuzione, permettendoti di eseguire i comandi in tempo reale e osservare i risultati. Puoi anche "piegare il tempo" e registrare le azioni che hai fatto nel gioco, quindi cambiare gli attributi nel tuo gioco (gravità, per esempio) e vedere come il movimento del giocatore che fa le stesse azioni apparirebbe sotto quel nuovo ambiente.
Dai un'occhiata a questo esempio di editor di mappe in-game per un gioco in sviluppo, Concerned Joe:
Questi sono probabilmente i migliori amici di un programmatore. Quando qualcosa va storto con un gioco, gli strumenti di debug ti aiutano a scoprire di cosa si trattava. Possono anche mostrare statistiche sul tuo gioco, esaminare il tempo di elaborazione di ogni funzione chiamata nel tuo codice, fornire dump di memoria quando qualcosa non funziona, creare registri purché l'applicazione sia in esecuzione e altro.
Quando si programma un gioco, un programmatore utilizzerà spesso molti di questi strumenti, in particolare il debugger dell'ambiente di sviluppo, se ne ha uno. Tuttavia, molti altri strumenti possono essere scritti per aiutare con il processo di sviluppo del gioco in quest'area.
Per un gioco molto complesso, spesso si desidera essere in grado di recuperare lo stack delle chiamate di funzioni quando si verifica un arresto anomalo (in modo da sapere esattamente quali linee di codice hanno causato l'arresto anomalo) e generare registri tutte le volte che è possibile. Certo, devi essere in grado di interpretare questi registri. Forse uno strumento per aiutarti ad analizzare i registri potrebbe tornare utile ...
Ad esempio, guarda questo strumento creato da Adobe, chiamato SWF Investigator:
Questo strumento, creato per analizzare i file SWF, consente allo sviluppatore di investigare su una varietà di cose del loro gioco, inclusa l'analisi del codice (è in grado di smontare il SWF per esaminare esattamente cosa sta facendo l'applicazione), che è molto importante per un sviluppatore di giochi, in particolare durante l'ottimizzazione del codice.
Il compito di scrivere uno strumento di debug, tuttavia, è molto difficile. Non perché deve avere un'interfaccia "perfetta" come gli strumenti di creazione; spesso questi strumenti sono utilizzati solo dai programmatori e dal team di sviluppo principale e l'interfaccia non ha importanza quello tanto. (Ovviamente, deve essere ancora in grado di mostrare tutto ciò che è importante per te e permettervi di manipolare le cose con facilità.) No, è difficile a causa dell'enorme quantità di dettagli tecnici che devono essere inclusi in essi.
Questi strumenti, tuttavia, potrebbero aiutarti a migliorare il tuo gioco sulle piattaforme dei tuoi giocatori, il che ovviamente è molto importante.
Gli strumenti di distribuzione sono necessari quando si ha un team che lavora su diversi aspetti del gioco (magari un artista e un programmatore) e quando si sviluppa per più piattaforme. Quando si sviluppa per piattaforme multiple, è necessario prendere in considerazione le dimensioni dello schermo di ogni dispositivo (in particolare per i giochi mobili) e i limiti tecnici di ogni piattaforma.
Immagina di sviluppare un gioco per uno smartphone con una risoluzione di 1280x768 e un tablet con una risoluzione di 1920x1200. Probabilmente vorrai utilizzare due diversi set di immagini per ogni dispositivo, perché non vuoi usare le immagini per lo smartphone e ridimensionarle per il tablet - questo sembrerebbe brutto. Inoltre, probabilmente il tuo smartphone non ha abbastanza memoria e potenza di elaborazione per gestire le immagini grandi che stai utilizzando per il tuo tablet. Per questo motivo, è necessario uno strumento di distribuzione per aiutarti a gestire le risorse per il tuo gioco.
Parlando della gestione delle risorse, supponiamo ora di lavorare in una squadra, composta da un artista e un programmatore. L'artista creerà sicuramente molte risorse artistiche, ma come gestirà il programmatore facendo riferimento a questi file artistici nel gioco? L'approccio più pigro sarebbe semplicemente cambiare o aggiungere il nome del file in ogni posto in cui il codice lo utilizza ogni volta che l'artista cambia o aggiunge file art. Tuttavia, per i progetti di grandi dimensioni questo non è possibile, in quanto porterebbe via buoni tempi di sviluppo.
Un buon modo per gestirlo sarebbe creare uno strumento per gestire le risorse artistiche per il team: l'artista specifica semplicemente quale file artistico fa riferimento a cosa e lo strumento convertirà automaticamente i nomi dei file in un nome predefinito impostato dallo strumento stesso . In questo modo, il programmatore non deve preoccuparsi di cambiare i nomi nel codice ogni volta che l'artista cambia qualcosa.
Questi strumenti sono facili da ignorare, ma dovresti sicuramente usarli nei tuoi giochi. Gli strumenti post-rilascio ti aiutano a tenere traccia di come il tuo gioco sta andando là fuori nel mercato e di come i giocatori lo stanno ricevendo.
Questo è molto importante per i giochi virali e per dispositivi mobili, ma i giochi desktop possono trarre grandi vantaggi da questi strumenti. Ti permetteranno di tenere traccia di dove è disponibile il gioco e di quanti giocatori hanno giocato la tua partita. Possono andare anche oltre: strumenti come Playtomic, Mochi Analytics e GamesAnalytics possono tracciare quante volte è stato giocato un determinato livello, quante volte è stato fatto clic su un pulsante, quanti giocatori hanno abbandonato il gioco (nel primo minuto, primi cinque minuti, secondi livello, e così via) e altro ancora. Potresti quindi utilizzare queste informazioni per dedurre che un determinato livello è troppo difficile (in base al numero di giocatori che non lo completano) e quindi correggerlo.
C'è di più: puoi anche scrivere strumenti per tracciare la ricezione pubblica del tuo gioco su Internet, usando i bot che raccolgono informazioni sui post di Facebook o Tweets che includono il nome del tuo gioco, mostrarti quali siti di recensioni hanno recensito il tuo gioco e così via. Non dimentichiamoci inoltre di Google Alert, un ottimo strumento che ti avvisa quando un termine specificato appare sul web.
Anche se è davvero necessario uso strumenti per assistere il tuo processo di sviluppo del gioco, a volte troverai che non ne hai bisogno creare loro, dato che la comunità di sviluppo del gioco ha già creato molti strumenti.
Esistono molti strumenti di sviluppo di giochi eccellenti disponibili online, disponibili per l'utilizzo: ci vuole solo un po 'di tempo per trovarli. Ma usali con cautela: se ritieni che uno strumento non faccia esattamente ciò di cui hai bisogno, potrebbe essere meglio scrivere il tuo piuttosto che sprecare tempo a torcerlo per adattarlo al tuo gioco. Questo è spesso il caso per gli strumenti specifici del gioco o del genere.
Realmente creare uno strumento è un argomento enorme che merita diversi articoli, ma ti darò un consiglio qui: dovrai spesso standardizzare il modo in cui gestisci i contenuti del tuo gioco. Ciò significa che devi trovare un modo per memorizzare le informazioni del gioco, essere in grado di caricarlo e salvarlo. Molte persone usano XML o JSON per descrivere le informazioni, ma potresti voler creare il tuo formato binario se hai bisogno di un modo più specifico di descrivere le cose.
Questa è la fine della mia analisi dei diversi strumenti che puoi utilizzare per aiutarti nello sviluppo del tuo gioco. Spero ti sia piaciuto l'articolo e ho imparato da esso! Se avete domande, non esitate a chiedere.
Nota dell'editore: Stiamo per compilare un elenco di strumenti eccezionali come Ogmo Editor, Tiled e SFXR. Se hai qualche suggerimento, faccelo sapere!