Autore Topic: Differenza velocità oggetti tra due dispositivi  (Letto 324 volte)

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 38
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Differenza velocità oggetti tra due dispositivi
« il: 15 Gennaio 2018, 19:11:04 CET »
0
Ciao ragazzi!   8-) 8-) 8-)

Sto realizzando un gioco in Java per dispositivi Android basato su un semplice framework (se non erro Switch-Swap-Android) e sto testando l'applicazione su due diversi dispositivi, One Plus One e One Plus 5.

La stessa applicazione su One Plus One mi risulta molto fluida mentre su One Plus 5 mi risulta molto molto scattosa, tutti gli oggetti vanno molto più lentamente e non si riesce a giocare.

Per spiegare meglio il concetto ho realizzato un app di test e ne ho caricato un video su Youtube: https://www.youtube.com/watch?v=X4DwD-DLOIs

Il programma è esattamente lo stesso e fa due cose: muovere un quadrato rosso da sinistra a destra e animare una piccola scritta cambiandone il colore.

Come potete vedere nel primo dispositivo il quadrato arriva dall'altra parte molto più velocemente del secondo. Analogo discorso per la velocità con cui cambia di colore la scritta "vs".

Posso escludere quindi che sia un problema di dimensioni di schermo o di risoluzioni differenti, in quanto l'animazione ha il medesimo problema ed è un oggetto fisso.
Da escludere anche che sia una questione di hardware dei dispositivi in quanto il secondo è molto più performante del primo.

Ho inoltre fatto test anche con i dispositivi virtuali, e le tempistiche del "quadrato rosso" sono tutte diverse.
Inoltre nei dispositivi virtuali, lo stesso dispositivo con diversi test da valori leggermente differenti. Credo dipenda dalla RAM che il pc alloca al programma   ???

Citazione
[TEST]
[Dispositivi Fisici][Non Variano]
One Plus One: 7.6 s ||6.0.1 Marshmallow API Level 23.
One Plus 5: 11.7s  || 8.0 Oreo API Level 26/27

[Dispositivi Emulati API27] [Variano]
Nexus 6P: 23.7s/24s/25s
Nexus 6: 25s/26s/30s
Nexus One: 6.5s
Nexus S: 7.5s

Posso quindi escludere che il problema sia nelle diverse versioni di API, perchè i dispositivi virtuali sono tutti con API 27.


Dovrei poter concludere quindi che:
- non è un problema di larghezza e lunghezza schermo
- non è un problema di risoluzione
- non è un problema di  API
- non è un problema dei dispositivi che uso per fare test, ne di prestazioni

Francamente non mi viene in mente nient'altro   ??? :-(
L'unica possibilità che mi viene in mente è di provare ad utilizzare un Framework differente e vedere se risolvo cosi; ma vorrei comunque capire dove risiede il problema  f38

Voi cosa ne pensate?  O:-)

Offline berpao

  • Utente junior
  • **
  • Post: 116
  • Respect: +9
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Play Store ID:
    Paolo Bersan
Re:Differenza velocità oggetti tra due dispositivi
« Risposta #1 il: 16 Gennaio 2018, 08:48:00 CET »
0
Ciao, non so.
Io personalmente non mi affiderei molto sulle performance dei virtual device; dipendono molto da quello che sta facendo il pc in quel momento e secondo me potresti addirittura avere tempi diversi lanciando lo stesso emulatore in 2 momenti diversi. Sarebbe meglio fare la prova con una altro dispositivo hardware con su la 8 per essere sicuri. Le prove che farei io sono:
1) prova con altri device fisici 6 e 8.
2) Le impostazioni sviluppatore sono le medesime tra i due device fisici? Credo che possano influenzare i tuoi test
3) i tempi che hai rilevato sono in debug? se si, prova senza debug; io una mia app trovo grosse latenze durante il debug, che non ho eseguendo la app al di fuori di esso

E' solo qualche idea... ciao
Paolo

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 38
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Re:Differenza velocità oggetti tra due dispositivi
« Risposta #2 il: 16 Gennaio 2018, 18:38:03 CET »
0
Ciao Berpao
I valori dei virtual device oscillano giustamente in base a cosa il pc sta facendo, ma sono comunque molto diverse le tempistiche.
Comunque ho provato a disabilitare le opzioni di sviluppatore ma i tempi sui dispositivi fisici sono sempre gli stessi.
I dispositivi fisici erano scollegati quindi niente debug.

Cosa intendi con su 6 e 8?

Offline berpao

  • Utente junior
  • **
  • Post: 116
  • Respect: +9
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Play Store ID:
    Paolo Bersan
Re:Differenza velocità oggetti tra due dispositivi
« Risposta #3 il: 17 Gennaio 2018, 17:18:15 CET »
0
Ciao,
Citazione
Cosa intendi con su 6 e 8?

