domenica 23 dicembre 2012

Addio UITookit

Questa è stata la settimana peggiore prima delle ferie natalizie, direi.
Abbiamo esportato l'app di COLOSSUS ESCAPE per il primo iPad e poi anche per l'iPhone4. Una certa tensione, per quanto riguardava le performance. Il mio senso di ragno aveva ragione: basse.

Dopo una serie di ottimizzazioni sulla grafica e in particolare sugli shader (di cui non ci capisco una beata..) assieme al mio capoccia Moreno, la situazione in effetti non si è risollevata come avrei sperato e allora ho deciso di isolare tutta la HUD, partendo in primis dagli elementi in PP (tutta una serie di oggetti in silhouette..). Questo primo esperimento non ha dato, in effetti, il risultato sperato e quindi ho deciso di isolare tutta la parte di interfaccia. E lì ho fatto la constatazione del momento: l'UIToolkit funziona bene solo su desktop e su mobile di una certa potenza (es.: Samsung Galaxy S3). Sul resto fa schifo.
Non so se sia colpa delle texture procedurali (UIToolkit ne fa uso), sta di fatto che mi piaceva un sacco come sistema considerando poi l'unica drawcall, seppur abbia diverse problematiche e bug. Ma a questo punto non si dimostra all'altezza dei nostri standard.
Ho anche provato a fare un esportazione al volo con Unity 4 che onestamente mi sembrava dare risultati migliori, ma una volta messo su un altro android e su un tablet Nexus in effetti le cose non sembravano così esaltanti.

Fatto sta che il gioco senza un solo elemento dell'UIToolkit gira bene anche su iPad, il primissimo modello, e sta cosa mi ha fatto piacere - credo quindi di aver lavorato bene. Non mi ha fatto piacere l'idea di dover riscrivere tutto l'HUD e pure cercare un'alternativa.
Al momento sono passata a quella a pagamento dell'NGUI. Non mi sembra male, venerdì in giornata ho montato il 40% dell'HUD e il gioco pare andare bene - anzi, sul mio tel il gioco gira tra i 33 e i 40 fps, arrivando in alcuni momenti pure a superarli (a volte fino a 50, nel gameover). Sono abbastanza contento ma stasera ho letto su twitter di Devin Reimer che si lamentava degli shader e discuteva con uno di alcune soluzioni di HUD. In particolare diceva di non essere contento di NGUI e di preferire 2DToolkit. In realtà mi piace molto il tool, almeno vedendo la loro pagina web se non per il fatto che NON nasce per fare HUD, per esempio non possiede bottoni, e la cosa un po' mi scoccia. Inoltre lo sviluppatore di NGUI è stato assunto da Unity recentemente, quindi questa cosa mi fa pensare bene.

Ora non ha senso fasciarsi la testa e poi ognuno ha un approccio diverso e magari idee diverse. Il mio problema ora è il tempo e le mole di lavoro per chiudere e l'aver visto un bassissimo impatto sugli fps in game con NGUI mi ha dato molta speranza.
Ora devo solo riscrivere tutto, schermate di menù comprese. :|

domenica 16 dicembre 2012

Eccolo: Colossus escape


Ok, parola d'ordine: correre, di brutto.

Primo: gioco in ufficio, ora ha un nome ufficiale, COLOSSUS ESCAPE.
É un gioco su licenza  del mondo di MOFFEE, un mondo fantasy uscito fuori dalla pazza mente del poliedrico artista Gaetano Leonardi. Il brand è giovane e ancora relativamente sconosciuto perché non ci sono ancora tutta una serie prodotti sul mercato ma, lo dico non perché ci sono dentro ma perché mi piace proprio, ha dei personaggi e ambientazioni eccezionali.
Il design dei personaggi, orchi, ciclopi, scheletri.. è bellissimo e molto fresco - in effetti in gioco si vede tutto.
Speriamo la giocabilità sia all'altezza :P e piaccia alla gente.

