このセクションでは、モバイルの開発者が、速く実行されるようにコードを書き、ゲームを構築する方法を示しています。ここでコアとなるアイデアは、実際にはゲームデザインと最適化は、独立したプロセスではなく、ゲームを設計しているとき、あなたがする決定次第で、楽しさと高速な作業の両方を得ることができます。
昔のゲームでは、画面上に一度に表示できる弾数が一発だけで、リロード時間はタイマーではなく、弾が当ったかどうかで変化するようなものが有りました。このテクニックは、object pooling と呼ばれ、メモリ管理を簡素化し、プログラムがより滑らかに実行されるようになります。
スペースインベーダーの作者が使える RAM 領域は少量でした。そして彼らは、プログラムが利用可能なメモリ領域を絶対に超えないようにする必要がありました。もしもプレイヤーが一秒毎に弾を撃てるようにして、パワーアップによってリロード時間が半分に短縮されるようにすると、プレーヤーが連射した時には、大量の弾が長時間画面上に表示される事になり、それらを割り当てるための十分なメモリ空間を確保しなければなりません。これはおそらく問題を引き起こすので、その代わりに、彼らは 1 発だけ発射できるようにしたのです。弾が消滅した瞬間、単純に非アクティブ化して、再び発射できるように再配置してアクティブ化します。これなら常に同じメモリ空間上に配置しておくだけでよく、移動させたり、絶えず削除して再作成する必要もありません。
これは全くリアルではありませんが、非常に楽しい瞬間です。ストレスは、インベーダーが地表に接近してくるクライマックスの瞬間、まるで映画や小説のクライマックスのような、この瞬間に解放されます。インベーダーが接近すると、プレイヤーのリロード時間はほとんど無くなり、完璧なタイミングで連射することで、まるで奇跡のように地球を防衛する事ができます。よいゲーム・デザインは、インタラクションによる物語性と、そのすべてを動かす背景技術とのバランスによって生まれるのです。コード・ロジスティックスとユーザーのインタラクションをそれぞれ突き詰めようとすると、様々な面で相容れない事が有るため、何か新しくて面白いものを作ろうと思ったら、数多くの試行錯誤が必要になります。そのため、インベーダーのように面白さが効果的に詰め込まれた素晴らしいものを計画するのは、かなり難しいでしょう。
おそらく、インタラクションと、モバイルハードウェアに最良なゲームプレイ双方を、ゲーム全体にわたって同時に計画することはできません。実験の最中に 2 つが調和して、偶然“逸品”が生まれることはありそうです。ですが、あなたが配信する予定のハードウェアでコードを確実に動かすための知識を持つことは、開発の手助けになるでしょう。オブジェクトプーリングが優れている理由について詳細な技術的説明を参照したい、そして、メモリの割り当てについて学びたいのであれば、私たちの スクリプトの最適化ページを参照してください。
あなたがゲーム製作を始めているとしましょう、アクションや何か派手なものを一度にたくさん出すことで、プレーヤーの心をとらえたいとします。どうしたら実現できるでしょう?コインは何枚あるのか、ゾンビは何体いるのか、敵車は何台かなど、ゲームの要件と限界はわかっていますか?これらは、すべてコードの書き方次第です。
通常、もっとも一般的で汎用性の高い方法や、または楽な方法でゲームのコードを書くと、割とすぐにパフォーマンスの問題に陥ります。ゲームを実行する事に特化した構造や、トリックをより多く用いる事で、限界はより拡大し、スクリーン上により多くのものを表示することができるようになります。
2D のゲームで 2 次元に限定されるリジッドボディ 発射体のリジッドボディ * インスタンス化とデストロイを多く使う。 * 収集品やキャラクターのための多くの個々の 3D オブジェクト * フレームの毎の演算実行。 * あなたの GUI や HUD のために OnGUI の使用
スクリプトの最適化ページを参照してください。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.