Differenza velocità oggetti tra due dispositivi

di il
2 risposte

Differenza velocità oggetti tra due dispositivi

Ciao ragazzi!

Sto realizzando un gioco per dispositivi 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.

Sicuramente non è un problema di prestazioni del dispositivo in quanto One Plus 5 è nettamente migliore di One Plus One. Inoltre tutte le altre app mi girano alla perfezione.

So che è una domanda molto vaga, ma sinceramente non ho proprio idee. Potete aiutarmi in qualche modo?

2 Risposte

  • Re: Differenza velocità oggetti tra due dispositivi

    Per spiegare meglio il concetto ho caricato un video su Youtube: https://www.youtube.com/watch?v=X4DwD-DLOI

    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.

    Inizialmente ho pensato che magari l'app prendesse come dimensioni di schermo quelle del dispositivo corrente e che i due dispositivi avessero risoluzioni differenti cosicchè risultassero valori molto diversi di lunghezza e larghezza tra un dispositivo e l'altro.

    Poi mi sono ricordato che notavo differenze anche nelle animazioni, le quali non sfruttano lunghezza e larghezza max del dispositivo.
    E infatti come potete vedere nel video, anche la velocità in cui cambia il colore della scritta è molto più veloce nel primo dispositivo rispetto al secondo.

    Quello che infine ho notato è che nel secondo dispositivo la stessa app risulta tutta molto scattosa, eppure l'app è la stessa ed è da escludere che sia un problema legato alle prestazioni del secondo dispositivo in quanto è un problema che si verifica solo con le mie app.

    Ho quindi pensato che forse il problema sia legato alla questione dei frame al secondo, anche se non mi convince neanche questa opzione.
    Comunque riporto la parte di codice che dovrebbe gestire i frame al secondo:
    public void run() {
            Rect dstRect = new Rect();
            long startTime = System.nanoTime();
            while(running) {
                if(!holder.getSurface().isValid())
                    continue;
                float deltaTime = (System.nanoTime() - startTime) / 10000000.000f;
                startTime = System.nanoTime();
    
                if (deltaTime > 3.15){
                    deltaTime = (float) 3.15;
                }
                game.getCurrentScreen().update(deltaTime);
                game.getCurrentScreen().paint(deltaTime);
                Canvas canvas = holder.lockCanvas();
                canvas.getClipBounds(dstRect);
                canvas.drawBitmap(framebuffer, null, dstRect, null);
                holder.unlockCanvasAndPost(canvas);
            }
        }
    Qualcuno ha altre idee in proposito su come risolvere?
  • Re: Differenza velocità oggetti tra due dispositivi

    Aggiornamento: ancora non ho capito qual'è il problema.

    Ho fatto test anche con i dispositivi virtuali, e le tempistiche 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
    [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.
    Avevo già escluso sia un problema di risoluzioni o di differenze di schermi.

    Francamente adesso non mi viene in mente nient'altro
    L'unica possibilità credo sia quella di provare ad utilizzare un Framework differente e vedere se risolvo cosi; ma vorrei comunque capire dove risiede il problema

    Spulcerò un altro po per vedere se mi viene in mente qualcosa, nel frattempo se qualcuno ha intuizioni varie è il benvenuto
Devi accedere o registrarti per scrivere nel forum
2 risposte