世界を動かす技術を、日本語で。

ゲームエンジンに関するホワイトペーパー:コマンダー・キーン

概要

Commander Keen のゲームエンジンに関する 詳細な技術書 が、35年以上の時を経て公開。 紙版とPDF版 で提供、PDFは無料ダウンロード可能。 GitHub で書籍のソースコードも公開。 80~90年代の 開発環境や技術的課題 を詳細解説。 誤記指摘 はGitHubのIssueで受付。

Commander Keen ゲームエンジン技術白書のリリース

  • Commander Keen のゲームエンジンに関する 技術白書 の出版
  • オリジナルゲームのリリースから 35年以上 を経ての実現
  • 2026年3月28日 に公開
  • 書籍は 全214ページ・フルカラー 構成
  • Amazon(USA、NL他) で紙版販売
  • 高解像度PDF は公式サイトで 無料配布
  • 書籍の ソースコードGitHub で公開
  • 執筆には 3年以上 を要し、 著者自身の青春時代の回帰体験
  • C言語やアセンブリ によるMS-DOS環境でのデバッグ経験
  • 当時の ハードウェアや開発課題 に関する深い知見の獲得

書籍の主な内容

  • 1980年代後半~1990年代初頭 のゲーム開発現場の実態
  • 80286 CPU、EGAビデオカード、サウンドカード、キーボード などのハードウェア詳細
  • ゲームアセット制作工程
  • ゲームエンジン 自体の構造と設計思想
  • CGAバージョン の制作工程と技術的工夫

誤記・フィードバック受付

  • 書籍の 正確性確保 に最大限努めた旨の記載
  • 誤記や修正点 があれば GitHub Issue で報告依頼

Hackerたちの意見

『Masters of Doom』はidソフトウェアの歴史についての素晴らしい本で、CarmackとRomeroによるスムーズスクロールの開発の起源が紹介されているんだ。あの時代のPCでは画期的だったよね。

C64の人たちに面白い豆知識: Carmackの技術の基本的なメカニズムは、C64のフルスクリーンスムーズスクロール効果と非常に似てるんだ。どんな速度や距離でもね。今ではDMA遅延って呼ばれてる。ELIF: CPUを騙して、ハードウェアが設計したのとは違うスタート地点から画面データを表示させるんだ。これが結構難しくて、サイクルを正確に実行する必要がある。詳しい説明と主要なトップクラスの効果については、こちらを見てね。この記事は伝説的で、C64で最も洗練された効果を出すためのバイブルみたいなものだよ。いくつかの効果は、クロスプラットフォーム開発の可能性やより良いツールのおかげで、さらに詳しく説明されて利用されているけど、ここでのメカニズムを理解することは、C64デモのチャンピオンズリーグで役割を果たすためには必須だよ。技術を実装する能力も必要だしね。https://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt

注意すべきは、John Romeroが数年前に自分の本『Doom Guy』を出したことで、これが『Masters of Doom』のいくつかの話と矛盾しているんだ。MoDの方が多分スリリングな読み物で、両方の本を楽しんだけど、いくつかの話は鵜呑みにしない方がいいかも。『Doom Guy』も読む価値があると思うよ。Ion Stormで何が起こったのか、Daikatanaプロジェクトがどう崩壊したのかについて、もっと深い洞察が得られるからね。それに、あの悪名高い「John Romero's about to make you his bitch」広告についての重要な文脈もあるし(実際、彼は全く公開したくなかったんだ)。でも、話がそれちゃったね。

日本の初期ゲームシーンを追ってるんだけど、西洋とたくさんの共通点があったんだ。NECのPCでDOSを動かしてて、そのシステム用のゲームがたくさんあったよ。一部はスムーズなスクロールもあった。後から出てきたのかな?IDソフトウェアのアプローチを真似したのかな?

誰かFabien Sanglardに連絡して!彼のサイトにめっちゃ似てる!

彼のサイトは、彼が知っているように、他の千のサイトと同じように見える。私たちは、宇宙の始まりから存在するミニマリスティックなデザインのためではなく、コンテンツのために彼のサイトを利用しているんだ。

本からの著者のメモ: 「...私はファビアン・サングラールのウェブサイトを発見し、彼の『Game Engine Black Books』を読み始めました。Wolfenstein 3DやDoomについてのその作品に触発されて、Commander Keenのために同じようなことができるか考えました:ソースコードを開いて、ファイルを探り、全体のアーキテクチャや使われている巧妙なトリックを組み合わせていく。この本のスタイル、寸法、構造は、ファビアンの『Game Engine Black Books』に意図的に似せてあり、彼の傑作へのオマージュです。個人的なひねりを加えるために、タイトルとカバーを白に反転させました。」

わあ、あなたのコメントを見る前は彼の本の一つだと思ってた。指摘してくれてありがとう!

素敵な本だね。ざっと見てるところ。これを文脈に置くために役立つかもしれないのは、当時のPCハードウェアと比べて、SNESのような現代のハードウェアがスプライトをどれだけ効率的にレンダリングしていたかについての簡単な議論だと思う。現代の読者には、計算能力がはるかに強力なPCが、当時の遅い任天堂ハードウェアにスプライトレンダリングで追いつけなかった理由が明らかではないからね。

現代の読者には、なぜ当時のスプライトレンダリングで、はるかに強力な計算能力を持つPCが、遅い任天堂のハードウェアに追いつけないのかが明らかではない。簡単に言うと、4世代目以前のゲーム機は、高価なRAMを節約するためにフレームバッファを持っていなかったんだ。CPUは、タイルやスプライトを使ってシーンを構築する方法を小さなビデオRAMに書き込み、専用のビデオハードウェアがそれを1行ずつビデオ信号に変換する。全フレームは毎回のビデオリフレッシュでゼロからレンダリングされるから、Commander Keenのアダプティブタイルリフレッシュみたいなトリックは必要ない。60fps(PALハードウェアの場合は50fps)でのスクロールは、ビデオメモリの単一の値を変更するだけで済む。アタリ2600の「ビームを競う」みたいなもので、柔軟性は少ないけど、専用ハードウェアで行うからCPUを占有しない。PCでは、CPUが実際のグラフィックスをフレームバッファに書き込み、グラフィックカードがその内容をビデオ信号として出力する。単純なスクロールのアプローチはフレームバッファ全体を書き直す必要があるから、冗長な書き込みを避けるトリックが非常に有益なんだ。[0] アタリリンクスを除いて、解像度が160×102のポータブルシステムだったけど、他に例外は思いつかないな。もっとあるかもしれないけど。

この動画はSNESの仕組みを説明するのがめちゃくちゃ上手いよ: https://www.youtube.com/playlist?list=PLHQ0utQyFw5KCcj1ljIhE...

ゲームボーイについてだけど、SNESじゃなくて、でもこのトークは内部の詳細についてすごく良いよ。グラフィックの部分は29分あたりからだけど、全体の動画が好き。レトロなファンタジーコンソールを作るためのハイレベルなガイドって感じ。 https://youtu.be/HyzD8pNlpwI?t=1759

Hacker Newsで議論の続きを見る