COLOPL Tech Blog

コロプラのエンジニアブログです

コロプラのゲーム開発/運用におけるツール/機能の一部を紹介

コロプラではジャンルを問わず様々なゲームの開発/運用をしています。

開発を便利にするためにいろいろなツールや機能を開発していますが、複数のタイトルで使われているものでシンプルなツール/機能で汎用的なのではないか、というものをいくつか紹介させていただきたいと思います。

紹介が遅れました。コロプラのヒゲといいます。普段はマネジメントをやらせていただいています。

本番門番

開発をしていると、本番環境と検証環境を切り替えながら作業することがあると思います。ターミナルなどであればバックグラウンドの色を変えたり、自社のWebツールであればヘッダーの色を変えるなどしている方も多いのではないでしょうか。

同じ発想で利用しているGCP Consoleも本番環境を触るときはわかるようにしよう、というコンセプトで作られたツールです。Chromeの拡張でPJ名の特定の文字列を検知して本番環境だった場合、ページの色を検証環境とは別の色に変えることで検証環境と混同しないようにしています。

個人的には「本番門番」という作者の名付けのセンスが良いなと思っています。

f:id:yuichrmt:20220118113952p:plain

赤が本番

 

UserClone

本番環境のユーザーデータを検証環境などにコピーする機能です。

不具合が起きているユーザーデータをデバッグしたり、バランス調整などの際に本番環境の自分のプレイデータと同様のデータでテストが簡単にできるようになります。

本番環境のツールでDB内にあるユーザーデータ(データは必要に応じてマスク済)をシリアライズしてダウンロードします。

ダウンロードしたデータをステージング環境にインポートすることで、そのユーザーとほぼ同様のデータでゲームをプレイすることができます。

ステージングで起きた不具合(ユーザーデータに起因するものであれば)をローカル上でデバッグするときなどにも使えます。

 

そのままユーザーIDなどのデータを入れてしまうとauto incrementが狂ってしまったり、同じユーザーを同一環境に複数回入れられないなどの問題が起きてしまうので、uuidやauto incrementなIDをインポート環境で発行するような処理を入れる必要があります。

また当然ですが本番環境にはエクスポートの機能のみで、インポートの機能はありません。

f:id:yuichrmt:20220107162030p:plain

タイトルによってはエクスポートするテーブルを選択できる

 

TimeShifter

検証環境単位 or 検証環境の特定のユーザー単位で時間変更を行える機能を共通機能として実装し、現在時刻を呼び出すコードをすべてその機能を利用することでユーザー単位での時間変更を可能にしています。

 

ゲームの開発においてはイベントの開始/終了時間など、時間によって挙動が変わる処理がよく実装されています。実際のデータや設定が意図した動作をするのかというテストは非常に重要です。

この機能を開発する以前は、サーバーのOSの時間を変えていたのですが、ステージングなど複数人で利用している環境での時間変更は他の人のテストに影響を与えてしまうため周知をするなどの手間があったり、ミドルウェアの挙動がおかしくなってしまうなどの問題がありました。

f:id:yuichrmt:20220107162220p:plain

 

EmergencyStopper

負荷の高い機能などをサービスのWebツールから停止することができる機能です。

ゲームのローンチや新しい機能のリリースでは、なるべく問題がないように負荷試験やテストを行ってはいますが、想定外のことが起きてサービスへの影響が起こってしまうことを完全になくすことは難しいです。

使わないことにこしたことはないですが、不安がある処理にこの機能を盛り込むことで安心感を得られるのと、なにかあったときにサービスへの影響をなるべく小さくすることができます。

f:id:yuichrmt:20220107162259p:plain

 

まとめ

以上4つの機能/ツールの概要を紹介させていただきました。

これらはコロプラのバックエンドの開発では欠かせないツール/機能です。何かしらアイディアになった方がいれば幸いです。