ゲーム

「最適化の最高峰」と名高い遊園地経営シミュレーションゲーム「ローラーコースタータイクーン」は何がスゴいのか?


ローラーコースタータイクーン」は1999年に登場した遊園地経営シミュレーションゲームのシリーズで、2019年にはNintendo Switch/Windows版の「ローラーコースタータイクーン・アドベンチャー」がリリースされています。1999年にリリースされたシリーズ初代の「ローラーコースタータイクーン」は「史上最高レベルに最適化されたゲーム」の一例として語られており、その裏側でどのような工夫が行われていたのかについて、シニアゲームプレイプログラマーのラース・ティーセン氏がコード解析をもとにした詳細な解説を公開しています。

The gold standard of optimization: A look under the hood of RollerCoaster Tycoon – Larst Of Us
https://larstofus.com/2026/03/22/the-gold-standard-of-optimization-a-look-under-the-hood-of-rollercoaster-tycoon/


シミュレーションゲームは多くの建物や人物といったオブジェクトを配置することで動作が重くなったり低スペックのPCではフリーズしてしまうことが現代でもありますが、「ローラーコースタータイクーン」は当時のマシンで動作の軽いシミュレーションゲームを実現していました。ティーセン氏は「このゲームはクリス・ソイヤー氏がほぼ全てアセンブリ言語で開発した、最適化に優れたゲームとしてしばしば挙げられます。1999年当時のハードウェアで、何千ものエージェントを抱える本格的なテーマパークを難なくシミュレートできたのは、まさに驚異的な偉業と言えるでしょう」と述べています。

「ローラーコースタータイクーン」の魅力を語る以下のムービーでも、人物やアトラクションが大量に表示されててもぬるぬる動くゲームの軽さが語られています。

The Story of RollerCoaster Tycoon | Noclip Greatest Hits - YouTube


「ローラーコースタータイクーン」の最適化を説明するのによく言われるのは、このゲームが低水準言語であるアセンブリ言語で書かれていたという点です。アセンブリ言語はCPUが実行する命令をほぼそのまま記述できるため、無駄な処理を極限まで削減し、高速化やメモリ効率の向上を実現しやすいという特徴があります。一方で開発効率が極めて低く、コードの記述や保守が困難になることから、多くのゲームでは生産性の高いCやC++が主に使われ、アセンブリ言語は性能が特に重要な一部の処理に限定して用いられるのが一般的でした。1999年の時点でゲーム開発のコーディングにアセンブリ言語を用いることはほとんどなく、1993年にリリースされた初代「DOOM」でもほとんどがC言語で書かれておりアセンブリ言語はごく一部に使用されるのみでした。

開発者のソイヤー氏は2024年のインタビューで「高級言語で書くとゲームが遅くなりすぎたり、速度を維持するためにシミュレーションの複雑さを制限したりする必要がありました。ゲームの見た目と操作感は私にとって非常に重要で、そのためには、高いフレームレートを維持しながら、パークを十分に広く詳細に表示し、ゲームが窮屈に感じないように十分な数の列車、乗り物、ゲストをシミュレートする必要がありました。ゲームが処理しなければならないオブジェクトの数が多かったため、オブジェクト処理に関わるほぼすべてのコードが非常に効率的である必要があり、そのため昔から好んでいた低レベルのアセンブラプログラミングを選択しました」と語っています。

さらに、アセンブリ言語の使用だけではなく、「ローラーコースタータイクーン」のコードは積極的に最適化されていたとティーセン氏は指摘しています。「ローラーコースタータイクーン」のコードは公開されていませんが、ほぼ同等の内容でシナリオや施設を強化した「ローラーコースタータイクーン2」は、熱心なファンによってオープンソース再実装するプロジェクトが進められています。ティーセン氏によるとこのプロジェクトもオリジナルのソースコードではありませんが、長年のリバースエンジニアリングに基づいた再現度を誇るそうです。


「ローラーコースタータイクーン」の最適化の例として、ティーセン氏は以下のような具体例を説明しています。

