これはドリコム Advent Calendar 2024 の 12/2 の記事です。前回は おーはら さんによる「2024年 エンジニアがランニングを始めての振り返り」です。
ランニングとても楽しそうです。
こんにちは!エンジニアの広井淳貴です。
本日は社内用のFAQボットを作ってみた話を書きます。
とくに遊びを拡張する要素は、運営すればするほど増えるのが常です。例えば多くのゲームではスキルと呼ばれるような要素です。スキルはその種類が多く、関係する開発者にとっては必要な情報にたどり着くまでに多くの時間を要する煩わしい作業の一つです。
このドキュメントはアクセスするだけでも時間がかかり、特定のスキルの効果を調べるには検索機能を利用してもかなりの時間を要していました。このドキュメントが列単位での ID 検索ができない、効果で検索をしても微妙な用語の違いで完全一致しにくいといった要因です。
スキルの検索は企画の方が運営タイミングで組み合わせを検証する際に多くされており、スキルのIDごとの効果をドキュメントを読んでチャットに改めてまとめ直すというコストが多く発生していました。
この状況は作業効率を低下させており、エンジニアに解決策の相談がありました。解決策:スキルFAQボットの作成
この課題を解決するため、スキルについてのFAQボットの作成しました。単純なチャットボットはエンジニア的に難易度やコストが低い手段であり、まずは試作という想像でした。
FAQボットはチャットに「キーワード+スキルのID」を送ることで、そのスキルの効果を返信するものです。
効果としては、チャットで完結することでドキュメントへのアクセスを多く省略でき、企画の方が改めてまとめ直す必要も減りました。まずは試作と想像して作成していたのですが、課題は十分に解決できました。
今回は、ソースコード中にスキルのIDと平易な効果説明コメントがあったため、こちらを正規表現で解析してデータとすることにしました。運良くルールに沿って収集することができ、網羅できていることも保証できました。
詳細な効果を確かめる際にはドキュメントへのアクセスは必要なため、ドキュメント自体の仕組み化・アクセス性の低さの解消は今後の課題だと考えています。
相談を受けることで問題を解決することができたのはエンジニアとしてとてもうれしいです。今後もより相談が活発に行われるようなチーム雰囲気にできたらと考えています。
ランニングとても楽しそうです。
こんにちは!エンジニアの広井淳貴です。
本日は社内用のFAQボットを作ってみた話を書きます。
はじめに
長きにわたり運営されているゲームでは、ゲーム内の要素が複雑化し、それに伴いドキュメントも膨大な量になります。とくに遊びを拡張する要素は、運営すればするほど増えるのが常です。例えば多くのゲームではスキルと呼ばれるような要素です。スキルはその種類が多く、関係する開発者にとっては必要な情報にたどり着くまでに多くの時間を要する煩わしい作業の一つです。
課題:膨大なスキル情報へのアクセス性の低さ
今回チームでは、100種類以上のスキルのIDとその効果をまとめたドキュメントが存在しています。このゲームでは1つずつのスキルは汎用的に使えるようにしており、組み合わせで複雑な効果を実現しています。このドキュメントはアクセスするだけでも時間がかかり、特定のスキルの効果を調べるには検索機能を利用してもかなりの時間を要していました。このドキュメントが列単位での ID 検索ができない、効果で検索をしても微妙な用語の違いで完全一致しにくいといった要因です。
スキルの検索は企画の方が運営タイミングで組み合わせを検証する際に多くされており、スキルのIDごとの効果をドキュメントを読んでチャットに改めてまとめ直すというコストが多く発生していました。
この状況は作業効率を低下させており、エンジニアに解決策の相談がありました。
解決策:スキルFAQボットの作成
この課題を解決するため、スキルについてのFAQボットの作成しました。単純なチャットボットはエンジニア的に難易度やコストが低い手段であり、まずは試作という想像でした。FAQボットはチャットに「キーワード+スキルのID」を送ることで、そのスキルの効果を返信するものです。
効果としては、チャットで完結することでドキュメントへのアクセスを多く省略でき、企画の方が改めてまとめ直す必要も減りました。まずは試作と想像して作成していたのですが、課題は十分に解決できました。
工夫:スキルのIDと効果のデータ収集について
スキルの効果はドキュメントにまとまっている情報から収集を考えていたのですが、ドキュメントは Wiki であり詳細が書かれているものの、ルールに沿ってデータを収集することはできませんでした。更新頻度もまちまちで網羅されていないタイミングもありました。今回は、ソースコード中にスキルのIDと平易な効果説明コメントがあったため、こちらを正規表現で解析してデータとすることにしました。運良くルールに沿って収集することができ、網羅できていることも保証できました。
詳細な効果を確かめる際にはドキュメントへのアクセスは必要なため、ドキュメント自体の仕組み化・アクセス性の低さの解消は今後の課題だと考えています。
まとめ
今回、「ドキュメントを読みにいくコスト、チャットにまとめ直すコスト」が高いという相談を受けて、チャットで完結できるFAQボットを作成しました。相談を受けることで問題を解決することができたのはエンジニアとしてとてもうれしいです。今後もより相談が活発に行われるようなチーム雰囲気にできたらと考えています。