Dofus Touch — モバイルMMORPGのサーバーエンジニアリング
AnkamaのMMORPGのモバイル版「Dofus Touch」でサーバー開発を担当。サーバーサイドのロードマップをオーナーとして推進:ゲームプレイ機能、デリバリーパイプライン、ボット検知、運用。
- Java
- Maven
- Nexus
- GitLab Flow
- GitLab-CI
- Jenkins
- Groovy
- AWS EC2
- Rundeck
- Ansible
- MySQL
- PostgreSQL
- ELK
- AWS OpenSearch
- Prometheus
- Grafana
live ops studio-no-border / dofus-touch
build #4521
concurrent players
47,234
↑ 12% · 1h
deploy
- build
- tests
- canary
- prod
building image…
regions
- EU-W 18.7k
- EU-N 9.4k
- US-E 11.2k
- ASIA 8.1k
› événements pondérés · seuil d'alerte
背景
Dofus Touchは、フランスの大規模MMORPGのモバイル版です。サーバー側のコードベースには歴史があり、プレイヤーは戦闘の僅かなラグにも敏感で、デプロイの失敗一つひとつがサポートチケットとReddit投稿という形で跳ね返ってきます。
常に並行する2つの問題がありました。既存機能を壊さずにゲームプレイ機能の流れを維持すること、そしてボット——ファーミングを行い、ゲーム内経済を歪め、PvPバランスを破壊する自動化アカウント——に対する品質基準を保つことです。
担当した役割
サーバー開発のスコープを担当。Javaで主要機能のオーナーシップを取り、開発フローとパイプラインを再設計し、サーバーサイドのボット検知サービスを構築しました。
構築したもの
- JavaによるDaily Quests:リテンション率の測定可能な向上に寄与したゲームプレイ機能
- 開発フローの刷新:緊急ホットフィックスを進行中ブランチを壊さずに吸収できるGitLab Flowへ移行
- クリーンな依存関係管理:Maven + Nexusリポジトリ
- Javaによるボット検知サービス:サーバーサイドの重み付き蓄積方式。プレイヤーの各アクション(クリック、移動、インベントリ操作パターン、戦闘シーケンス)が重み付きカウンターに寄与。スコアが閾値を超えるとアカウントがフラグ化される。結果としてゲーム内の非人間アカウントが減少
- CI/CDパイプライン:GitLab-CI + Jenkins。デプロイスクリプトをBashからGroovyに移行してテスト可能に
- AWS EC2デプロイメント:イメージベース戦略——pre-prodへプッシュ → 手動承認 → prodへ複製
- 自動メンテナンス:Rundeck + Ansibleで永続ストレージへのRAMフラッシュ、アップグレード、定期運用のスクリプト化
- バージョン管理されたDBマイグレーション:MySQLおよびPostgreSQL
- 集約型ELK:AWS OpenSearch + APMでログとトレースを統合的に可視化
- クリティカルアラート(CPU、RAM、ビジネス指標)とPrometheus + Grafanaメトリクス
難所:ボット検知サービスを実プレイヤーにペナルティを与えずに進化させること(誤検知 = 即座に内部訴訟)。そして、ピーク時の週末ホットフィックスにも耐えるリリースフローを産業化すること。
成果
検知サービスにより非人間アカウントを実効的に削減。手動儀式なしにホットフィックスを通せるリリースパイプライン。診断時間を時間単位から分単位に短縮する統合可観測性。