S-JIS[2010-12-05]

ひしだま's 自作ゲームアイデア

ゲームを作りたいなーと(大昔から)思いつつ、時間がとれないので、アイデアだけメモ。


ファラトギス第3章

『ファラトギス』というのは、高校1年の頃(1989)にやっていたTRPGのキャンペーンの名称。[2010-12-05]
そのキャンペーンをコンピューターゲーム化したいと思うのは、プログラマーなら当然の流れ(笑)
(自分は小学6年生のときに初めてパソコンの存在を知り、中学以来、ずっとプログラミング(とゲーム)をやってきた)
ちなみに第2章以前は、そのときのGM(D&Dだから正確にはDM)が中学生のときにやっていたキャンペーンらしい。

以下のアイデアは、大学の頃(1992〜1995)に考えていたもの。

ゲームシステムは、当然RPG。
ただしドラクエのようにマップ上を自分で移動させる操作は面倒なので、ダンジョンマップは全体(行った事がある範囲だけ)を表示し、目的地を指定したらそこに勝手に移動していくというのを考えていた。
(TRPGではマップは紙(方眼紙)に描くので、位置を指して「ここに行くよ」って言うのはしごく当たり前)
もちろん時間経過で敵(モンスター)も移動してゆき、遭遇したら戦闘。
(この移動方法についてのアイデアは、『大戦略III』や『銀河英雄伝説』(1989)が元になっている)

で、TRPGのキャンペーンが元だから、自分達が使ったキャラのパーティーを出したい。
しかしゲームにするんだから、プレイヤー専用のパーティーも作りたい。主人公は一応そっちだよね。
また、ラストの敵の城への突入は複数パーティーによる別方向からの同時進入にしたい。(実際のキャンペーンがそんな感じだったので、気に入っている)
1パーティーくらいは、シナリオ途中で敵の足止めをして全滅するというのもいいかなー(笑)

という訳で複数パーティーをプレイヤーが操作するので、外の全体地図も、パーティーそれぞれの目的地を指定して同時に動いていくようにしよう。
町とかダンジョンといった拠点に先に辿り着いたパーティーからイベントを行う。
ただし移動経路もどこでも自由に移動できるようにする。
普通は町から町への移動だから街道を通るだろうけど、場合によっては森をつっきったり草原のど真ん中に行ったりする。ダンジョンの入り口はそういう場所にあるだろうし。

外マップにせよダンジョン内にせよ、位置を指定したら後は勝手に動いていくのを見守る。自称「(プレイヤーの)手抜きシステム」(笑)
ライフゲームみたいな、眺めているだけのゲームもけっこう好き。

と思ってたら、複数チームによる自由な場所への同時移動って、『伝説のオウガバトル』(1993)で先を越されちゃったんだよなー><


一応、大学時代に、多少は作りかけていたんですよ?
当時持っていたのはX68000XVI

全体マップで目的地を指定した場合の移動経路をどうやって決定するかは難しそうなので、後回し。
というか、『大戦略』で移動範囲を決めるのと同じロジック※でいけるとは思ったが、範囲が広いと計算量が莫大に増えるので、X68kでは厳しいから保留。
(※自分のマスを基点に、周りのマスに移動量(草原だと1、森だと3とか)を加算してゆき、合計値が最も少ないルートを見つければいい。てか、今から思うと、最短経路問題そのものだな^^;)

なので、まずはダンジョンマップを描く部分から作成。
これは、方眼紙上に部屋を配置して通路を線で結ぶような、TRPGで描くダンジョンマップそのものっぽいものを想定。
なので、部屋の座標と通路の座標を指定して自動で描くようなルーチンを作成。
座標の指定は、別途定義ファイルで記述する。そのため、定義ファイルを解釈するプログラムが必要。
これは、当時大学(情報工学科)で習ったyacc(X68kではbisonを使用)とlexを使って作成した。
(ちなみにその後yaccとlexを直接使ったことは無いが、文字列内の四則演算を解釈するJavaライブラリーを作ったときには、この知識は役立った)

この定義ファイルの文法は、例えば直線通路を表すのは、MSX-BASICのLINE文に近い。
「LINE (sx, sy)-(ex, ey)」みたいな感じだったかなぁ。座標を別途変数の様に定義し、その変数名までLINEで指定できるようにもしたはず。
今から思うと、無駄に凝りすぎ!(苦笑)
(今作るなら、自分で文法解釈のプログラムを作るのではなく、Scalaを使ったDSLにするかなー)

さらに、どうせならコンピューターRPGにありがちな直線通路ばかりではなく、曲線の通路も作りたいと思って対応させた。
曲線の始点と終点の座標を指定し、つながる通路の端点も指定する。
2点を通る曲線(円の一部。弧)はいっぱい有り得るが、通路同士の自然な連結をする為に、通路の結合部の角度が一致するようにする。そのため、微分を使って角度を算出し、一致する値を求める方程式を作って解いた。

しかし通路を一応描けたのはいいが(曲線通路のつなぎ目はあまり自然な感じにならなかったが(爆))、それに沿ってキャラを進ませるにはどうすればいいか悩んだ辺りで、挫折。今日に至る…。


自作ソフトへ行く / トップページへ行く
メールの送信先:ひしだま