Si se mira en foros y conversaciones sobre videojuegos, muy a menudo surge la idea de que poco menos que la culpa de todos los males de Wii U tiene que ver con usar una arquitectura diferente a la de las otras (PowerPC vs X86/64)… lo cual es bastante erróneo en mi opinión; aquí voy a intentar explicar o aclarar un poco este tema como buenamente pueda… y ya de paso, también nos ayudará a no llevarnos las manos a la cabeza si Nintendo dice que NX usará procesador ARM (típico en móviles y tablets) o incluso un nuevo PowerPC (GC, Wii, Wii U) en lugar de un x86 (lo normal de los PCS y PS4/One)… o si la gráfica en lugar de ser de AMD es de NVIDIA, PowerVR o un nuevo PICA (3DS) de ultimísima generación.
Empecemos por algo perogrullesco pero que nos dará una idea de que las cosas o son más sencillas o más complicadas, pero ciertamente no como aparentan… por ejemplo, PC, PS4 y Xbox One tienen arquitecturas primo hermanas, en las que la mayor diferencia tiene que ver con la velocidad y tipo de RAM, pero que yo sepa, si le metes un disco de PS4 a la ONE, no es que vaya a trompicones por las ligeras diferencias de hardware, es que se acuerda de toda tu familia; habrá que ver qué es lo que hace Microsoft con Windows 10 y ONE respecto a las aplicaciones universales (programas y juegos que servirían para todos/varios dispositivos con Windows 10), pero ahora mismo tampoco pasa nada bueno si le metes un disco de PC a la One.
Tenemos componentes casi calcados… pero que no son compatibles y requieren grupos completos de programación independientes para cada plataforma, esto es porque los juegos no se hacen para PC, Xbox One o PS4… se hacen para Windows 10, Linux, OSX, IOS, Android, el Windows 10 raro de Xbox One y lo que sea que usa PS4, Wii U, Vita o cualquier cosa que se os pase por la cabeza.
Los juegos se hacen para los «sistemas operativos» de cada cacharro y cada uno es de su padre y de su madre, es decir, son diferentes.
«¡Pero los programadores tienen ya trillado los x86 mientras que no entienden ni papa de PowerPC o ARM!.» Falso, por un lado porque están más o menos igual de trillados, PowerPC (GC->Wii U) está un poco de capa caída y no está claro que vaya a levantar el vuelo, pero no es ningún bicho raro (360 y PS3 también utilizaban otra variante distinta a la usada por Nintendo de PowerPC y nadie se quejaba TANTO de lo extraña y desconocida que era la arquitectura) y ARM seguramente es ya más usado que x86 (todos esos millones de móviles, tablets, etc.)… y sobre todo, porque aunque es cierto que cada procesador, incluso dentro de una misma familia, tiene juegos de instrucciones diferentes y que puede que no se parezcan en absolutamente nada… realmente, eso casi que trae sin cuidado. Hoy en día los procesadores son tan complejos que nadie trabaja sobre «metal» (el propio procesador), se usan lenguajes de programación (por ejemplo el famoso C+, Java), o incluso entornos (como los «motores» como Unreal Engine) más inteligibles para las personas, que luego se compilan para que la máquina los entienda en su propio idioma.
Digámoslo de otra forma: tienes a PS4 que habla español, Xbox One italiano y PC portugués… son lenguajes no idénticos, pero parecidos, quizá algo se puede reciclar de uno a otro… mientras que Wii U es totalmente distinta y usa japonés, no sirve de nada lo que uses con las otras… para más inri, los procesadores de las primeras hablan de forma nativa diversas variantes de latín antiguo mientras que los de Wii U usa egipcio faraónico con sus pictogramas y todo. Pinta bien la cosa ^_^U
La forma en que esta cadena funcionaría es, por ejemplo, que yo le hablaría en japonés al sistema operativo de Wii U y el sistema operativo le hablaría en egipcio faraónico a la CPU/GPU…
Es un buen problema… ¡ahí no se entienden ni los latinos ^_^u…!
Entonces, cuando no te entiendes ni contigo mismo, sólo hay una solución… ¡buscarte a un buen intérprete!. A este intérprete hay que hablarle en un lenguaje muy concreto, por ejemplo inglés (en programación sería cualquier lenguaje como C, C+, java o Basic mismo…), pero es capaz de traducir el inglés a los otros idiomas que entienden las consolas y ordenadores… es decir, tú le hablas en inglés al intérprete y este se ocuparía del trabajo más complicado, entenderse con el sistema operativo y los procesadores; por lo que nos hemos quitado un buen problema de encima, ya no hay que saber tantos idiomas, sabiendo uno (es un decir) y un intérprete en condiciones, nos podemos apañar.
«¡Pero si eso fuera así de sencillo, estaríamos jugando al Uncharted 6 en Wii U y Saturn!». Evidentemente es una simplificación… que voy a simplificar aún más.
Tengo a mi intérprete, pero este no es omnisciente ni mucho menos, cacharro nuevo que sale, idioma nuevo que hay que enseñarle y eso requiere bastante esfuerzo y dinero… entonces te tienes que plantear si merece la pena invertir ese dinero y esfuerzo ¿estimas que tus juegos se van a vender bien?, ¿crees que el cacharro se va a vender bien? ¡Hagan sus puestas!.
Otro aspecto nada desdeñable es la cuestión de potencia… con un juego puedes tirar hacia arriba o hacia abajo los recursos necesarios hasta cierto punto (simplificar modelos poligonales y texturas, reducir detalles, variar la distancia de visión y la resolución…), a partir del cual el trabajo original se ha desvirtuado tanto que ya es una abominación y hay que descartarlo, habría que plantearse una nueva versión teniendo en cuenta las limitaciones (básicamente hacer un nuevo juego) y eso cuesta un dineral… si adaptar un juego para otras características técnicas cuesta un dineral, ¿merece la pena?.
Cuando un juego, un motor o lo que sea no sale para un sistema, no es cuestión de si un cacharro usa una arquitectura u otra (¡mientras sean más o menos parejas, claro!), la única pregunta que nos tenemos que hacer es, ¿merece la pena?. Y con Wii U muchos llegaron a la conclusión, acertada o no, de que no, adaptar las herramientas para Wii U no merecía la pena, mientras que para PS4 y ONE (que requerirían más o menos los mismos recursos) sí.
Ahora ¿merecerá la pena con NX?.