niente volevo solo dire se si riusciva a fare qualche prova con altri device fisice con su android 6 o android 8 per avere effettivamente la conferma che non siano davvero le api, escludendo i test sui vistual device. Nel frattempo ho dato un occhio al video che hai postatoma ho avuto la sensazione che non fosse più lento o scattoso, ma semplicemente che il secondo quadrato rosso abbia più strada da percorrere; non sono un esperto di animazioni e quant'altro quindi magari sto dicendo cavolate, ma non è che i 2 device hanno densita di display diverse e l'effetto è dovuto a queste caratteristiche differenti? come fai a fare il movimento? puoi postare il codice o parte di esso?
Ciao
P

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 38
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Re:Differenza velocità oggetti tra due dispositivi
« Risposta #4 il: 17 Gennaio 2018, 21:26:17 CET »
0
Ciao,
niente volevo solo dire se si riusciva a fare qualche prova con altri device fisice con su android 6 o android 8 per avere effettivamente la conferma che non siano davvero le api, escludendo i test sui vistual device. Nel frattempo ho dato un occhio al video che hai postatoma ho avuto la sensazione che non fosse più lento o scattoso, ma semplicemente che il secondo quadrato rosso abbia più strada da percorrere; non sono un esperto di animazioni e quant'altro quindi magari sto dicendo cavolate, ma non è che i 2 device hanno densita di display diverse e l'effetto è dovuto a queste caratteristiche differenti? come fai a fare il movimento? puoi postare il codice o parte di esso?
Ciao
P

Eh purtroppo non ho tutti questi device fisici per fare altri test.
Prova ad osservare l'animazione della scritta "vs". Ha tempistiche differenti anche se non tiene conto della lunghezza del display.
Il movimento lo faccio con le basi Java della programmazione ad oggetti.
Codice (Java): [Seleziona]
public class GameScreen extends Screen {
    private Animation vsAni;
    public static Robot robot;
   
    public GameScreen(Game game) {
        super(game); //Inizializzo Objects
        robot = new Robot();

        //Definisco le animazioni
        long vsTime = 100;
        vsAni = new Animation();
        vsAni.addFrame(Assets.vs1, vsTime + 300);
        vsAni.addFrame(Assets.vs2, vsTime);
        vsAni.addFrame(Assets.vs3, vsTime);
        vsAni.addFrame(Assets.vs4, vsTime);
        vsAni.addFrame(Assets.vs5, vsTime + 1400);
        vsAni.addFrame(Assets.vs4, vsTime);
        vsAni.addFrame(Assets.vs3, vsTime);
        vsAni.addFrame(Assets.vs2, vsTime);
        vsAni.addFrame(Assets.vs1, vsTime + 300);

    }


    @Override
    public void update(float deltaTime) {
        robot.update();
        vsAni.update(10);
    }



    @Override
    public void paint(float deltaTime) {
        Graphics g = game.getGraphics();
        g.clearScreen(Color.WHITE);
        g.drawBitmap(Assets.robot, robot.r.left, robot.r.top);

        g.drawBitmap(vsAni.getImage(), 190, 350);
    }
}
Codice (Java): [Seleziona]
public class Robot {
    private int speedX = 0;
    private int leftRobot = 0;
    private int topRobot = 0;
        public static Rect r = new Rect(0, 0, 0, 0);

    public void update() {
        speedX = +1;
        r.set(leftRobot, topRobot, leftRobot+70, topRobot+106);
        if (speedX != 0) { leftRobot += speedX; }
    }

}

Offline berpao

  • Utente junior
  • **
  • Post: 116
  • Respect: +9
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Play Store ID:
    Paolo Bersan
Re:Differenza velocità oggetti tra due dispositivi
« Risposta #5 il: 18 Gennaio 2018, 00:16:21 CET »
0
Ciao,
ho provato a cercare il framework che hai menzionato (Switch-Swap-Android) ma non ho trovato granchè, puoi girarmi il link del framework giusto per dargli un occhio? Inoltre, nel codice che hai postato mi sembra di capire che il framework non l'hai usato, giusto? se è così, hai provato a chiamare le varie animazioni in un thread specifico (magari inserendole in un runnable). Non vorrei che il problema sia il risultato di eseguire tuitto nel main thread...
Purtroppo la mia esperienza è limitata in queste cose e posso solo  darti qualche idea...
Ciao
P

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 38
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Re:Differenza velocità oggetti tra due dispositivi
« Risposta #6 il: 18 Gennaio 2018, 20:43:15 CET »
0
Ciao!

Il framework è questo qui: Day 5: The Android Game Framework: Part I - Kilobolt

Nel codice che ho postato credo ci sia solo un riferimento alle animazioni che fa parte del framework