2012-12-11 10 views
8

Probabilmente è stato chiesto prima, ma non riesco a trovarlo da nessuna parte ...perché solo 60 fps sono veramente fluidi in cocos2d?

In video, 24 fps e qualsiasi cosa sopra è liscia. Cocos2d sembra essere liscio solo quando è 60 fps o forse un po 'meno. Qualche cosa tra 30 e 50 non è certamente liscio, il contatore di fps non sembra accurato ...

Perché è questo? O solo io ho questa situazione?

risposta

25

Ci sono in realtà diversi motivi per questo comportamento, e non è solo cocos2d ma un effetto visto in qualsiasi motore di gioco in ambienti con vertical synchronization (VSYNC) abilitato. Su iOS VSYNC è sempre acceso, su PC di solito hai la possibilità di spegnerlo per migliorare i framerate se sono costantemente al di sotto della velocità del monitor al costo di screen tearing. In genere gli LCD come i dispositivi iOS aggiornano il display a 60 Hz, consentendo un massimo di 60 fps.

Cocos2D 1.x per impostazione predefinita utilizza la classe CADisplayLink per gli aggiornamenti, Cocos2D 2.x utilizza esclusivamente CADisplayLink. CADisplayLink fa sì che gli aggiornamenti siano sincronizzati con la frequenza di aggiornamento dello schermo. Significa che una notifica viene inviata quando lo schermo ha finito di estrarne il contenuto.

Quando si ottiene 60 fps tutto va bene. Ma se il gioco non riesce a rendere un frame in tempo per eseguire il rendering di 60 fps, riceverà il suo prossimo aggiornamento solo dopo il completamento del prossimo aggiornamento della schermata. Questo dimezza effettivamente il framerate non appena il framerate scende appena al di sotto di 60 fps - o in altre parole non appena il ciclo di aggiornamento dell'& impiega più di 16.666 millisecondi per essere completato. Ciò significa che puoi avere solo framerate digitali di 60, 30, 20 e 15 fps (60 divisi per 1, 2, 3 e 4) su iOS con gli aggiornamenti CADisplayLink.

L'effetto è abbastanza evidente perché un framerate che oscilla tra 60, 30, 20 e 15 fps - anche solo per una frazione di secondo - non si sente liscio principalmente perché è così instabile - l'instabilità è ciò che notiamo come "non liscio". Se il tuo gioco è influenzato da questo, potresti scoprire che limitare il framerate a 30 fps renderà il gioco più liscio. Hai anche più tempo per aggiornare il materiale di rendering & tra i frame.

È la stabilità del framerate del film a 24 fps che è concepito come "liscio", ma anche i registi hanno imparato a evitare scene in cui il framerate limitato diventa troppo ovvio. Ad esempio, evitano come i giochi fanno molto spesso: scorri di lato, cioè movimenti laterali della telecamera o movimenti laterali di oggetti che passano accanto alla telecamera.

Sarai sorpreso di quanto i film possano essere più fluidi quando guardi The Hobbit: è il primo film di successo a 48 fps. Noterai immediatamente quanti più "reali" e "realistici" sono i personaggi del film. Per avere un'idea, dai un'occhiata a questo unofficial 48 fps The Hobbit trailer.

Ciò che cocos2d visualizza come fps non è una rappresentazione accurata dell'interruttore da 60 a 30 a 20 e 15 fps ma il framerate medio su più fotogrammi.Pertanto, quando cocos2d stampa "45 fps" significa metà del tempo in cui il gioco mostra 30 fps, l'altra metà a 60 fps rispetto ai fotogrammi della coppia precedente.

+1

come sempre, un tesoro di informazioni utili. thks. – YvesLeBorg

+1

hai dimenticato 20fps (60/3) – Sebastian

+0

ah, ovviamente ... aggiornato – LearnCocos2D

2

Due problemi principali.

Prima corrisponde alla frequenza di aggiornamento del display - qualsiasi altra cosa e si ottiene movimento irregolare che l'occhio/cervello è in grado di individuare. Almeno essere a un multiplo di esso.

Il secondo è il motion blur. Il film/video tende ad avere il motion blur, il che rende l'osservatore invisibile al vedere il movimento continuo.

+0

Vedo, questo ha senso. Ma i monitor desktop hanno spesso anche una frequenza di aggiornamento di 60 Hz. Non ricordo di aver notato problemi con i giochi desktop che hanno un fps inferiore a 50. Forse mi sbaglio ... È tipico dell'iPhone? – yurki

+0

I monitor da scrivania di solito sono un po 'più alti di così in questi giorni. Inoltre alcuni schermi LCD più economici si confonderanno un po '. Altrimenti niente di particolarmente speciale in corso. – JasonD

+0

Ho notato lo sfarfallio con i monitor 60Hz – user739711

Problemi correlati