Pagina 4 di 4

Re: Dealer's Life - Your pawn shop

Inviato: 30 nov 2017, 13:50
da Fiz
Ciao a tutti!

Dopo più di un mese sono di nuovo qui a raccontarvi come procedono i lavori! Ne sono successe talmente tante che non so dove cominciare... Ok, partiamo col dire che abbiamo appena rilasciato in beta la nuova versione 0.86 e che comunque prima di lei avevamo rilasciato la 0.85 i primi giorni di novembre. Le novità sono innumerevoli, ma procediamo con ordine...

Una delle cose più importanti, introdotta fin dalla 0.85, è stata la totale eliminazione della possibilità di perdere incontrando personaggi ricorrenti. Lo avevo detto: più di così le eliminiamo del tutto... e le abbiamo eliminate, sostituendole con grosse penalità (che in ogni caso non escludono la possibilità di perdere per bancarotta). Perchè lo abbiamo fatto? Beh perchè prima di tutto da una parte avevamo ancora un discreto numero di giocatori imbufaliti per le poche (ma comunque presenti) occasioni di sconfitta improvvisa, ma soprattutto dall'altra ci siamo resi conto che questa cosa della sconfitta improvvisa diventava sempre meno divertente man mano che aumentavamo la lunghezza della partita, quindi ci siamo risolti a riprendere in mano il design generale del gioco e ritoccarlo. Un'utile lezione che ci servirà per il futuro: mai restare fossilizzati sulle proprie idee e rifiutare di cambiarle per una questione di principio. Se il gioco cambia durante lo sviluppo (ed e inevitabile che lo faccia) è necessario che tutti i suoi elementi si adeguino per tornare a formare qualcosa di coerente.

Ed è sulla scia di questa assunzione che la 0.85 è proseguita con modifiche ed aggiustamenti volti proprio a rendere l'esperienza più piacevole e meno frustrante. Giusto per citarne un paio abbiamo aumentato il numero di volte in cui la banca ti può salvare dalla bancarotta portandolo a 3 (come fossero le vite di un videogioco vecchia scuola :lol: ) e abbiamo anche aumentato il potere del Lavacervelli rendendo possibile utilizzarlo in più occasioni: quest'ultima modifica garantisce grandi vantaggi al giocatore ma dato il limitatissimo utilizzo giornaliero che si può fare del Lavacervelli, il decidere se e quando usarlo diventa ancora più complicato :twisted: E poi ho in mente un paio di sviluppi aggiuntivi su questo tema su cui sto lavorando in questi giorni, ma ora è troppo presto per rivelare qualcosa a riguardo... :roll:

Le novità più succulente e corpose ad ogni modo arrivano con la nuova 0.86, con cui portiamo enormi miglioramenti in fatto di performance! Dopo infinite sessioni di documentazione e testing, abbiamo scoperto le seguenti cose riguardo Unity:

- il metodo GameObject.Find è il male, ma lo è ancora di più GameObject.FindObjectOfType. Mai utilizzare metodi del genere in Update o in parti di codice che vengono usate spesso, piuttosto è consigliabile utilizzarli nella fase di inizializzazione (Start o Awake) o ancora meglio creare delle variabili serializzate da valorizzare nell'editor. Se proprio non si riesce a fare a meno di usare Find, la cosa migliore resta quella di chiamarlo da un oggetto specifico per cercare dei figli sotto di lui con this.transform.Find, così almeno si limita la ricerca a una sottostruttura e non all'intera struttura della scena.

- la cartella Resources è il male pure lei, come candidamente dichiarato in un fantastico tutorial ufficiale di Unity:

Immagine

:shock: :o :shock: :?
Che poi è tutto da capire eh... noi siamo stati fino adesso con la Resources strapiena di textures e le cose comunque funzionavano... Ma a quanto pare il metodo ideale per la gestione di asset assegnati dinamicamente via codice è l'utilizzo degli AssetBundle. Inizialmente li avevo sempre pensati come un metodo utile per il trasferimento di asset di gioco da server a client, ma a quanto pare li si può usare anche per il recupero di contenuti in locale e pare piuttosto efficiente.

- Il Garbage Collector di Unity è una schifezza, in pratica è come se non funzionasse. Come tutti sappiamo, ogni volta che si crea un nuovo GameObject nella scena un tot di memoria viene ovviamente occupato, e fin qui tutti d'accordo. La questione però è che se si chiama Destroy() su quell'oggetto la memoria non viene liberata!! :shock: Questo porta ad un accumulo lento e tragicamente costante della memoria occupata, accumulo che si protrae fino al primo cambio di scena, in occasione del quale tutta la memoria viene liberata e la nuova scena caricata. Peccato che il nostro gioco giri sempre sulla stessa scena... :? Potete ben immaginare il nostro sgomento quando lo abbiamo scoperto, sgomento che si è protratto fino a quando abbiamo scoperto la soluzione finale: Resources.UnloadUnusedAssets(), un fatastico metodo che nonostante il nome non c'entra nulla con la cartella Resources. Semplicemente fa quello che dovrebbe fare il GC ma va chiamato manualmente. :cry: Inutile dire che inserendo anche solo una chiamata a questo metodo nel flusso del gioco le cose sono cambiate drasticamente.

