Table of Contents
1 はじめに
20年ほど前に、Rogue風のマップとWizardryの戦闘システムを組み合わせたような、Daemonという名のゲームをC言語で作って公開していたのですが、去年末くらいにホストしていたWebサイトがひっそりとクローズしていました。
私はPythonの修行中で、中級者向けの本を何冊か読んだのですが、実践不足で本の内容が消化不良になっていることは否めません。そこで、Rogue+WizardryのゲームDaemonをPythonでリメイクしてしばらく実戦経験を積むことにします。Wizardryは古いゲームにしては扱うデータが多く複雑で、データ構造の経験を積むのに適している気がします。当時、C言語で双方向リストを作ってパーティーを表現したりするのが大変だったと記憶していますが、Pythonを使うとどこまで楽になるでしょうか。
とは言え、当時のソースコードや資料は全く残っておらず、全く一から作り直しです。とほほ。
2 どんなゲームを作るか
私はWizardryが大好きなのですが、あの3Dマップだけは苦手です。Daemonを作ったときの動機が、マップ移動の楽なWizardryで遊びたいというものでした。かと言って、立派なグラフィックの2Dマップを作る余裕もセンスもありません。そこで今回もRogue風のテキストベースマップのお世話になります。
マップ画面イメージ:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^######################..........### ^^^^^######################..........### ^^^^^######################..........### ^^^^^######################..........### ^^^^^######################..........### ^^^^^######################..........##. ^^^^^########.......########+###+######. ^^^^^########.......@#######.###.######. ^^^^^########.......+............####### ^^^^^########.......########.########... ^^^^^###########+###########*########... ^^^^^###########.#######.........####... ^^^^^...........+#######.........####... ^^^^^...........+##....*.........####...
戦闘システムはWizardryを踏襲し、6人パーティー制です。戦闘は文章だけで進行します。魔法使い、僧侶のスペルは著作権の関係で同じ物(Katino, mahalito, dios等)が使えないので、名前は考えなくてはなりません。今回は日本風にしようかな。
Daemonではダンジョンマップをデータとして用意しましたが、10階分も用意するのはかなり大変だったので、今回はRogueライクを見習って自動生成します。アイテムやモンスターも入力が面倒なので、固定のものを除いて自動生成にしましょうか。うまくゲームバランスが取れるでしょうか。
城や街はマップ無し、メッセージのみのWizardry風です。Wizardryでは年を取るのが怖くて馬小屋ばかり使っていましたが、なんだか可哀想なので年は取らないようにし、年齢ペナルティーも撤廃しましょう。
3 どこから手を付けるか
まずはキー入力(リアルタイムキースキャン)と画面表示(任意の位置に文字を表示)から始めます。低レベル機能のため、Pythonなのに機種依存が出てくるかもしれません。なるべくPyGameのような大がかりなライブラリには手を出したくないところです。
次はダンジョンマップの自動生成とスクロールマップの表示にチャレンジします。Pythonでローグライクを作るチュートリアルを斜め読みして予習したので、マップの自動生成は多分行けるでしょう。むしろ、ここで十分な性能が出ないと、プロジェクトを断念することになるかも。
次回のアップデートはこのあたりが出来たらになると思います。それでは。