Alguns anos atrás, se você escrevesse em C e algum subconjunto de C ++ e usasse um número suficiente de abstrações de plataforma (via SDL ou qualquer outra coisa), poderia executar em todas as plataformas que um indie pudesse acessar - Linux, Windows, Mac OS de várias versões , coisas obscuras como o BeOS, e os consoles abertos como o GP2X e o Dreamcast pós-morte. Se você tiver um contrato para uma plataforma fechada em algum momento, também poderá portar seu jogo para essa plataforma com alterações "mínimas" no código.
Hoje, os desenvolvedores independentes precisam usar o XNA para acessar o Xbox 360 (e o próximo telefone com Windows); não deve usar o XNA para funcionar em qualquer outro lugar que não seja o Windows; até recentemente, tinha que usar Java no Android; O Flash não funciona em telefones, o HTML5 não funciona no IE. Diferentemente, por exemplo, DirectX vs. OpenGL ou Windows vs. Unix, essas são alterações no idioma principal em que você escreve seu código e não podem ser ocultadas sem, basicamente, escrever um compilador. Você pode mover alguma lógica do jogo para scripts e incluir um intérprete - exceto quando não puder, porque o iPhone SDK não permite e o desempenho é prejudicado porque ninguém permite o JIT.
Então, o que você pode fazer se quiser um jogo portátil realmente multiplataforma, ou mesmo apenas um corpo significativo de mecanismo e código lógico?
Isso não é um problema, porque as plataformas divergem fundamentalmente - não vale a pena tentar segmentar um iPhone e o Xbox 360 com qualquer código compartilhado, porque esse jogo seria ruim? (Acho isso muito improvável. Posso ver facilmente o desejo de compartilhar um jogo entre um telefone Windows Mobile e um Android ou um Xbox 360 e um iPad.) As interfaces estão tão de alto nível agora que o tempo de transferência é insignificante? (Acredito que isso seja para aplicativos de negócios, mas não para jogos com requisitos rígidos de desempenho.)
Isso vai se tornar mais pronunciado no futuro? A divisão será, de certa forma assustadora, ainda abaixo das linhas dos fornecedores? Todos nós confiaremos no middleware de alto nível, como o Flash ou o Unity, para fazer qualquer coisa entre plataformas?
tl; dr - Está portando um problema, será um problema maior no futuro e, em caso afirmativo, como o solucionamos?