回答:
C / C ++で書いてください -これがあなたができる最大のことです。どちらのプラットフォームもCとC ++をサポートしていますが、方法は異なります。Androidでは、NDKを使用します。iPhoneでは、Objective-Cコードとともにコンパイルできます。
各プラットフォームのC / C ++コードの周りに足場を構築するために、ある程度の時間を費やす必要があります。これは、OS固有の機能をゲームコードに接続するだけなので、この領域ではかなり一般的になるはずです。クロスプラットフォームプロジェクトを1つだけ実行することを計画している場合や、実行するすべてのプロジェクトのホイールを再発明することを気にしない場合を除き、この領域を軽視しないでください。
OpenGL ESを使用します -どちらのプラットフォームもOpenGL ESをサポートしています。それを活用してください。これにより、書き直す必要があるコードの量を最小限に抑えることができます。各プラットフォームでいくつかの違いはありますが、全体的なコードの大部分は両方で動作します。
プラットフォーム/言語固有のAPIは避けてください。これは言うまでもありませんが、Javaで作業しているときにJavaコレクションクラスを使用するのは簡単です。もちろん、上記の最初のルールに従えば、Javaで多くのことを行うことはできません。同じことが逆の場合にも言えます-FoundationクラスがiOSにあるのと同じように、別のプラットフォームに移植したい場合は避けてください。
ご覧のように、クロスプラットフォーム化することで気になることがたくさんあります。あなたが小さなインディー開発者であれば、それはあなたの時間の価値さえないかもしれません。複数のプラットフォームをターゲットにできるように、本当に独自の道を切り開くかどうかを評価する必要があります。開発サイクルを高速化するために、各プラットフォームが提供する機能を利用する価値があるかもしれません。
幸運を!
これは、Java> Objective-Cからの非常に困難なプロセスになります。
データ駆動型
主にデータ駆動型のゲームを構築します。これはそれ自体で意味があると思いますが、この方向性は、完全に再実装しなければならない作業の削減につながります。
高とタイト
物事を非常に小さく、モジュール化します。これは、コンポーネントを簡単に取得して実装し、テストして繰り返すことができれば、移植がはるかに簡単になるためです。
契約作業
カードを正しくプレイすれば、あなたがこれを処理してくれる誰かを知っているかもしれません。あなたがiPhone開発者と親友なら、彼/彼女のいくつかの博士を買うことができるかもしれません。コードを移行するのに役立つ唐辛子。
マルチプラットフォームエンジンを使用する
プロジェクトがすでに動いている場合は、あまり意味がありません。しかし、プロジェクトをやろうとしている場合、他のプラットフォームに移植されることが確実にわかっている場合は、既存のテクノロジーを利用して世界を統合することは価値があります。Unity3Dは、Unity 3.0でAndroidサポートを取得します。
変換/ shudder /ツール
私が最も気に入っていないのは、ある種の変換ツールを使用して、少なくともJava> Cからモデルを変換できるということです。
iPhoneへの移植を考えていて、ゲームがまだ開発中の場合は、C ++に切り替えます(まだ行っていない場合)。時が来れば、コードの移植性が大幅に向上します。
私の2セントをこのスレッドに追加します-他の多くの人がここで言ったように、クロスプラットフォーム言語でゲームを書くことを検討してください...しかしC#を検討してください!これは強力な言語であり、管理され、C ++にはないゲーム開発に役立つ多くの優れた機能を提供します。MonoGameと呼ばれる優れたライブラリは、あらゆる種類のプラットフォームで実行されるXNAに似ています。バージョン3.0以降、この記事の執筆時点では、本格的なゲームを作成してすべてのモバイルプラットフォームに簡単に移植できます。