El elusivo problema del tiempo de trama


El director técnico de Croteam, Alain Ladawach, quien participó en el desarrollo de Serious Sam y Talos Principle, cuenta cómo logró encontrar la razón de la desaceleración de los gráficos incluso en las máquinas más potentes.

Finalmente, apareció una explicación de por qué algunos juegos se están ralentizando en su PC (y un rayo de esperanza de que dejarán de ralentizarse en el futuro cercano).

Frenos TT


Estabas esperando la próxima parte de tu serie favorita de videojuegos para PC y finalmente salió. Esta vez desea disfrutarlo en su totalidad, por lo que gastó dinero y tiempo en una preparación exhaustiva. Reemplazó el procesador, instaló una tarjeta gráfica ultramoderna, agregó más RAM; demonios, incluso compró RAID en un SSD. El juego debería ser sencillo desde el protector de pantalla.

El pedido anticipado finalmente se desbloquea y acaba de completar la instalación. Con nerviosa anticipación, comienzas el juego por primera vez. Hasta ahora todo bien, funciona a 60 cuadros por segundo. O al menos eso es lo que dice el contador de cuadros del sintonizador GPU. Pero algo está mal. Haces movimientos bruscos y caóticos con el ratón. Correa a izquierda y derecha, y luego el juego ... comienza a disminuir! Maldición, ¿cómo es esto posible? ¿Cómo puede reducir la velocidad a 60 cuadros por segundo?

Si esto nunca te ha sucedido, entonces esto puede parecer ridículo. Pero si los ha experimentado, lo más probable es que odie los frenos con todo su corazón. Frenos en juegos. Este no es un buen "retraso". No es una velocidad de fotogramas baja. Estos son solo "frenos" que ocurren a altas velocidades de cuadros en máquinas ideales y súper rápidas. ¿Qué es, de dónde vienen y cómo deshacerse de ellos? Déjame contarte una historia ...

Frenos, suavidad, velocidad ... ¿son lo mismo?


Los videojuegos se han estado ejecutando a 60 fps desde la época de las primeras máquinas recreativas en los años 70. Por lo general, se espera que el juego se ejecute con la misma frecuencia que usa la pantalla. Esto fue antes de la popularización de los juegos 3D, en los que por primera vez se hizo aceptable una velocidad de fotogramas reducida. En los años 90, cuando las " tarjetas 3D " (como las llamábamos antes de que se convirtieran en " GPU ") comenzaron a reemplazar el renderizado de software, la gente jugaba a 20 fps, y 35 fps se consideraba un valor decente para las batallas serias en la red. No estoy bromeando

Hoy tenemos autos súper rápidos y "por supuesto, pueden trabajar a 60 fps ". Sin embargo, el número de usuarios decepcionados por la velocidad de los juegos de usuario nunca es mayor. ¿Cómo es esto posible? El problema no es que los juegos no puedan correr lo suficientemente rápido, ¡sino que se ralentizan incluso cuando pueden correr rápido !

Si lees diferentes foros de juegos, seguramente encontrarás mensajes similares:

imagen

Puede pensar que estos son problemas únicos, pero mire las estadísticas de las consultas de búsqueda de Google:

imagen

¡En los últimos cinco años, los frenos (tartamudeos) se han convertido en un problema (relativamente) más serio que la velocidad!

(Tenga en cuenta que estos son valores relativos. No significan que, en general, las personas pregunten sobre el frenado más que sobre la velocidad de fotogramas. Significan que las solicitudes de velocidad de fotogramas permanecen en el mismo nivel, y la cantidad de solicitudes de frenos aumenta. , especialmente recientemente).

Una década en busca de la causa de frenos inexplicables


imagen

Es más probable que el paciente esté vivo que muerto, solo se ralentiza un poco más de lo necesario.

La primera vez que encontré este problema fue en 2003. Trabajamos en Serious Sam 2 , y los usuarios comenzaron a enviarnos informes de que probaron algo en un nivel vacío, y que al mover el mouse, los movimientos no fueron suaves. Esto fue acompañado por un patrón muy característico en el gráfico de frecuencia de cuadro, que llamamos el "cardiograma".

Pensamos que en algún lugar del código había un error, pero no pudimos encontrarlo. Parecía que el problema aparece y desaparece al azar: después de reiniciar la aplicación, reiniciar la máquina ... y luego el jugador cambió alguna opción de velocidad y desapareció. Luego, el jugador volvió a activar esta opción, pero el problema no volvió. Parecía un fantasma.

Obviamente, este problema surgió no solo con nosotros. Al observar los mismos problemas en otros juegos, comenzamos a pensar que los conductores tenían la culpa. Pero esto sucedió en tarjetas de video de diferentes fabricantes. Incluso en diferentes API (OpenGL, DirectX 9, DirectX 11 ...), lo único que tenían en común era que aparecían en diferentes máquinas, en algunas escenas ... a veces.

imagen

Nessie, Bigfoot ... casi tan evasivo como el problema con el "cardiograma".