Immagine

Notare il leggero scalino verso il basso della texture memory in occasione della singola call di Resources.UnloadUnusedAssets()... Che dire, niente più rallentamenti, alte temperature e crash dopo lunghe sessioni di gioco!

Ma passiamo ad altro e parliamo di nuovi oggetti! Con la 0.86 scende infatti in campo il fantastico Item Pack # 4 interamente dedicato ad oggetti da nerd! Si tratta ovviamente del mio item pack preferito tra tutti quelli che abbiamo rilasciato finora, sia per la natura nerd sia anche, e soprattutto, per la loro fantastica grafica, per la quale dobbiamo ringraziare la nostra collaboratrice russa contattata tramite UpWork.

Immagine

Immagine

Sfortunatamente il nostro rapporto di lavoro con lei si è già concluso per via di suoi impegni extra lavorativi che non le consentivano di garantire il rispetto delle scadenze... purtroppo si tratta di cose che possono capitare su UpWork, ma la cosa non ci ha scoraggiati e siamo già in trattativa con un buon numero di altri candidati.

Allo scopo di arricchire le partite abbiamo anche introdotto una nuova categoria di rarità, dando la luce agli oggetti Mitici! Estremamente rari da trovare ed anche estremamente preziosi, gli oggetti mitici renderanno il late game molto più interessante, soprattutto se affiancati dalla nuova grossa opera di bilanciamento di cui si è occupato il mio socio che ha reso l'evoluzione della generazione procedurale degli oggetti (e conseguentemente del loro prezzo) molto più avvincente ed allineata alla progressione del gioco. Aumentando la profittabilità iniziale ed incrementando in generale sia i prezzi che i costi nel late game contiamo di rendere il gioco più fruibile facilitando il superamento dei primi livelli di fama in un tempo piuttosto breve, per poi aumentare progressivamente la difficoltà nelle fasi più tarde della partita.

Ultimissima notizia ma forse più importante di tutte, sempre grazie al supporto di UpWork abbiamo ufficialmente concluso la traduzione del gioco in Spagnolo e a brevissimo anche quella in Tedesco!! In beta è già presente lo Spagnolo, ma contiamo di integrare il Tedesco nei prossimi giorni per poi giungere in produzione con ben due nuove lingue disponibili. Inizialmente avevamo preso un pò sotto gamba questa cosa del tradurre il gioco in diverse lingue essendo ingenuamente confidenti nel fatto che:

- con l'inglese avremmo già coperto una buona area di mercato
- la community ci avrebbe facilmente aiutato nelle traduzioni in altre lingue

quando invece abbiamo scoperto che:

- con l'inglese e l'italiano come uniche lingue disponibili si copre principalmente il mercato di (guarda un pò) USA, Inghilterra e Italia, mentre tutti gli altri paesi rimangono un ordine di grandezza al di sotto
- la community ci ha aiutato nelle traduzioni, ma proprio perchè si tratta di un aiuto volontario, disinteressato ed effettuato nel tempo libero, ci siamo accorti di non poter fare affidamento sulla community per questo task se volevamo tirare fuori dal cappello qualcosa di concreto in tempi ragionevoli (poi magari per giochi più affermati e con una community più numerosa questa cosa non è valida, ma per noi è stato così)

Abbiamo quindi concluso che fosse il caso di fare qualcosa: ci siamo rivolti ad UpWork e per una cifra praticamente irrisoria abbiamo ottenuto la traduzione spagnola dell'intero gioco (unitamente ad un sano proofreading di quella inglese... :roll: ) in meno di una settimana! :o Ad averci pensato prima... :cry: In ogni caso, riscontrato questo successo abbiamo deciso di darci dentro con le traduzioni e terminate queste prime due abbiamo già intenzione di dare il via al francese, al russo, al portoghese, e chi più ne ha più ne metta! Considerando i costi di ogni traduzione siamo piuttosto confidenti di rientrare dell'investimento grazie a una buona espansione del mercato :mrgreen: Anche se per avere la piena conferma di questo dovremo aspettare le prossime settimane e vedere come evolve la base d'utenza.

Direi che è tutto per questo aggiornamento! Spero che la lettura sia stata di vostro gradimento! A risentirci presto! :mrgreen: