Filosofia/arquitectura Xbox

Bueno, tengo una de esas preguntas conceptuales un tanto raritas:

No se porqué, últimamente me ha dado por buscar info sobre la arquitectura y funcionamiento de la xbox, ya que siendo un 99.9% un pc consigue unos rendimientos acojonantes para los videojuegos. Entiendo que tiene una especie de micro sistema operativo optimizadisimo del que se deriva el x.d.k. y que los juegos utilizan de manera directa ahorrandose operaciones propias de un ssoo pero que no son necesarias para un sistema inminentemente multimedia. ¿Esto es asi? Es decir:

1. ¿es una capa software (compilada y en ejecución) que funciona a modo de driver entre el juego y el hardware o es simplemente un conjunto de librerias que proveen de funciones para que a la hora de compilarse el juego sea capaz de manejar el hardware de manera autónoma?

En base a esta suposición (a que es una capa) quisiera plantear otras dos preguntas:

2. ¿Si se hiciese un linux ultra optimizado para las funciones multimedia xbox se podrían hacer juegos linux que le sacasen el mismo partido a la xbox?

3. Y si por un casual yo tuviese el codigo fuente del crysis (ejemplo de juego que requiere maquinon) y fuese un genio del linux, ¿me podría hacer un nucleo optimizadisimo linux con el que podria adaptar el crysis para sacarle un rendimiento de locura?.

He buscado por internet, soy ingeniero industrial y se por donde van los tiros (o eso creo =), pero esto tan específicamente informático no me acaba de entrar en la cabeza.

Un saludin, feliz navidad y prospero año nuevo!!!
Hola, respecto a tus preguntas:

1. ¿es una capa software (compilada y en ejecución) que funciona a modo de driver entre el juego y el hardware o es simplemente un conjunto de librerias que proveen de funciones para que a la hora de compilarse el juego sea capaz de manejar el hardware de manera autónoma?


Precisamente esta es una de las posibles definiciones de so, una "capa de software" entre el hardware mas puro y el desarrollador de aplicaciones, como consecuencia, el programador no tiene que calentarse la cabeza en tareas laboriosas como gestionar la memoria o los dispositivos de e/s, simplemente usa las "llamadas al sistema" (herramientas de las q nos provee el so) para hacer lo que le de la gana.

Son las empresas de desarrollo las que usando ciertas librerias y el propio so de la consola, crean una compilacion (el producto) que incluye tanto el so, como las librerias, como, por supuesto, el propio software y datos del juego. Por tanto, si, es completamente autónomo, el juego actua como un disco de arranque.

2. ¿Si se hiciese un linux ultra optimizado para las funciones multimedia xbox se podrían hacer juegos linux que le sacasen el mismo partido a la xbox?


Por supuesto, de echo, tras mucho pulirlo, podrias sacar incluso mejor partido. (hay que recordar que el so de xbox deriva de un win2000 embebido) y no es ningun misterio que linux está mucho mejor diseñado que windows y es más facil sacarle el rendimiento.

3. Y si por un casual yo tuviese el codigo fuente del crysis (ejemplo de juego que requiere maquinon) y fuese un genio del linux, ¿me podría hacer un nucleo optimizadisimo linux con el que podria adaptar el crysis para sacarle un rendimiento de locura?.


Pienso, que el verdadero problema no lo tendrias en el propio nucleo del sistema operativo, si no, en el software que quieres correr. Por mucho que optimices el so, es mas que posible que ni el mismo ejecutable de ese juego pudieras meterlo en memoria (es una forma de hablar,xbox tiene mem. virtual), ni que decir, de las texturas, etc...

Tienes que cambiar tu punto de vista, el verdadero reto en este caso, no es desarrollar un nucleo que saque mas partido al hardware(ganarias rendimiento, pero no harias milagros). Lo que hacen las empresas cuando hacen un port de un software ya escrito, es, adaptar el propio código y datos del juego (limitar la inteligencia artificial, los efectos de sonido, la calidad de las texturas, los personajes en pantalla, y un largo etc.) al conjunto hardware-so que tienen. Esto es una tarea muy laboriosa, generalmente hay que reescribir mucho código para poder ejecutar un software que ha sido desarrollado para otra plataforma.

Espero haberte aclarado un poco.
Saludos.
Muchas gracias, que rápido!!

Me lo has dejado clarito, clarito. De hecho has respondido mejor que yo preguntado, porque con lo del crysis yo me referia a hacer un linux para mi pc, que es potente, pero no como para sacarle 50fps sostenidos al crysis.

No obstante entiendo, por lo que dices, que en este caso, en el que el crysis me va aceptablemente bien, pasaría a ir realmente bien por pulir el so. Y, entiendo, que si lo que se necesita es realizar el milagro de meterlo en la xbox, pues ya habria que recortar el propio juego, ya que las matemáticas no dan.

Y una pregunta mas: ¿lo de que el so lo traiga el propio juego integrado, no significa nada no? Es decir: ¿podría tener el so en el disco duro y que el juego viniese sin él o cada juego necesita su propio so tuneado?

Y de nuevo, muchas gracias!!
Hola otra vez!

Pues mira, si hablamos de tu PC ejecutando Crysis, la cosa se complica bastante, ya que generalmente los motores de los juegos de PC, se desarrollan en base a la API del directx (en su defecto opengl), esto es otra historia. Por si no estás familiarizado con esto, lo que generan tanto los directx como opengl, es un "acceso directo" al conjunto [memoria-tarjeta grafica-procesador] y los desarrolladores trabajan directamente con las funciones que les proveen dichas APIs (puedes llamarlas librerias) que estan optimizadas para el procesamiento multimedia.

Que un sistema operativo esté optimizado para esto siempre es una ventaja (vease, compilaciones del kernel linux para uso específico). En el supuesto de que metieses a una docena de programadores a los que no le da mucho el sol, tu PC, y el código tanto de linux como de crysis en una habitacion y les "obligases" a que hagan correr crysis "a toda mecha" en tu pc, estoy seguro que notarias una gran mejoria, pq lo estarian optimizando para tu máquina en concreto, de echo, esto es lo que ocurre con las consolas.

Date cuenta, que hoy dia, si un programa no funciona lo suficientemente bien en un pc relativamente antiguo (digamos 2 años), sale mas barato comprar un pc nuevo que optimizar el programa, con esto, quiero decirte que llevamos desde hace varios años (masificación de ordenadores) arrastrando un relativo desperdicio de recursos en el caso de los PCs (mano de obra mas cara que hardware).

Y una pregunta mas: ¿lo de que el so lo traiga el propio juego integrado, no significa nada no? Es decir: ¿podría tener el so en el disco duro y que el juego viniese sin él o cada juego necesita su propio so tuneado?


Si, podria, pero... sabes pq eso no se hace asi?
La vida de un cacharro de estos suele ser bastante larga (7 u 8 años), esto, en la informatica, es una autentica eternidad. Por lo que yo se (en el caso de xbox y supongo q en el de otras consolas), cuando un estudio va a desarrollar software para una consola, el fabricante facilita a los programadores lo que se denomina "kit de desarrollo" que, en el caso de la vieja xbox, incluye: compiladores para varios lenguajes, datasheets, y ademas el SO. Este kit con el paso de los años, se va puliendo y actualizando, es decir, se optimizan los compiladores y el SO evoluciona, se implementan nuevas funciones o simplemente es mas rapido y mas estable. Si tu fuerzas a que el SO esté en el disco duro, estarias estancando el sistema a la primera version o probablemente necesitarias actualizar ("tunear" como tu bien dices) el so instalado en disco con cada juego nuevo que saliese.

Bueno, perdona por el ladrillazo, me pongo algo pesao.
Si puedo ayudarte en algo mas...
Un Saludo.
Muchisimas gracias, todo se ilumina ahora en esta zona del cerebro

Bueno, perdona por el ladrillazo, me pongo algo pesao.


Seria un ladrillazo si no estuviese bien escrito y con las ideas tan claras: Einstein decía que entiendes algo realmente cuando eres capaz de explicarselo a tu abuela.

Un saludo!
Resumiendo, el rendimiento que obtiene Xbox es infinitamente superior al que obtiene un PC con esos mismos componentes.

Yo también pienso que es un hardware brillante, pero no te comas la cabeza con eso de las superoptimizaciones ;-).
Entonces, (y es una cosa que he pensado muchas veces) si los juegos de PC hicieran de disco de inicio de modo que este se pusiera en "modo consola" interponiéndose entre PC y juego las capas justas de software, se le sacaría un rendimiento brillante al harware que tenemos, no??

Esto que digo no interesa a las empresas pero es técnicamente posible? o directamente no es posible??
Si, seria posible, pero el principal problema de esto (el mismo que tiene el desarrollo de juegos para PC) es que generalmente, cada PC viene de su padre y su madre, es decir, hay millones de configuraciones hardware distintas en las que el juego debe funcionar, una solucion para esto, es que todos los PCs tuvieran el mismo hardware, algo impensable.

Lo que tu comentas, seria, hacer un disco de arranque que incluya un mini sistema operativo, con la unica funcion de ejecutar los juegos, seguro que se ganaba en rendimiento, pero para hacer cualquier otra cosa, tendriamos que reiniciar y cargar otro sistema mas complejo.

Ademas, no se podria exprimir mucho si cada PC mantiene una configuración distinta de hardware.

Otro problema viene dado, porque un PC de hoy dia es una máquina bastante compleja y necesista de un sistema operativo (tambien bastante complejo) para poder hacer un uso completo de todas sus facultades.

De todos modos (esto es una cuestion puramente técnica), si comparamos un PC actual con una consola actual (a nivel de arquitectura) , e hiciesemos lo que tu dices, seria dificil igualar los resultados, date cuenta, que una consola es una máquina de uso específico y diseñada para UN solo fin: jugar, mientras que un PC es una máquina de uso general, que está diseñada para sacar un rendimiento medio en practicamente cualquier cosa que quieras hacer.

Un ejemplo, hablemos de PS2 y si chip E.E. de sony, hace muy poco que un PC ha conseguido igualar el rendimiento de este micro en p.ej. operaciones de punto flotante (importantisimo para juegos), sin embargo, si tratamos de ejecutar cualquier aplicacion p.ej de ofimática, obtendriamos unos resultados muy malos. No se si consigo de captes la idea.

Un saludo y feliz año para todos.
Básicamente es el resumen de los hechos :-). En PC no se puede prescindir de esas capas hasta el mismo punto, ya que por narices necesitamos una capa de software genérica (drivers) para controlar el hardware, ya que no hay 2 PCs iguales.

Por otro lado a las consolas les meten un turbo en todo aquello que suponga aprovechable para juegos. El ejemplo del Emotion Engine es válido, así como el ancho de banda de los buses de Xbox de 6,4Gb/s que el PC no ha conseguido igualar hasta hace bien poco.

Resumiendo:
¿La consola está hecha para jugar? SÍ
¿El PC? NO, aunque eso no impide que le saquen juegos.
8 respuestas