Come imparare Polycode

Polycode è un open source gratuito (concesso in licenza con licenza MIT) e multipiattaforma "framework per la codifica creativa". Questo termine è raramente sentito all'interno della comunità di sviluppo del gioco, ma ciò che in pratica significa è semplice: Polycode ti fornisce gli strumenti per esprimere la tua creatività attraverso il codice, e anche se è pienamente qualificato per sopportare il "motore di gioco"moniker, preferisce non farlo. Il motivo è semplice: Polycode può essere (e spesso lo è) utilizzato per progetti che comprendono più di giochi interattivi, come visualizzazioni utilizzate per intrattenimento o per scopi scientifici.

Ho usato Polycode principalmente per i giochi di piccole dimensioni ma anche per un'interfaccia utente straordinaria per lo zoom e ho avuto un grande successo nello sviluppo di tutti i progetti. Diamo un'occhiata a ciò che Polycode può offrirti e, si spera, ti interessi a imparare a lavorare con questo meraviglioso framework.


Cosa fornisce Polycode?

Dato che questo non è un pezzo promozionale per il framework, cercherò di enfatizzare le caratteristiche chiave che potrebbero interessare gli sviluppatori di giochi senza entrare nei dettagli eccessivi.

  • Grafica 2D e 3D: Il framework Polycode fornisce sistemi semplici e progettati in modo efficace per disegnare grafica 2D e 3D. Non lo fa a scapito della velocità e non sacrifica le funzionalità richieste dagli utenti avanzati: un'impresa che molti dei più popolari motori di rendering di oggi non riescono a ottenere. All'inizio sospettavo che Polycode mi avrebbe dato solo funzionalità grafiche di base in 3D, ma ho cambiato idea quando ho visto come era progettata la pipeline; è personalizzabile come si ottiene e consente l'implementazione di metodi come il pre-pass leggero o l'ombreggiatura differita senza mai modificare il codice framework.
  • Gestione degli input: Polycode consente di gestire mouse, tastiera, joystick e input tattile tramite il sistema uniforme di gestione degli eventi. Questa funzione è ovviamente essenziale per tutto ciò che si avvicina a chiamarsi un motore di gioco.
  • Supporto di rete: L'API di rete non sembra troppo complicata e non sacrifica le funzionalità. Non ho usato molto personalmente, ma finora non ha mai presentato alcun problema per me, e so che è ampiamente utilizzato dai progetti più acclamati sviluppati usando la piattaforma.
  • Audio: Con Polycode, è possibile riprodurre audio posizionale 2D e 3D, completo di funzionalità come lo streaming (per file audio lunghi come brani musicali). Le funzionalità qui non sono spettacolari, ma dovrebbero essere sufficienti per le esigenze della maggior parte degli sviluppatori di giochi indie.
  • Fisica 2D e 3DRealizzato tramite plugin per il framework principale e utilizzando Box2D e Bullet, entrambe le librerie principali nelle rispettive aree, l'API fisica di Polycode è competente, ben congegnata e robusta. È stato anche un piacere usare, molto più che usare le librerie sottostanti: mentre io non ne avevo i problemi usando Bullet, ho trovato che, per gli utenti che entrano nel campo della fisica 3D, c'è materiale troppo scarsamente documentato là fuori. Con Polycode, l'API fisica è semplice e puoi quasi utilizzare il buon senso mentre lo gestisci, il che è molto incoraggiante per i principianti che potrebbero avere difficoltà a raccogliere le cose all'inizio.
  • API Dual Lua e C ++: Questo è un one-Polycode univoco che offre la sua API sia dai linguaggi di programmazione C ++ sia da quelli Lua. Ciò consente di offrire la pubblicazione con un clic se si sta scrivendo con Lua, oltre alla possibilità di utilizzare lo scripting nei propri giochi e, ad esempio, offrire al proprio level designer un modo più semplice per codificare la logica di gioco all'interno dei propri livelli.

