青山Pが振り返る「ドラゴンクエストX」3つの失敗――消すつもりのコードが本番環境に累計20万チケットを生んだオンラインゲーム開発プロジェクトの裏側(1/3 ページ)

スクウェア・エニックスでドラゴンクエストXのプロデューサーを務める青山公士氏は「ドラゴンクエストX」の3つの不具合を振り返り、サービス開発、運用時の教訓を紹介した。

» 2019年03月15日 05時00分 公開
[石川俊明@IT]

 翔泳社は2019年2月14〜15日に「Developers Summit 2019」を開催した。本稿では、スクウェア・エニックスでドラゴンクエストXのプロデューサーを務める青山公士氏の講演「ドラゴンクエストXを支える失敗事例」の内容を要約してお伝えする。

 青山氏は「ドラゴンクエストX オンライン」(以下、「ドラゴンクエストX」)で起きた3つの不具合とその原因を取り上げ、ドラゴンクエストX開発陣が不具合から得られた教訓を紹介した。

ドラゴンクエストXはどのように開発、実装されているか?

スクウェア・エニックス 第6ビジネス・ディビジョン 青山公士氏 スクウェア・エニックス 第6ビジネス・ディビジョン 青山公士氏

 ドラゴンクエストXは、各ユーザーがゲームクライアントを通じてサーバに接続し、ゲームをプレイするMMORPG(Massively Multiplayer Online Role-Playing Game)だ。開発では、さまざまな機能拡張や期間限定イベントの実施を見据えて柔軟に対応できる「運営」と、不具合修正や障害対応ができてサービスを継続して提供できる「運用」の2つを重視している。

 ゲームの実装はC++言語で、バージョン管理ソフト「Subversion」やプロジェクト管理ソフト「Redmine」を活用している。さらに、botがゲームをプレイしてゲームの進行に問題がないかどうかテストを実施しているという。

 青山氏は、ドラゴンクエストX開発初期から現在までに生まれた累計約20万の不具合(バグ)、タスクの中から、以下の3つを取り上げた。どのような不具合なのか、何が原因で起きたのかを見ていこう。

  1. 「キラージャグリング」「ゴッドジャグリング」の効果音が鳴り続いたり、ノイズが発生したりすることがある。
  2. 2017年6月10日土曜日の更新以降、「邪神の宮殿」で「同盟の仲間を自動で探す」を選択しても、パーティーが組まれない場合がある。
  3. 「釣り」において、「オウムガイ」の「ビッグサイズ」や「キングサイズ」を釣ったのに、「釣り老師」や「魚交換員」から、ビッグサイズはノーマルサイズ、キングサイズはビッグサイズとして扱われることがある

1.再現が難しいエフェクトの不具合

 初めに取り上げた不具合は「『キラージャグリング』『ゴッドジャグリング』の効果音が鳴り続いたり、ノイズが発生したりすることがある」だ。複数回ダメージを与える「キラージャグリング」や「ゴッドジャグリング」という攻撃スキルを発動させた際、攻撃が終了しても効果音が止まらずに鳴り続ける不具合が発生するようになった。

 「問題となっている不具合を確認しようにも、発生するタイミングをつかめないため、調査が難航した。長時間にわたる調査の結果、別の戦闘スキルにまつわる不具合修正のため、音声停止処理を無効化したせいで、この不具合が引き起こされていた(エンバグ)と分かった」

 攻撃スキルを発動すると、アクション音が流れた後、アクション音の再生を終了する処理が行われる。そして、敵に当たった場合は「ヒット音」、敵に攻撃をかわされた場合は「ミス音」が再生される。しかし、他の攻撃スキルの内部検証中、ミス音が再生される前に効果音終了の処理が入ると不具合になるという問題が発生した。そのため、他の攻撃スキルでも起きる可能性を考慮し「ミス音の前の効果音終了処理を無効化」してゲームを更新した。その結果、先述した2つの攻撃スキルの発動後、ミス音再生時に効果音が流れ続けてしまう不具合が発生してしまった。

アクション音を停止する処理を、別の不具合修正のため無効化していたことが本不具合の原因だった アクション音を停止する処理を、別の不具合修正のため無効化していたことが本不具合の原因だった

 「最終的に、他の攻撃スキルの不具合対応は専用処理で対応し、ミス音再生前の効果音停止処理は再度有効化した。この不具合対応から得た教訓は、システムを改修する際、できるだけ影響範囲を極力狭くなるように調整し、バグトラッキングシステム(BTS)のチケットに影響範囲を明記して、更新する際に問題がないかどうか全影響範囲の再検証を行うべしということだ」

2.データ移行時に利用したコードによる不具合

 次に取り上げた不具合は、「2017年6月10日土曜日の更新以降、『邪神の宮殿』で『同盟の仲間を自動で探す』を選択しても、パーティーが組まれない場合がある」だ。8人で協力して敵と戦う「邪神の宮殿」というコンテンツで、参加希望者が8人いてもパーティーが組まれなくなるという、「オートマッチング」機能の不具合が発生した。

 パーティーの参加条件は「職業が占い師であること」など、ゲーム内のプレイに制限をかけるもので、毎月10日と25日の午前6時に参加条件が自動更新される仕組みになっている。

 「参加条件はゲームプランナーが作成した条件データを用いている。ゲームクライアント側で条件データを利用して、パーティーに参加できる条件を満たしているかどうかをチェックした後、ゲームサーバ側に用意された参加条件ロジックと照らし合わせてマッチングを行っていた。しかし、特定のエリアでパーティーが組まれなくなってしまった。ゲームサーバのソースコードを調査した結果、以下のソースコードが見つかった」

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。