Как не крути игра пишется под определенные платформы. Каждая платформа предоставляет определенные преимущества и обладает некоторыми недостатками и ограничениями. При написании кроссплатформенной игры мы не пользуемся удобствами платформ ( т.к. они есть только на конкретной платформе), но должны учитывать ограничения каждой платформы в своей игре ( т.к. код игры один на все платформы). Поэтому при написании движка все платформозависимые вещи локализуются в одном месте и к ним пишется общий интерфейс, с которым игра уже непосредственно взаимодействует.
Портирование или перенос игры с одной платформы на другую - процесс не творческий. Особенно если при написании оригинальной игры не думали о переносимости. Задача сводится к выделению и переписыванию платформенных компонент. Такими компонентами являются - рендеринг, ввод/вывод, звук. Обычно сначала просто добиваются компиляции на целевой платформе. Все участки кода, которые не компилируются просто комментируются, например, с пометкой к какой подсистеме относится удаляемый код. После того как код начал компилироваться с исключенными платформозависимыми участками, мы реализуем эти участки для целевой платформы и раскомменчиваем код. Естественно это очень грубое описание, в реальной жизни весь код распределен по нескольким уровням абстракции и размазан по подсистемам и классам.
Портирование - это скорее работа с кодом, нежели программирование или проектирование. Но только в том случае если оригинальная игра создавалась под конкретную платформу без оглядки на переносимость.
Если возможность будущего портирования заложить на стадии проектирования игры, то процесс портирования вырождается в одновременную разработку игры под несколько платформ. Это немного дороже написания игры под одну платформу, но дешевле чем потом портировать игру с нуля. И тем дешевле, чем больше целевых платформ.
Современные модели распространения игр стремятся охватить как можно большее число платформ. Поэтому разработку игры нужно вести в кроссплатформенном стиле. Сейчас для этого не обязательно иметь свой движок, а можно воспользоваться готовыми решениями. Но в этом случае вы будете зависеть от разработчиков этого решения. Очень часто это означает не возможность своевременно реагировать на рынок, а также не возможность успевать за техническими новинками и обновлениями. Поэтому решение о выборе технологии должно базироваться на многих факторах. Хорошо когда есть своя технология! ;)
Комментарии
Кстати, читал блог Кирилла?