100日後に完成するゲームシステム 60日目「ランダム会話の実装」

2021年4月3日

テクノロジー 特集

eyecatch 人と会話をして盛り上がってくると、今何を話していたのかを、忘れてしまうことがある、弓削田です。 会話してると、いろいろな事を考え始めて、実際に会話をしているのに、頭の中では全く別のことを思考しているような状況を 何度か経験したことがあります。 そして、いざ口を開くと、「あれ?今、何話してたっけ???」っていう風になってしまって、 そこで盛り上がっていた会話が終了してしまいます。 なんか、心理的に問題がありそうですね・・・

ランダム会話について

ゲームに置いて、ランダム要素は重要ですが、会話において、毎回同じ話をする、RPGキャラクターに、 少しうんざりする事もあります。 そんな時に、事前に用意しておいたいくつかの会話パターンをランダムで呼び出してくれる機能があれば、 対応は一定なので、ロボットっぽい感じは拭えませんが、同じことばかりを言っていて、 二度と話されなくなるという事は無くなるのではないでしょうか? そんな事を考えて、会話のパターン化と、ランダムで取得できるように、仕組みを考えてみました。

技術的な話

実際に、今現在の会話システムは、ゲーム中の、登場する他のキャラクターとの会話以外でも、 システムメッセージや、戦闘モードの時の表示から、コマンド選択するウィンドウも兼ねているため、 実は非常に複雑な構造になってしまっています。 ただ、比較的個人的には整理されていて、使える状態にはなっているので、 この構造をそのまま使いつつ、ランダムシステムを導入してみたいと思います。 自裁のプログラムソースは、開示できないんですが、javascriptでは、サーバーに対して、どのキャラクターのどういう状況の時の 会話パターンを要求して、サーバー側のCGIで、それをデータベースから選択してきて、jsonで返すという構造にしています。 この、CGIで取得する処理のところで、データベースで複数のパターンの中からランダムでピックアップするだけでいいかと、最初は簡易に思っていたんですが、 実は会話って、その後続いていく要素もあり、会話パターンが、連続するようなトークの場合になると、破綻してしまう可能性があります。 もちろん、ランダム要素は、話しかけるタイミングで、どの会話パターンを使うかという会話IDを初回に返して、その会話が繰り返される間は、 ずっとその値をjavascript側でキープしておくという処理も必要という事に気が付き、 まあまあ、全体的な修正が入るという事を認識しました。

この機能のメリット

もちろん、ランダム以外に、ストーリーを順番に語ってくれるような会話もあれば、選択肢によって、会話の方向性がかわるような場合もあるでしょう。 それ以前に、このランダム会話システムのメリットは、戦闘中のクイズや選択問題をする場合に、たくさん用意した問題集から ランダムで出題がされるという、かなりゲームチックな仕様に適用させることができるので、 問題難易度に分類された、問題集からランダムにピックアップされた問題を出題するという、 学習ゲームにふさわしい戦闘仕様が作れることになります。 要するに、この仕様は、このゲームには必要不可欠という事なんですね。 そんな感じで、また一歩、ゴールに近づいた進捗でした。 さて、パターンをたくさん作るためのデータ構築でもするか・・・

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