久々に開発ネタを。
といっても、自分のメモによれば 2000 年あたりから考えていたものですが、どう考えても実装する時間も気力もなさそうなので、ネタとして公開することにします。
まあいずれ作る可能性も残ってはいるわけですが、別に、これを見てパクってインスパイヤしてくれても全然構いません。
タイトルにも書いたように、このネタのコードネームは SPEC です。これは Scenario Player with Extensible Commands の略称で、何をするものかと言えば、アドベンチャーゲームのシステムとなるプログラムです。
特定のアドベンチャーゲームのプログラムではなくて、もう少し汎用的な実行環境です。
SPEC の仕事はシナリオと呼ばれるファイルを読み込んで、そこに書かれたコマンドを書かれた順に実行することです。ただし、普通、アドベンチャーゲームには選択肢というものがあるので、シナリオは分岐することがあります。大雑把に言うと、1 つ目のコマンドを実行し、次に 2 つ目のコマンドを実行し、続いて 3 つ目のコマンドを実行‥‥というように順にコマンドを実行するのですが、条件分岐があると、4 つ目のコマンドはとばして、5 つ目のコマンドを実行したりだとか、一気に 10 個目のコマンドへジャンプしたりという、シナリオの制御を行います。
簡単にコマンドという言葉を使いましたが、具体的には「メッセージを表示するコマンド」、「画像を表示するコマンド」、「音を出すコマンド」、「選択肢を表示するコマンド」、「条件に応じてシナリオの分岐(ジャンプ)を行うコマンド」‥‥etc なんてのがあります。
ここまではまあよくある(?)システムだと思うのですが、実は SPEC のウリにしたいのは、これらのコマンドの種類をシステム自身とは切り離して自由に拡張できることです。
例えば、シナリオで雪のシーンになったら、画面上にちらちらと雪の降るアニメーションを起こしたい、とかあるじゃないですか。それも常に同じ絵じゃなくて、背景とかの絵が出ている上に重ねるようにして雪がちらちらと舞うとか。他にも、画面を揺らす効果だとか、エンディングでスタッフロールを流したいだとか、ミニゲームとして 15 パズルをやらせたいとか‥‥。
システム側でいくらコマンドを用意してやっても、要望に全部応えることはできません。
それなら、そのコマンドをシステムとは別に増やせればいいじゃないかと。
もちろん、コマンドを作るのにはプログラミングの知識が必要になります。しかし、プログラミングの知識がある人がアドベンチャーゲームを作るときでも、一からプログラムを書くより、足りないコマンドだけを作る方が楽できます。それから、コマンドを作った誰かが作ったコマンドを公開すれば、プログラミングの知識を持たないアドベンチャーゲームのシナリオ作者(スクリプトだけ記述するような)でも、公開されたコマンドを使ってその恩恵に授かることができます。
以上のことをどのように実現しようかっていう、もうちょっと細かい設計もある程度進めていたわけですが、それについてはまた次回以降で。
● まとめ ●
といっても、自分のメモによれば 2000 年あたりから考えていたものですが、どう考えても実装する時間も気力もなさそうなので、ネタとして公開することにします。
まあいずれ作る可能性も残ってはいるわけですが、別に、これを見て
タイトルにも書いたように、このネタのコードネームは SPEC です。これは Scenario Player with Extensible Commands の略称で、何をするものかと言えば、アドベンチャーゲームのシステムとなるプログラムです。
特定のアドベンチャーゲームのプログラムではなくて、もう少し汎用的な実行環境です。
SPEC の仕事はシナリオと呼ばれるファイルを読み込んで、そこに書かれたコマンドを書かれた順に実行することです。ただし、普通、アドベンチャーゲームには選択肢というものがあるので、シナリオは分岐することがあります。大雑把に言うと、1 つ目のコマンドを実行し、次に 2 つ目のコマンドを実行し、続いて 3 つ目のコマンドを実行‥‥というように順にコマンドを実行するのですが、条件分岐があると、4 つ目のコマンドはとばして、5 つ目のコマンドを実行したりだとか、一気に 10 個目のコマンドへジャンプしたりという、シナリオの制御を行います。
簡単にコマンドという言葉を使いましたが、具体的には「メッセージを表示するコマンド」、「画像を表示するコマンド」、「音を出すコマンド」、「選択肢を表示するコマンド」、「条件に応じてシナリオの分岐(ジャンプ)を行うコマンド」‥‥etc なんてのがあります。
ここまではまあよくある(?)システムだと思うのですが、実は SPEC のウリにしたいのは、これらのコマンドの種類をシステム自身とは切り離して自由に拡張できることです。
例えば、シナリオで雪のシーンになったら、画面上にちらちらと雪の降るアニメーションを起こしたい、とかあるじゃないですか。それも常に同じ絵じゃなくて、背景とかの絵が出ている上に重ねるようにして雪がちらちらと舞うとか。他にも、画面を揺らす効果だとか、エンディングでスタッフロールを流したいだとか、ミニゲームとして 15 パズルをやらせたいとか‥‥。
システム側でいくらコマンドを用意してやっても、要望に全部応えることはできません。
それなら、そのコマンドをシステムとは別に増やせればいいじゃないかと。
もちろん、コマンドを作るのにはプログラミングの知識が必要になります。しかし、プログラミングの知識がある人がアドベンチャーゲームを作るときでも、一からプログラムを書くより、足りないコマンドだけを作る方が楽できます。それから、コマンドを作った誰かが作ったコマンドを公開すれば、プログラミングの知識を持たないアドベンチャーゲームのシナリオ作者(スクリプトだけ記述するような)でも、公開されたコマンドを使ってその恩恵に授かることができます。
以上のことをどのように実現しようかっていう、もうちょっと細かい設計もある程度進めていたわけですが、それについてはまた次回以降で。
● まとめ ●
・SPEC (Scenario Player with Extensible Commands) とはアドベンチャーゲームのシステム。
・シナリオファイルを読み込んで、そこに書かれたコマンドの通りに処理を行う。
・コマンドには「メッセージを表示するコマンド」、「画像を表示するコマンド」、「音を出すコマンド」、「選択肢を表示するコマンド」、「条件に応じてシナリオの分岐(ジャンプ)を行うコマンド」、etc などがある。
・SPEC のウリは、これらコマンドの種類をシステムと独立して自由に拡張できること。