ドラゴンクエストXを支える技術 大規模オンラインRPGの舞台裏を読みました。
オンラインRPGの開発に関わる技術は多岐に亘るので、普段自分で関わることのない分野についての話は非常に興味深く読むことができました。
ただ、冒険者の広場でもプロモーションされてましたけど、そこまで間口の広い本ではないような気がしますね。
技術的に深いところまでは踏み込んではないものの、DQXファンだから読むとか、DQXTVの「教えて!青山さぁぁぁぁぁん!」とかの延長だと思って読むとかだと、結構難しい内容も書かれているように思います。
いろいろ噛み砕いて易しく書いてはいるものの、やっぱり技術書なんだなと思いました。
でも、難しそうなところは読み飛ばして、開発裏話をつまみ読みするのはアリかもしれないですね。
以下、感じたところを書いていきます。
■やっぱり技術だけでは成り立たない
技術書なので技術についていろいろ書かれていますが、大規模なプロジェクトを進めて行くには組織も大事です。
そのため、まるまる1章分(第2章)組織についての記述があります。そこでは組織の概要について説明しています。
その第2章で以下のような言葉で締めていることからも、著者の青山さんの組織に対する自信が伺えます。
その組織力の一因として、責任者を明確にすることによる風通しの良さであることを挙げています。
今はこの組織のトップはプロデューサーである青山さんですが、長年トップでいたのは前プロデューサーのよーすぴ(齊藤陽介)さんだと考えると、青山さんにここまで言わせる組織を作ったよーすぴさんはただの出たがりおじさんではないことが伺えます。
■Crystal Tools は大変そう
第6章で語られていますが、ドラクエXはゲームエンジンとして、Crystal Tools というスクウェア・エニックス内製のものを採用しているそうです。
ゲームエンジンを使用するメリットの一つは各種ハードに特化した専用処理をゲームエンジンに任せ、ゲームに特化した処理だけ実装すれば良いというのがありますが、ドラクエXの Crystal Tools の採用はそのメリットがあまりなかったのではないかと思います。
Crystal Tools の実装は Wii 向けには整備されておらず、結局開発チームで実装することになったようです。
さらに、他プラットフォーム展開時にもプラットフォーム個別の処理を独自開発したそうです。
開発当初は他に選択肢がなかったんだろうとは思いますが、開発チームも Crystal Tools 対応で結構な開発リソースを費すことになったのではないかと思われます。
すでに整備されていたツール類が使えるというメリットもあったと思いますが、そのメリットが帳消しになるぐらい手間かかってそうです。
■Kyoto tycoon を使いつづけることについて
ドラゴンクエストXではサーバー間の移動が自由ですが、それを実現するためにはデータベースの一元化が必要です。
ドラゴンクエストXはユーザが多いこともあり、Oracle Exadata という高性能データベースを使用しています。(さらに言うと高額)
とはいえ、データ保存の全てをデータベースに任せると高負荷になるので、Kyoto Tycoon を補助的なデータ記憶として使っているそうです。
このあたりは、CEDEC 2012 でも語られています。(Gigazine の記事)
で、気になったのが下記の点です。
一度採用したものはそう簡単に差し替えられない事情が伺えます。
保守されてないソフトを使うなと言うつもりは全くないですが、検証しつつ使用するコストと、差し替えるコストを天秤にかけると、どうしても検証しつつ使用する方針を選択していまいますよね…
■バージョン管理に Subversion を使っていることについて
この本のベースになった「WEB+DB PRESS Vol.90」を読んだときも思ったのですが、Git じゃないのかと思った人は結構多いようですね。
この反応が多かったのは、「WEB+DB PRESS Vol.90」の特集の一つに「もう困らない! Git実践活用」というのがあったせいもあるんだと思います。
Git の特集の後に、ドラゴンクエストXでは Subversion 使ってます、といった事が書かれていたら、そりゃ「Git じゃないのか」とは思っちゃいますよね。Subversion の是非はともかく。

