define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);{"id":5,"date":"2007-12-15T12:56:52","date_gmt":"2007-12-15T10:56:52","guid":{"rendered":"http:\/\/www.softgame.it\/index.php\/analisi-di-un-videogioco\/"},"modified":"2012-12-22T16:34:30","modified_gmt":"2012-12-22T15:34:30","slug":"analisi-di-un-videogioco","status":"publish","type":"post","link":"http:\/\/www.softgame.it\/index.php\/analisi-di-un-videogioco\/","title":{"rendered":"Analisi di un videogioco"},"content":{"rendered":"<div id=\"itiner-social\" style=\"padding: 5px 0; float:left; width:100%;\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"http:\/\/www.softgame.it\/index.php\/analisi-di-un-videogioco\/\" data-text=\"ItinerSocial\" data-count=\"horizontal\" data-via=\"ItinerSocial\" style=\"flaot:left;margin: 0 10px\"><\/a><div class=\"fb-like\" data-href=\"http:\/\/www.softgame.it\/index.php\/analisi-di-un-videogioco\/\" data-layout=\"button_count\" data-send=\"false\" data-show-faces=\"false\" data-width=\"90\" style=\"flaot:left;margin: 0 10px\"><\/div><div class=\"g-plusone\" data-annotation=\"inline\" data-href=\"http:\/\/www.softgame.it\/index.php\/analisi-di-un-videogioco\/\" data-size=\"medium\" data-width=\"120\" style=\"flaot:left;margin: 0 10px\"><\/div><\/div><p>Inizia con questo primo episodio una serie di articoli atti a comprendere tutte le principali componenti e le tecniche che sono alla base per la creazione di un videogioco, i primi articoli saranno esclusivamente teorici per introdurci nel mondo del game developing, dopodich\u00e8 passeremo alla pratica e creeremo un vero e proprio videogioco. Gli articoli vengono scritti con spirito collaborativo in base a conoscenze maturate negli anni nulla vieta, anzi sono apprezzati, i commenti dei lettori che con le loro esperieze e conoscenze possono arricchire o modificare quanto scritto in codesti articoli su Softgame.<\/p>\n<p>Per prima cosa inizierei dando una definizione di <strong>Videogioco<\/strong>, wikipedia lo descrive cos\u00ec:<br \/>\n<em>&#8220;Il <strong>videogioco<\/strong> \u00e8 un gioco le cui regole sono gestite automaticamente da un dispositivo elettronico che utilizza un&#8217;interfaccia uomo-macchina basata sul display come sistema di output.&#8221;<\/em><\/p>\n<p>Di videogiochi ce ne sono veramente tanti e di diversi generi, a grandi linee cercheremo di analizzare le componenti fondamentali che un aspirante creatore di videogiochi deve conoscere.<\/p>\n<p>Possiamo dividere un videogioco nelle seguenti parti:<br \/>\n&#8211; Motore Grafico<br \/>\n&#8211; Motore Audio<br \/>\n&#8211; Motore Fisico<br \/>\n&#8211; Sistema di Interazione<br \/>\n&#8211; Gestore di Rete<br \/>\n&#8211; Gestore di Dati<br \/>\n&#8211; Intelligenza Artificiale<\/p>\n<p>Andiamo a vedere in dettaglio di cosa si occupano queste parti:<!--more--><\/p>\n<p><strong>Motore Grafico<\/strong><br \/>\nQuesta \u00e8 la parte principale di ogni videogame, lo definirei il cuore dell&#8217;applicazione d&#8217;intrattenimento il suo compito \u00e8 mostrare graficamente qualsiasi oggetto del gioco compreso i personaggi. Alcune volte viene usato il termine &#8220;motore grafico&#8221; indicando un framework che comprende motore grafico, gestione suono, gestione input, IA e altro; insomma un composto di pi\u00f9 elementi indicati sopra fusi tra di loro. La cosa non \u00e8 sbagliata ma in questo articolo per &#8220;motore grafico&#8221; voglio indicare solo la parte di gestione grafica. A seconda del gioco il motore grafico pu\u00f2 essere 2D quindi gioco bidimensionale o 3D quindi gioco tridimensionale. Un motore 2D \u00e8 pi\u00f9 semplice da realizzare e non deve far altro che gestire le immagini: caricarle e animare a video, di solito le immagini per un motore 2D si dividono in immagini di sfondo e immagini animate (personaggi) conosciuti anche come sprites. Differentemente nei motori grafici 3D bisogna tener conto di molti parametri in pi\u00f9 tipo rappresentazioni in realtime di ombre, luci, calcolare l&#8217;immagine che un determinato oggetto 3D assume in base alla posizione telecamera e mostrarlo all&#8217;osservatore. Un programmatore che vuole creare un videogioco ha due scelte, scrivere da s\u00e8 il motore grafico o utilizzarne uno gia fatto. Qualora la scelta ricadesse su un motore gi\u00e0 fatto ce ne sono di due tipi, quelli open source e quelli a pagamento. Quanto costa un motore a pagamento? Bhe un &#8220;listino&#8221; non esiste anche perch\u00e8 ogni motore ha le sue caratteristiche quindi i costi possono variare dalle poche centinaia di euro a cirfre che si aggirano e superano anche il milione di euro. Tra i motori grafici open source troviamo prodotti come: <a href=\"http:\/\/www.ogre3d.org\/\" target=\"_blank\">OGRE<\/a>, <a href=\"http:\/\/irrlicht.sourceforge.net\/\" target=\"_blank\">Irrlicht<\/a>, <a href=\"http:\/\/apocalyx.sourceforge.net\/\" target=\"_blank\">ApocaliX<\/a>, <a href=\"http:\/\/www.neoengine.org\/\" target=\"_blank\">NeoEngine<\/a>, <a href=\"http:\/\/www.genesis3d.com\/\" target=\"_blank\">Genesis3<\/a> ed altri. In realt\u00e0 la maggiorparte dei motori grafici usano 2 differenti librerie grafiche, le DirectX (supportate solo da sistemi Microsoft) e le OpenGL (supportate da pi\u00f9 piattafome Linux compreso), alcuni motori infatti usano l&#8217;una o l&#8217;altra, qualcuno addirittura pu\u00f2 usarle anche entrambi e f\u00e0 scegliere al programmatore quale adoperare.<\/p>\n<p><strong>Motore Audio<\/strong><br \/>\nIl motore audio \u00e8 la parte del videogioco che si occupa di tutta la gestione dell&#8217;audio, nella maggior parte dei casi bisogna gestire una musica di sottofondo e gli effetti sonori del gioco. Negli ultimi anni i motori audio si sono perfezionati ed hanno introdotto nuove funzioni, una importante \u00e8 l&#8217;audio 3D conosciuto anche come audio posizionale. Questa tecnica consiste nel riprodurre un effeto sonoro dandogli anche una collocazione geografica, se ad esempio il suono arriva dalla sinistra avremo la cassa o cuffia sinistra che lo riproduce, mentre la destra rester\u00e0 muta o lo riprodurra a bassissimo volume. Tecnica utilissima nei giochi 3D, molto usata dei FPS (First Person Shooter). Anche qui ci sono motori commerciali e motori open source come: <a href=\"http:\/\/www.openal.org\/\" target=\"_blank\">OpenAL<\/a>, <a href=\"http:\/\/www.ambiera.com\/irrklang\/\" target=\"_blank\">IrrKlang<\/a>, <a href=\"http:\/\/audiere.sourceforge.net\/\" target=\"_blank\">Audiere <\/a>ed altre.<\/p>\n<p><strong>Motore Fisico<\/strong><br \/>\nCon il perferzionarsi dei giochi 3D c&#8217;\u00e8 sempre una maggiore esigenza di raggiungere un grado di realismo sempre pi\u00f9 alto. Quale miglior modo di raggiungere realismo all&#8217;interno di un videogioco se non quello di utilizzare uno motore che implementa le leggi della fisica quali: legge di gravit\u00e0, urti e collisioni, esplosioni e via dicendo. Alcuni motori fisici maggiormente utilizzati in videogiochi sono: <a href=\"http:\/\/www.ageia.com\/physx\/index.html\" target=\"_blank\">Physx<\/a> e <a href=\"http:\/\/www.newtondynamics.com\/\" target=\"_blank\">Newton<\/a>.<\/p>\n<p><strong>Sistema di Interazione<\/strong><br \/>\nPossiamo identificarlo come l&#8217;insieme dell&#8217;hardware e del software che permette all&#8217;utente (videogiocatore) di interagire con il videogioco. Le modalit\u00e0 di interazione sono veramente molte tra quellepi\u00f9 diffuse c&#8217;\u00e8 l&#8217;utilizzo della tastiera, del mouse, il joystick, il game pad fino ad arrivare alle pi\u00f9 moderne tecniche di Motion Capture (<a href=\"http:\/\/www.youtube.com\/watch?v=ZRA_flU__J0\" target=\"_blank\">esempio che implementa questa tecnologia<\/a>). Una volta scelto l&#8217;hardware il tutto deve essere gestito via software, si imposta che determinati tasti eseguono il movimento del personaggio, con altri ancora lo si f\u00e0 compiere azioni fino ad impostare determinate sequenze di tasti per i famosi &#8220;attacchi speciali&#8221; molto usati nei videogiochi &#8220;picchiaduro&#8221;.<\/p>\n<p><strong>Gestore di Rete<\/strong><br \/>\nIl gestore di rete permette di far comunicare pi\u00f9 videogiocatori su hardware interconnessi in rete tra di loro. Specialmente dopo la forte diffusione del collegamento internet a banda larga sono aumentati i videogiochi che usano la modalit\u00e0 multiplayer. Tale modalit\u00e0 prevede la possibilit\u00e0 di giocare in rete locale o su internet con altri giocatori in altre parti del pianeta, il tutto grazie allo scambio di dati costante tra gli hardware usati dai giocatori. Di solito viene utilizzata una architettura client &#8211; server, ovvero viene impostato un server che gestir\u00e0 tutto lo scambiuo di dati tra i giocatori, i quali si connettono come client a quest&#8217;ultimo e giocano in rete, il protocollo di rete pi\u00f9 usato \u00e8 l&#8217; <a href=\"http:\/\/it.wikipedia.org\/wiki\/User_Datagram_Protocol\" target=\"_blank\">UDP<\/a> (User Datagram Protocol). Anche per la gestione della rete esistono dei framework sia commerciali che free o addirittura Open Source. Un esempio di framework utilizzato nei videogiochi ma non solo \u00e8 <a href=\"http:\/\/www.rakkarsoft.com\/\" target=\"_blank\">Raknet<\/a>.<\/p>\n<p><strong>Gestore di Dati<\/strong><br \/>\nQuanti di voi alle prese con videogiochi hanno avuto l&#8217;esigenza di dover salvare la partita per poi non ripartire daccapo? Bene il nome gestore dati magari \u00e8 meno intuitivo delgi altri, ma con questo termine indichiamo la parte del programma che si prende cura di salvare lo stato attuale del gioco, per poi poterlo caricare successivamente e far continuare l&#8217;avventura grafica al videogiocatore proprio dove l&#8217;aveva lasciata. Prendiamo ad esempio un videogioco di tipo Real Time Strategy (RTS), bisogner\u00e0 salvare una notevole quantit\u00e0 di dati quale: stato delle risorse, numero di unit\u00e0 con la loro posizione energia il loro stato (se sono in combattimento o a guardia di un atruttura), tutte le strutture del giocatore e quelle del\/dei nemico\/i, lo stato del gioco (in che livello ci troviamo), le evoluzioni e le scoperte utilizzabili, ecc. Come si capisce il gestore dei dati \u00e8 molto personalizzato sul gioco creato, \u00e8 difficile poter riutilizzare lo stesso gestore dati se non su un gioco con struttura &#8220;clone&#8221;.<\/p>\n<p><strong>Intelligenza Artificiale<\/strong><br \/>\nIn italiano viene abbreviata con la sigla IA, mentre in inglese la sigla \u00e8 inversa AI (Artificial inteligence). Questa \u00e8 la parte pi\u00f9 impegnativa e strategica, determina anche la giocabilit\u00e0 del videogioco e il perch\u00e8 \u00e8 ovvio, se l&#8217;IA dei nemici in un videogioco \u00e8 molto semplice essi risulteranno molto deboli e il giocatore si scoccer\u00e0 presto visto che l&#8217;ostacolo costituito dai nemici \u00e8 facile da abbattere, contrariamente se \u00e8 troppo evoluta i nemici risulteranno cos\u00ec forti che batterli sembrer\u00e0 quasi impossibile al giocatore e questo smetter\u00e0 di giocare frustrato dal non riuscire a vincere. L&#8217;intelligenza artificiale viene utilizzata in tutti quei giochi dove esistono componenti (oggetti o personaggi) comandati e gestiti dal Computer \/ console e via dicendo. Pensiamo ad esempio al famoso gioco Pacman dove il simpatico protagonista deve riuscire a mangiare le palline disseminate su tutto il percorso senza farsi mangiare dai fantasmi, anzi all&#8217;occorrenza ingerendo la pillola riesci lui a mangiare i fantasmi. Vi siete mai chiesti quali sono gli algoritmi che permettono ai fantasmi di scegliere sempre la strada pi\u00f9 breve per poter raggiungere pacman in un labirinto o nello stesso labirito di scappare il pi\u00f9 lontano da lui quando \u00e8 in grado di mangiali? Bene qui entra in gioco proprio l&#8217; Intelligenza Artificiale, gli algoritmi sono diversi per potersi muovere in labiriti, uno di questo \u00e8 l&#8217;<a href=\"http:\/\/it.wikipedia.org\/wiki\/Algoritmo_di_Dijkstra\" target=\"_blank\">algoritmo di Dijkstra<\/a> scritto da un informatico Olandese da cui prende il nome. Da gioco a gioco l&#8217;Intelligenza artificiale cambia, passando da Pacman ai moderni FPS (First Person Shooter) ci rendiamo conto che bisogna considerare molti altri aspetti e non solo il sapersi muovere in un labirinto o su una mappa, ad esempio i nemici oltre a muoversi corrattamente nella mappa devono anche decidere: dove e quando nascondersi (quando sono in inferiorit\u00e0? Per difendersi o per tendere una trappola?), come e quando attaccare (attaccare frontalmente? dal fianco? con quale arma? meglio la mitraglietta, la granata o un missile?), cooperare tra di loro (attaccare singolarmente o a squadra?), saper ripiegare o sacrificarsi tentando di abbatterci? Ricordiamoci che tutte queste decisioni devono essere prese in tempo reale in base alla nostra posizione o nel caso di squadre in relazione alla posizione di ogni membro della squadra e dalle dotazioni, posizioni che ovviamente cambiano in continuazione e dotazioni che si esauriscono nel corso del gioco, dobbiamo poi saper tradurre lenostre decisioni in istruzioni da impartire ai nostri personaggi, istruzioni che non devono essere constrastanti tra di loro. Come capirete nel campo della IA le conoscenze tecniche (matematica, trigonometria ecc.) e la fantasia hanno distese immense per potersi sbizzarrire.<\/p>\n<p><strong>Articolo successivo<\/strong>: <a href=\"http:\/\/www.softgame.it\/index.php\/creiamo-un-videogioco-1-introduzione\/\">Creiamo un videogioco: 1 introduzione<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Inizia con questo primo episodio una serie di articoli atti a comprendere tutte le principali componenti e le tecniche che sono alla base per la creazione di un videogioco, i primi articoli saranno esclusivamente teorici per introdurci nel mondo del game developing, dopodich\u00e8 passeremo alla pratica e creeremo un vero e proprio videogioco. Gli articoli&hellip;&nbsp;<a href=\"http:\/\/www.softgame.it\/index.php\/analisi-di-un-videogioco\/\" class=\"\" rel=\"bookmark\">Leggi tutto &raquo;<span class=\"screen-reader-text\">Analisi di un videogioco<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":79,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_ti_tpc_template_sync":false,"_ti_tpc_template_id":""},"categories":[13,32],"tags":[21,23],"_links":{"self":[{"href":"http:\/\/www.softgame.it\/index.php\/wp-json\/wp\/v2\/posts\/5"}],"collection":[{"href":"http:\/\/www.softgame.it\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.softgame.it\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.softgame.it\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.softgame.it\/index.php\/wp-json\/wp\/v2\/comments?post=5"}],"version-history":[{"count":3,"href":"http:\/\/www.softgame.it\/index.php\/wp-json\/wp\/v2\/posts\/5\/revisions"}],"predecessor-version":[{"id":78,"href":"http:\/\/www.softgame.it\/index.php\/wp-json\/wp\/v2\/posts\/5\/revisions\/78"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.softgame.it\/index.php\/wp-json\/wp\/v2\/media\/79"}],"wp:attachment":[{"href":"http:\/\/www.softgame.it\/index.php\/wp-json\/wp\/v2\/media?parent=5"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.softgame.it\/index.php\/wp-json\/wp\/v2\/categories?post=5"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.softgame.it\/index.php\/wp-json\/wp\/v2\/tags?post=5"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}