100日後に完成するゲームシステム 62日目「データベースのメッセージデータを会話データに変換する仕組み」

2021年4月8日

テクノロジー 特集

eyecatch 毎日の積み上げ作業を得意としている、弓削田です。 このブログも、毎日更新を行っていて、もう4ヶ月目に入ります。 そして、投稿数も100件をかるく越えました。 ブログ記事が100件オーバーになったら、本格的にSEO対策をやっていこうと考えていたんですが、 対策はもう少し先になりそうですね。 そして、今回は、ゲームの会話システムとデータベースを連動したいという考えから、 それに該当する仕様を考えて構築してみました。

会話データ事態はデータベースとは切り離すポイント

この仕様を決めるまで、非常に何度もトライアンドエラーを重ねてきたんですが、 そもそも、会話パターンのデータ事態が、データベースであると安易に考えたのがスタートで、 その会話システムを使ったバトルモードで、たくさんのクイズ問題を出すことを考えた時に、 JSON構造の会話パターンで、エクセルなどのようなデータ管理をしようとすると、次のようなデメリットがあります。
・一覧として、全体が見ずらい ・項目別に、縦軸で見ずらい ・同じ項目がある場合に見つけづらい ・改行をワンラインで記述するのがストレス ・手打ちの場合にエラーが見つけづらい
ちなみに、JSON構造のデータは次のようなデータです。 [ { "messages" : [ { "id" : "0", "message" : "アメリカの初代大統領リンカーンは、大統領になる前は、何をしていたでしょうか?\n", "size" : "large", "menu" : [ {"value" : "プロ野球選手" , "next":"ng" , "continue":true}, {"value" : "猟師" , "next":"ng" , "continue":true}, {"value" : "レスラー" , "next":"ok" , "continue":true}, {"value" : "タクシー運転手" , "next":"ng" , "continue":true} ] }, { "size" : "large", "id" : "ok", "message" : "正解!!!\n青年時代に、イリノイ州サンガモン郡(現在のメナード郡)で、\nごろつき集団の挑戦を受け、デントン・オファットの雑貨屋でレスリングの賞金試合(創世期のプロレス)を行い引き分けて、レスラーになったという逸話があるらしい。", "next" : "0" }, { "id" : "ng", "message" : "ブー!!!\nはずれ!!!", "next" : "0" } ] }, { ... }, ... ]

やっぱりエクセル風が見やすい!

実際にデータを登録してみると、JSON構造のデータを数多く登録するよりも、 こうしたエクセル風のマトリクスデータの方が遥かに見やすいです。 UIなどは、結構色々と変更して、今現在この表示で落ち着きました。 それぞれの行をクリックすると、次のようなダイアログが表示されて、 JSONよりもはるかに簡単に入力をすることができます。 エクセルで作って、データをエクスポートする方式も考えたんですが、 クイズ出題の箇所の選択肢と、その答えの箇所が、多重配列になるので、この点を考えて エクセルよりも、webシートにして、エクセルUIを踏襲した方が、その後の機能追加などの対応などで 柔軟に対応できると判断して、今はこの状態です。 もちろん、入力も、エクセル風にしてもいいんですけどね。 とりあえず、今のところ仕様というワケです。

重要なコンバート処理

このエクセル風データはシステムの裏では、JSONデータで保持していて、 そのJSONデータを、会話用のデータにコンバート処理をする処理がひと手間かかるようにしています。 自動同期にしてもいいけど、2つのデータを分けることで、管理と、本番デプロイという仕組みにも適用できるので 本番では、エクセル風のリストデータは不要で、コンバートされた会話データだけがあればいいという感じになります。 とにかく、これは管理画面仕様なので、ゲームをプレイするユーザーには一切関係の無い機能なんですが、 比較的、時間をかけて構築したので、裏方として、ブログで紹介してみました。 他にも管理画面構築は山程あるので、作業はてんこもりです!

人気の投稿

このブログを検索

ごあいさつ

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

ブログ アーカイブ