コミュニティーへの参加が可能になります。Colonies』をすそ野の広いモバイル端末向けに最適化して、潜在的プレイヤーへのリーチ範囲を最大限に広げたかをご説明します。社はフレームレートが落ちたりデバイスが過熱することなく、プレイヤーがローエンドデバイスで巨大都市を構築可能なゲームを作るという課題に取り組んでいました。優美なビジュアルと安定したパフォーマンスのバランスをどのように取ったのかをご覧ください。ローエンドデバイスで街づくり最新のモバイルデバイスは高い処理能力を備えていますが、大規模で美しいゲーム環境を安定したフレームレートで実行することはいまだに困難です。達成するのは非常に困難です。開発者としては、ハイエンドのスマートフォンのみをターゲットとし、大多数のプレイヤーがゲームを滑らかに実行するのに十分なハードウェアを持っていると見なして開発を進めることもできます。古いデバイスが使用されている現状において、これは潜在的なプレイヤーを大量に締め出す結果となります。古いデバイスのユーザーはすべて、できれば排除したくない潜在的な顧客です。Colonies』では、プレイヤーが異星人の住む星をコロニーとして、数多くの建物が建ち並ぶ大規模なコロニーを構築できます。ダース程度ですが、大きなコロニーでは優に数百を超えます。パイプラインの構築を開始したときの目標リストは次のとおりです。モデルの見栄えを良くする鍵になります。手間なく巧みなライティングができます。ゲームのステージを作ってダイナミックライトを配置すれば、すぐ見栄えの良い画面ができあがります。いくつか追加してちょっとした装飾を散りばめましょう。したらもう、出荷するだけです!モバイルゲームでのライティングの設定には、テクニックを駆使したり設定時に何らかの回避策を講じたりしなければならないことも少なくありません。ハイエンドデバイスを対象としている場合を除けば、ポストプロセッシングエフェクトには一切触れない方が良いでしょう。同様に、大きなシーンでダイナミックライトをふんだんに使ってしまうと、フレームレートが格段に低下してしまいます。あっても非常に負荷が高くなりうるものです。限られているモバイル端末ではリソースが限られているので、こういった魅力的な華々しい機能をすべて盛り込む余裕はありません。ライトベイキングという助け舟モバイル端末ではリソースが非常に限られているので、シーンに妙にこだわったライトを数多く配置してユーザーのバッテリーを無駄に消耗させるわけにはいきません。ハードウェアの限界まで端末を酷使し続けると過熱し、その結果、自動的に端末保護のために処理能力がダウンします。このため、リアルタイムで影を描写する必要のないライトをすべてベイクする習慣をつけてください。Colonies』の典型的なステージ)しかし私たちにとって、これはできない選択でした。私たちのゲームの世界は、プレイヤーによってリアルタイムで構築されるものだからです。常にプレイヤーにより新しいエリアが発見され、新しい建物が建築され、既存の建物が改築されるので、効果的なライトのベイクができないのです。フェイクで何とかする(静的)シーンのハイライトと影を事前に計算しておいて、その情報をライトマップに保存するというのが、ライトベイキングのプロセスです。このプロセスでレンダラーにどこでモデルを明るく(または暗く)するのかを伝え、ライトがあるような錯覚を作り出します。この方法でレンダリングを非常に高速化できます。負荷が高く時間もかかるライト計算がすべてオフラインで完了していて、レンダラー(シェーダー)は実行時にテクスチャに格納された結果を見るだけで済むからです。これには代償があって、ライトマップテクスチャを余分に積み込む必要があります。これによりビルドのサイズが大きくなり、実行時に余分なテクスチャメモリが必要になります。必要になり、若干サイズが大きくなるので、ある程度スペースのロスが生じます。全体的に見れば、圧倒的な高速化を実現できます。(ライトマップを使用した建物と使用していない建物)しかし、プレイヤーによって常に変化する動的世界を相手にしている場合は、単に「Bake」ボタンを押しただけでは意味がありません。高度にモジュール化したシーンのライトベイキングでは、さまざまな問題に直面しています。ライトベイキングデータが、シーンデータに直接関連付けられるかたちで保存されるということです。これは、各ゲームステージが独立していてシーンが構築済みで、動的オブジェクトの数が限られている場合であれば問題になりません。ライティングを事前にベイクしておけば、それで十分です。ところがゲームステージを動的に作成する場合、これではうまくいかないのは自明です。都市建築ゲームの世界は、創られていないのが前提です。世界の大部分はプレイヤーが何を、どこに建築するかによって動的に、その場で組み立てられていきます。これは通常、プレイヤーが何かを建築しようとするたびにプレハブをインスタンス化することで実現されます。この問題の唯一の解決策は、関連するすべてのライトベイキングデータをシーンではなく、プレハブ内に格納することです。残念ながら、使用するライトマップのデータ、その座標、スケールをプレハブにコピーする簡単な方法はありません。ライトをベイクしたプレハブ用パイプラインの構築ライトをベイクしたプレハブを処理するための安定したパイプラインを実現するには、個々のシーンごと(事実上複数のシーン)にプレハブを作成して、必要になったときにメインゲームに読み込むようにするのが、最善のアプローチにです。各モジュールにライトがベイクされ、必要になったらゲームに読み込まれます。ライトをベイクする仕組みをよく見ると、実際にはライトがベイクされたメッシュに他のテクスチャが適用され、メッシュの明度が若干調整される(彩色されることもあります)だけのレンダリングであることがわかります。