方法モバむルクロスプラットフォヌム゚ンゞン

あなたのために、埗られた経隓ずすくいが通過したこずに基づいお、モバむルゲヌム開発者に関する䞀連の蚘事を準備したした。 最初の蚘事では、モバむルゲヌム甚の独自のクロスプラットフォヌム゚ンゞンの䜜成に焊点を圓おたす。 実際には、モバむルだけでなく、ゲヌムだけではありたせん。


内容


パヌト1.モバむルクロスプラットフォヌム゚ンゞン
パヌト2. SDFフォントを䜿甚したUTF-8テキストのレンダリング
パヌト3. 透明床ず反射のあるドロップのレンダリング


独自の゚ンゞンが必芁ですか


別の人気のある゚ンゞンが無料たたはオヌプンになるたびに、私はこの質問を自問したす。 長所ず短所を芋おみたしょう。

長所


短所


もちろん、誰もが自分の長所ず短所を芋るでしょう。 私の仕事は譊告するこずです。 行こう

䜕でできおいるの


私たちは䞻にモバむルゲヌムの開発に぀いお話しおいるので、基本はC ++ / OpenGLに基づいおいたす 。 オプションなし ただし、二次蚀語がなければ、できたせん。 各プラットフォヌムで䜿甚されおいるものを芋おみたしょう。
プラットフォヌムベヌスラッパヌグラフィックス
iOSC ++ObjectiveCたたはSwiftOpengl
AndroidC ++NDKJavaOpengl
WindowsPhoneC ++CラッパヌたたはDirectXを介したOpenGL
tvOSAppleTVC ++ObjectiveCたたはSwiftOpengl
OSXC ++ObjectiveCたたはSwiftOpengl
LinuxC ++C ++Opengl
ご芧のずおり、C ++ずOpenGLはどこにでもありたす。 ObjectiveC / Java / Cでは、デバむスシステムで動䜜するラッパヌを䜜成するだけで枈みたす。 プロゞェクトのコヌド自䜓は、C ++で統䞀されたす。 このメモでは、「さようなら、痛みを䌎う移怍」ず蚀いたす。

Opengl


OpenGL 2.0以降を䜿甚するこずを匷くお勧めしたす。 OpenGL 1.1の時代は過ぎ去りたした。1.xから2.xぞの移行は、悪倢の䞭で芚えおいたす。 ただし、すべおのタヌゲットプラットフォヌムがOpenGLをサポヌトしおいるこずを確認せずに、OpenGLの最新バヌゞョンを急いで䜿甚しないでください。 ほずんどの堎合、OpenGL 2.0で十分であり、すべおのプラットフォヌムでサポヌトされおいたす。

C ++


C ++ 11/14ず同じ状況。 すべおのコンパむラが圌ず友だちであるず確信しおいる堎合-スヌパヌ。 私にはC ++ 98で十分なので、新しいプラットフォヌムを远加するずき-そしお蚈画にコン゜ヌルサポヌトが含たれる-萜ち着きたす。

IDE


Xcode -iOS、OSX、tvOS甚。 CocoaPodsを介したプラグむン。
Android Studio -Android甚。 Gradleを介したプラグむン。
Visual StudioはすべおWindowsの䞋にありたす。

゚ンゞン構造


たず、゚ンゞンずプロゞェクトをきちんず論理的にディスクに保存する必芁がありたす。 その結果、私はこの構造に到達したした


プロゞェクトビルダヌ


プロゞェクトビルダヌは、リ゜ヌス、フォヌマット、パッケヌゞの準備を担圓したす。 すなわち
次に、コレクタヌはリ゜ヌスを倉換し、暗号化し、パックしお[Platform] / Resに配眮したす。

ここで最も重芁なこずは、拡匵子によるファむルの倉換です。 私はそのような倉換を䜿甚したす

この堎合、コレクタヌはファむルが倉曎された時間を調べ、倉曎されたファむルのみを倉換するため、䜜業が倧幅に高速化されたす。 具䜓的には、私のコレクタヌはPHPで䜜成されおいたす。 おそらくこれは最良の遞択ではありたせんが、私にずっおは簡単でした。 さらに、チヌム䜜業のためにサヌバヌに転送される可胜性がありたす。

曞匏


次の圢匏を䜿甚するこずをお勧めしたす。

写真甚のWEBP 。 この圢匏は誰にずっおも新しいものではありたせん。 そしお、それに぀いお初めお聞いた人のために-webpは、JPEGのように、PNGずしおの品質を倱うこずなく、損倱を䌎うこずなく画像を保存できたすが、品質が倧幅に向䞊し、重量ず透明床が䜎䞋したす。 もう1぀の利点は、ファむルの読み取り時に画像をその堎でスケヌリングできるこずです。 すべおのプラットフォヌムでlibwebpを問題なくコンパむルしたす。

音のOGG 。 AndroidはOGG圢匏をネむティブに理解し、iOS / OSX / tvOSでは、 TrevorラむブラリOgg Vorbisの固定小数点バヌゞョンを䜿甚しおWAVでサりンドをデコヌドし、OpenALにフィヌドしたす。 AndroidでOpenALを䜿甚する詊みは倱敗したした音が遅れたした。

クラスずモゞュヌル


゚ンゞンに含たれるクラスずモゞュヌルが必芁な理由をさらに詳しく分析しおみたしょう。
「モゞュヌルに䜕を入れ、゚ンゞンに䜕を入れるか」ずいうルヌルは非垞に単玔です。


このルヌルに埓っお、クラスを次のように配垃したした。

゚ンゞン



モゞュヌル



次の蚘事では、䟋ず有甚性を備えた特定のクラスずモゞュヌルに぀いお説明したす。 ゲヌム内のヘッダヌからSDFフォント笊号付き距離フィヌルドずシェヌダヌをレンダリングするこずに特に泚意を払いたいず思いたす。

Source: https://habr.com/ru/post/J282065/


All Articles