・お金の種類
ゲーム内で扱われる「お金」は、一律のデータ型ではなく、用途ごとに異なるサイズで管理されることが多くなっています。通常であれば最大値を想定してデータ型を決めますが、「ローラーコースタータイクーン」ではそれをさらに細かく分け、「施設の価値など大きな値を扱う場合は4バイトを使用」「ショップの価格のような小さな値は1バイトで管理」といったように変数ごとに最適なサイズが選ばれています。現代のCPUではこのような最適化による性能差が小さいため多くの値が8バイトの変数に統一されていますが、当時の設計としては最適化に役立ったと見られています。


・数学演算をビットシフトに置き換える
「ローラーコースタータイクーン」では、掛け算や割り算の一部を「ビットシフト」と呼ばれる処理に置き換えることで高速化しています。これは数値を2倍・4倍・8倍といった「2の倍数」で計算する場合に使えるテクニックで、例えば「×4」は数値を左に2ビットずらすだけで表現でき、「÷8」は右に3ビットずらすことで求められるというように、計算を単純化させることで通常の計算よりもCPUが高速に処理できます。こうした計算を多用できるように、ゲーム内の数式自体があらかじめ「2の倍数」で処理できるよう設計されている点も特徴です。

・パフォーマンスを重視したゲームデザイン
また、「ローラーコースタータイクーン」はゲーム体験をコードに最適化しただけではなく、パフォーマンスを最適化できるようなゲームをデザインしている面もあるとティーセン氏は指摘しました。例えばゲーム内で使用されている経路探索では、来場客が遊園地内の訪れたいアトラクションを決定してそこまで歩いていく場合、どのようにそのアトラクションまで向かうかという経路を探索する「パスファインダー」が処理負荷の高い作業となります。そのため、「ローラーコースタータイクーン」では来場客は目的地を決めて移動しますが、処理負荷を抑えるため経路探索には上限が設けられており、結果として処理負荷の高いシミュレーションゲームではあまり見られないような遠回りや迷子が発生することがあるとのこと。さらに、この制限はゲームシステムにも組み込まれており、園内マップを購入した来場客はより広い範囲を探索できるなど、最適化がゲーム要素としても活用されています。


・渋滞のない人混み
経営シミュレーションゲームでよく発生するのが、客を集めすぎて処理落ちするというトラブルです。「ローラーコースタータイクーン」では、来場客同士が互いに避けたり重ならないようにしたりすることはなく、「人が多すぎる」という悪い評価だけが提示されます。これもパスファインダーの例と同じように、シミュレーションゲームの挙動としては違和感がありますが、パフォーマンスを最適化するためのゲームデザインと言えます。


総合すると、「ローラーコースタータイクーン」のパフォーマンスが優れているのは「どこまでを正確に計算するか」「どこを省略するか」という判断が優れており、またゲームデザインとプログラミングを同一人物がしていることでプログラムの最適化に合わせたゲームデザインを実装できている点にあります。ティーセン氏は「この最適化は当時だからこそできた部分もありますが、現代ではもう不可能というわけではありません。ただ、プログラマーとゲームデザイナーの間でより多くの対話が必要であり、技術的な課題に対してノーと言う勇気も必要になるということです」と語っています。

この記事のタイトルとURLをコピーする

・関連記事
遊園地経営SLGのジェットコースターで計算機を作り上げた猛者が登場 - GIGAZINE

人気シューティングゲーム「VALORANT」のサーバー側処理時間を50ミリ秒から2ミリ秒未満へ短縮した方法とは? - GIGAZINE

最適化不足で批判が集まる「ボーダーランズ 4」開発元CEOが「独自のゲームエンジンをコーディングしてみろ」と反論 - GIGAZINE

NVIDIAがゲームお助けAI「Project G-Assist」を発表、「序盤最強の武器は?」「どのスキルを上げればいい?」「60fpsを維持できるように設定変更して」といった質問に応答可能 - GIGAZINE

HDD最適化からSSD最適化に変更したことでAAAゲームのデータ量が154GBから23GBへスリム化 - GIGAZINE

in 動画,   ソフトウェア,   ゲーム, Posted by log1e_dh

You can read the machine translated English article What makes 'RollerCoaster Tycoon,' the a….