以前から気になっていたことの一つに「タスクシステムがギャラクシアン発祥というのは史実なのか?」という事があります。
https://twitter.com/t_tutiya/status/769879384811446272
そう言えば、アーケードゲーム初期にプログラミングで採用されていたアーキテクチャであるタスクシステムはギャラクシアンで初めて採用され、その後業界に広がったという話があるのだけど、実際ギャラクシアンを逆アセンブルしてもタスクシステムが出てこないという説もあって正確な歴史がわからない
— 土屋つかさ (@t_tutiya) 2016年8月28日
タスクシステムとはなにか
「タスクシステム」というのは、最初期の商業アーケードゲームにおいて使われていたゲームアーキテクチャです。当時はアセンブリ言語でゲームが作られていて、当然オブジェクト指向のような考えもなかった中、画面上に何十個も表示されるオブジェクトを並列管理する為の効率的な手法が必要とされていました。
その中で考案されたのが、TCB(Task Control Block)という今で言う構造体配列を用意し、そこにオブジェクトの情報をタスクとして格納しました。タスクにはオブジェクトのパラメータの他、今フレームでタスクが処理する命令(ジョブと言います)への飛び先アドレスが格納されました。
メインループではTCBを巡回してジョブを呼びだしていき、各ジョブは自身のパラメーターを更新したり、次フレームで別の処理をさせるためにジョブのアドレスを書き換えたりしました。今で言うステートマシンのような動きをしていたわけです。必要性から生まれたアーキテクチャだったのでしょうが、今でも非常に洗練されているように見えます。
ギャラクシアン発祥説
さて、このタスクシステムがいつ始まったのかというと、ギャラクシアンで採用され、その後逆アセンブルされたり、プログラマーが転職して広まったという説が一般的なのですが、実はこれはどうやら誤った情報らしいということを以前に聞き、それが気になっていました。それで冒頭のツイートをした所、大変有益な情報(というか解答)を頂きました(ありがとうございます)。
https://twitter.com/ksmakoto/status/771276845530517504
教えて頂いた下記サイトでは、実際にギャラクシアンを逆アセンブルし、どうやらタスクシステムでは動いていないらしいという事を確認されています。@t_tutiya その「出てこないという説」の出元はこちらですが、ほぼ確定といってよい情報(と、資料へのポインタ)といっていいと思います https://t.co/hWxQNKM6NG 「ジョブコン」の開発者に関してはこちらも…… https://t.co/ZgUD3CnaNX
— きしもと/Macr055エバンジェリスト (@ksmakoto) 2016年9月1日
ギャラクシアンにおけるタスクシステムの検証(via パピコニアンの倉庫)
http://www.retropc.net/mm/archives/1650
この記事では、多くの人がギャラクシアン説を支持しているように見えますが、恐らくは皆さん、当時Logician Loadの記事を読んだのだと思います(土屋もその一人でした)。当時、ゲームアーキテクチャに対する研究をネット上で読むのはとても難しく、多少興味のある人は多かれ少なかれ、このサイトに辿り着いていたのです。
「デジタルコンテンツ制作の先端技術応用に関する調査研究」という資料が凄い
サイトでは、実際にタスクシステムを発明したのはナムコの故深谷正一さんであることにも言及されています。ナムコではタスクシステムではなく「ジョブコン」と呼称されていたそうです。その言及元の一つとして上げられていたレポートが素晴らしい出来だったので紹介します(このリンクを貼るのが今回の記事の主旨でした)。
平成21年 デジタルコンテンツ制作の先端技術応用に関する調査研究
http://www.dcaj.or.jp/project/report/pdf/2008/dc_08_03.pdf
タスクシステムに関連しているのは以下の3項目です。
・3.2.8 タスクシステム 技術詳細編
・3.2.9 タスクシステム 技術遷移編
・4.10.1 タスクシステムについて黒須一雄氏インタビュー(目次には題名が書いてありません)
この中で最も価値があるのは「タスクシステムについて黒須一雄氏インタビュー」で、当時ナムコで「神の深谷、悪魔の黒須」と言われ双璧をなしていた伝説のプログラマーに、ナムコで使われていたジョブコン(≒タスクシステム)について聞いています(インタビュアーはなんと三宅陽一郎さん! なんという歴史的な対談なのか!)
タスクシステムは、あくまで当時の開発環境で効率的にゲームプログラミングするためのアーキテクチャであり、オブジェクト指向が普及した現代においては、大部分の機能が言語仕様として取り込まれている感があります。ただし、その思想自体は、今日のゲーム開発においても応用が利く普遍性を持っていると感じています。
おまけ
ちなみにこの調査研究、平成20年、22年にも行われいて、どれも300ページ以上の分量があります。どれも読み応えがあるので、お時間あるときにでも是非。
平成21年度デジタルコンテンツの保護・活用に関する調査研究等補助事業
デジタルコンテンツ制作の先端技術応用に関する調査研究報告書
http://www.dcaj.or.jp/project/report/pdf/2009/dc_09_03.pdf
平成20年度デジタルの保護・活用に関する調査研究等補助事業
デジタルコンテンツ制作の先端技術応用に関する調査研究報告書
http://www.dcaj.or.jp/project/report/pdf/2008/dc_08_03.pdf
平成19年度デジタルコンテンツの保護・活用に関する調査研究等補助事業
デジタルコンテンツ制作の先端技術応用に関する調査研究報告書
http://www.dcaj.or.jp/project/report/pdf/2007/dc08_07.pdf