Como desenvolvedor de jogos para Android, o que devo ter em mente ao desenvolver meu jogo se eu quiser cruzar a plataforma para o iPhone? Alguma estratégia, dicas etc. sobre como migrar para essas duas plataformas móveis?
Como desenvolvedor de jogos para Android, o que devo ter em mente ao desenvolver meu jogo se eu quiser cruzar a plataforma para o iPhone? Alguma estratégia, dicas etc. sobre como migrar para essas duas plataformas móveis?
Respostas:
Escreva em C / C ++ - essa é a maior coisa que você pode fazer. Ambas as plataformas suportam C e C ++, embora de maneiras diferentes. No Android, você estará usando o NDK. No iPhone, ele pode ser compilado junto com o código Objective-C.
Você precisará investir algum tempo criando os andaimes em torno do código C / C ++ para cada plataforma. Você deve ser bastante genérico nessa área, pois é realmente apenas a conexão da funcionalidade específica do sistema operacional ao código do jogo. Não economize nessa área, a menos que esteja planejando apenas um projeto de plataforma cruzada ou que não se importe em reinventar a roda para cada projeto que você faz.
Use o OpenGL ES - ambas as plataformas têm suporte ao OpenGL ES. Tire vantagem disso. Isso minimizará a quantidade de código que você precisa reescrever. Você ainda terá algumas diferenças em cada plataforma, mas, em geral, a maior parte do seu código funcionará em ambas.
Evite APIs específicas de plataforma / linguagem - isso é óbvio, mas é fácil ser sugado para o uso das classes de coleção Java enquanto você trabalha em Java. Obviamente, se você seguiu a primeira regra acima, não estará fazendo muito em Java. O mesmo acontece da maneira oposta - por mais legais que sejam as classes Foundation no iOS, se você deseja portar para outra plataforma, evite-as.
Como você pode ver, há muitas coisas com que se preocupar ao se tornar multiplataforma. Se você é um pequeno desenvolvedor independente, pode nem valer a pena. Você terá que avaliar se realmente deseja seguir sua própria trilha para poder segmentar várias plataformas. Pode valer a pena aproveitar o que cada plataforma tem a oferecer para ter um ciclo de desenvolvimento mais rápido.
Boa sorte!
Esse será um processo bastante doloroso, que vai do Java> Objective-C.
Orientado a dados
Crie um jogo que é amplamente orientado por dados. Acho que isso fala por si só, mas essa direção leva a menos trabalho que você deve reimplementar completamente.
Alto e apertado
Mantenha as coisas muito pequenas e modularizadas. Digo isso porque será muito mais fácil portar se você puder facilmente pegar um componente e implementá-lo, testar e repetir.
Contrato de trabalho
Jogue suas cartas da maneira certa e talvez conheça alguém que possa cuidar disso para você. Se você é o melhor amigo de um desenvolvedor de iPhone, pode comprar um dr. pepper para ajudar a migrar seu código.
Use um mecanismo de várias plataformas
Se você já tem um projeto em andamento, não faz muito sentido. Mas se você estiver prestes a fazer um projeto, que você sabe que será portado para outras plataformas, pode valer a pena aproveitar a tecnologia existente para ajudar a montar seu mundo. O Unity3D estará recebendo suporte para Android com o Unity 3.0.
Conversão / estremecimento / ferramenta
E a minha recomendação menos favorita é que você possa usar algum tipo de ferramenta de conversão para, pelo menos, converter seus modelos em Java> C ... Mas ... eu não apoio isso.
Se você está pensando em migrar para o iPhone e seu jogo ainda estiver em desenvolvimento, mude para C ++, caso ainda não o tenha feito. Isso tornará seu código significativamente mais portátil quando chegar a hora.
Vou adicionar meus dois centavos a esta discussão - considere escrever seu jogo em uma linguagem de plataforma cruzada, como muitos dos outros disseram aqui ... mas considere C #! É uma linguagem poderosa que é gerenciada e fornece muitos recursos excelentes que o C ++ não pode ajudar no desenvolvimento de jogos - e existe uma ótima biblioteca conhecida como MonoGame , semelhante ao XNA, que roda em todos os tipos de plataformas. Desde a versão 3.0, no momento da redação deste artigo, é possível escrever jogos e portas completos para todas as plataformas móveis com facilidade.