マルチゲームScripter
マルチゲームScripterは、アスキーツクールシリーズとして登場したC言語ライクなプログラム言語。
1994/12月発売。
翌年にwindows95が登場し、MS-DOSは下火になっていく直前に、
PC98 MS-DOS用ソフトとしてリリースされた、悲劇のプログラム言語。
今回は、マルチゲームScripterについて見ていきたいと思う。
↑ココらへんは、ゲームグラフィックTV的な声で脳内読み上げしてください。
なお、ドヤするラルフ・ベアは出て来ません。
構文
資料が無いです。 >_<
実家に帰って押入れを探すともしかしたら、あるかも・・・?
確か、MAIN.MGL ファイルからスタートだったと思う。
C言語ライクな構文で書ける、ゲーム技術に特化した言語だった。
手元に資料がないので、この記事は記憶をたどって書いてます。
間違ったところが多々あると思います。
ご指摘いただけると助かります。
たしか、こんな感じだったような。。。
seen main { msg("hello world!"); }
もしたから、seen じゃなくて stage だったかもしれない。(覚えていないです。)
C言語ライクな構文で書けて、
関数もかけるが、シーンというブロックごとに記述していく。
変数型は、、、覚えていない、ごめんなさい。あったような、なかったよーな。
言語の特徴 シーン駆動言語
関数の他に、シーンというブロックで動いていく。
シーンの中に、ボタンとか於けて、 javascriptでいう onclickみたいなことができる。
イベント駆動式。
シーン { ボタン() { 処理 } ボタン() { 処理 } ボタン() { 処理 } }
シーンごとに切り替えることができる。(確かこんな感じだったよーな・・・)
シーン { ボタン() { 次のシーンXXへ } } シーンXX { ボタン() { } }
今で言うなら、 html と javascript に似ている。
onclickなどで処理を技術して、それにより、ページを遷移していく感じに近い。
言語の特徴 ゲームを作るのに特化した
マルチゲームScripterはゲームを作るのに特化したプログラム言語だ。
PC98でゲーム開発を行う上で発生するさまざまな問題点を綺麗にラップしてくれる。
PC98上ゲームプログラムの問題点
裏画面
PC98には表画面、裏画面という2つの領域がある。
ダブルバッファとして使うもいいし、
2つを部分結合させてスクロールさせることもできるし、
画像置き場として使うのもいい。
マルチゲームScripterは、当然これらをサポートしている。
確か、スクロールさせる命令もあったはずだ。
EGC
PC98のVRAMはクサっていてゲームなどのリアルタイムには向かない構造。
ふつーのPCは、RGB RGB RGBという感じで並んでいると思うが、
PC98は三原色ごとにビットで並んでいる。
RRRRRRRRRRRRR GGGGGGGGGGGG BBBBBBBBBBBBB みたいな感じ。
これをシステムが合成して、表示する。
特定のドットの色を変えるには、ビット演算を駆使して、RGBごとにアドレスを3回求めて、書き換える必要がある。
ふつーのPCは、RGBが隣り合っているので1発で書き換えられるが、PC98は、三原色ごとに領域が分かれているので、3倍処理に時間が掛かる。計算もめんどい。
そこで、それをなんとかするためにNECが作ったのが、EGC。
これらをえいやーと転送できる。早い。
しかし、アセンブラでゴリゴリしないとダメ。
EGC使わないと、死ぬほど遅い。
だけど、アセンブラはむずい。
そこで、マルチゲームScripterは、 VBの bitblt みたいに簡単に転送できる命令を用意している。
命令を呼ぶだけで画像を高速に転送することができる。
music再生
PC98でbeep音以外で音楽再生しようと専用のドライバが必要になる。
MS-DOSには、スレッドなんてないわけし、バックグラウド常駐をサポートする機能もない。
すべてプログラマが自分で作る。すべてアセンブラの世界。これは死ねる。
マルチゲームScripterは music関数 を呼び出すだけで、MMLをバックグラウンドで再生できる。
ふつーなら、アセンブラでガリガリやらないといけないところを music関数一発で、勝手に裏側で音楽再生だ。
windowsでいうmciのような機能があった。
ゲームのバックグラウンドを鳴らしたい人にとっては、これは神すぎる機能だ。
コンパイルで exe を生成
マルチゲームScripterは、コンパイルして exe を生成することができる。
コンパイルすると画像とか音楽とかを全部まとめてexe ファイルになる。
RPGツクールとかだと簡単にデータファイルを覗かれるが、マルチゲームScripterはそんなことexeになるのでそんな心配もない。
とても安心だ。
ただ、逆に、これが仇となって、ソースコードがネットに出回っていない。
これが、将来、忘れ去られる原因の一つになる。
また、言語側でフロッピー10枚までの分割をサポートしている。(確かそーだった気がする)
当時のハードディスクは超高級品。500MBで数万円ぐらいした。
ネットも貧弱 14400bps が超高速と言われた時代。
CDを焼く環境も一般には出まわっておらず(CDがついていないPCがたくさんあった)、当然、ソフト物流形態は、フロッピーディスクになる。
そこを良い感じにサポートしてくれる、マルチゲームScripter。
いたれりつくせりだった。
そもそものターゲットは?
マルチゲームScripterは、ツクールシリーズではあるが、他のツクールとは違うプログラム言語であって、当時のRPGツクール以上の表現力があった。
RPGツクールで満足できない人たちがターゲットだったのではないかと思う。
また、マルチゲームScripterは、C言語のような、他のプログラムとは違い、ゲームに特化することで、簡単にゲームを作ることができた。価格も他の言語が数万円したのに、数千円で入手可能というリーズナブルなお値段だった。
マルチゲームScripter自体は、C言語ライクな文法を備えており、、いきなり本格的なプログラム言語を高額なお金を出して学ぶよりも、こっちのほうが安いし簡単そう・・・・といった、ゲームを作りたいホビー層を狙っていたのではないかと思う。
私も、C言語をやる前に、マルチゲームScripterで遊んでいた。
マルチゲームScripterを経由して、C言語に入ったので、C言語の文法にすぐに馴染むことができた。
ゲームに特化したプログラム言語ということでいえば、現在の HSPなどに発送的に近いと思う。
また、ゲーム作るための言語組み込みライブラリがあったという意味では、javascriptやDirectXなどを利用したゲームが簡単に作れます的ライブラリにも近いともいえる。
この発想をwebの方に進化させていくと、WebPageをいかに簡単に作るかということに特化したプログラム言語PHP などになっていくと思う。特定の目的に特化した言語だ。
このように、マルチゲームScripterは、PC98でゲームを作りたい層が、いかに簡単にゲームが作れるか?というのを追求した言語だったように思える。
とても便利だが、忘れ去られた。
このように、とてもゲームを作ることに特化した言語だった。
だけど、歴史の試練に耐え切れなかった。
忘れ去られていった。
ほとんどの人はそんな言語があったということすら知らない。
もしかして、 NScript? と言われる始末。
なぜ、忘れ去られていったのか、独断と偏見で見ていきたいと思う。
敗因
発売時期
1994/12月という絶妙な時期に PC98 MS-DOS用ソフトとして発売された。
翌年 windows95が発売され、 MS-DOSは過去のものになった。
そして、今のPCであるDOS/V互換機が安価な価格で供給され、PC98を駆逐していった。
(どっかの団体がとんでもない安価な価格でショップブランドPCを売り始め、PCの価格が大暴落していった。)
このダブルパンチを受けて、PC98 MS-DOSという環境は、一気に過去のものになった。
商用ソフト
商用ソフトとしてリリースされたので、処理系自体を当然ネットで配布することができなかった。
また、国際規格などの公的な規格に基づいた言語でもなく、仕様はソフトの取説を読むという感じであった。
そのため、亜流の処理系が作られることもなかった。
windows時代に入ると、 HSPやNScriptなどのゲームが作れるフリーの処理系が充実し、わざわざお金を出して PC98用の言語を買う価値がなくなった。
名前
マルチゲームscripterが正式名所。
だが、ユーザによっては、たんに scripter と読んでいる。
そして、scripterだと一般的すぎて、googleできない。
ネット上でも、情報の海に埋もれていった。
C言語や D言語、R言語のように、同様に検索しにくい言語もあるが、クローズドな言語で、利用者の母数がとても少ない、マルチゲームscripterは、情報の海の底に埋もれていった。
ツクールシリーズ
マルチゲームscripterは、アスキーツクールシリーズの一種。
RPGツクールとか、シューティングツクールとかと同じ。
だが、
ツクールシリーズからしてみれば、プログラムに寄りすぎていた。
プログラム言語から見ると、ゲームに特化しすぎていた。
中途半端な位置づけだった。
また、RPGツクール2から内蔵スクリプト言語がパワーアップ。
初代は、スイッチというbool配列しか扱えなかったが、RPGツクール2から変数というint配列が使えるようになる。
分岐や繰り返しも強化された。
マルチゲームScripterが、プログラム言語だからの自由度があるといったところがひっくり返されていった。
当時のPCスペック
Pentiumはまだない(もしかしたらあった?)時代。
486CPU 積んでいれば早いといわれた時代。
マルチゲームScripterは、所詮は簡易言語であって、C言語などの最適化されたネイティブ言語には速度的にかなわなかった。
Scripterはアドベンチャーゲームを作ればそこそこなものができるが、アクションやシューティングだと処理落ちしてしまった。
RPGも作れはしたが、当時のメモリ容量の壁があり、現実的でなかった。
もし、現代のように、CPUやメモリがふんだんにあれば、話は変わったのだろうが・・・
このような、敗因が重なり、
マルチゲームScrripter は、一部の知る人ぞ知るものとなった。
当時の日本におけるフリーソフトウェア文化
微妙な言語だったことはわかった。
しかし、それでも、なぜ忘れ去られたのか?
それは、当時の日本におけるフリーソフトウェア文化があると思う。
当時、日本において、フリーソフトウェアは、オープンソースではなかった。(今でも違うけど、、)
バイナリだけをフリーソフトウェアとして公開し、ソースコードは秘匿するというのが一般的だった。
マルチゲームScripterはコンパイル後に exe を吐けることもあり、
公開されるのは、exeファイルだけだった。
マルチゲームScripterで作ったソースコードは公開されなかった。
そのため、現在、ネット上を探しても、マルチゲームScripterで書かれたソースコードを探すことができない。
完全に忘れ去られた、プログラム言語となった。
もし、オープンソースでソースが配布されているならば、windows移植とかをする有志がいたのかもしれないが・・・・
使ってみたい人
マルチゲームScripterを自分もやっていみたいというモノヅキな人はどーすればいいのか?
現在、ヤフオクなどで5000円程度で売られている。
が、PC98用のフロッピーなので、、、読み取ることができるかという問題もある。
発売から、18年が経過しているので、そもそも、まともに読めるかといった問題もある。
PC98エミュレータ
マルチゲームScripterを入手したとしても、PC98がないと動かない。
だけど、PC98エミュレータが作られているので、こいつを使ってだったら動かすことができる。
マルチゲームScripterの処理系は消えてしまったが、
エミュレータのおかげで、かろうじて再現できているというわけだ。