¿Por qué los juegos creados para consolas no pueden ejecutarse de forma nativa en PC?

Gran pregunta!

Entonces, estaba a punto de entrar en una larga discusión sobre cómo sus CPU son diferentes y no podía ejecutar el mismo software porque tienen diferentes conjuntos de instrucciones, que era el caso solo hace una generación de consolas. Pero, al hacer una investigación rápida para respaldar mis afirmaciones, descubrí que, en realidad, el hardware de las diferentes plataformas tiene una enorme superposición ahora. Por ejemplo, tanto la PS4 como la Xbox One usan el Jaguar (microarquitectura), que usa los mismos conjuntos de instrucciones que los escritorios y servidores Intel estándar. Supongo que Sony y Microsoft han adoptado este enfoque para facilitar la transferencia de juegos desde alguna otra plataforma a sus consolas.

Entonces, en teoría, podrían ejecutar los mismos programas (juegos), al menos desde la perspectiva de los binarios y las CPU. Lo que eso significa es que los principales obstáculos son los hechos de que todos tienen diferentes sistemas operativos y especificaciones de hardware.

El hardware no es un gran problema siempre que tenga hardware que coincida o supere las especificaciones de la consola. Sin embargo, una advertencia: los compiladores de PS4 y Xbox One probablemente tienen una funcionalidad especializada que permitiría a los programas hacer uso de hardware muy específico que está garantizado para las consolas, como capacidades específicas de GPU y administración de memoria. Si intentas ejecutar esas instrucciones en una PC estándar, fallarán.

Pero, ¿qué pasaría si tuvieras un juego que no utilizara ninguna instrucción específica de hardware de la consola, lo cual es teóricamente posible? El obstáculo final y más grande es el hecho de que las consolas y las PC tienen diferentes sistemas operativos. Esta es básicamente la misma razón por la cual el software de Mac y PC no es intercambiable. El sistema operativo es responsable de proporcionar una plataforma consistente y confiable para que los programas se ejecuten. Lo hace a través de una interfaz de programación de aplicaciones (API), que el programa llama para hacer cosas como darle al jugador una interfaz de usuario y dibujar gráficos en 3D. El sistema operativo también proporciona estándares en términos de lo que espera cuando inicia un programa, como dónde comenzar: el punto de entrada del proceso. Debido a que cada sistema operativo es diferente, tienen API completamente diferentes y, por lo tanto, los programas deberían compilarse por separado para cada sistema operativo.

Hay formas de evitar esto, aunque no parece que los fabricantes de consolas tengan prisa por apoyarlos. Por ejemplo, si la consola proporciona una VM, que podría ejecutar Java o Python, el mismo código se ejecutaría en todas partes. Sin embargo, nunca he visto eso en una consola, y no hay muchos incentivos financieros para que los fabricantes de consolas creen una o abran sus sistemas para que sea posible.

Me di cuenta de que Xbox One es compatible con DirectX 11.2, lo que facilitaría mucho la transferencia de juegos entre Xbox y PC, pero todavía tendría que compilarlos por ahora.

(Descargo de responsabilidad: nunca he realizado ningún desarrollo de consola, pero tengo una licenciatura en Ingeniería Eléctrica / Informática y he estado jugando con consolas y dispositivos durante décadas, así que esto es una conjetura, pero es una conjetura educada).

Ellas hacen.

¿Cómo crees que probamos / ejecutamos / compilamos en el trabajo? El 90% del tiempo está en PC.

Pero hay diferencias entre las versiones de desarrollo de PC y un juego terminado. Las PC tienen requisitos específicos de menú de interfaz de usuario: ¿cuándo es la última vez que jugaste un juego de consola donde puedes seleccionar resoluciones de 640 × 480 a 4k? Nunca. Juegos de PC: todo el tiempo.

Algunos tienen que hacer eso.

Nivel inferior hay un montón de cosas específicas de la consola: inicio de sesión, emparejamiento, redes, almacenamiento de archivos, parches, etc. Todo eso se hace por plataforma. Microsoft te da una lista de amigos. También lo hace Sony. ¿Dónde está la PC? Bueno, escríbalo: obtenga un servidor que aloje las API y una base de datos y haga todas las llamadas para agregar, encontrar y eliminar amigos y descubra qué significa todo eso.

Es trabajo. Y, por lo general, se unen para un juego de un solo disparo porque el costo de la infraestructura es alto.

Cosas como steam ayudan mucho, ya que sus API son compatibles con gran parte de eso, pero no todos quieren asociarse con Valve.

Porque cada máquina, desde su dispositivo móvil hasta su consola, desde su escritorio hasta su televisor inteligente, desde su plataforma de juegos portátil hasta su horno de microondas, tiene una unidad llamada CPU (unidad central de procesamiento). Esta unidad puede tener diseños y capacidades drásticamente diferentes y admite un conjunto de instrucciones básicas, conocidas como el conjunto de instrucciones de esa máquina. En pocas palabras, estas instrucciones son, cada una de ellas, un pulso de varias cargas eléctricas que entran en el circuito de la CPU y, al pasar por las puertas de la CPU varias puertas, determina de manera determinista un resultado en el estado de la CPU.

No, debido a que cada CPU tiene un diseño electrónico diferente, lo que significa que cada uno tiene un conjunto diferente de circuitos y puertas y, en consecuencia, un conjunto de instrucciones diferente, no es posible que una instrucción (básicamente un pulso de varias cargas eléctricas al mismo tiempo) cause el mismo resultado en una CPU cuya arquitectura difiere de la que pertenece la instrucción.

Hablando en un nivel superior, también existe la intermediación del sistema operativo. Proporciona un conjunto de funciones para que el software en ejecución (el juego, en este caso) pueda interactuar con el hardware real.

Esas dos diferencias son las que hacen que una lista de instrucciones de código de máquina que hacen que un software sea inútil cuando se lleva directamente a otro sistema. Por lo tanto, de la misma manera que no esperaría que su televisor inteligente pudiera ejecutar God of War directamente, no puede esperar lo mismo desde su computadora de escritorio o portátil.

Debido a que los juegos hechos para la consola tienen una extensión diferente … el juego de la consola está hecho para ser ejecutado por otro hardware a diferencia de la PC … pero algunos softwares pueden ejecutar juegos de consola en la PC