Как разработчик игр для Android, что я должен иметь в виду при разработке своей игры, если я когда-либо хотел кросс-платформенную игру для iPhone? Какие-либо стратегии, советы и т. Д. При портировании на обе эти мобильные платформы?
Как разработчик игр для Android, что я должен иметь в виду при разработке своей игры, если я когда-либо хотел кросс-платформенную игру для iPhone? Какие-либо стратегии, советы и т. Д. При портировании на обе эти мобильные платформы?
Ответы:
Напишите это на C / C ++ - это самое большое, что вы можете сделать. Обе платформы поддерживают C и C ++, хотя по-разному. На Android вы будете использовать NDK. На iPhone его можно скомпилировать вместе с кодом Objective-C.
Вам нужно будет потратить некоторое время на создание леса вокруг вашего кода C / C ++ для каждой платформы. Вы должны быть в состоянии быть достаточно общими в этой области, так как на самом деле это просто подключение специфических функций ОС к вашему игровому коду. Не экономьте в этой области, если только вы не планируете делать один кроссплатформенный проект или если вы не против заново изобретать колесо для каждого проекта, который вы делаете.
Используйте OpenGL ES - обе платформы имеют поддержку OpenGL ES. Воспользуйтесь этим. Это минимизирует объем кода, который вам нужно переписать. У вас все еще будут некоторые различия на каждой платформе, но в целом большая часть вашего кода будет работать на обеих платформах.
Избегайте API, специфичных для платформы / языка - это само собой разумеется, но при использовании классов Java-коллекции легко работать, пока вы работаете в Java. Конечно, если вы следовали первому правилу, описанному выше, вы не будете делать много в Java. То же самое происходит и с противоположной стороны - так же хорошо, как классы Foundation в iOS, если вы хотите портировать на другую платформу, избегайте их.
Как видите, кроссплатформенность вызывает множество проблем. Если вы маленький инди-разработчик, это может даже не стоить вашего времени. Вам придется оценить, действительно ли вы хотите проложить свой собственный маршрут, чтобы вы могли ориентироваться на несколько платформ. Возможно, стоит воспользоваться тем, что может предложить каждая платформа, чтобы ускорить цикл разработки.
Удачи!
Это будет в значительной степени болезненный процесс, идущий от Java> Objective-C.
Управляемый данными
Создайте игру, которая в значительной степени основана на данных. Я думаю, что это говорит само за себя, но это направление ведет к меньшему количеству работы, которую вы должны полностью выполнить заново.
Высокий и плотный
Держите вещи очень маленькими и модульными. Я говорю это потому, что портирование будет намного проще, если вы сможете легко взять компонент и реализовать только его, протестировать и повторить.
Работа по контракту
Играйте в свои карты правильно, и вы можете знать кого-то, кто может позаботиться об этом за вас. Если вы лучшие друзья с разработчиком для iPhone, вы можете купить ему / ей доктора. перец, чтобы помочь перенести ваш код.
Используйте многоплатформенный движок
Если у вас уже есть проект в движении, то в этом нет особого смысла. Но если вы собираетесь сделать проект, который, как вы точно знаете, будет перенесен на другие платформы, то, возможно, стоит воспользоваться преимуществами существующих технологий, которые помогут собрать ваш мир воедино. Unity3D получит поддержку Android с Unity 3.0.
Конверсия / дрожь / инструмент
И моя наименее любимая рекомендация - вы могли бы использовать какой-то инструмент конвертации, чтобы хотя бы конвертировать ваши модели из Java> C ... Но ... я не поддерживаю это.
Если вы думаете о портировании на iPhone и ваша игра все еще находится в разработке, переключитесь на C ++, если вы еще этого не сделали. Это сделает ваш код значительно более переносимым, когда придет время.
Собираюсь добавить мои два цента в эту ветку - подумайте о написании своей игры на кроссплатформенном языке, как говорили многие другие здесь ... но рассмотрим C #! Это мощный язык, управляемый и обеспечивающий множество замечательных функций, которые отсутствуют в C ++, которые могут помочь в разработке игр, и для него существует отличная библиотека, известная как MonoGame, которая сродни XNA, которая работает на всевозможных платформах. Начиная с версии 3.0, на момент написания этой статьи можно было писать полноценные игры и легко переносить их на все мобильные платформы.