¿Por qué los videojuegos son tan fluidos, rápidos y confiables en comparación con las aplicaciones de software?

Es una cuestión de prioridades diferentes. Con los videojuegos, el precio básico de admisión es:

  • Debe completar todo su trabajo 30 veces por segundo (o en algunos casos, 60)
  • No debe bloquearse en absoluto durante las horas de uso.

Si no tienes ambos (al menos, para juegos de consola), no tienes un juego. Casi todas las decisiones en el desarrollo de un juego se destinan al servicio de esos dos objetivos finales. El arte es magnífico, pero ¿hace que el juego funcione a 12 fps? O será mejor que optimices, o el arte será arrojado, y a veces, simplemente estás fuera del jugo de la optimización, por lo que la primera bala gana y el arte desaparece.

Aplicaciones? Si hace clic en un botón del mouse y obtiene una respuesta en 100 ms (10 fps), está muy bien . Y a nadie realmente le importará si la aplicación tarda un poco más que eso. O mucho más Por lo tanto, generalmente nadie paga por el trabajo que debe hacerse para mejorarlo.

(Esta es una sobregeneralización, pero se entiende la idea).

Ambas respuestas son completamente correctas hasta donde yo sé, sin embargo, hay una cosa más en el aspecto semi-técnico de las cosas que me gustaría señalar. Ampliando principalmente la idea del “sistema cerrado”.

Por lo general, el 50% -80% de la computación de un videojuego depende de la geometría (puede variar en el juego, por supuesto, pero me estoy refiriendo principalmente a los títulos AAA con gráficos llamativos y qué no, donde hay muchas transformaciones sucediendo en el juego). Mismo tiempo). Curiosamente, los problemas geométricos suelen ser bastante costosos desde el punto de vista informático, ya que la gran mayoría de ellos implican cargas de datos al mismo tiempo. Entonces, ¿cómo pueden ser tan rápidos de calcular?

Pues no lo son. Si alguna vez codificara un juego o renderizara algo que se actualiza continuamente (10-20 bolas giratorias (objetos 3D), por ejemplo) solo usando la CPU, se sorprendería de lo lento que se siente. Incluso renderizar 100-200 sprites (objetos 2D) que simplemente se mueven hacia arriba y hacia abajo puede causar algunos problemas en un amplio conjunto de CPU.

La clave aquí es la GPU que está detrás. Las GPU están diseñadas digital y electrónicamente para hacer ese tipo de transformaciones y representaciones realmente muy rápido. Así que esta es una pieza de hardware dedicada que sirve a los juegos de manera óptima. Ahora compare esto con la CPU que no está necesariamente optimizada para nada en particular.

Por supuesto, hay muchas cosas sucediendo bajo el capó y no tengo el conocimiento requerido para proporcionar una respuesta mucho más técnica. Me encantaría ver la respuesta de alguien que tenga una experiencia más profunda en el asunto.

La respuesta simple a esa pregunta es porque están diseñados de esa manera. Por ejemplo, League of Legends necesita ejecutarse al menos a 30 Fps para ser jugable, de lo contrario pueden surgir problemas. Por otro lado, una aplicación como Fireworks o Photoshop no necesita tanta velocidad porque no hay nada que pierda o que no pueda deshacer si hay problemas de retraso.

Comentario gracioso: ¿Has probado Civilization Beyond Earth?

Respuesta semi-técnica:
Para reducir el uso de energía y el calor, la mayoría del software es asíncrono, donde:

El software le dice al sistema operativo que quiere recibir clics del mouse
El software hace algo
El sistema operativo interrumpe el software para decirle que se produjo un clic
El software maneja el clic
Con suerte, el software termina todo lo que estaba haciendo antes.

Los videojuegos son sincrónicos:

El software pregunta si se produjo un clic del mouse desde la última vez que preguntó
Si es así: maneja el clic del mouse
El software actualiza la escena
El software renderiza la escena
Volver al principio

La razón por la cual el software normal es menos confiable es principalmente errores en Windows que guardan incorrectamente el estado al interrumpir, no el software. Si cambia a Linux, encontrará mucho menos congelamientos / bloqueos aleatorios.

Además, el software normal se libera cuando funciona, mientras que los juegos se prueban en gran medida para detectar errores para evitar trampas.