InnoGames spiega come uno strumento di Profiling può migliorare le prestazioni delle app

InnoGames spiega come uno strumento di Profiling può migliorare le prestazioni delle app

Quando si sviluppano videogiochi per sistemi mobile bisogna stare attenti a sfruttare pienamente e nei modi opportuni le poche risorse di calcolo a disposizione

di pubblicata il , alle 13:01 nel canale Videogames
InnoGames
 

La facilità d'uso e la moltitudine di funzioni presenti all'interno di Unity oggi lo rendono uno dei motori di gioco più diffusi, spiega Gero Gerber, sviluppatore di InnoGames. Quando si sviluppano videogiochi per dispositivi mobile bisogna stare molto attenti, ancor più che per le console o i PC, a come vengono impiegate le limitate risorse che si hanno a disposizione.

L'app, infatti, potrebbe girare a un frame rate insoddisfacente o addirittura incappare in sospensioni forzate da parte di iOS perché sta usando troppa memoria. Per questi motivi, gli sviluppatori di giochi mobile devono accuratamente osservare come l'app utilizza le risorse a disposizione. Per farlo occorre stabilire delle correlazioni tra i dati di profiling e quello che sta accadendo nel gioco, il che rende "obbligatorio il profiling regolare", sottolinea Gerber. In altre parole, per occhi accadimento di gioco bisogna monitorare il tipo di consumo che avviene in termini di risorse di calcolo.

Con il Profiler integrato in Unity gli sviluppatori possono controllare in maniera immediata se il gioco ha problemi di prestazioni senza doverlo installare su un dispositivo fisico. Ma in certi casi, continua Gerber, potrebbe diventare necessario andare più in profondità, ovvero verificare il punto di vista di iOS relativamente al rendimento dell'app.

Xcode Instruments

A tale scopo, Xcode Instruments è uno strumento di profiling nativo di Apple e si può scaricare gratuitamente dal sito Apple dedicato agli sviluppatori. Lo strumento, tra le altre cose, permette allo sviluppatore di selezionare quale elemento monitorare tra utilizzo della CPU, allocazioni di memoria, chiamate di sistema, e molto altro ancora.

Xcode Instruments raccoglie una grande quantità di dati durante il Profling dell'app, consentendo di esaminare il comportamento dell'app in modo dettagliato. Per esempio, consente di ottenere lo stack di chiamate per ogni allocazione di memoria o di tenere traccia di tutte le chiamate di sistema e di quali elementi le innescano.

Xcode Instruments fornisce una mole così consistente di dati da rischiare di disorientare lo sviluppatore. Proprio per evitare che ciò si verifichi Apple ha introdotto una serie di funzioni all'interno delle sue API proprio per rendere più facile la navigazione nel codice, come i "Signposts". Ne ha parlato specificamente in occasione del WWDC 2016.

Per far capire come funionano i Signposts Gerber fa un esempio a partire dal progetto di esempio Endless Runner che può essere scaricato gratuitamente dallo Unity Asset-Store. In questo semplicissimo gioco, impersonando un gatto i giocatori devono correre per la strada e raccogliere oggetti e monetine sotto forma di lisca di pesce mentre evitano ostacoli come bidoni della spazzatura, cani, e altro.

Nell'esempio, i Signposts sono stati usati per tutte quelle volte che il gatto raccoglie una lisca di pesce oppure si scontra con un ostacolo. Lo strumento è configurato in modo da mostrare consumo della CPU, allocazioni di memoria e "Points of Interest", il quale costituisce un ulteriore strumento che serve a raccogliere tutti i Signposts personalizzati.

Xcode Instruments

Per far dialogare sistema di Profiling di Apple e gioco si può usare il metodo kdebug_signpost che si trova in sys/kdebug_signpost.h, il quale accetta un parametro di tipo "code" e altri quattro di tipo "argument". Il primo parametro viene usato per discriminare tra monetine e ostacoli, ad esempio associando 0 alle prime e 1 ai secondi. Xcode Instruments permette anche di associare delle stringhe alle variabili in modo da avere un'idea chiara e istantanea di cosa faccia ciascuna riga di codice.

Il metodo si può modificare per gestire eventi e intervalli. Omettiamo il codice in questa sede, e ci limitiamo a dire che queste funzioni servono a determinare eventi con un inizio e una fine, quindi con una durata. Questo perché può essere molto utile tenere traccia di quanto dura un'operazione specifica nell'app e capire in quali punti è stata avviata e terminata, monitorando allo stesso tempo lo stack di chiamate all'interno dell'intervallo.

Xcode Instruments

Quindi, inserire Signposts di tipo evento o intervallo permette di capire quando certi eventi si innescano, quanto spesso si verificano, la loro durata, dove nel codice sorgente l'evento parte o si ferma. Inoltre, con chiarezza evidenziano se in corrispondenza si verificano cambiamenti importanti nel consumo di risorse di elaborazione o in termini di allocazione della memoria.

Gerber si auspica che un sistema di Signposts di questo tipo venga implementato direttamente all'intero di Unity, il che solleverebbe gli sviluppatori dalla necessità di ricorrere a uno strumento esterno come Xcode Instruments.

Gero Gerber è uno sviluppatore di una delle più grandi software house tedesche, InnoGames, che ha sedi ad Amburgo e Düsseldorf. Da 13 anni lavora all'interno dell'industria dei videogiochi, con un passato, tra le altre, in Electronic Arts e Ubisoft. Ha lavorato per franchise importanti come Splinter Cell, Assassin’s Creed, Settlers e BattleForge. Adesso il suo principale strumento di sviluppo è Unity e sviluppa giochi mobile per Android e iOS.

Quanto a InnoGames, invece, si tratta di una software house specializzata in giochi basati sul browser e in giochi mobile. Fra i suoi giochi di maggior successo troviamo The West, Greepolis, Tribal Wars 2, Forge of Empires ed Elvenar. Altri dettagli su InnoGames si trovano qui.

Altri dettagli sul Time Profiler di Instruments, invece, si trovano qui.

0 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info

Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".

La discussione è consultabile anche qui, sul forum.
 
^