Andando sul tecnico, nell'app di recente ho sostituito ai miei Update una serie di StartCorutine che hanno letteramente spaccato il cooolo a Unity, migliorando di netto le performance del gioco.
Ora mettere 10 e più nemici, esplosioni, scie, fade e shake della camera.. un po' di tutto, insomma, non è proprio un problema. E a proposito di nemici, ora ci sono tutti quelli 3D, una serie di creature davvero belle con un sacco di animazioni (anche se non tutte presenti in gioco) che sto anche sfruttando per dei momenti molto epici.
Ho apportato tutta una serie di modifiche al codice, gestendo in un'unico gameObject le esplosioni e ho sostituito al continuo creare dei bonus una bella classe di pooling. Ecco, quella manca ancora sui mostri, ma vediamo se ha senso per la prima pubblicazione, perché ovvio l'ottimizzazione ha sempre senso.
I bonus in game sono pronti al 98%, vanno solo tarati meglio e con tutto il testing sarà da capirne la frequenza. Ci sono le bombe, gli scudi, armature, spari vari, terremoti... insomma, che dire? Forse aggiungerò maggiori effetti per dare più enfasi al loro effetto.

Questa settimana (e la prossima) sono su delle super mossone, che sono una delle cose che dovrebbe distinguere il gioco dalla massa, ma che hanno anche il fine di esaltare il giocatore, in particolare i nerd e ancora più i nerd da fantasy ;)

Secondo: sul gioco a casa stiamo modellando ancora e ancora, sto delineando la grafica di quella che noi chiamiamo region 2 (è tutto fatto ma a blocchi), e siamo concentrati per finire la prima corposa demo. Alessio è come sempre un grande con il suo engine, e ci sono tutta una serie di modifiche e sistemazioni che sta completando. Nell'ultimo incontro fatto abbiamo deciso che possiamo aprire le porte al sito appena faremo il primo video, ma questo comporterà chiudere la prima parte del mondo di gioco ed essere sicuri che sia tutto, per il momento, all'altezza dei nostri standard.
Comunque sono contento di come la cosa procede - vorrei solo, a volte, che le giornate fosserò di 36 ore ^_^.

lunedì 26 novembre 2012

Con il Colosso si incomincia

Oggi, dall'ufficio, abbiamo pubblicato la pagina facebook del nostro gioco fatto in Unity.
É ufficiale, si incomincia con la promozione ma non voglio ancora mettere nessun link fino a quando non ci sarà qualche post più corposo e il sito sarà ufficialmente online.

Dal lato dello sviluppo continuo nella mia corsa contro il tempo per finire una prima versione asap, sono in effetti molto stanco ma abbastanza soddisfatto di quello che sta venendo fuori.
Vorrei solo avere più tempo, anche se ne è passata di acqua sotto i ponti, il problema è stato saltare da un progetto a un altro e tornare poi alla programmazione del gioco, che non mi ha permesso di essere efficace come avrei voluto. E poi, in un modo o nell'altro, ci sono sempre bug e problemi in agguato che proprio non ti aspetti.
In particolare quello della compressione della grafica, proprio oggi abbiamo provato a cambiarla forzandola da DTX a PowerVR (PVRTC) e - BUUMM - il gioco sta al momento andando più fluido. E qui devo ringraziare come sempre il mitico texture packer, che mi permette di salvare i file come voglio on-the-fly e di gestire la qualità finale della mia png - la compressione ovviamente altera anche drasticamente l'aspetto finale, ma calibrando le caratteristiche del file, riesco a salvare abbastanza bene le sfumature e il canale alpha.

Ero proprio all'oscuro delle difficoltà di decompressione di certi tipi di file per determinate GPU e mi sa che finiremo per fare del gioco versioni differenti, a seconda della piattaforma di rilascio.
..almeno l'abbiamo scoperto e mi pare ci stiamo muovendo nella direzione giusta, ma la questione della compressione della grafica è davvero una rogna che non mi fa dormire la notte.
Devo essere sincero: si può dire tutto di flash, ma almeno lì caricavi una png e rimaneva tale e quale. Qui è tutto una prova, un limare e un tirare continuo. Sarò anche inesperto, ma il tema è grande come un oceano.
Vero che con la soluzione di cambiare la compressione sembra quella giusta, ma tutto questo tempo dedicato al risolvere problemi a volte è proprio deprimente.
Ad ogni modo ho inserito tutta una serie di bonus la settimana scorsa che, seppur non completa, mi sta dando certe soddisfazioni.
Vado a nanna, a presto con altre news.


