コンテンツへ移動

← すべてのプロジェクト

2020 → 2022 サーバー開発者

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

背景

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メトリクス

難所:ボット検知サービスを実プレイヤーにペナルティを与えずに進化させること(誤検知 = 即座に内部訴訟)。そして、ピーク時の週末ホットフィックスにも耐えるリリースフローを産業化すること。

成果

検知サービスにより非人間アカウントを実効的に削減。手動儀式なしにホットフィックスを通せるリリースパイプライン。診断時間を時間単位から分単位に短縮する統合可観測性。