
はじめまして。
26年4月に入社しました。森脇です。今回の記事は自己紹介と自分が興味を持っている技術というテーマで執筆しました。
まず自己紹介をします。
自己紹介
出身:滋賀県
自分の机の周りに関西出身が多いので懐かしい感じがしています。
出身校:明治大学情報コミュニケーション学部
どんな学部なの?と聞かれることが多いので補足しておくと文系、理系融合の学部で、メディア系の授業が多い学部です。そこで私は主に言語や認知科学、情報について勉強していました。大学では卒業研究の一環としてExcelから文章を読み込んで言語処理を行い、どんな単語が何回使われているかをカウントしてくれるプログラムを作っていました。
趣味:ゲーム、読書、映画、筋トレ、あたらしいものetc.....
最近だとアークナイツ:エンドフィールドにはまっています。フルマラソン完走を目指してトレーニングしています。
後半は自分が興味を持っている技術についてですが、、、自分は人に紹介ができるほど深い知識や経験を持ち合わせてはいないので、、、。
最近ゲームをしていて「技術的に気づいたこと」を取り上げてみました。
はじめに
私が最近遊んでいるエンドフィールドというゲームには工場を構築する要素があります。遊んでいて気になったのは、このような工場系システムがなぜ重くなりやすいのか、という点です。大量のオブジェクト配置や搬送状態の管理、描画、セーブデータなどを考えると、メモリや計算資源を大きく消費する仕組みだと分かります。本記事では、エンドフィールドをきっかけに、工場を作るゲームがなぜ重くなりやすいのかを、メモリや計算資源の観点から整理、分析し、どう実現しているのかを考えてみました。
工場ゲームが重くなりやすいポイント
設備がそれぞれ状態を持つ
設備はただ置かれているだけではなく、現在何を作っているのか、材料は足りているのか、出力先は空いているのか、といった状態を持っています。
搬送中のアイテムを管理する必要がある
ベルトや搬送ライン上のアイテムは、位置、向き、移動先、到着タイミングなどを管理する必要があります。工場が大きくなるほど、この数も増えていきます。
設備同士の接続関係が複雑になる
工場は単体の設備の集まりではなく、入力と出力がつながったネットワークです。ある設備の停止や詰まりが、他の設備にも影響します。
状態を継続的に更新する必要がある
工場は一度配置したら終わりではなく、常に生産・搬送・消費が進みます。そのため、ゲーム内では大量の状態を継続的に更新する必要があります。
描画やアニメーションも増える
設備、アイテム、エフェクト、アニメーションが増えるほど、GPU側の描画負荷も増えます。
セーブデータも大きくなりやすい
配置した設備の種類、位置、向き、接続、在庫、生産状態などを保存する必要があるため、大規模な工場ほどセーブデータも複雑になります。
なぜそれでも実現できるのか?
CPU・GPU・メモリなどのハードウェア性能の向上
まず前提として、今のゲーム機やPCは昔よりも大量のデータ処理や描画を行えるようになっています。
CPUは設備の状態更新や生産ラインの計算を担当し、GPUは大量の建物・アイテム・エフェクトの描画を支えています。
加えて内部では以下のような工夫がされているのではないかと考えました。
見た目と内部データを分けている
プレイヤーにはベルト上をアイテムが流れているように見えていても、内部では必ずしもすべてを見た目通りの物理オブジェクトとして扱っているとは限りません。
内部的には
このラインに何個のアイテムがあるか
どのタイミングで次の設備に届くか
どの設備に入力されるか
といったデータとして管理し、画面上ではそれを自然に見えるように描画している可能性があります。つまり、プレイヤーに見せる表現と、ゲーム内部で扱う計算用データを分けることで、負荷を抑えているのではないかと思います。
画面外の処理を簡略化している
工場が広くなると、プレイヤーから見えていない場所の設備まで、すべて同じ細かさで処理する必要があるのかという問題があります。見えない場所まで正確に描画する必要はないので、、、。近くの設備は細かくアニメーションや搬送を表示し、遠くや画面外の設備は「一定時間でどれだけ生産されたか」という結果だけを計算している可能性があります。これにより、プレイヤーには工場全体が動き続けているように見せつつ、実際の処理負荷は抑えられるのではないかと思います。
個人的には負荷が心配、、、
私がここまで調べてみて、今後はどうなるのか少し心配でもあります。というのも買い切りのゲームで工場を作るというものであれば、工場を作る敷地や建設数がある程度制限できます。ただエンドフィールドのようなオンラインゲームだと世界中からアクセスが来ます。ゲームの中ではある程度建設可能な面積や建設数が決まっていますが、今後アップデートを続けて、マップが増えて、工場も増えるということが繰り返されると、、、サーバーはこの負荷に耐えられるのか???と不安になってきます、、、。もちろん開発側でもある程度対策はしていると思いますが、、、だとしても運用費用も馬鹿にならないのではと感じています。
まとめ
ゲームとして楽しんでいた工場システムも、改めて考えてみるとその裏側には多くのデータ管理や処理があることが分かりました。開発元が技術を公開しているわけではないので、想像にはなってしまいますが、ゲームの裏側の処理を考えてみると、ためになるアイデアがいっぱい詰まっていそうです。
重いシステムのゲームを可能にしてくれた技術者の方々に感謝しつつゲームを楽しもうと思います。







![Microsoft Power BI [実践] 入門 ―― BI初心者でもすぐできる! リアルタイム分析・可視化の手引きとリファレンス](/assets/img/banner-power-bi.c9bd875.png)
![Microsoft Power Apps ローコード開発[実践]入門――ノンプログラマーにやさしいアプリ開発の手引きとリファレンス](/assets/img/banner-powerplatform-2.213ebee.png)
![Microsoft PowerPlatformローコード開発[活用]入門 ――現場で使える業務アプリのレシピ集](/assets/img/banner-powerplatform-1.a01c0c2.png)
