Android, meglio 30 o 60 fps?

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Android, meglio 30 o 60 fps?

Messaggio da Barnack »

1- aggiungi l'opzione 30/60 fps
2- non può essere peggio, anzi, così puoi far funzionare il programma anche su cellulari più lenti
3- imposta un moltiplicatore generale per tutti i timer, gli spostamenti etcc pari a 1 se gli fps sono 30, pari a 0.5 se gli fps sono 60. Così otterrai lo stesso risultato.
Comunque mi spiace deluderti ma temo che quelli che tu chiami fps siano gli step della room

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Android, meglio 30 o 60 fps?

Messaggio da Solid Snake »

cp94 ha scritto:Ma modificando vspeed e hspeed, sei sicuro di dover variare anche il valore di gravity?
Alla fine gravity dovrebbe essere una costante, in teoria..
Si è una costante, ma una cosa è togliere 4 a 30 fps un'altra è toglierlo a 60 fps.
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: Android, meglio 30 o 60 fps?

Messaggio da doom13 »

Solid Snake ha scritto:Mi sembra strano che non funziona, il codice praticamente scala quei valori in base al room_speed:

Codice: Seleziona tutto

gravity = 2;//60 fps
//Se room_speed=60;
gravity = 2 * (60/room_speed);//2*(60/60)=2*1=2
//Se room_speed=30
gravity = 2 * (60/room_speed);//2*(60/30)=2*2=4
Ci deve essere qualcos'altro che devi scalare, controlla!

Poi nel tuo codice:

Codice: Seleziona tutto

if(room_speed == 30)
{
    gravity = 4;
    vspeed = -26;
    hspeed = 6;
}
else if(room_speed == 60)
{
    gravity = 2;
    vspeed = -18;//-26/2=-13 non -18
    hspeed = 4;//6/2=3 non 4
}
Quei valori non sono a caso, li ho scelti con delle prove per mantenere una velocità all'occhio simile sia a 30 fps che a 60 fps (si Barnack, lo so che in realtà è la room_speed che è ben differente dagli fps ma per comodità li considero la stessa cosa).
Se divido semplicemente per due quei valori, non ottengo un salto uguale.

Quello che io vorrei è che a 30 fps il salto segue una certa traiettoria in un secondo, a 60 fps deve seguire la stessa traiettoria e sempre in un secondo.
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Android, meglio 30 o 60 fps?

Messaggio da Tizzio »

il deltatime considera il tempo trascorso dall'ultimo frame, quindi se fai i calcoli in base a quei valori (o deltatime medio) ti crei una costante moltiplicativa e la applichi a qualunque variabile dipendente dal tempo e eviti questi calcoli sbagliati sui presunti 30/60fps fissi (col metodo di solid snake su alcuni dispositivi il gioco girerà a 20 fps e lo vedranno a rallentatore)

Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Android, meglio 30 o 60 fps?

Messaggio da Solid Snake »

Si infatti il calcolo dovrebbe essere fatto col delta_time...
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: Android, meglio 30 o 60 fps?

Messaggio da doom13 »

Allora, arieccomi.
Ho fatto qualche prova e non ho concluso niente. Prima di tutto ho sostituito le variabili built-in con alcune mie, hsp, vsp e grav che aggiorno ad ogni step in questo modo:

Codice: Seleziona tutto

vsp += grav;
x += hsp;
y += vsp;
Al momento del salto setto in questo modo:

Codice: Seleziona tutto

grav = 2;
vsp = -18;
hsp = 4;
Poi calcolo una variabile delta: 60/1000000*delta_time
Se moltiplico i valori al momento del salto per delta succedono cose strane, per l'esattezza vengono fuori dei salti uno diverso dall'altro.
Cosa sbaglio? C'ho perso tutta la sera matonna :furiosomedio:
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Kami_Ender
Membro
Messaggi: 62
Iscritto il: 08/06/2015, 12:18

Re: Android, meglio 30 o 60 fps?

Messaggio da Kami_Ender »

Premessa:
Non so se può aiutare né se ci sei riuscito, ma ci provo, ho fatto un po' di prove e ci sono riuscito.

Allora, potresti rimettere le built-in (gravity,hspeed,vspeed), nel CREATE EVENT di ogni obj che ne ha bisogno; poi dichiari una variabile che rappresenti lo stesso valore (Es. per gravity sarà grav, per hspeed sarà hsp e per vspeed sarà vsp) Poi nello STEP EVENT dello stesso oggetto dichiari una variabile locale (che di solito io chiamo delta) e le assegni questo valore:

Codice: Seleziona tutto

var delta ;
delta = 60/1000000 * delta_time ;
Poi assegni alle variabili "originali" il valore della variabile "clone" moltiplicato per la variabile delta.
Questo per ogni oggetto che usa variabili dipendenti dalla room_speed. {Esempio pratico qui sotto}

CREATE EVENT

Codice: Seleziona tutto

///Ovviamente sostituisci i miei valori coi tuoi
//Variabili "originali"
gravity = 0.2 ;
hspeed = 4 ;
vspeed = 5;
//Variabili "clone"
grav = 0.2 ; //stesso valore di gravity
hsp = 4 ;  //stesso valore di hspeed
vsp = 5 ; //stesso valore di vspeed
STEP EVENT

Codice: Seleziona tutto

var delta ;
delta = 60/1000000 * delta_time ; 
gravity = grav * delta ;
hspeed = hsp * delta ;
vspeed = vsp * delta ;
And so on. Spero di esserti stato d'aiuto :cappa: :cappa:

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: Android, meglio 30 o 60 fps?

Messaggio da doom13 »

Grazie del suggerimento kami. No, non ho ancora risolto perchè sono stato impegnato in altro. Appena posso proverò e ti farò sapere.
:cappa:
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Kami_Ender
Membro
Messaggi: 62
Iscritto il: 08/06/2015, 12:18

Re: Android, meglio 30 o 60 fps?

Messaggio da Kami_Ender »

Okappa, figurati, fammu sapere ;)

Rispondi

Chi c’è in linea

Visitano il forum: Bing [Bot] e 45 ospiti