良く考えたら Git 自体が 2005 年に作られたソフトなので、これがある程度普及してプロジェクトで使用するバージョン管理ソフトの選択肢に挙がるころには、もうすでにドラゴンクエストXの開発は始まっていただろうと考えられます。であれば選ばれたのが Git じゃなくても全く不自然ではないのですが。
ドラゴンクエストXの開発では、バージョン管理ソフトでプログラムだけではなく、ゲームに関するリソースデータなども管理しているそうです。そのため、リポジトリに登録するファイル数が膨大になり、ブランチを切り替えるのにものすごく時間が掛るそうです。
この問題は Subversion から Git に乗り換えても改善されないので、乗り換えをしてないそうです。
そのあたりの課題を解決できそうな Perforce への移行は検討したことがあったそうですが、これも断念したそうです。
移行中はコミットに制限が入ります、とか言われると開発担当としては仕事やりづらいでしょうし、移行中の開発スピード低下を受け入れてまで乗り換えるのか?と考えると判断が難しいところではありそうです。
■一度採用したものはそう簡単には変えられないけど、変えることによるメリットも
先に挙げた Crystal Tools、Kyoto Tycoon、Subversion の話でもそうですが、やはり一度採用したものはそう簡単には変えられないんだなとこの本を読んで感じます。
それだけに、最初に導入するときにはよくよく検討しないといけないなと思いました。
とはいえ、ドラゴンクエストXの開発でもサービス途中でシステムを置き換えて劇的に改善した事例もあるようです。
ドラゴンクエストXは当初全て社内サーバで稼動していたそうですが、写真の保存処理だけ AWS に移行しています。
年明けとかに多くのプレイヤーが写真撮影を行うのですが、その写真を画像処理して保存するのに数時間掛っていたそうです。
それに対応するために社内サーバを増強するのでなく、AWS を利用することで対応したとのことです。
これはナイスな決断だと思います。みんなが揃って写真撮影する時って年末とか限られているのに、そのピーク時のためだけにスクウェア・エニックスのサーバを増強するのってコスト面で割が合わないでしょうからね。
社内サーバ増強で対応しようとすると、ピーク以外の時期はパワーが余りってしまうにもかかわらず運用コストは常時同じになって非常に勿体ないです。
AWS で運用しておけば、写真撮影が多そうな時期だけスケールアウトしておけば、コストアップも最低限で抑えられるでしょうしね。
■この本に関連してそうな Web 記事
最後に本の感想ではないですが、この本に関連した Web 記事がいくつかあるので挙げておきます。興味のある人は読んでみるのもいいかもしれません。
~オンラインゲームの新たな波~ ドラゴンクエストXの舞台裏
CEDEC 2012 の講演についての Gigazine の記事です。9章にある DB や KVS について語られています。
AWS 導入事例:株式会社スクウェア・エニックス
WEB+DB PRESS vol.90
「ドラゴンクエストXを支える技術」のベースになった記事が載った本です。
(リンク先で記事が読める訳ではないですが…)
オンラインRPGの開発に関わる技術は多岐に亘るので、普段自分で関わることのない分野についての話は非常に興味深く読むことができました。
ただ、冒険者の広場でもプロモーションされてましたけど、そこまで間口の広い本ではないような気がしますね。
技術的に深いところまでは踏み込んではないものの、DQXファンだから読むとか、DQXTVの「教えて!青山さぁぁぁぁぁん!」とかの延長だと思って読むとかだと、結構難しい内容も書かれているように思います。
いろいろ噛み砕いて易しく書いてはいるものの、やっぱり技術書なんだなと思いました。
でも、難しそうなところは読み飛ばして、開発裏話をつまみ読みするのはアリかもしれないですね。
以下、感じたところを書いていきます。
■やっぱり技術だけでは成り立たない
技術書なので技術についていろいろ書かれていますが、大規模なプロジェクトを進めて行くには組織も大事です。
そのため、まるまる1章分(第2章)組織についての記述があります。そこでは組織の概要について説明しています。
その第2章で以下のような言葉で締めていることからも、著者の青山さんの組織に対する自信が伺えます。
このような大規模な組織は一朝一夕にはできません。筆者はこの組織力こそがドラゴンクエストXの、そしてスクウェア・エニックスの強みだと考えています。ドラゴンクエストXを支える技術 p44 より引用
その組織力の一因として、責任者を明確にすることによる風通しの良さであることを挙げています。
ドラゴンクエストXは開発コアチームだけでも人数が多いのですが、風通しの良い、うまく機能している組織だと思います。組織の役割に応じた各責任者が明確であることが、うまく機能している要因だと考えます。ドラゴンクエストXを支える技術 p32 より引用
今はこの組織のトップはプロデューサーである青山さんですが、長年トップでいたのは前プロデューサーのよーすぴ(齊藤陽介)さんだと考えると、青山さんにここまで言わせる組織を作ったよーすぴさんはただの出たがりおじさんではないことが伺えます。
■Crystal Tools は大変そう
第6章で語られていますが、ドラクエXはゲームエンジンとして、Crystal Tools というスクウェア・エニックス内製のものを採用しているそうです。
ゲームエンジンを使用するメリットの一つは各種ハードに特化した専用処理をゲームエンジンに任せ、ゲームに特化した処理だけ実装すれば良いというのがありますが、ドラクエXの Crystal Tools の採用はそのメリットがあまりなかったのではないかと思います。
Crystal Tools の実装は Wii 向けには整備されておらず、結局開発チームで実装することになったようです。
当時の Crystal Tools にはまだ Wii 版に特化した最適化はほとんど行われておらず、未実装の箇所もありました。
(中略)
そのため、ドラゴンクエストXチームで Wii 版に特化した部分を開発することにしました。ドラゴンクエストXを支える技術 p130 より引用
さらに、他プラットフォーム展開時にもプラットフォーム個別の処理を独自開発したそうです。
後日になりますが、Wii U 版、PlayStation 4 版、Nintendo Switch 版の専用プログラムもドラゴンクエストX開発コアチームが独自開発しました。ドラゴンクエストXを支える技術 p131 より引用
開発当初は他に選択肢がなかったんだろうとは思いますが、開発チームも Crystal Tools 対応で結構な開発リソースを費すことになったのではないかと思われます。
すでに整備されていたツール類が使えるというメリットもあったと思いますが、そのメリットが帳消しになるぐらい手間かかってそうです。
■Kyoto tycoon を使いつづけることについて
ドラゴンクエストXではサーバー間の移動が自由ですが、それを実現するためにはデータベースの一元化が必要です。
ドラゴンクエストXはユーザが多いこともあり、Oracle Exadata という高性能データベースを使用しています。(さらに言うと高額)
とはいえ、データ保存の全てをデータベースに任せると高負荷になるので、Kyoto Tycoon を補助的なデータ記憶として使っているそうです。
このあたりは、CEDEC 2012 でも語られています。(Gigazine の記事)
で、気になったのが下記の点です。
なお、本書執筆時点では Kyoto Tycoon は保守されてないようです。ドラゴンクエストXでは実績を重視して検証しつつ使用していますが、新規に KVS 導入を検討されているみなさんにはお勧めできません。ドラゴンクエストXを支える技術 p220 より引用
一度採用したものはそう簡単に差し替えられない事情が伺えます。
保守されてないソフトを使うなと言うつもりは全くないですが、検証しつつ使用するコストと、差し替えるコストを天秤にかけると、どうしても検証しつつ使用する方針を選択していまいますよね…
■バージョン管理に Subversion を使っていることについて
この本のベースになった「WEB+DB PRESS Vol.90」を読んだときも思ったのですが、Git じゃないのかと思った人は結構多いようですね。
本書のもとになった「WEB+DB PRESS Vol.90」の特集の反響の中で、最も多いと感じた、そして意外だったのが、バージョン管理ツールについてでした。具体的には「Git じゃないのか」という反応ですね。ドラゴンクエストXを支える技術 p.87 より引用
この反応が多かったのは、「WEB+DB PRESS Vol.90」の特集の一つに「もう困らない! Git実践活用」というのがあったせいもあるんだと思います。
Git の特集の後に、ドラゴンクエストXでは Subversion 使ってます、といった事が書かれていたら、そりゃ「Git じゃないのか」とは思っちゃいますよね。Subversion の是非はともかく。