Queste sono solo le caratteristiche chiave; Ne ho tralasciate molte altre, inclusa l'animazione scheletrica, il rendering dei font TrueType pronto per Unicode e l'IDE Polycode. Un elenco più completo (ma non esaustivo) può essere trovato sul sito ufficiale.


Perché Polycode?

Perché un altro quadro? Perché dovresti prendere in considerazione anche Polycode, per non parlare iniziare a lavorare con esso? Non posso persuaderti; Posso solo dare le mie opinioni ed esperienze e farti essere il giudice. Ecco alcuni vantaggi chiave di Polycode che ho trovato durante il mio tempo con esso.

  • Polycode è robusto. Con un'elegante API minimale, il suo modo conciso di esporre le caratteristiche e un solido editor, Polycode mi fa sentire veramente a mio agio e in controllo - e io sono il tipo di persona a cui piace avere tutto il possibile a portata di mano, pronto per essere personalizzato e su misura per i miei bisogni, quindi questo sta dicendo qualcosa.
  • Polycode è forte. L'ampia gamma di funzionalità rilevanti sia per i piccoli platformer 2D che per i sofisticati giochi 3D con una ricca esperienza visiva mi ha aiutato a ottenere ciò che volevo e lo ha perfezionato alla perfezione, senza dovermi preoccupare se il mio gioco sarebbe diventato troppo complesso per il motore capacità.
  • Polycode è facile. Ha una grande documentazione e la sua intrinseca facilità d'uso non mi ha mai, mai perso. Sebbene sia giovane e non ci siano molte risorse su Internet, sono stato spesso in grado di usare solo la mia intuizione e il buon senso per capire come funziona qualcosa, che ho imparato è molto più importante di quanto possa sembrare.

Progetti notevoli

Sebbene Polycode sia molto giovane, ha parecchi progetti di cui vantarsi. La maggior parte di questi non sono nemmeno giochi, ma piuttosto usi innovativi delle nostre familiari tecnologie di rendering, tattili, audio e di simulazione fisica. Qui ce ne sono alcuni:

Video musicale per "Heaven" dei Depeche Mode

Nel video musicale per la canzone "Heaven" di Depeche Mode, diretto da Tim Saccenti, Polycode è stato utilizzato per il rendering di proiezioni decorative sulla parete dietro la band:


Polycode è stato utilizzato per proiezioni sul muro nel video musicale.

U.S. Open IBM Data Wall

Cinque schermi HD, gestiti da cinque computer, funzionano in sincronia, tutti alimentati da Polycode. Questa parete dati visualizza i dati degli Open degli Stati Uniti del 2012 e presenta simulazione fisica 3D, feedback tattile, grafica 3D sovrapposta e networking per mantenere sincronizzati i computer che visualizzano i dati. Sviluppato da HUSH. Maggiori informazioni possono essere trovate sulla pagina del progetto.


Polycode è stato utilizzato per il rendering di animazioni, sovrapposizioni 3D, simulazione di fisica 3D e interazione con l'utente. Immagine gentilmente concessa da HUSH, utilizzata secondo i termini del fair use.

Space Cruiser

Costruito da Ivan Safrin, la stessa mente dietro al progetto Polycode stesso, Space Cruiser è un gioco strabiliante progettato appositamente per le proiezioni all'interno di una cupola planetaria e un gioco collaborativo. È stato presentato in anteprima al Planetario Hayden presso l'American Museum of Natural History. Polycode potenzia completamente questo gioco interattivo, rendendo la grafica 3D ad alta gamma dinamica da sei computer diversi, tutti sincronizzati utilizzando le funzionalità di rete del framework. Puoi leggere di questo gioco eccitante e surreale sulla sua pagina del progetto.


Polycode rende questi fantastici grafici, tutti in HDR, utilizzando sei computer diversi. Immagine gentilmente concessa da Ivan Safrin, utilizzata secondo i termini del fair use.

Che conoscenza precedente ho bisogno?

