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.
- ¿Qué es mejor para la ingeniería informática? SRM o UIT Burdwan?
- ¿Cuál es la diferencia entre Computer Engineering y Information Tech? en NIT Kurukshetra?
- ¿Se puede estudiar ingeniería informática después de la ingeniería mecánica?
- ¿Los estudiantes de informática en promedio cobran menos que otros ingenieros?
- ¿Por qué las CPU son más importantes en el renderizado final que las GPU?
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).