KLabでは、「エンジニアが使いやすい」をコンセプトに、ゲーム共通で必要となる機能をまとめたライブラリ群『KG SDK』を開発しています。
KG SDKを利用することでゲーム開発者はゲーム特有機能の開発のみに注力することができるため、開発スケジュールの短縮及び開発コストの削減並びに開発品質の向上が期待できます。
今回は、KG SDKが提供するチャットシステム『KLab Messaging Service(以下KMSと略称)』を紹介したいと思います。
KMSは、チャットシステムをアプリに容易に実装可能にするSaaS型サービスです。
サーバサイドの運用はKMS運用チームが担当しているため、KMS利用者はチャット機能の開発のみに集中することが出来ます。
KMSではサーバAPIとクライアントAPIを提供しており、ゲームサーバ及びゲームクライアントはそれぞれサーバAPI、クライアントAPIを利用してチャット機能を実装することになります。
※KG SDKでKMS用のクライアントライブラリ(Unityのみ対応)も提供しているため、アプリへの導入も容易となっています。
※KMSを利用するためには事前にKMS運用チームが発行するアプリコードとアプリキーを取得しておく必要があります。
チャットのUIを利用者側で自由に設計できます。
KMSを導入することでゲームの世界観を壊す心配はありません。
KMSでは以下2種類のチャンネル作成機能を提供しています。
チャンネル | 特徴 |
---|---|
1対1のダイレクトチャット用チャンネル | KMS側でチャンネル参加可能人数を2人までに制限しています。 そのためダイレクトチャット以外に使用できません。 |
ユーザ自由参加型チャンネル | KMS側で何も制限していません。 参加可能ユーザなど制限を設ける場合は、利用者側で制限する必要があります。 |
上記の通り、ユーザ自由参加型チャンネルは利用者で自由に設計可能ですので
のように様々なチャンネルを作成することができます。
また
のようにチャット目的以外にもKMSを利用することができます。
KMSではメッセージデータのフォーマットを制限していません。
平文だけでなく、JSONメッセージ等を登録しておくことで、豊富なチャット表現が可能となります。
例えば、発言内容の他に文字色やフォントを含める場合、以下のようにメッセージデータを登録できます。
{"text":"こんにちは!","color":"#FF0000","font":"font-name"}
フィルタリング用のワードを事前に登録しておくことで、発言をフィルタリングすることが出来ます。
また
などのフィルタリングオプションを用いることで、より高機能なフィルタリングを提供しています。
以下のステップでチャットを開始することができます。
※KMSユーザとは、KMS側が管理するユーザのことです。
ゲーム内ユーザとKMSユーザとを1対1で紐づけてください。
curl -i -H 'Content-type: application/json' -X POST -d \ '{"app_code":"アプリコード","app_key":"アプリキー", "person_id":"user_1", "auth_key":"auth_key", "user_name":"user_name" }' \ KMSサーバのURL/user/create_user
チャンネルIDや初期参加ユーザ等を設定して、チャンネルを作成します
curl -i -H 'Content-type: application/json' -X POST -d \
'{"app_code":"アプリコード","app_key":"アプリキー",
"channel":"workd_channel",
"channel_name":"channel_name",
"channel_type":1,
"add_users":[
{"person_id":"user_1","invisible":0}]}
}' \
KMSサーバのURL/channel/create_channel
KMSサーバのURLにWebSocketで接続します
wscat -c ws://KMSサーバのURL/
{
"req": "login",
"app_code": "アプリコード",
"person_id": "user_1",
"auth_value": "auth_value"
}
発言チャンネルや発言内容を設定した発言用JSONメッセージを送信します
{
"req": "addtalk",
"channel": "world_channel",
"message_body": "こんにちは"
}
以下2種類のスタンプ機能を提供しています。
なお、KMSが保持するのはスタンプのIDのみで、スタンプの本体画像等は利用者側で保持・管理する必要があります。
チャット管理のため
などの機能を提供しています。
※KMSはGroongaという全文検索エンジンと連携しており、高速な全文検索を提供しています。
なお、Groongaについてはこちらを参照ください。
NGワード発言数やNGワード発言ユーザを、ランキング形式で取得することが出来ます。
利用例としては
などが挙げられます。
発言に含まれる単語をホットワードとして抜粋し、ランキング形式で取得することが出来ます。
利用例としては
などのユーザ分析が挙げられます。
なお、ホットワードの抽出には形態素解析エンジンMeCabを利用しており、解析結果が『名詞』の単語を登録しています。
解析結果は辞書情報に依存するため、利用者の要望通りのホットワードが抽出されない可能性があります。
そこで、KMSでは利用者が任意でカスタマイズできるユーザ辞書設定機能を併せて提供しています。
例えば、『KLabの天クラってゲームおもしろいよー』と発言した場合、デフォルト辞書のみだと『天』『クラ』『ゲーム』がホットワードとして抽出されますが、ユーザ辞書として『天クラ』を登録しておくことで『天クラ』『ゲーム』がホットワードとして抽出されるようになります。
※MeCabについてはこちらを参照ください。
チャットにリアクション機能を追加することが出来ます。
画像データ等のリアクションに関する設定情報は利用者側で自由に設定できるため、facebookの『いいね』やslackの『リアクション』機能など、任意のリアクション機能を実現可能です。
発言済みのトークを各種言語に翻訳することが出来ます。
なお、当翻訳機能はMicrosoft Translator等の外部APIを利用して翻訳しており、外部APIの契約は利用者側で実施する必要があります。
※現在KMSで利用できる外部翻訳APIはMicrosoft Translatorのみです。
Microsoft Translatorについてはこちらは参照ください。
画像データ等を任意のサーバやAmazon S3上にアップロードすることが出来ます。
ゲームのキャプチャ画面アップロードをチャットに組み込むことで、チャットをより活性化させる事ができます。
なお、Amazon S3の契約は利用者側で実施する必要があります。
利用案件 | 公式サイト |
---|---|
BLEACH Brave Souls | https://www.bleach-bravesouls.com/index.php |
パズルワンダーランド | https://www.puzlan.com/index.php |
Age of Empires: World Domination | https://www.aoewd.com/ja/index.php |
KLabでは、開発パートナー様と共同開発したゲームをKLabにてパブリッシング、プロモーションを行うというモデルを積極的に進めており、開発パートナー様にKG SDKの提供もしています。
パブリッシング事業につきましてはこちら
KG SDKに関するお問い合わせにつきましてはこちら
をご覧ください。
KLabのゲーム開発・運用で培われた技術や挑戦とそのノウハウを発信します。
合わせて読みたい
KLabのゲーム開発・運用で培われた技術や挑戦とそのノウハウを発信します。