Puoi utilizzare Polycode sia da C ++, da Lua, sia da entrambi allo stesso tempo, disaccoppiando i meccanismi di base del tuo gioco (C ++ ad alte prestazioni) e la sua logica (Lua con script, hot-swappable). Se usi solo Lua, non hai bisogno di conoscere il linguaggio C ++ piuttosto complesso, e puoi iniziare subito la prototipazione con il grande IDE Polycode, un editor integrato che viene fornito con il framework.

Una volta che decidi di avere più controllo sui meccanismi interni, ti troverai a bisogno del C ++. La scelta è tua; Ti suggerisco di non imparare C ++ se non lo conosci già (soprattutto se non hai conoscenze di programmazione precedenti) subito. Lua è molto più leggera, amichevole per i principianti e più facile da imparare, quindi sarebbe la soluzione migliore. Dall'altro lato, se sei uno sviluppatore di giochi esperto che sta cercando di utilizzare Polycode per giochi complessi e pensati, usare C ++ e Lua in tandem è la strada da percorrere.

Per i tutorial in C ++, puoi fare riferimento a cplusplus.com, il luogo in cui ho imparato quasi tutto ciò che so sulla lingua. Per quanto riguarda Lua, puoi fare riferimento all'elenco esaustivo dei tutorial nella directory di tutorial di lua-users.org, oppure, se preferisci, puoi acquistare il libro Programming in Lua che ti darà una base solida e coprirà quasi tutto ciò di cui hai bisogno.

Avere una certa conoscenza di come funzionano i giochi è consigliato, ma non è realmente necessario: puoi capirlo da solo se segui i fantastici tutorial su Polycode.org, di cui sotto.


Come ottenerlo e in esecuzione sulla mia macchina?

Polycode è un software giovane; infatti, al momento della scrittura, non ha ancora raggiunto la versione 1.0.0. La maggior parte dei progetti in questo stato non fornisce binari precompilati e nemmeno Polycode; tuttavia, il sito Web ufficiale fornisce tutto ciò che è necessario per installare Polycode correttamente e in esecuzione sul computer.

Fai riferimento alla pagina sul wiki di Polycode, scegli la tua piattaforma (Polycode funziona su Windows, Linux e OS X, con il supporto per Android e iOS pianificato in futuro, quindi resta sintonizzato) e puoi iniziare! Il processo di compilazione è semplice; infatti, sul mio sistema Arch Linux sono stato in grado di costruire il framework usando CMake senza nemmeno leggere nessuna delle istruzioni.

Nota dell'editore: LanceJZ ha aggiunto alcuni suggerimenti per far funzionare Polycode con Visual Studio nei commenti. Grazie, Lance!


Come posso iniziare a imparare a lavorare con esso?

Abbiamo sfogliato i vantaggi, le caratteristiche, i progetti importanti, il processo di costruzione di Polycode e ora possiamo sporcarci le mani e iniziare a fare qualcosa. Il team Polycode ha svolto un lavoro magnifico coprendo molti dei punti chiave di cui un utente finale ha bisogno per iniziare a creare giochi, visualizzazioni e simili. I tutorial di Polycode sono disponibili nella pagina del tutorial sul sito ufficiale.

Se rimani bloccato e hai bisogno di documentazione dettagliata, puoi sempre fare riferimento alla documentazione ufficiale, che puoi raggiungere dalla pagina "Impara" del sito web. Se sei ancora bloccato, puoi sempre chiedere aiuto sui forum o partecipare alla chat IRC #polycode a irc.freenode.net. La comunità è amichevole e disponibile, e lo stesso sviluppatore capo spesso risponde alle domande degli altri, insieme ad altri membri del team. (Ho chattato con Ivan un paio di volte online, e sembra un bravo ragazzo.)


Conclusione

In questo articolo, ho presentato una struttura molto giovane chiamata Polycode. Abbiamo visto come Polycode può essere utilizzato come motore di gioco e per un'ampia varietà di tipi di progetti; Ho descritto alcune delle sue caratteristiche chiave, i suoi vantaggi unici e progetti interessanti che lo utilizzano, e ho fatto del mio meglio per aiutarvi ad entrare nel processo di apprendimento di questo quadro. Happy Polycoding!