Несколько лет назад, если вы написали на C и в некотором подмножестве C ++ и использовали достаточное количество абстракций платформы (через SDL или что-то еще), вы могли работать на любой платформе, на которую мог бы попасть инди - Linux, Windows, Mac OS различных версий. такие непонятные вещи, как BeOS, и открытые консоли, такие как GP2X и Dreamcast после смерти. Если в какой-то момент вы получили контракт на закрытую платформу, вы можете перенести свою игру на эту платформу с минимальными изменениями кода.
Сегодня независимые разработчики должны использовать XNA, чтобы получить Xbox 360 (и грядущий Windows Phone); не должен использовать XNA для работы где-либо еще, кроме Windows; до недавнего времени приходилось использовать Java на Android; Flash не работает на телефонах, HTML5 не работает на IE. В отличие, например, от DirectX против OpenGL или от Windows против Unix, это изменения основного языка, на котором вы пишете свой код, и его нельзя скопировать без написания компилятора. Вы можете переместить некоторую игровую логику в сценарии и включить интерпретатор - кроме случаев, когда вы не можете этого сделать, потому что iPhone SDK не позволяет этого, и производительность снижается, потому что никто не допускает JIT.
Итак, что вы можете сделать, если вы хотите по-настоящему кроссплатформенную портативную игру или даже просто значительный объем движка и логического кода?
Разве это не проблема, потому что платформы существенно разошлись - просто не стоит пытаться нацеливать на iPhone и Xbox 360 какой-либо общий код, потому что такая игра будет плохой? (Я нахожу это очень маловероятным. Я легко вижу желание поделиться игрой между телефоном с Windows Mobile и Android, или Xbox 360 и iPad.) Являются ли интерфейсы настолько высокоуровневыми, что время портирования ничтожно мало? (Я мог бы верить этому для бизнес-приложений, но не для игр со строгими требованиями к производительности.)
Это станет более выраженным в будущем? Будет ли разделение, несколько пугающее, все еще на линии продавцов? Будем ли мы все полагаться на высокоуровневое промежуточное ПО, такое как Flash или Unity, чтобы сделать что-нибудь кроссплатформенное?
tl; dr - портирует ли это проблему, станет ли она большей проблемой в будущем, и если да, то как мы ее решим?