Evil Heroes

Informazioni
Appena prima della fine del corso di prorammazione nell'Accademia Italiana Videogiochi ho avuto l'onore di unirmi al team di programmazione del loro progetto: Evil Heroes.
Questo gioco è un GDR d'azione ispirato ai grandi classici come Diablo o Torchlight ma il nostro designer ha lavorato su diverse interessanti caratteristiche per rendere il gioco divertente e unico.
Ho lasciato lo sviluppo del gioco e non posso parlare del design perciò mi limiterò a descrivere solo gli aspetti tecnici. Il nostro team diventò sviluppatore Xbox e avevamo un dev kit Xbox, il gioco, infatti, era previsto per venire lanciato sul Xbox Live Arcade.

Ho lavotato per questo progetto per quasi un anno e durante lo sviluppo abbiamo cambiato molti aspetti del gioco. È stata un'opportunità unica per me per lavorare su un reale sviluppo di un gioco.

Il progetto, però, è stato base i lancio per le nostre carriere e diversi studenti si sono uniti e hanno lasciato il progetto continuamente. Alla fine gli elementi principali del team sono andati via per motivi personali. Lo sviluppo si è bloccato.

Dati Tecnici
Nome: Evil Heroes
Lead Developers: Alessio Greco, Dario Lucantoni
Student/Junior Developers: Enrico Moretti, Michele Giacalone, Michele Cuomo, Ruggero Riccobene, et all (molti si sono uniti e sono andati via prima che io facessi parte del team, ho scritto solo i membri del mio team)
Lead Artist: Enrico Cempanari
3D Artist: Gabriele Mastrogiovanni
Lingue/Tecnologie usate: C#/XNA (primo prototipo), Unity3D (versioni più recenti)
Piattaforme Xbox 360 (la release era pianificata per XBox Live Arcade)
Releasci: nessuna disponibile
Licenza: Tutti i diritti riservati da parte dell'Accademia Italiana Videogiochi
Il Gioco
Anche se un hack 'n slash normalmente non si basa molto sulla storia questo gioco ha davvero un background carino... ma non posso spoilerare nulla! Credetemi: la storia era divertente.

L'idea originale era di concentrarci sui contenuti multiplayer. Puoi giocare il gioco in single-player ma il divertimento maggiore è giocare con gli amici per sconfiggere i boss elitè e gli enigmi contorti trovati durante il percorso.
I personaggi erano pensati per avere un ruolo specifico: il Damage Dealer, Tank, Curatore, Debuffer e così via. Il gioco è più difficile in multiplayer e pensato per dare sfide più grandi ai giocatori e aggiustare la difficoltà in base al numero di giocatori e a quali classe hanno scelto.

Sviluppo e Tecnologie
All'inizio i nostri lead developer e insegnanti hanno creato un motore da zero: il Grim engine®. Poichè il nostro obiettivo era l'Xbox Live Arcade il motore era stato costruito interamente con XNA.
Il motore si caratterizzava per diverse tecniche interessanti: double buffering e rendering multi-thread, shader avanzati (HDR, blurs, etc), integrazione col motore fisico BEPU e tanto altro.
Io e gli altri studenti abbiamo aiutato nel processo di creazione del motore in se e degli strumenti (l'editor, la pipeline degli asset, etc). Questo motore raggiunse un buono stato con un editor funzionante capace di creare livelli veri e propri (con audio, fisica e qualche elemento di gameplay). Ma creare un motore fatto da noi è stato un bagno di sangue: ha richiesto due anni, il lavoro di tante persone e a causa della frammentazione (degli studenti che si univano e andavano via) alla fine il tempo richiesto per il refactoring era maggiore di quello speso per sviluppare le peculiarità del motore.

Il motore meritava ma tropppo grande per le nostre forze. Alla fine siamo passati a Unity3D.
Unity ha tutto quello che avevamo più tutto quello che ci serviva.
Una scelta difficile ma inevitabile.

Tutto il seguente materiale proviene dalla versione fatta con Unity3D. Non ho ne screenshot ne filmati della versione col Grim Engine®.

Fisica
Una delle richieste più importanti è stata quella di avere un mondo dinamico e interattivo. Non certo un compito facile.
La maggior parte degli elementi nel livello sono animati dalla fisica come potete vedere in questo breve video. La libreria perde fogli, gli scheletri esplodono, i candelabri sono pesanti e possono resistere a qualche colpo ma tutto è impotente in confronto al nostro potere (per lo più tramite palla di fuoco. Si può creare un gioco senza una palla di fuoco?).

Non ci sono elementi di gameplay a parte i cristalli che collezioni da terra.
Ah certo! Puoi uccidere gli scheletri! Qualsiasi GDR ha almeno qualche milione di non morti da uccidere, non è vero?
A skeleton fall, another crystal for our hoard!

In questa screenshot c'è un'area segreta: il muro a destra è stato distrutto dalla nostra palla di fuoco rivelando il tesoro.
The secret area

Multiplayer
Il gioco prevedeva di concentrarsi pesantemente nella componente multi-player. Una delle migliori caratteristiche che abbiamo creato è la co-op locale. Attaccare un pad crea un nuovo personaggio e questa build è pronta per funziona fino a quattro giocatori nello stesso schermo. Uno dei nostri compiti precedenti era quello di creare una co-op decente via Internet. Sfortunatamente non abbiamo avuto tempo.

La co-op locale funziona nello stesso schermo: quando un giocatore va troppo lontano dall'altro la camera zoomma fino a un certo limite. C'è un limite nella massima distanza possibile fra due giocatori, oltre il quale al giocatore viene impedito di andare oltre.

Generatore Casuale di Livelli
Questa è la caratteristica più grande che ho creato. Ho avuto il compito di crare un generatore causale di livelli a dovere perchè i livelli furono disegnati per essere modulari in quanto ogni pezzo di livello può essere attaccato ad un altro usando i "corridoi". La richiesta era di creare livelli semplici: qualche bivio ma niente archi, non troppo profondi (per motivi di desgin: un bivio troppo profondo porta il giocatore a in vicoli ciechi troppo lontani e gli archi sono stati evitati per permettere al giocatore di esplorare la maggior parte del llivello senza il rischio di perdere parti importanti).

Il generatore di livelli è stato pensato per creare livelli funzionani al volo: ogni volta che il giocatore entra in un'area questa viene genrata casualmnete.
Ecco il mio generatore di livelli in azione:

Il livello così creato è pronto per funzionare: ogni pezzo di livello include gli asset, gli spawn dei nemici, la prima e l'ultima stanza (che trasporta il giocatore al livello precedente o successivo).

Il problema con quest'approccio è che, anche se casuali, i livelli sembrano simili. Per ovviare a questo problema abbiamo usato un approccio i brido: i livelli vengono generato off-line (per esempio 1000 livelli per tipologia di area) e poi personalizzati (un boss qua, un engima li e così via).

Risorse
Il gioco è ancora in sviluppo in accademia, non ho alcuna risorsa ne i diritti per distribuirli.
Andate nel loro sito web se volete altre informazioni: Accademia Italiana Videogiochi

Un ringraziamento speciale a Luca De Dominicis che mi ha permesso di postare queste informazioni.

Aggiungi nuovo commento

Comment Text

  • Allowed HTML tags: <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
To prevent automated spam submissions leave this field empty.
CAPTCHA
Rispondi alla domanda e non mi rompere con dello spam.