お世話になっております。
質問内容
この度初めてプログラミング言語を用いてゲーム開発(に類似したもの)を行おうとしているのですが、例えばRPGにおける セリフ→選択肢→選択肢に対応するセリフ や 事象→状態チェック→状態チェック結果に対応するイベント などの膨大なシナリオ選択肢(と呼ばせてください)の実装はどのように行われるのが最もよいのでしょうか?
ある程度のモジュール化・引数化は可能だと思いますが、あらゆる状態や条件をチェックする場合これをデータベースのカラム・データのみで管理するのは無理があるのではないか、と感じています(もしくは、レコードのフィールドの中に「これがTrueなら選択肢1に飛ぶ」のようなカラムを実装 するとか して、そこにコードのようなものをそのまま記入してしまうとか)。
このような場合、やはりシナリオのためのコードを逐一記述することになるのでしょうか?シナリオ追加について コード変更ではなくデータの変更のみで対応するためのベストプラクティス などありますか?
とりとめなく恐縮ですが文意をご理解いただけましたらご回答くださいますと幸いです。
どうぞよろしくお願い致します。
補足情報
すみません、以下ご指摘を受けたので補足情報です。
知識レベルについて
「配列・リストの知識があるか」
これについては大丈夫だと思います。よく利用する言語はC#ですが、頻出の型であれば扱えます。
「実際にそのようなツールを触ってみたか」
はい、少しだけですがVisualStudioを用いてASP.net関係の開発をしておりました。ゲーム開発という分野はまったく不慣れでして(WEBやWindowsフォームなどばかり触っていたので)、そのため一般的にはどのように実装されるのか?という趣旨で今回の質問をさせていただきました。
私が何をしたか(この質問を解決するためにしたこと)
思いつくワードで何度かGoogle検索を行いました。
コード変更なしで、データベースのレコード追加でシナリオを(ある程度)作成できることが理想だったので、以下のようなワードを組み合わせて検索しています。
- ゲーム 選択肢 膨大 データベース 設計 コーディング シナリオ 条件 分岐
ただ、やはりデータベースを用いたシナリオ追加ではなくコーディングによる追加を前提とする大量分岐の効率的な実装に関する記事が多く、やはりデータベースでの実装は現実的ではないのかな、と思っている状態です。
これまでの経験でなるべくコードを変更せず、データのみで拡張性をもたせることがよいと感じていたので、本当にコードによる追加しか(適切な)方法がないのか?データベースで拡張性をもたせるよい手法があるならば知りたい。と思っています。
「あるフラグが1だったら」というような単純な条件であればデータベースメインでも実装できるとは思うのですが、「この値がこれで、この値がこれでこの値がこうであるとき」などのような場合は 『「これがTrueなら選択肢1に飛ぶ」のようなカラム』の値としてコードをもたせるしか方法がないのかなと思っております(=その場合、コードを変更するほうがまだメンテナンスしやすい設計なのかな、と)。
実際のところデータベースで実装することは非現実的で「普通ではない」のか、コードを追加する方法でシナリオを追加していくべきなのか、という一般的な感覚…のようなものをご提示いただければ大変幸いです。
利用予定のエンジンについて
実際は「ゲームのようなもの」でして、ビジュアルを持つ一般的な「ゲーム」ではないのでエンジンについては特殊なゲームエンジン等を用いる予定はありません(Windowsのコンソールアプリケーションになると思います)。
ただ、要求仕様が「RPGのシナリオ」とほとんど同じものですので、ゲーム開発の手法を伺えばヒントになるんじゃないか、と思い質問致しております。

回答4件
あなたの回答
tips
プレビュー