グラフィックスメソッド
レンダリングの最適化

スクリプトとゲームプレイ方法

このセクションでは、モバイルの開発者が、速く実行されるようにコードを書き、ゲームを構築する方法を示しています。ここでコアとなるアイデアは、実際にはゲームデザインと最適化は、独立したプロセスではなく、ゲームを設計しているとき、あなたがする決定次第で、楽しさと高速な作業の両方を得ることができます。

歴史的な例

プレイヤーが一度にスクリーン内で 1 発だけ発射が許されることをタイマーの代わりとして、弾をミスしたか否かにかかわらずにリロードの早さをコントロールされた古いゲームをあなたは覚えているかもしれません。このテクニックは、object pooling と呼ばれ、メモリ管理を簡素化し、作られたプログラムはより滑らかに実行されます。

スペースインベーダーの作者は、少しの RAM を持っていただけでした。そして彼らはプログラムが利用可能であった以上のものを割り当てる必要がないだろうことを確実にしなければなりませんでした。彼らはプレイヤーが毎秒一回弾を発射する場合、リロード(再装填)時間を半秒に減少させるパワーアップを提供し、プレーヤーができるだけすばやく発砲する場合、多くの発射を割り当てるのに十分なメモリ空間があることと、ショットのすべてができるだけ長い時間生きることを、確実としなければならないでしょう。それはおそらく問題を引き起こすでしょうから、その代わりに、彼らはちょうど 1 発の発射体を割り当て、それを残しました。発射体が死ぬとすぐに、非アクティブ化し、再び発射された時に再配置され、アクティブ化されます。しかし、それは常にメモリ内の同じ空間に住んでおり、周囲に移動したり、絶えず削除して再作成する必要はありません。

最適化、またはゲームプレイの宝石?

これはほとんど現実的でありませんが、それが楽しいことが起きます。エイリアンの侵略が地面に近づくとテンションはクライマックスの瞬間に解放され、フィルムまたは文学におけるクライマックスと似ています。インベーダーの近接は、熟達したプレイヤーにとっては、ほぼ瞬間的にリロードする時間を与えます。そして、彼らは奇跡的に完璧な時間の間、ショットボタンを連打することにより、地球を守ることができます。よいゲーム・デザインは、インタラクティブな物語とそれのすべてを動かす背景技術の間の奇怪な空間に生きています。このすばらしく、楽しく、効率的なものを詰め込んで計画するのは難しいです。なぜなら、コード・ロジスティックスとユーザーの対話は、2 つのひどく異なる、深い凝り性のもので、これを一緒に新しい何かと楽しみを合成するために、多くの思考と実験がされます。

おそらく、ゲームのあらゆる面の相互作用とモバイルハードウェアでのすばらしいプレイを同時に計画することはできません。それはあなたが実験している間、2 つが調和するところで偶然“逸品”が現れることはありそうです。しかし、あなたが配備するつもりであるハードウェアで、あなたのコードが動く方法の確実な知識を持つことは進行の助けになります。あなたがオブジェクトプーリングが優れている理由について詳細な技術的説明を参照したい、そして、メモリの割り当てについて学びたい場合、私たちの スクリプトの最適化ページを参照してください。

X はモバイル上で速く走るか?

あなたがゲームの作業を始めており、一度にたくさんのアクションと派手な物を詰め込んで、プレーヤーに印象を与えたいとします。どのようにそれらの事を計画しますか?あなたは、どれだけ多くのコイン、多くのゾンビ、多くの敵対車、その他ゲームの条件等の限界がどこにあるか知っていますか?それはすべてあなたがどのようにゲームをコードにするか次第です。

一般的に、簡単な方法またはもっとも一般的かつ汎用性の高い方法でゲームのコードを書くならば、あなたは割とすぐにパフォーマンスの問題に陥ります。あなたがより多くのゲームを実行するための特定の構造やトリックに依存するほど、限界はより拡大します。あなたはスクリーン上でより多くのものを詰め込むことができるようになります。

簡単で汎用性が高いが遅い

2D のゲームで 2 次元に限定されるリジッドボディ 発射体のリジッドボディ * インスタンス化とデストロイを多く使う。 * 収集品やキャラクターのための多くの個々の 3D オブジェクト * フレームの毎の演算実行。 * あなたの GUI や HUD のために OnGUI の使用

複雑で制限されるが、より速く

  • 2D のゲーム用に独自の物理コードを書く。 *発射体自身のための衝突検出の処理。
  • インスタンス化とデストロイの代わりにオブジェクトプーリングを使用。
  • 単純なオブジェクトを表すために、粒子上にアニメーションのスプライトを使用。
  • いくつかのフレームごとに高等な計算を実行し、結果をキャッシュする。
  • カスタム GUI ソリューション。

回転、ダイナミックに点灯し、まとまった何百ものコインを一度に画面上に表示

  • 悪い例:各コインがリッジボディで、それを回転させ、それを拾うスクリプトと独立したオブジェクト。
  • よい例: コインは、アニメのテクスチャとパーティクルシステムであり、1 つのスクリプトが、すべてのコインのための衝突テストを行い、ライトからの距離に応じて自分の色を設定しています。
    • この例は、スクリプトの最適化のページに実装しています。

あなたのカスタムビルドソフトボディシミュレーション

  • 悪い例 :世界はどこにでも転がっている枕をもっており、これを使用して、周りに投げつけ、枕の山を作ることができます。
  • よい例 :あなたのキャラクターは枕で、それらのひとつのみが存在し、状況はいくらか予測可能です(球と軸がそろった立方体と衝突するだけです)。おそらく、完全な機能を備えたソフトボディシミュレーションではない何かをコーディングすることはでき、本当に印象的に見えて、高速に実行します。

3D 敵キャラクターは一度プレーヤーを撃つ

  • 悪い例:各敵は自分自身のスキンのメッシュ、武器のためのそれぞれのオブジェクトを持っており、発砲するたびにリジッドボディベースの発射体をインスタンス化します。各敵はすべてのフレームを実行する複雑な AI スクリプトで彼の同胞全員の状態を考慮します。
  • よい例:敵のほとんどが遠く離れていて 1つのスプライトで表現されるか、2D で 2つくらいのスプライトで表現されます。すべての敵の弾は、基本的な物理にのっとったスクリプトによって同じパーティクルシステムによってシミュレートされ描画されます。各敵はそのセクターの他の敵の状態に応じて、1秒につき 2回、AI 状態を更新します。

スクリプトの最適化の方法とその理由

スクリプトの最適化ページを参照してください。

グラフィックスメソッド
レンダリングの最適化