giovedì 2 febbraio 2012

Fare un Videogioco: "Fare la grafica"

Salve a tutti! Avendo un pò di tempo libero e potendo scrivere a fianco ad una finestra che mostra un bellissimo paesaggio innevato, ecco per voi un nuovo post!

Tempo fa presentai Fortress Brest ad un open-day della mia vecchia scuola superiore insieme ad altri ex-studenti. Successivamente un ragazzino mi chiese: -Ma tu come "hai fatto a fare la grafica"?-. Questa è una domanda che mi fanno spesso in tanti, e noto che molti dei visitatori di questo blog ci entrano cercando da un motore di ricerca la stessa cosa. Ora analizziamola un attimino: qual'è il suo significato? Beh, ma ditemelo voi! Io sinceramente non l'ho mai capito, anche perché di per sé non vuol dire niente di specifico!

Se per "fare la grafica" intendete disegnarla, la risposta è semplicissima: un programma come Paint è più che sufficiente per creare file di immagine che potranno essere caricati e visualizzati in un videogioco. Alcuni editor (come Game Maker) hanno un editor grafico integrato che permette anche di testare le animazioni dei singoli "sprites", ovvero delle immagini che vengono usate nel gioco.I formati sono quelli tipici: .jpg, .png, .bmp per le immagini fisse e .gif per le animazioni. In alcuni casi, quando non si possono caricare direttamente le animazioni, vanno create delle "sprite strips", traducibile in strisce di sprites, ovvero un grosso file di immagine che contiene tutta la sequenza di immagini che, una volta caricata e correttamente visualizzata, andrà a formare l'animazione. Questo è il metodo che ho usato per Fortress Brest, mentre per Arkolour ho direttamente importato direttamente i file .gif animati

Un'immagine GIF animata che ho usato per Arkolour




Una parte della strip del personaggio di Fortress Brest

Se per "fare la grafica" intendete caricare un immagine e visualizzarla su schermo, in tal caso si intende fare il rendering (anche se, ad essere proprio pignoli, non è neanche il termine esatto). Non c'è un metodo preciso uguale per tutti. Prendiamo per esempio Game Maker: una volta disegnato lo "sprite" e creato un oggetto, si associa il primo al secondo, in modo che l'oggetto, quando il gioco viene eseguito, sarà sempre visualizzato con quel determinato "sprite". E se succede qualcosa per cui lo sprite cambia? Basta utilizzare l'apposita funzione "Change Sprite" per cambiare l'immagine visualizzata. Per Fortress Brest, programmato in C++ usando la libreria grafica SDL, bisogna caricare una strip intera e successivamente visualizzare a schermo solo l'immagine che ci interssa mostrare in quel determinato istante. A seconda di che cosa utilizzate per creare il gioco, tutto questo può cambiare radicalmente, ed è quindi inutile tentare di spiegarlo in modo più approfondito.

Spero di avere finalmente chiarito "come fare la grafica" in tutti i sensi in cui si può interpretare tale frase! Se avete altre domande, commentate pure! Al prossimo post!

lunedì 30 gennaio 2012

Arkolour - Gioco con codice sorgente

Primo post dell'anno! Un pò in ritardo a dire il vero, ma a dicembre dovevo consegnare un progetto per l'università le cui scadenze mi hanno fatto scrivere un programma di 2000 righe di codice in 7 giorrni! Ma torniamo a noi...

Sono orgoglioso di presentarvi Arkolour, il clone di Arkanoid che ho progettato ed implementato, è disponibile per il download.



Il file contiene il gioco, il level editor ed i relativi file di codice. I file di codice sono nelle cartelle "src" di Arkolour- progetto e ArkolourLevelEditor. Il codice è in Java senza usare librerie esterne, quindi per compilarlo vi servirà un compilatore apposito. Io l'ho sviluppato usando NetBeans, quindi potete importare il tutto come progetto se anche voi utilizzate, altrimenti dovete ricordarvi di compilare il package. Qui sotto il link per scaricare il gioco

Link

Comandi

  • Tasti freccia: muovono la sbarra
  • Tasto 'A': Fa colorare la sbarra di rosso
  • Tasto 'S': Fa colorare la sbarra di giallo
  • Tasto 'D': Fa colorare la sbarra di blu
  • Tasto 'P': Mette in pausa la partita
  • Tasto 'S': Salva la partita quando si è in pausa


Lo scopo è distruggere tutti i mattoncini del livello con la pallina, evitando che quest'ultima cada sotto la sbarra. La palla può rimbalzare sulla sbarra solo se sono entrambe dello stesso colore. La palla prende il colore dell'ultimo mattoncino distrutto, e il suo colore attuale è mostrato in basso a destra sullo schermo. Ci sono dei bonus e dei malus che vengono liberati casualmente dai mattoncini distrutti, e possono essere presi toccandoli con la sbarra, applicandogli diversi effetti.

La sbarra ha 50 vite per motivi di testing, dato che il gioco è completo per il 90% circa.Il level editor permette di creare livelli che potranno essere perciò personalizzati: ogni livello contiene al massimo 100 mattoncini, il cui tipo può essere cambiato od addirittura eliminato, liberando lo spazio. I comandi per fare ciò sono a destra dello schermo del leveleditor. Una volta salvata la mappa, la si deve mettere nella cartella del gioco sovrascrivendo uno dei file di livello già esistenti. Purtroppo mancano i suoni e la musica, dato che non sono stati implementati.

Se c'è qualche domanda, fatemi sapere!

giovedì 3 novembre 2011

Fare un Videogioco: Letture interessanti

Se è vero che di manuali di informatica sono piene le librerie, è altrettanto vero che purtroppo non si può dire la stessa cosa sui libri che parlano specificatamente di sviluppo di videogiochi... almeno qui in Italia. Infatti, curiosando su internet, si possono trovare parecchi libri che trattano ogni aspetto dello sviluppo: Progettazione, Grafica, Architettura dell'engine, Design, Suono ecc.

Ovviamente sono in inglese, e richiedono una certa conoscenza della lingua per poterli usare.Quasi tutti trattano di videogiochi creati con linguaggi di programmazione, e danno per scontato il fatto che il lettore conosca il linguaggio in questione, che generalmente è il C++. Personalmente posso dire di aver acquistato Game Engine Architecture, un ottimo libro che descrive come fare un motore di gioco 3D funzionante ed ottimizzato. Nei primi capitoli cita alcuni engine famosi come il Quake Engine, L'Unreal Engine e il Source Engine, e spiega l'organizzazione a strati delle stesse. E' illuminante e molto, MOLTO tecnico, per questo lo consiglio solo a chi conosce bene la programmazione C++.

Tuttavia, anche l'IA necessita uno sguardo approfondito, soprattutto per i giochi più moderni dove è richiesto un alto grado di realismo. Artificial Intelligence for Games è un ottimo manuale che spiega ottimamente i sistemi per costruire IA funzionali. Se si parla invece dell'affrontare specifici problemi, c'è la serie Game Programming Games. Otto (forse anche di più) libroni da 600/700 pagine strapiene di consigli per risolvere problemi specifici. Anch'esso indicato per gli smanettoni di C++ (d'altra parte, senza questo linguaggio ci si può scordare di lavorare in questo ambiente).

Ma non trascuriamo la storia e l'aspetto "culturale" dei videogiochi. E' importante sapere perché certi giochi abbiano avuto un certo successo in un dato periodo, in modo da poter replicare l'impatto sul pubblico. In questo caso di libri ce ne sono parecchi, anche in italiano, ed elencarli qui sarebbe troppo dispersivo. Per ora non ho niente da aggiungere, al prossimo post!