1985年-1990年くらいのこと。ゲームブックというものが流行った。ゲームブックとは、乱暴に言えば、ロールプレイングゲームや、分岐型シナリオゲームを紙面上で実現したもの。歴史的にはこの表現は逆で、ゲームブックをコンピュータゲーム化したものが今で言うロールプレイングゲームや、分岐型シナリオゲームと言ったほうが正しい。
ゲームブックの奇作かつ代表作が、ハービーJブレナンのGrailQuest。全8巻のシリーズで、「暗黒城の魔術師」「ドラゴンの洞窟」「魔界の地下迷宮」「七つの奇怪群島」「魔獣王国の秘剣」「宇宙幻獣の呪い」「幻し城の怪迷路」「ゾンビ塔の秘宝」。昔はドラゴンファンタジーと銘打っていたが、そんな特徴の薄いありがちな名前より、ピップの冒険とか、14へ行けとか、のほうが通りがいい。最近、復刻版が出ているので、定価で買える。
さて、ゲームブックの戦闘では、ドラゴンクエストのような戦闘を手動でやる必要がある。サイコロを振って乱数を作り、ダメージを手計算でやらないとダメだった。当初はファミコンの黎明期でPCも高価だったので、代替手段が無く手計算を平然とこなしていたが、いまとなっては面倒くさい。
なんとかプログラムを作って自動化できないものか。ということで、ちょっとプログラムを作成中。今の時代、プログラム制作側もコンパイルとか面倒くさいし、ユーザー側もいちいちダウンロードするのは面倒くさい。そこで、ブラウザ上で気軽に試せるようにJavaScriptで開発を試みた。 本屋でプログラミングの教科書をあさってみたけれど、最近のゲームプログラムの教科書って、物理計算や画面表示から入るんだね。アイテム管理や戦闘進行とかのテクニックが欲しいのに。
まずは、緒戦の意地悪ジェイクだけ(リンク先で、セクションに0を入れて、GoToボタンを押すと試せる)。これからやることは沢山あって、
いろいろ課題はあるけど、泥縄で取り組んでみよう。
2011年03月23日現在、ソースコードを全面的に書き直そうかどうか検討中。 理由は、コマンド入力ができないプログラムになってそうだから。 スケジュール管理が上手くできてない。
→方針が立った。結局、ユーザーの入力待ちの時は、入力があったか判定する関数が自分自身を定期的に呼び出すようにしないとダメ。
→さらに、その入力判定関数は、他の関数の途中で呼び出されると不味いことが判明。さもないと、入力判定関数が絶賛入力受付中の状態のまま、プログラムはお構いなしに先に進んでしまう。そして、入力があったときに実行される関数がプログラムを続けるように促さないといけない。
→とりあえず、アイテム管理のシステムを立ち上げて、軟膏だけ使えるようにした。移動中は問題ないけど、問題は戦闘中。戦闘中に行動を選択できて、しかも異なる行動は異なる効果を生み出さなくてはならない。授業が始まるので、再開は2011年7月半ばから。それまで開発はお休みしまーす。あー誰か僕の代わりに作ってくれんかなあ。
→2011年11月21日、再開。プログラムを1から見直そう。リハビリに、サイコロをjpg画像を読み込むのではなく、canvas機能で描くことにした。サイコロを振る以外の全ての動作の最初に、サイコロ転がし中か否かを判定させるようにすれば、サイコロ中はサイコロ以外の動作が出来ないはず。うん。
→2011年12月03日、装備品を実装。最強ボタンを作り、全ての装備を手に入れた状態で始められるようにした。デバッグ用。そして、データ内部の装備が変わったら表示を亢進する関数を実装。FireFoxで動作確認。InternetExplorerでは動かない。
→2012年01月01日、やったー、とりあえず出来たー。友好反応のサイコロの表示がおかしいとか、まだバグはあるけど、一通りプレイできるみたい。
何かコメントがあればどうぞ。