venerdì 3 agosto 2012

Stiamo ancora svilluppando e alla grande

Veloci righe sui progressi.
Il gioco in Unity3D per mobile, in ufficio, sta venendo proprio bene, anche se va riempito e raffinato a dovere.
Prima della ferie dovrei chiudere una prima beta ufficiale da cui far uscire la prima versione sugli store.

Ho ottimizzato un sacco il codice e, seppur non sia fluidissimio come vorrei sul mio old samsung 9003, si muove bene da giocare con discreta gioia. Sul S3 di un collega sembra di giocarlo da pc tanto va bene, quasi uguale su un altro samsung di 2 anni fa più potente del mio (ma con meno ram), anche se ogni tanto ha degli scattini - nulla di che, in realtà, ma probabilmente tutta quella grafica a 2048x2048 (6 files... 7... boh, ma a me pare molto) da del filo da torcere al processore.
Devo per dire che mi aspettavo grandi consumi della batteria, cosa che invece non avviene affatto. Meglio così.
Ah, ho scoperto anche un serie di bugs del UIToolkit che, risolti, hanno dato uno notevole sprint alle performance, quindi una grossa pacca sulle spalle al sottoscritto.

Ho imparato un sacco di cose di Unity in questo ultimo mese e devo dire, alla fine, di essere molto contento di quello che sono riuscito a fare e di quello che Unity offre, anche se gradirei mettermi un bel giorno anche sul mio gioco a casa.
A settembre credo partità anche il sito del gioco dell'ufficio e potrò finalmente scrivere il nome e mettere qualche screens. In teoria ci sarà anche una demo giocabile a una fiera all'estero...vedremo.. ancora tutto top-secret.

Con il gioco con Alessio, staimo lentamente modellando le varie regioni del gioco per la demo che speriamo di finire per gennaio.
É un maxi lavoro ma sta venendo bene, Alessio è davvero un ragazzo in gamba e tra modellazione e codice non posso che dirmi fortunatissimo nel poter lavorare con lui.
Settimana scorsa al solito check del mercoledì mattina ho proposto una decina (forse più 8..) enigmi di gioco. Alcuni  non sono piaciuti affatto, troppo macchinosi e complessi da scriptare, ma su altri siamo entrambi convinti che possano funzionare e rendere il gioco davvero piacevole, quel misto di action e puzzle che piace a noi.

Devo finire decentemente la regione 1 (la seconda) e poi mettermi sulla terza, ma sono davvero affaticato e seppur lavori bene e tante ore notturne alla fine produco molto poco - scarto roba e a volte sono poco preso da quello che faccio che non mi soddisfa affatto.
Poi devo anche completare loghi, texture, pezzi vari... tanta roba, e contemporaneamente altre idee di business mi vengono a galla.
Quanto meno manca poco alle ferie, 1 sett e poco più. Poi dormo, promesso a me stesso.
..e vabbè, anche un po' di parkour, ovvio. ^_^

martedì 22 maggio 2012

Prima regione - design end

Dopo 2-3 (forse 4, ormai ho perso il conto delle ore di sonno investite..) settimane di intense nottate, la prima regione del gioco a casa è pronta, a livello di progettazione e design. Non ho disegnato tutto, mi sono aiutato con foto e immagini dalla rete, ma penso di aver fatto un buon lavoro. Oddio, in tutta franchezza mi dispiace non essere riuscito a fare più disegni. ma il tempo e la forza fisica sono variabili determinanti per la chiusura quindi mi sono dovuto adattare per raggiungere lo scopo. Ora bisogna vedere come sarà la modellazione finale, ma ho fede.

I progressi dell'ultimo periodo sul gioco a casa sono però molto più rilevanti, con nuove feature dell'engine, l'acquisto del dominio per il mio team + la creazione del logo + il sito + google apps varie.
Nulla è ancora pubblico, ma presto dovremmo aprire anche le nostre porte al mondo, forse attendendo un primo video del gioco, anche perché favorirebbe la credibilità e la forza del progetto.

Nel frattempo finirò la scritta del logo, il disegno mi piace molto, e trovare un design migliore per il sito (per il momento molto base).Ci siamo quasi anche sul nome del gioco che, onestamente, osa un po' e vuole essere anche un pelo provocatorio, ma averlo scelto mi mette di buon umore e mi piace parecchio, quindi per adesso sono fiero della mia idea.

mercoledì 11 aprile 2012

Aprile a non finire

Ho postato poco in questi mesi, ma non sono stato (tanto) fermo - più o meno.
Con il progetto con Alessio ho avuto dei ritardi e diversi impegni familiari mi hanno rallentato e, ad essere onesti, il lavoro in ufficio mi aveva pure un po' demotivato.. In effetti devo dire che negli ultimi anni ho un forte senso di demotivazione e depressione che, onestamente, mi lascia perplesso.

Cmq sia, sono di nuovo sulle locazioni con un Alessio un po' seccato dalla mia "pigrizia" mentre in ufficio sono fisso da un po' sul mio gioco con Unity.
Ho riscritto moltissimi script e sono passato in diversi casi da Unityscript al C# per varie esigenze tecniche e perché l'autocompletamento e alcuni optional lo rendono a tutti gli effetti più comodo.

Ho anche ottimizzato diverse texture e vedere correre sul mio android a (credo, dato che non sono molto convinto della certezza del calcolo) le mie piattaforme con tiles da 128*512 (da texture 1024*1024) a velocità pazzesca  mantenendo il framerate intorno ai 60 fps mi ha dato una certa gioia.
Certo, messi poi nemici, vari elementi grafici, il player.. il valore si è ridotto ma al momento sono sui 32-40 (la variazione è in effetti curiosa) e spero di non scendere oltre, ottimizzando altre cose e sistemandone di altre ancora.
In ufficio abbiamo anche bene o male completato la struttura del sito quindi a "breve" si comincerà a vedere la luce e a parlarne ufficialemente.
Oddio c'è ancora tanto lavoro da fare e come al solito mi son imbattuto nei problemi più disperati, tra bugs sui materiali, compressione delle texture, elementi vari che non funzionavano bene come pensavo, scoperte folgoranti ma si sa, il lavoro dello sviluppatore di videogiochi è anche questo: sbattere la testa a ripetizione.
Ho anche messo un mega elemento 3D di sfondo che, per quanto la cosa sia "banale" in se, mi ha molto gasato. Ora però devo cambiarne la gestione, dato che prima era 2D.
Inoltre, altra cosa spassosa per me, è l'innumerevolo quantitià di sfx che ho registrato negli ultmi mesi nei buchi che mi avanzavano. Certo, mi manca un microfono pro come si deve, però in alcuni casi sono proud-of-myself.

Pensavo di aprire un thread sul forum di Unity con un link a Github e rendere il pezzo dello scrolling delle piattaforme open a tutti, così da vedere come viene valutato, criticato e nel caso corretto dato che ho alcune perplessità anche se effettivamente funziona bene. Mah, vedremo, è pur sempre roba di lavoro e devo focalizzare già su tante cose.

venerdì 2 dicembre 2011

E adesso anche Android

Settimana scorsa ho comprato finalmente il mio device Android, un Samsung S SCL (super Lcd) i9003.
Mi pareva un buon acquisto, avevo già perso la stessa offerta al media world uscita intanto anche al trony pare, e per 10 euro in meno ho fatto "le corse" alle 8.35 e me lo sono preso. Bello arrivare 5 minuti dopo l'apertura e vedere gente uscire con una scatola nera in mano che ti sembra proprio quella di un telefono e la strizza e il nervoso che salgono.
Poi scopri di essere solo il 16° esimo e ti rilassi, più o meno, mentre paghi.

Il device è una versione ridotta del Galaxy S, qui un confronto, ma nel manipolarlo sembra ottimo. L'ho aggiornato a Gingerbread ed ero contento. Poi sono andato nel market per scaricarmi Cordy, Angrybots e altri giochi/demo realizzate con Unity e, orrore, scopro che molte non sono disponibili per il mio device.

