Originariamente inviato da
fracarro
Questo è un punto di osservazione interessante, non a caso rientra nella frammentazione di un ecosistema come quello di Google.
L'ottimizzazione, personalmente la concepisco da un punto di vista complessivo, ovvero sia per quanto riguarda la parte hardware, sia per quanto riguarda la parte software (il programma che gira sopra l'hardware, come appunto quello di un OS), sia per quanto riguarda il supporto terzi (in questo caso i giochi e le varie apps).
Se fossi uno sviluppatore in gamba ed avessi a disposizione la miglior piattaforma di sviluppo software, sarei capace di spremere ogni singolo bit di quell' hardware.
Ora, considerando per un attimo l' ottimizzazione hardware e considerando anche il tempo che vorrò tenerlo (ad esempio un 3 anni), personalmente (e in questo momento del 2015) tenderei a scegliere quello più equilibrato, che mi garantisca buone prestazioni anche nel lungo periodo (e che non mi faccia sentire di avere un hardware vecchio dopo neanche 3 mesi di utilizzo).
Anche perchè se domani, uscisse l'ultimo gioco in graficona (pensiamo ad un RR4 con l' ultimo UnrealEngine) infarcita di tutti i filtri grafici (che si trovano su schede video da PC o da Console) ed effetti di questo mondo, mi piacerebbe che quella famosa parola che in gergo vien definita come GPGPU, vedesse il mio hardware attuale, non invecchiare di "10 anni", solo per dare adito a quel male che si chiama marketing e deleterio della psicologia di massa (ovvero, generare confusione con millemila numerini).
Quale può essere un idea di ottimizzazione hardware in questo senso, quella di un Sony xperia Z3 Compact (tra gli smartphone), oppure quella di un Nexus 9 (tra i tablet).
Ora se si và a guardare nel dettaglio, un Qualcomm Snapdragon serie 8xx e un Nvidia Denver dualcore, sarebbero per me, quell'ideale di hardware del momento (parlando in ambito Android).
Se si considera l'aspetto dello sviluppo (a parte quel grosso e grasso programma che si chiama Android) dei giochi dell'ecosistema Google, esistono centinaia di combinazioni hardware differenti, drivers differenti e frameworks differenti.
Si capisce che per uno sviluppatore, la cosa inizia ad essere difficoltosa (quanto fastidiosa) da questo punto di vista e la sola emulazione di un OS (il gioco verrà sviluppato su di un comune PC, come si è sempre fatto e con l'utilizzo degli strumenti di sviluppo software) non basta (perchè manca la parte hardware), da quì una prima idea di frammentazione (e di potenziali bugs nello sviluppo giochi per piattaforma Android).
Rientrando in merito, si capisce benissimo che l' hardware messo alla "meno peggio" da questo punto di vista sia un Qualcomm, perchè?
Perchè è quello più usato, quello più seguito e quello "meglio" supportato nel complesso (vedasi gli strumenti di sviluppo DEV e il forum di una stessa Qualcomm).
Un esempio è dato dalla stessa Amazon, che usando hardware Qualcomm (e quindi sfruttando quelle risorse di cui ho accennato poco su), riesce a sfornare alcuni gioiellini come un LILI, un Lost Within, un Til Morning's Light, un Tales From Deep Space.
Oppure parlando di un Nvidia, anche un semplice Trine 2, basta a far capire come un hardware debba essere sfruttato a dovere per regalare soddisfazioni.
E poi diciamocelo pure; sulle console (come sui PC), basta e avanza un FullHD (su schermi da 22" a salire), per godersi a pieno l'esperienza di gioco (e a filtri elevati).
Questo ci spiega un paio di cose; l' inutile rincorsa al multicore e alla più inutile multirisoluzione di oggi.
1) perchè gli smartphone non sono indicati per la produttività (nè tanto meno gli OS mobili).
2) perche la componente fondamentale degli smartphone stà nella GpU (e non come si crede erroneamente nella CpU, basta sempre capire cosa voglia significare quella parola; GPGPU, che nell'aspetto più prettamente ludico, ovvero quello dei videogiochi, è la più importante).
In merito alla piattaforma iOS, si capisce pure come uno stesso gioco sviluppato (per esempio) in Unity3D (o in UnrealEngine), regalerà la soddisfazione maggiore, perchè?
1) avendo a disposizione gli strumenti adatti, sarà più facile spremere l'hardware sottostante ed avere tutti quei filtri ed effetti grafici (inclusi filtri AntiAliasing), che su Android mancano (sempre in virtù della difficoltà nel supportare svariati SoC), quindi giochi da tripla-A e a qualità Console.
2)Nvidia nel mondo Android è un altro caso di "spremitura" e ottimizzazione delle risorse hardware e software (vedasi ultimamente il nuovo strumento di sviluppo software denominato AndroidWorks), seppur per la propria piattaforma hardware, come nel caso di una Apple, riesce a creare vere e proprie Killer Applications.
Morale; non bastano 50mila core di cpu (ne basterebbero anche solo 2-4 in Harvard superscalar, ottimamente gestiti), per avere un riscontro oggettivo sulle reali performance di un SoC (perchè manca la parte fondamentale di quel SoC).
Anche in virtù del fatto, che un hardware come quello di una PSPVita (e con Kernel Unix-Like, tanto per par condicio), può essere un altro esempio di ottimizzazione hardware (guardacaso la GpU lì, è una PowerVr) e software (e nonostante non macini 100.000 su di un antuntu e sia abbastanza vecchiotto), in cui ogni gioco è superiore alla controparte Android (considerando lo stesso gioco preso in esame).
Và da sè, che se sviluppo un gioco per piattaforma Android (e senza un adeguata ottimizzazione per il tipo di SoC), giocherò quasi sempre a dettagli medio-bassi (questo sempre tenendo a mente la famosa frammentazione hardware e software).
Quindi; una texture di un cartellone pubblicitario di un RR3, su iOS sarà con filtri Antialising, con luci in fullHDR (reali e non artificiali, ovvero generate via software), sarà meno pixeloso (sfruttando texture più ricche e definite, quindi di alta qualità) e potrà contare sull' enorme supporto di una Unity Technologies e di una Epic Games (rispettivamente Unity3D e UnrealEngine).
Completamente in accordo con te.