Hace algunos años, si escribía en C y en un subconjunto de C ++ y usaba un número suficiente de abstracciones de plataforma (a través de SDL o lo que sea), podía ejecutar en todas las plataformas en las que un indie podía acceder: Linux, Windows, Mac OS de varias versiones , cosas oscuras como BeOS y las consolas abiertas como GP2X y Dreamcast posterior a la muerte. Si obtuviste un contrato para una plataforma cerrada en algún momento, también podrías portar tu juego a esa plataforma con cambios de código "mínimos".
Hoy, los desarrolladores independientes deben usar XNA para acceder a la Xbox 360 (y al próximo teléfono con Windows); no debe usar XNA para trabajar en otro lugar que no sea Windows; hasta hace poco tenía que usar Java en Android; Flash no se ejecuta en teléfonos, HTML5 no funciona en IE. A diferencia de, por ejemplo, DirectX vs. OpenGL o Windows vs. Unix, estos son cambios en el lenguaje central en el que escribe su código y no se pueden empapelar sin, básicamente, escribir un compilador. Puede mover parte de la lógica del juego a los scripts e incluir un intérprete, excepto cuando no puede, porque el iPhone SDK no lo permite, y el rendimiento se ve afectado porque nadie permite JIT.
Entonces, ¿qué puedes hacer si quieres un juego portátil realmente multiplataforma, o incluso un cuerpo significativo de motor y código lógico?
¿No es esto un problema porque las plataformas han divergido fundamentalmente? Simplemente no vale la pena tratar de apuntar tanto a un iPhone como a la Xbox 360 con algún código compartido porque tal juego sería malo. (Me parece muy poco probable. Puedo ver fácilmente querer compartir un juego entre un teléfono con Windows Mobile y un Android, o una Xbox 360 y un iPad.) ¿Las interfaces son tan importantes ahora que el tiempo de transferencia es insignificante? (Podría creer esto para aplicaciones comerciales, pero no para juegos con requisitos de rendimiento estrictos).
¿Será esto más pronunciado en el futuro? ¿La división va a ser, de alguna manera aterradora, aún por líneas de proveedores? ¿Confiaremos todos en middleware de alto nivel como Flash o Unity para hacer algo multiplataforma?
tl; dr: portar un problema, ¿será un problema mayor en el futuro? De ser así, ¿cómo lo resolvemos?