Lanzamos algunos juegos más, pero este extraño comportamiento aún apareció y desapareció. Molesto a algunos usuarios, y recomendamos que cambien las opciones de velocidad, a veces ayudaba, a veces no. Así es la vida, ¿no?

Pero un día, en un gran día de invierno a principios de 2013, mi colega Dean me llamó para ver otro ejemplo de este problema, que podía reproducir de manera relativamente estable en ese momento. Esta vez, el problema surgió del nivel de Serious Sam 3 . Experimentamos con opciones en esta escena hasta que de repente me di cuenta. ¡Entendí cuál era la razón! Y ella era muy simple, no es de extrañar que se escapó de todos durante una docena de años.

Al cambiar solo una opción muy simple del motor del juego, pudimos hacer que este problema aparezca y desaparezca en esta escena en particular. Pero de inmediato se hizo evidente para nosotros que se requeriría mucho esfuerzo para su solución de alta calidad. Esfuerzos no solo de nuestra parte, sino también de todo el ecosistema de juegos de PC: programadores de controladores de GPU, desarrolladores de API, proveedores de sistemas operativos, todos.

Déjame explicarte.

¿Cuál fue la razón todo este tiempo?


Me gustaría mostrarle un ejemplo de una escena de Serious Sam 3, que Dean y yo exploramos hace cinco años. O incluso mejor: usando la escena de prueba de Serious Sam 2 como ejemplo, en el que la vimos por primera vez. Pero, desafortunadamente, después de reemplazar el "hierro", esta bestia evasiva puede pasar a otra escena. Tengo una escena de The Talos Principle en la que recientemente logré reproducir este problema, y ​​grabé algunos videos que me permitieron analizarlo con más detalle.

Pero antes de comenzar, asegúrese de ver el video a 60 fps. Para ver los ejemplos a continuación, cambie a 1080p60, como se muestra en la imagen:

imagen

Para ver videos a 60 fps, cambie a YouTube a 1080p60.

Si hace todo bien, y su computadora y navegador web pueden mostrar video a 60 fps, entonces el video a continuación debe reproducirse sin problemas y sin frenos. Si esto no es así, es por eso que estamos hablando de ello: muchas otras aplicaciones también demuestran este comportamiento, no solo los juegos. Por ahora, solo puedo recomendar que intentes ver el video en otra máquina, o simplemente leer el texto.


Verifique, verifique, uno, dos, tres ... Debería ver este video en 60 fps.

Ahora vamos al grano. Si encuentra frenos, lo más probable es que se vea así:


« 60 fps». «».

, «», 60 fps. - , , « ». , ( , - «» ). « », , - , . 60 fps, « ». ( , , .)

(«»), YouTube . (), . , . , , …



, ? ? , ?..

, , , !

?


. «», 1/20 , :


60 fps, «». 20 .

: -, — , . -, - - — «» , , .

: — — — «»… «» . , ?

(, ( 1/10 000 ), : , …

image

. — , — «».

… , «» ( ). , , , ( ).

… «», « », ?

, , . ( , , , .)


-, - … , , . NTSC, 60 , 60 fps, PAL/SECAM, 50 , 50 fps. - « ».

, — , " ", ZX Spectrum, C64, Atari ST, Amstrad CPC 464, Amiga .. , , , 100% , .

«». , , . , Sonic The Hedgehog Sega Genesis , , 16 . PAL NTSC, 50 fps 60 fps. , .

— , PC «» — , . , . 3D-, , . , — , … . , .

, . ( , «» - , .)

, , . 1/60 (16,67 ), 10 /, 1/6 . 1/60 , 1/30 (33,33 ), 1/3 ( «») , .

? , . , . , . 90- ( «35 fps » ), . ( , GPU) «» «», . 3D-, . , .


GPU, "". , GPU - , GPU , , GPU . , GPU, « », GPU . - . — - . , , .

, , , … . . , :

image

. — , — «».

, . 16,67 ( 1/60 ), , , . () , 24,8 ( 1/60 ), , … , , 10,7 , , - . ( .)

: , , , , PC. , 60 fps, - , . - GPU 60 fps .

— , («») .

, , — , .

. ( , — , ?), :


«», , .

«». «» , !

? Serious Engine sim_fSyncRate=60. , « , 60 fps». — , ! , — , .

? ?

?


— . . , 60, 60 — PC : - , GPU/… — .

, , , — - . ?

, / , .

, ? , — !

, . , API. , , , . , , API , : , . , , .

?


, . API. Vulkan API VK_GOOGLE_display_timing, proof of concept. , Android Linux.

API. ? , .

, Croteam , , .

, , The Talos Principle .


. « », . , , , , .

«»


image

? , . - , ?

« », . , , , , , Skype .. 3D. , , . .

. , — ?


, GPU , , . , GPU . , , . , .


. :) GPU . , GPU . , .

Source: https://habr.com/ru/post/es419043/


All Articles