良く考えたら Git 自体が 2005 年に作られたソフトなので、これがある程度普及してプロジェクトで使用するバージョン管理ソフトの選択肢に挙がるころには、もうすでにドラゴンクエストXの開発は始まっていただろうと考えられます。であれば選ばれたのが Git じゃなくても全く不自然ではないのですが。
ドラゴンクエストXの開発では、バージョン管理ソフトでプログラムだけではなく、ゲームに関するリソースデータなども管理しているそうです。そのため、リポジトリに登録するファイル数が膨大になり、ブランチを切り替えるのにものすごく時間が掛るそうです。
この問題は Subversion から Git に乗り換えても改善されないので、乗り換えをしてないそうです。
そのあたりの課題を解決できそうな Perforce への移行は検討したことがあったそうですが、これも断念したそうです。
移行中はコミットに制限が入ります、とか言われると開発担当としては仕事やりづらいでしょうし、移行中の開発スピード低下を受け入れてまで乗り換えるのか?と考えると判断が難しいところではありそうです。
■一度採用したものはそう簡単には変えられないけど、変えることによるメリットも
先に挙げた Crystal Tools、Kyoto Tycoon、Subversion の話でもそうですが、やはり一度採用したものはそう簡単には変えられないんだなとこの本を読んで感じます。
それだけに、最初に導入するときにはよくよく検討しないといけないなと思いました。
とはいえ、ドラゴンクエストXの開発でもサービス途中でシステムを置き換えて劇的に改善した事例もあるようです。
ドラゴンクエストXは当初全て社内サーバで稼動していたそうですが、写真の保存処理だけ AWS に移行しています。
年明けとかに多くのプレイヤーが写真撮影を行うのですが、その写真を画像処理して保存するのに数時間掛っていたそうです。
それに対応するために社内サーバを増強するのでなく、AWS を利用することで対応したとのことです。
これはナイスな決断だと思います。みんなが揃って写真撮影する時って年末とか限られているのに、そのピーク時のためだけにスクウェア・エニックスのサーバを増強するのってコスト面で割が合わないでしょうからね。
社内サーバ増強で対応しようとすると、ピーク以外の時期はパワーが余りってしまうにもかかわらず運用コストは常時同じになって非常に勿体ないです。
AWS で運用しておけば、写真撮影が多そうな時期だけスケールアウトしておけば、コストアップも最低限で抑えられるでしょうしね。
■この本に関連してそうな Web 記事
最後に本の感想ではないですが、この本に関連した Web 記事がいくつかあるので挙げておきます。興味のある人は読んでみるのもいいかもしれません。
~オンラインゲームの新たな波~ ドラゴンクエストXの舞台裏
CEDEC 2012 の講演についての Gigazine の記事です。9章にある DB や KVS について語られています。
AWS 導入事例:株式会社スクウェア・エニックス
10章にある写真の画像保存処理を AWS に移行したときの話が語られています。
10章を寄稿した縣さんがここでも出てきています。
WEB+DB PRESS vol.90
「ドラゴンクエストXを支える技術」のベースになった記事が載った本です。
(リンク先で記事が読める訳ではないですが…)
書籍の発売に先立ってジュンク堂池袋店でトークセッションが開かれました。そのときの様子が2018年内は Youtube で見られるそうです。こちらも大変興味深い内容です。
内容とは関係ないですが司会のりっきーさんも元気そうで何よりです。
内容とは関係ないですが司会のりっきーさんも元気そうで何よりです。