## サービス内容
スマートフォン向けMMORPG
## 担当機能
- リアルタイムサーバー
- APIサーバー
## 担当期間
開発段階からリリース後の運用、サービスクローズまで
## 実施内容
### リアルタイムサーバー
他者とのリアルタイムな同期を行うサーバです
C++を用いて開発されており、
主にクエストやミッション、エネミー配置システムまわりを担当しました
メモリや処理負荷を考慮した実装を心がけたほか、
リリース後の運用を見据えて拡張のし易い設計をしました
また、エネミー配置システムの実装に伴ってサーバー側の処理だけでなく。
C#製のエネミー配置ツールの改良なども行いました
### API サーバー
主にユーザーの永続的なデータへのアクセスを行うためのサーバーです
Ruby on Railsを用いて開発されており、
ゲーム内通貨の設計・実装や
外部の相互送客サービスとの連携を行いました
### 開発環境の向上
kubernetes上で動作している開発環境を管理するツール開発・改良や、その周辺のフローの改善等を行いました。
このツールはクライアントエンジニアや、ゲームプランナーの人たちでもサーバー一式を簡単に立てることを目的とした物で、
デプロイやデータの更新をWebアプリから行うことができます。
当初はサーバーのスケーリングをWebアプリから操作できなかったのをWebアプリ側から自由に調整できるようにしたほか、
利用者からのサーバーとローカルのマスターデータを簡単に同期させる仕組みがほしいとの要望から、
マスターデータのsqliteをGCS経由でローカルの開発用クライアント(Unity)で同期させる仕組みを実装したり、
サーバーのビルド時間が長いとの要望から、サーバーのビルドをJenkinsからGoogle Cloud Buildに移行しビルド実行時間の短縮を図るなどの改善を行いました。
また、開発環境で発生したエラーをいち早くエンジニアに通知する仕組みも導入しました
これはAPIサーバーにはSentryを用いてすでに実現されていたのですが
リアルタイムサーバーの方にはなかったため、リアルタイムサーバーが異常終了した場合
それを検知しコアダンプからバックトレースを取得しSlackに通知する仕組みを自前で作成しました。