『龍が如く8』開発者による、前代未聞の「ソースコード一部公開」はプログラマー志望者向けへのメッセージだった。プログラマーチームにその意図を訊いた
セガが展開するドラマティックRPG『龍が如く』の最新作『龍が如く8』。同作は2024年1月26日に発売され、1週間で全世界販売本数が100万本を突破した。シリーズ史上初の記録となるが、その裏に存在する開発スタッフの活躍に光が当たることは少ないだろう。
今回AUTOMATONでは、「龍が如くスタジオ」各セクションメンバーへのインタビュー企画を実施。今回は『龍が如く』シリーズのプログラムについて「龍が如くスタジオ」技術責任者の伊東豊氏、プログラムセクションマネージャーの中村智章氏にお聞きした。本稿では、伊東氏が自身のXで『龍が如く8』のソースコードを公開した話をきっかけに、龍が如くスタジオにおけるプログラミングについてうかがっている。
なお本インタビューには、さまざまなコンソールゲーム開発実績のあるゲーム開発会社AnuraBlessの代表取締役であり、プログラマーである立石義人氏にも聞き手として参加してもらっている。
ソースコード公開の意図
――伊東さんはご自身のXアカウントで『龍が如く8』のソースコードを公開しました。かなり大きな反響を呼びましたが、意図を教えてください。
伊東豊(以下、伊東)氏:
そもそもXアカウントを作ったきっかけは、プログラマーになりたい人向けに技術的な発信をしている開発者が少ないと感じたからです。「『龍が如く』シリーズはどうやって作られているんだろう、プログラマーになりたいけどなにを勉強したらいいかわからない」という学生がいても、実際に開発チームから回答をもらったり、市販タイトルのプログラムについての情報に触れることはとても難しい。私としては、少しでも興味がある人にはぜひゲームプログラマーを目指してほしいと思っていますし、迷っている人がいれば背中を押してあげたい。『龍が如く8』のソースコードをXで公開したのも、『龍が如く』はこういう開発環境で作っていて意外と簡単ですよと伝えたいという思いがありました。
――AAAゲームのソースコードがインターネットで流れてくるとは考えもしなかったので、すごいことが起きているなと思いました。
伊東氏:
公開できるギリギリのところですね。
――公開されたソースコードは、クレイジーデリバリーのものであっていますか(笑)
伊東氏:
わかる人には見ればわかると思いますので……私からはノーコメントで(笑)
――(笑)
とはいえ、ソースコードはゲームのコア部分であり機密事項だと思います。勢いで公開したのか、「龍が如くスタジオ」内で細かく相談をしてから公開したのか、どちらでしょうか。
伊東氏:
もちろん、各所へ「ここは見せても大丈夫かな」と相談したり、ソースコードを書いた本人にも当然ながら公開許可を取ったりしました。機密には触れないようにしつつ、比較的見た目が綺麗かつバズりそうな部分を選びました。
――公開後は大きな反響を呼びましたが、それ含めて「バズりそう」ということであれば、ある程度予想はしていたと。
伊東氏:
突っ込まれるだろうと予想していた部分が突っ込まれました(笑)予想外だったのは「今どきC++を使っているの?」という反応が多かったことですね。ゲーム開発の現場でC++を使用しているということは意外と知られていないんだなあと。
もちろん、はじめてゲームを作ろうと考えたらUnityでC#を使うのは自然な流れですし、実際に販売されているカジュアルゲームやスマートフォン向けタイトルはUnityで作られたゲームが多いですが、ハイエンドなタイトルの多くはC++で開発されています。セガに入社したいと面接を受けに来る学生もC++には触れたことがないという人が多いのですが、もし家庭用ゲーム機向けのタイトル開発に携わりたいのであれば、学生の頃からC++でゲームを作る経験を積んでおくのがよいと思います。
――シンプルな命令であるif構文が多いことに関しても反応が多かったですよね。
伊東氏:
プログラミングの初心者が見てもわかるように、if構文が多いシンプルなソースコードを選びました。今はコンパイラが自動的に最適化してくれますし、if構文が多いからといってそこまで処理が重くなることはないのですが、市販タイトルのソースコードとしてはインパクトがあったようで、反応は多かったですね。
中村智章(以下、中村)氏:
ソースコードは業界ではめったに公開されないものなので、「ゲーム開発現場では特別なプログラミング方法があるのではないか」と思われていたのかもしれません。ただ実際は公開したとおり普通のC++でゲームを作っていますし、誰でもC++がわかればゲームが作れると思っていただけたのではないかと。
――ちなみにソースコードは公開用に整形されたものなのか、それとも実際に『龍が如く8』で運用されているものなのでしょうか。
伊東氏:
デバッグ用のコメントをいくつか削除しただけの、実際に使用されているソースコードです。
――インデント・中括弧位置など書き方が揃っており、乱れがないので、公開範囲は同一人物が書いたのかなと思いました。
中村氏:
お察しのとおり、公開されたソースコードは基本的に同じ人が書いているので揃っているんです。複数人で編集することもありますが、そういうときは括弧の位置が違ったり、スペースの詰め方が異なっていたりしますね(笑)コードの書き方については、新人はしばらく先輩について仕事をするので、そのときの先輩にソースコードの書き方が似ることもあります。
「龍が如くスタジオ」では、厳密なコーディング規約はない
――伊東さんのポストで、「龍が如くスタジオ」にはコーディング規約がなく、メンバーそれぞれのスタイルで書いているという話もありました。これにたいしてもいろいろ意見があり興味深かったです。
伊東氏:
もともと2011年に「龍が如くスタジオ」が設立され、アーケードゲーム開発チームと家庭用ゲーム開発チームのプログラマーが合流した時に、関数の名前や大文字小文字のル―ルなどがそれぞれのチームで大きく違っていることがわかりました。当時のセガには「全社的なコーディング規約を決めよう」という流れもありましたし、龍が如くスタジオ内でもどちらかに合わせたほうがいいという議論もありました。ただ、やはりなかなか統一することは難しく、そのまま何本もタイトルをリリースしていくうちに「ソースコードの書き方が違っても何の問題もない」という結論に至りました。
中村氏:
家庭用ゲーム機でリリースする買い切りタイトルは、リリース後にソースコードを数年に渡ってメンテナンスすることも少ないですし、書き方にこだわるよりは各々が自分のスタイルで気持ちよく開発することを重視しています。 運営型タイトルのようにリリース後も定期的にアップデートされていき、数年経ってソースコードをメンテナンスし、人員も変わるようなゲームであれば、誰が見ても内容がわかりやすいようにコーディング規約も厳しくなるのかなとは思いますが。
――とはいえ『龍が如く』シリーズのような大規模開発だと、本当にルールがないとカオスになると予想します。自主性に任せる中でも、ある程度の暗黙のルールみたいなものはありますか。
伊東氏:
私たちが手がけるタイトルには『龍が如く』の大枠があるので、ゲーム全体の設計段階でのルールはありますが、ソースコードレベルでのルールはないですね。新人研修でドラゴンエンジンを使ったゲームの作り方を教えて、あとは間違った使い方をしていればその都度指摘をするくらいで、基本的には自主性に任せています。
――そういう意味で考えると、「龍が如くスタジオ」ではミニゲームやサイドコンテンツの担当を数人ずつのチーム制にしているのも、各々の自主性や独立性を担保していそうですね。
伊東氏:
そうかもしれません。「龍が如く」シリーズは1タイトルあたり40~50人のプログラマーが関わっているのですが、アドベンチャーやバトル、ミニゲームなど、パートごとに違った文化があります。小さなモジュールがたくさん存在していて、それぞれ自分たちに合ったやり方で開発をしている、とイメージしていただければよいかと思います。
ちなみに、メインプログラマーは各モジュールの中身まですべて把握しているかと言われると、それはできていませんし、それを求めてもいません。それぞれのパートのリーダーが自らの仕事に責任感を持って完成させてくれるからこそ、『龍が如く』シリーズという大規模タイトルが形になっているのかなと。
プログラマーには楽しさとやりがいを感じてほしい
――そもそも「龍が如くスタジオ」のプログラマーはどのように働いているのでしょうか。
伊東氏:
開発スピードが速いので、疑問点はすぐに解決できるように、直接的なコミュニケーションを大切にしています。若手とベテランの席を並べて画面を見ながら質問できるようにしたり、新人は年齢の近い先輩の隣に配置して話しやすい雰囲気を作ったり、座席のレイアウトも細かいところまで考えています。
ほかにも、新人プログラマーに必ず言っているのは「他職種の人をリスペクトしなさい」ということですね。実装が難しいことを頼まれたときに、ただ「できません」と断るのではなく、必ず代案を考えて相手によりそうようにと伝えています。そうしてプログラマーが頼られる存在になれば、デザイナーやプランナーも積極的に相談してくれるようになりますし、人間関係もよくなると思います。
――ちなみに、「龍が如くスタジオ」におけるプログラマー研修はどのようにされていますか。
伊東氏:
「龍が如くスタジオ」の新人プログラマーは入社後1年間を研修期間としていて、3本のオリジナルゲームを制作してもらいます。しかも、最初はドラゴンエンジン、次にUnity、最後にUnrealEngineというように、すべて違うゲームエンジンを使います。
長い間「龍が如くスタジオ」は内製のゲームエンジンを使いつづけてきたんですが、5~6年前、Unityしか知らない学生が増加してきたことに合わせて、当時の新作『たべごろ!スーパーモンキーボール』をUnityで開発することにしました。また『龍が如く 維新! 極』をUnreal Engineで開発しようと判断したのも、将来的にゲーム開発のスタンダードが変わっても適応できる体制を作りたいという側面もあったからです。そのため「龍が如くスタジオ」の新人プログラマーには、ドラゴンエンジン・Unity・Unreal Engineの3種類のゲームエンジンの扱い方を1年間で教えています。
『スーパーモンキーボール バナナランブル』も、「龍が如くスタジオ」が開発。Unity製だ
『龍が如く 維新! 極』は、Unreal Engineでのフルリメイク作である
――「龍が如くスタジオ」に配属されたプログラマーは、ドラゴンエンジン、Unity、Unreal Engineの3つのコーディングを学べると。
伊東氏:
研修の講師も実際にそれぞれのエンジンでタイトルを開発したプログラマーが担当していて、実践的なポイントを重点的に教えるため、短期間でプロのゲームプログラマーとして大きく成長できるんです。また実際にゲームの開発をしてはじめてわかることも多いので、各ゲームエンジンを学ぶ3か月のうち、最初の1か月は講義を聞き、残りの2か月で、自分で企画を立ててプレゼンをして、プログラミングをおこない、完成したゲームをプログラマー全員の前で発表してもらいます。
――学ぶだけでなく、企画を組み立てて見せるところまでセットなんですね。
伊東氏:
企画を立ててもらうのにも理由があります。「龍が如くスタジオ」のプログラマーに求められているのは、指示された仕様書通りに実装するだけではなく、ゲームデザインに意見を出してより良いゲームを作っていく能力なので、そこも鍛えたいという思いですね。
――伊東さんは管理職でもあります。管理職としてプログラマーチームを見る際に注意していることはありますか?
伊東氏:
何よりも、仕事が楽しいと思ってもらえることを大切にしています。先ほどコーディング規約がないという話をしましたが、自分に合った環境・好きな書き方でプログラミングできることも、仕事が楽しいということにつながると思います。
もうひとつは、やりがいを感じてもらえるようにすることです。研修が終わったばかり2年目のプログラマーは、一人ずつ「龍が如く」のミニゲームを担当してもらいます。「このミニゲームのプログラマーは自分だけだ」と思うことで責任感を感じてもらえますし、デザイナーやプランナーとコミュニケーションを取りながら仕事をすることで社内の人間関係も広がります。発売されてそのミニゲームの評判がよければ、大きな自信にもなります。
ゲーム開発の最前線で自分の力を発揮できて、しかも手がけたタイトルが高い評価をされれば、自然とゲーム作りが楽しいと思ってもらえますよね。
――『龍が如く』シリーズはリリースサイクルが短いですし、そういう意味では、どんどん自分のポートフォリオが出ますよね。
中村氏:
ゲーム業界に入って2年目でスタッフロールに名前が出て、すぐ次作もリリースされるのであれば、もう1年やろうかなという気になるのだと思います。去年の新人は1年間でスタッフロールに3回名前が載っていますし。
伊東氏:
最近の大型タイトルは開発期間が長いものも多いので、「龍が如くスタジオ」の新人プログラマーは恵まれていると思います(笑)
――それでは最後に同業プログラマーや、プログラマーを目指している人に一言お願いします。
伊東氏:
「龍が如くスタジオ」は新卒だけではなく、他業種からの転職も積極的に受け入れています。最近も中途で3人採用して、そのうち2人はゲーム業界未経験でしたが、1年も経たずに立派なゲームプログラマーとして働いています。ゲームプログラマーは専門的な勉強をした人だけに道が開かれたものではなく、プログラムの基礎さえ学んでいれば誰でもなれるんです。もしゲームプログラマーになるという夢を持ったまま他業種で仕事をしている方は、ぜひ「龍が如くスタジオ」の中途採用にエントリーしてみてください。
――今後の活躍も期待しております。ありがとうございました。
『龍が如く8』は、PC(Steam/Windows)およびPS4/PS5/Xbox One/Xbox Series X|S向けに発売中。プログラマーインタビューの前編では、最新作『龍が如く8』をはじめとした、ゲーム開発時の苦労やこだわりについてうかがっている。そちらの記事もチェックしてほしい。
[聞き手・編集:Ayuo Kawase]
[聞き手:たす (立石義人)]
[執筆・編集:Yuuki Inoue]