Mi aggrappo a google e faccio una ricerca e scopro che, apparentemente, il device ha una GPU (manco citata nelle specifiche tecniche sul sito Samsung e questo mi puzza...) vecchiotta, del 2005.
La cosa mi rode e non poco ma sono sorpreso che, toh, Shadow gun è invece installabile e pure Guerilla Bob.
Il primo tecnicamente è una bomba, se vogliamo, il secondo è comunque ottimo e quindi non capisco come mai per esempio Cordy non sia scaricabile e neppure AngryBots. Poi vedo che Sleepy Jack installabile, dagli stessi di Cordy, e non capisco ancora di più - btw: adesso non lo è più.. maybe prob di compatibilità.
Guerilla Bob si gioca bene, Shadow gun non c'è light e quindi non posso provarlo.

Vabbè, mi dico, tanto devo farci girare le mie app, non importa.
Installo la mia app e non parte. Splash screen di Unity e poi crash.
Lancio Unity, verifico che sia ok il gioco, ricompilo e installo ma ancora crash. Provo un'altra mia, esporto la demo ufficiale di Penelope che ho scaricato dal market e funziona, ma non la mia apk, quella proprio no.
Faccio una scena con un cubo, compilo e installo: nulla.
Il sudore e le bestemmie piovono.

Posto sul forum e attendo cercando altri dati sull'hardware. Cpu è ARMv7, quindi son tranquillo, la Gpu da wikipedia pare supporti OpenGL 2.0 quindi tutto regolare, penso, anche se datata.
Ricevo la prima risposta da uno che mi dice di scaricare l'editor aggiornato 3.4.f3 (però il mio che ha l'aggiornamento automatico checkato non mi ha avvertito dannato lui) e che c'è un baco apparentemente conosciuto.
Ok, peccato che la connessione a casa sia lentissima dal week end e quindi fino alla mattina dopo nessun download ultimato.

Ma intanto mi risponde un altro che sembra saperne e mi dice che l'HW è datato e vecchio e vergognoso e che non ho speranze. Insomma, mi dice che il device è monnezza e che è follia comprare sta roba e sperare di farci girare giochi decenti: «As people would say it: What you invested in was a pimped dumbphone. It won't do much more than other dumbphones did beyond the 'work oriented support' thats cpu bound and it will for surely not bring you into the 'mobile gaming' range of 2010+».
Che poi io avevo installato la mia app su un cavolo di finto android cinese e pure partiva.. mah.
Cmq il tipo gentilmente mi risponde ancora e sembra davvero competente con un sacco di dati "alla mano", mi risponde ancore che la GPU fa cagare e che è pure OpenGL 1.0.
Uhm, ma se wikipedia dice 2.0? Glielo faccio presente, e lui insiste che è un errore e BLA-BLA-BLA-monnezza-BLA-BLA. Insomma, me la devo incartare.

Mi dice di comprare il Samsung Galaxy S originale o quello SuperLCD che, però, gli faccio notare essere il mio. Peccato aver scoperto che tra nazioni diverse possa cambiare l'HD dei device.
Glielo scrivo e lui, giustamente, si lamenta.
Cmq lo ringrazio dei numerosi dettagli e chiarimenti, e anche di avermi dato dell'idiota, perché da idiota dovevo quantomeno verificare che l'hw fosse decente.
Con molta tristezza mi ha aperto gli occhi e di conseguenze pianifico una riconsegna al negozio.
Intanto la giornata passa, ne parlo al lavoro, sono sorpresi ma i dati parlano chiaro: no apk installabile.

Poi finalmente ho l'editor unity 3.4.f3 e faccio una prova, tanto per concludere il giro.
Setto ARMv7, OpenGL 2.0 lancio il mio progetto.
Ecco l'apk..
ecco che si installa.
Ed ecco che funziona. Tuttto. Anche AngryBots.
FUNZIONA.

Fine della storia e grazie Infostrada per la connesione lenta proprio quando serviva.
Tra parentesi è pure uscito World of goo per android ma non è supportato dal mio device. Però si può scaricare la demo e anche acquistare direttamente dal sito dei 2dBoy.
Fatto, installato e va alla grande.
Leggendo dai commenti della news pare che la selezione dei device nelle app del market sbagli spesso. Ok protezione anti crash e anti-fregatura, però un po' mi fa incazzare anche perché ho perso un sacco di tempo.