Un programmatore di giochi è colui che realizza la visione di un designer nel motore di gioco che usiamo. Lavoro nel team di programmazione di giochi mobili a Kwalee, quindi principalmente usiamo Unity. Ad esempio, se il designer vuole che un dado rotoli in un modo particolare, scriverò lo script per gestire la logica. Collaboriamo anche con gli artisti per garantire che i giochi siano visivamente sorprendenti e performanti sui dispositivi.
In questo blog, condividerò le mie esperienze di cinque anni lavorando a Kwalee per offrire intuizioni essenziali e consigli su come diventare un programmatore di giochi. Vi guiderò attraverso alcune lingue, strumenti e principi che usiamo, i miei consigli di carriera, oltre a consigli per principianti e esperti.
Cosa Fa Un Programmatore Di Giochi?
Scriviamo il codice e aiutiamo il gioco a diventare realtà. Mentre i designer creano i concetti e gli artisti creano gli asset, un programmatore crea l'esperienza funzionale e giocabile. Creiamo e ottimizziamo le prestazioni del gioco e risolviamo eventuali problemi identificati.
Garantiamo che un gioco funzioni bene e abbia alte prestazioni. Per farlo, dobbiamo assicurarci che il codice sia pulito ed espandibile, il che è più difficile di quanto si pensi. Usiamo standard di codifica per mantenere una qualità costante in tutti i team - un documento che può contenere standard di denominazione, formattazione ecc. Tuttavia, a volte le cose non sono sempre semplici e di tanto in tanto potrebbe essere necessario pensare fuori dagli schemi per rispettare le scadenze.
Le nostre responsabilità includono anche garantire che il gioco funzioni bene sull'hardware dell'utente finale. Ad esempio, nei nostri giochi mobili, dobbiamo evitare che i dispositivi più vecchi si surriscaldino, quindi lavoriamo con gli artisti per ottimizzare il numero di draw calls. Un draw call è un comando inviato dalla CPU alla GPU per renderizzare un oggetto sullo schermo - dice alla GPU di disegnare elementi grafici come texture, mesh o shader. Dobbiamo ridurre al minimo il numero di questi draw calls nel nostro gioco perché averne troppi può causare problemi come cali di frame rate o balbettii. Ci sono molti modi per risolvere questo problema, ma cose come raggruppare più oggetti in un unico draw call o ridurre il numero di texture e materiali unici possono aiutare. Questo è particolarmente importante per i dispositivi mobili, poiché ci sono così tanti dispositivi diversi sul mercato, tutti con specifiche tecniche variabili.
Quali Sono I Principali Linguaggi Di Programmazione Per Giochi?
La maggior parte del nostro tempo come programmatori di giochi quotidiani viene speso scrivendo script in uno dei tanti linguaggi di programmazione - dopotutto, siamo sviluppatori di software di un tipo diverso. Ci sono molti linguaggi tra cui scegliere. Alcuni sembrano più facili di altri, ma una volta imparato e padroneggiato uno, si possono sicuramente imparare gli altri - la sfida principale è entrare nel settore.
Ecco un'introduzione ad alcuni dei linguaggi di programmazione per giochi più popolari:
- C# - un linguaggio di programmazione versatile e popolare usato ampiamente nello sviluppo di giochi. È uno dei più facili da imparare se sei un principiante. Una delle sue migliori caratteristiche è la garbage collection automatica - gestisce l'allocazione della memoria per te - molto utile per programmatori impegnati come noi.
- C++ - al contrario, questo è un linguaggio non gestito, quindi devi allocare e deallocare manualmente la memoria, il che lo rende un passo avanti in complessità e difficoltà. Tuttavia, permette una maggiore velocità, controllo e prestazioni.
- Java - come C#, Java ha la sua gestione della memoria e garbage collection, rendendo più facile per gli sviluppatori gestire la memoria senza perdersi nei dettagli. È ampiamente usato nello sviluppo web e nelle applicazioni aziendali, e mentre potrebbe (forse) non essere la scelta migliore per lo sviluppo di giochi, rimane una solida opzione per creare applicazioni scalabili ed efficienti.
- Swift - questo è il linguaggio nativo di Apple per costruire app e giochi per iOS e macOS. Tuttavia, questo significa che è meno utile per lo sviluppo multipiattaforma - poiché miriamo sempre a pubblicare i nostri giochi mobili sia su Android che su iOS.
Come Si Diventa Un Programmatore Di Giochi?
Ci sono diversi modi per diventare un programmatore di giochi. Il mio percorso è abbastanza convenzionale - ho studiato Games Design and Programming all'Università di Staffordshire. Inizialmente pensavo che sarei andato nell'arte dei giochi - sono sempre stato molto appassionato di arte da bambino, inoltre mi sono davvero piaciuti i moduli d'arte all'università, ma mentre ero lì ho scoperto che mi piaceva davvero creare gameplay. Potrebbe volerci diversi giorni per creare un singolo modello high poly, ma potrei far volare un'anatra ed esplodere a metà del tempo. Prototipare mi permette di vedere il risultato rapidamente proprio davanti a me.
Tuttavia, il bello della programmazione di giochi è che è accessibile alla maggior parte delle persone anche se non si segue un percorso tradizionale. Avevo amici all'università di età superiore ai 50 anni - non è mai troppo tardi per provare qualcosa di nuovo. A Kwalee, abbiamo anche assunto qualcuno che ha imparato principalmente attraverso video di YouTube e ha fatto un gioco per divertimento. Ci sono così tante opportunità per nuovi e talentuosi talenti oggi. Guardando i portafogli dei nuovi studenti, hanno molto di più sotto la cintura. Vediamo arrivare talenti fantastici ed è un momento emozionante nel settore.
Una domanda che probabilmente ti interessa - l'IA influenzerà la programmazione come carriera? Può essere estremamente utile e sta migliorando. Perfetto se hai bisogno di qualcosa spiegato o sei bloccato in un problema. Puoi usarla per risolvere bug o rifattorizzare ("pulire") il tuo codice incollandolo nell'ultima ChatGPT. Tuttavia, quando guardiamo ai portafogli vogliamo vedere il lavoro che hai fatto e di cui sei orgoglioso, l'IA va bene da usare, ma cerca di non usarla come sostituto delle tue abilità.
Com'è Una Giornata Tipica Nella Vita Di Un Programmatore Di Giochi?
Lascia che ti dia un esempio basato sulla mia vita. Sono un Lead Programmer (lo chiamo il mio lavoro dei sogni) quindi è un ottimo mix di lavoro pratico e gestione di altri programmatori!
Una giornata tipica nel mio mondo è arrivare, prendere un latte, quindi ricontrollare eventuali bug o blocchi per il team QA. Controllare con il team per vedere se qualcuno ha bisogno che io faccia qualcosa per sbloccare il loro lavoro. Poi la musica si accende e la lista delle attività viene visualizzata. Condivideremo video di progressi tramite Slack per ottenere feedback rapidi, mentre saltiamo tra 2-3 progetti per supportare i membri del mio team. Trascorriamo anche molto tempo a investire in sistemi condivisi per rendere la nostra programmazione più efficiente - tutto deve essere mantenuto, aggiornato e riparato regolarmente per mantenere le cose fluide.
Consigli Per Principianti Sulla Programmazione Di Giochi
Se stai iniziando e aspiri a diventare un programmatore a tutti gli effetti, ecco i miei consigli per principianti!
- C'è così tanto da imparare online, su YouTube e ci sono così tanti giochi d'esempio che non hai scuse per non imparare! I motori popolari sono gratuiti e sono molto divertenti da usare!
- All'estremo opposto, potrebbe avere 30 anni, ma dovresti provare a leggere l'influente libro "Design Patterns: Elements of Reusable Object-Oriented Software" degli autori chiamati Gang of Four, che ha introdotto alcune delle basi dei modelli di gioco che usiamo ogni giorno nella programmazione.
- Potresti avere le tue idee, ma assicurati di iniziare semplice in modo da avere le basi.
- Quando non sei legato a un progetto commerciale, puoi scrivere tutto il codice che vuoi, quindi divertiti a creare cose folli.
- Costruire un portafoglio è davvero fondamentale (ed è come ho ottenuto il mio lavoro). Ma fai molta attenzione a non caricare solo i soliti lavori standard dell'università, perché vedremo molte applicazioni con questi. Anche passare un giorno in più a rifare la skin e aggiungere più funzionalità ti aiuterà a distinguerti.
- Creare il tuo gioco reale è anche un'idea intelligente - è molto economico pubblicare un gioco su Google Play, quindi pubblica qualcosa che puoi mostrare a reclutatori/editori/famiglia/animali domestici sul tuo telefono. Potresti anche guadagnare qualche migliaio di dollari all'anno fino a quando non sarai sistemato con un lavoro a tempo pieno esclusivo, è un bonus! Oppure potrebbe tentarti a creare il tuo gioco completo e collaborare con un editore.
- Non imparare solo sulla programmazione - impara sull'arte, il design, il QA e altre discipline con cui interagirai. Ad esempio, vale la pena comprendere i metodi QA perché puoi cadere nella trappola di presumere che qualcosa funzioni, ma devi giocarlo come un utente, non come qualcuno che ha scritto il codice e ha una visione definita di come ti aspetti "dovrebbe essere giocato". Sii distruttivo, prova le cose casuali che le persone potrebbero fare, premendo pulsanti a caso e altri comportamenti bizzarri.
Consigli Per Programmatori Avanzati
Ecco alcuni dei consigli che mi hanno aiutato a passare da junior, a programmatore, a senior a lead.
- Puoi sempre beneficiare di più apprendimento, e ricorda che senza errori non possiamo imparare!
- Se sei davvero appassionato di qualcosa - potresti diventare più specializzato. Ad esempio, se ti piace giocare con shader e pipeline di rendering, impara a usare gli shader grafici per espandere la tua capacità di rendere effetti visivi complessi e usa le pipeline di rendering per ottimizzare le prestazioni o creare effetti sorprendenti.
- Potresti creare qualcosa di davvero interessante, come un sistema complesso, caricarlo su un negozio di asset per mostrarlo se il tuo contratto lo permette e mostrare il tuo lavoro avanzato. Potresti sviluppare una nicchia come un particolare tipo di programmatore, come un programmatore di gameplay, programmatore di server, programmatore grafico o programmatore multiplayer.
- In alternativa, puoi intraprendere il percorso manageriale come me, e fare da mentore alle persone. La mia tattica per far progredire la mia carriera è stata assorbire nuove responsabilità. Prima, ho iniziato a migliorare piccole cose, ad es. piccoli cambiamenti di flusso di lavoro.. Poi ho reso i processi più facili usando modelli per risparmiare tempo quando si creano nuovi progetti. Poi ho avuto un assaggio del mentore e della gestione, che mi ha aiutato a guadagnare più fiducia e ora partecipare a revisioni tra pari, revisioni del codice, ospitare workshop e guidare team su progetti.
Che tu stia lavorando come parte di un team o come manager, è altrettanto importante dare elogi quanto dare critiche costruttive. Quando si revisiona il codice, è bene entusiasmare le persone!
Quali Sono I Principi Chiave Della Programmazione Di Giochi?
Ci sono alcuni argomenti chiave che devono assolutamente essere inclusi in un blog sulla programmazione di giochi. Queste sono alcune delle cose più importanti che consideriamo.
Controllo del Codice Sorgente/Version Control
Proprio come hai punti di salvataggio nei giochi, ci sono punti di salvataggio nello sviluppo del progetto. Fungono da archiviazione generale per il progetto e significano che tre o quattro programmatori possono lavorare contemporaneamente su un sistema, creare una modifica e inviarla al server. Ci permette di tracciare quelle modifiche e di tornare facilmente indietro se qualcosa dovesse rompersi. Se due sviluppatori lavorano allo stesso file, quel file diventerà parte di una fusione, se ci sono conflitti possiamo quindi risolverli manualmente o scegliere le modifiche di un individuo da applicare. Questo accadrà molto quando si utilizzano Prefabs o Scene all'interno di Unity.
Questi termini a volte si sovrappongono, ma generalmente, il controllo del codice sorgente si concentra sul codice e il controllo delle versioni include tutti i file di progetto, gli asset e la documentazione.
Quando inizi a usare il Controllo del Codice Sorgente, può sembrare un po' spaventoso all'inizio, può sembrare molto opprimente e quando si tratta di conflitti potresti trovarti incerto su cosa fare. Ma la natura del controllo delle versioni ti aiuta a salvare momenti nel tempo, quindi se stai aggiornando frequentemente e usando messaggi di commit dettagliati, è incredibilmente utile e sicuro. Puoi tornare a più punti, avere più rami ecc. Pensalo come la rete di sicurezza degli sviluppatori, quindi possiamo evitare una versione di Toy Story 2 della Pixar - accidentalmente cancellata e poi recuperata da un hard drive a casa del loro Direttore Tecnico, invece è tutto al sicuro lì sul server.
Programmazione Orientata agli Oggetti
Questo è il tipo di programmazione che utilizziamo principalmente a Kwalee. Utilizza oggetti per rappresentare cose reali o concetti astratti, e mira a organizzare il codicebase usando principi che rispecchiano come vediamo e interagiamo con gli oggetti nel mondo reale. Aiuta a mantenere sistemi complessi organizzando il codice in classi distinte che puoi riutilizzare, scalare e mantenere più facilmente.
Ovviamente, c'è un dibattito se sia buono o no. Sebbene non sia il più performante, funziona bene. Proprio come con i linguaggi, ognuno ha i suoi pro e contro e dovresti impararne uno per iniziare e ottenere un controllo di come funzionano i linguaggi e i compilatori (traduttori di codice umano in codice macchina). Puoi anche considerare altri tipi, come la programmazione funzionale che la tratta più come matematica, la programmazione logica che usa fatti e regole o la programmazione procedurale che usa dati passo-passo.
Schemi di Programmazione
Questi sono strumenti meravigliosamente utili - soluzioni riutilizzabili che possono aiutarti con problemi comuni che affronterai nel design del software. Ti danno un modello per risolvere un problema, quindi non devi reinventare la ruota ogni volta e puoi seguire soluzioni collaudate.
Ad esempio, il modello di design Singleton ti aiuta a garantire che ci sia solo un'istanza di una classe come un gestore delle impostazioni di gioco in tutto il tuo gioco, e ti fornisce un punto di accesso globale ad esso. Il codice per questo modello significa che esiste solo un'istanza della classe SettingsManager quindi non è necessario ricrearla o duplicarla ogni volta che ne hai bisogno.
C'è anche il Pattern Factory che può aiutarti a creare oggetti in modo più organizzato e flessibile. Puoi definire metodi per generare tipi specifici di oggetti, come personaggi o oggetti, in base a parametri di input, permettendoti di creare facilmente più oggetti di un tipo simile senza dover ricominciare da zero ogni volta.
Spero che questo blog ti abbia dato un assaggio della programmazione di giochi, che tu sia nuovo nel campo o un programmatore esperto! Se sei una persona laboriosa ma divertente, ti adatteresti al nostro team quindi scopri di più sulle carriere a Kwalee. Altrimenti, puoi conoscere i nostri giochi mobili o la pubblicazione e conoscere meglio ciò che rilasciamo come sviluppatore ed editore.








