Java Console Game〜ゲームシナリオの作成方法〜
ゲームシナリオ作成の方法について調べてみました。参考にしたのは下の書籍です。
この本を参考にゲームシナリオの作成方法に関してまとめてみました。
前提
- テキストRPGでプログラム初心者がJavaを学習しながら作成できる。
- ストーリーはメインストーリーがあり、不特性多数のストーリーを巻き込むことで「クエスト」を発生させ、ゲームがどんどん進行していく
- ゲームの世界観としては精神(ファンタジー)と現実の世界が2元的に存在する
- 主人公(プレイヤー)はいろんな世界(精神世界を含む)を行き来することができる
理由は、ゲームをプレイしているから
学習したこと
上記の本より学習したことは以下の通りです。
- ゲームシナリオも通常の小説などと一緒で「起承転結」で構成される
- 観点として重要な部分は、以下の通り
・テーマ
・キャラクター
・世界設定
・プロット(作成ゲームのテストモデル)
・トーン - キャラ作成時のポイントは以下の通り
・性格
・行動原理
・成長の仕方
・結果として何をなすのか?
・キャラクターの好感ポイントはどこか? - 作成するときの作業フローは以下の通り
計画→企画書→プロット→仕様→{シナリオ, グラフィック, 音, プログラム}
※「{ ... }」の中にあるのはチームで分担する作業になる
大雑把にこのようなことが記載されていました。
自分の場合で考えてみますと、下のようになります。
・テーマ :精神世界と現実世界の交差点を描く
・キャラクター:未定
・世界設定 :精神世界と現実世界を行き来できること以外未定
・プロット :できていない
・トーン :未定
上記のように全く、何も決まっていない状態です。
しかし、プログラムで作成するのであれば、プログラムの作成方法でこの「未定」になっている部分をそのまま残しつつも出来上がっている部分を作成する方法があります。
スタブ化する
実際の仕事でも、「仕様が未定」になっていることが多々あります。いろんな声が聞こえてきそうですが、誰にもなんともできません。時間は戻すことができないからです。
ここまできたら、やるしかないので「頭を使います」
「スタブ」という言葉が「よくわからん」という人向けに説明すると以下のようなイメージです。
Javaプログラムのインターフェースのようなもの。
プログラムで書くとしたのようなコードになります。スタブメソッドです。
public void testStub(String testKey) { // 処理なし }
これがスタブです。つまり呼び出すところだけ作成してしまいその中は未実装(空実装
)にしておく実装方法です。
よく使用するのは、スーパークラスにスタブメソッドを作成しておき、後々にこクラスの方でオーバーライドさせるようにする方法です。
具体的には以下のようになります。
public class OyaClass() { public abstract void stubMethod(); public void test() { System.out.println("このクラスはスタブメソッドがあるのでオーバーライドしてください"); } } public class MainClass() { @Override public stubMethod() { System.out.println("オーバライドです"); } public static void main(String[] args) { MainClass main = new MainClass(); main.stubMethod(); } }
このような感じです。
さて、問題のシナリオ作成ですが、もう少し頭をひねる方向でいこうと考えていますので次回以降ということで。。。。
でわでわ。。。