イベント

2019.10.16

【イベントレポ】GDM会場で開発者向け書籍を展示! 著者であるゲームクリエイター3名が関連ショートセッションを実施

  • Facebookでシェア
  • Twitterでツイート
  • はてなブックマークでブクマする!
  • LINEで送る
  • follow us in feedly
  • Facebookでシェア
  • Twitterでツイート
  • はてなブックマークでブクマする!
  • LINEで送る
  • follow us in feedly

毎回様々なゲストをお招きして、最新の技術や情報をシェアするDeNA主催のゲームクリエイター向け勉強会の【Game Developers Meeting】(以下、GDM)。

2019年9月20日(金)に開催された「GDM Vol.36」では、デジタルクリエイターを支援するサービスカンパニーのボーンデジタル様の協力で、会場内にゲーム開発関連書籍の展示スペースを設置しました。

さらに、展示された書籍の中から3名の著者より、それぞれの執筆についての裏話や、今後の開発の技術について各ショートセッションも実施されたので、その模様をレポートします。

ソーシャルゲーム、どのように制作していますか?

西村 拓也(にしむら たくや)

株式会社ドリコム
エンジニア

2007年に株式会社レベルファイブに新卒入社。 以後ゲーム業界で活動し、コンシューマ携帯ゲーム、Cocos2d-xやUnityによるスマートフォンゲーム制作に携わる。2014年に株式会社ドリコムへ入社。『ダービースタリオン マスターズ』では、クライアントエンジニアリーダーを担当。

主な著書に「ダービースタリオン マスターズで学ぶ ゲームUI/UX制作 実践ガイド Unity対応版」。『ダービースタリオン マスターズ』では本書の内容であるUIフレームワークによるアウトゲーム設計や、レースロジックの実装、 クライアントエンジニアのタスクマネージメントを手がけた。

最初の登壇者となった株式会社ドリコムの西村拓也氏からは、ソーシャルゲームの開発フローにおけるUI/UXに関連するセッションが実施されました。

株式会社ドリコム 西村拓也氏

ソーシャルゲームの流れは、もともとガラケーのブラウザゲームからスタートした単純にボタンを押すだけのゲームで、インゲームなどはあまり実装されていませんでした。

その後、スマートフォンの普及により、インゲームが実装されているゲームが次々と登場、昨今ではさらにインゲームをオートプレイやスキップができることが当然のトレンドになっています。

さらに、最近のソーシャルゲームではキャラクターの強化育成など、アウトゲームの部分を触る時間も多くなり、運用が長期に渡るとアウトゲームの画面数も増えるため、制作効率を上げることが重要になります。

アウトゲームのUI制作工程について、おおまかに以下の項目が考えられます。

1.ゲームの企画仕様を作る→プランナー
2.UXを考え、画面案を考える→プランナー?UXデザイナー?
3.PhotoShop等ツールでUIをデザインする→UI/UXデザイナー?
4..png等UIパーツを分解し吐き出す→UIデザイナー
5.UnityのScene/Prefabで配置する→デザイナー?エンジニア?
6.ユーザ操作の挙動をコーディングする→エンジニア

ですが、主な項目について、どの部分をどの職種が担当するのか、曖昧になっている部分が多いです。各作業において担当職種が明確な項目は以下になると、西村氏は述べました。

プランナーの仕事
1.ゲームの企画仕様を作る
→遊びの部分の企画はプランナーの仕事

UIデザイナーの仕事
4..png等UIパーツを分解し吐き出す→UIデザイナー
→Photoshopなどのツールは高額であり、利用頻度の都合上、企業によってはデザイナーだけがインストールしていないケースが多く、UIデザイナーの仕事になる

エンジニアの仕事
6.ユーザ操作の挙動をコーディングする→エンジニア
→コーディングはエンジニアの仕事になる

次に担当する職種が曖昧な仕事として、UXを考える部分について、プランナーはExcelやPowerPointなどによる画面のレイアウト案、遷移案を作っており、UXデザイナーはプランナーよりも役割としては適切と考えられます。

『ダービースタリオン マスターズ』の開発時にはProttを採用して、画面レイアウトや遷移を提案していたことが明かされました。

続いてUIデザインをするのは誰の仕事かと考えると、そもそもUI/UXデザイナーの定義自体が曖昧で、『ダービースタリオン マスターズ』では、書籍の共同著者である冨田篤氏がUI/UXデザイナーを担当しているとのことです。

Unityで配置をするのは誰の仕事かと考えると、デザイナーはUnityを触るケースを良く耳にしますが、エンジニアがデザイナーから配置指示書をもらって配置するケースが多く、この部分が工程上一番効率が悪い箇所だと西村氏は考えています。

UnityのScene/Prefab配置の必要スキルとして、

・Unityのツール理解
・フォルダ構成の設計
・UIテクスチャアトラスの設計
・GameObjectの順番(描画順考慮)
・コンポーネントの仕様理解・アタッチ

以上が挙げられますが、これらすべての作業をデザイナーが対応するにはハードルが高いため、エンジニアが担当するケースが多いですが、実はこの作業をデザイナーがやることで効果が高くなるようです。

西村氏は、エンジニアがScene/Prefab配置をすることに関して、ずっと疑問を持っており、エンジニアはあくまでコーディングをすることが役割だと考えているとのことで、配置まわりの仕事は手放したいと述べました。

さらに、デザイナーとの連携でコミュニケーションコストが増えて「デザイナーがエンジニアにわざわざ直したい箇所を伝えるのは面倒」と判断してしまうこともあり、クオリティの妥協が生まれることもあります。

そのため、デザイナーが対応できるようにして職種間の作業を 「疎結合」 することで、作業効率やクオリティを上げることも可能です。

デザイナーが対応するためにはまず「Unityのツールを理解すること」です。習得の難易度が上がる要因は勉強する箇所が多いので、範囲を絞って覚え、Unityをレイアウトの配置ツールとしてみなすことも大事です。

続いては「フォルダ構成の設計」で、デザイナーが構成を考えて、構成にとらわれないシステムであることが望ましいと考えます。

また、「UIテクスチャアトラスの設計」「GameObjectの順番(描画順考慮)」の2つは、共通で使うボタンや画面の雰囲気、世界観を作るための絵素材の選定など、UIデザインの全体設計に影響を及ぼす箇所であり、それらを踏まえてエンジニアのサポートは必須だと思われます。

コンポーネント仕様の理解およびアタッチに関しては、デザイナーとしてレイアウト構成で必要なものがあれば良く、作成思想はどのプロジェクトでも使えるような特有のコンポーネントにしないことが必要です。

『ダービースタリオン マスターズ』制作時には、書籍の共同著者の冨田氏がデザイナーとして対応してくれたため、すごく楽をさせてもらったと西村氏は話しており、ゲームオブジェクトの順番や負荷などは調整したものの、アトラスの設計なども冨田氏が作業してくれたとのことです。

また、エンジニアがコーディングして実装する際には、仮レイアウトデータをもらって作業しており、デザイナーがUIリソースをGitでPushしてマージしてくれたので、その組み込みシステムのおかげで、ブラッシュアップされた最新のデザインがゲームを起動するたびに組み込まれ、それを見て心躍ることが多かったとのことです。

最後に、エンジニアはコーディング設計の際に疎結合を意識していますが、各職種の作業間も疎結合を狙うようなシステムを実装するべきで、詳細はぜひ著書を参照してほしいと西村氏はセッションを締め括りました。

OpenAI GymとBaselinesを使って
ソニックを攻略する人工知能の育て方

布留川 英一(ふるかわ ひでかず)

ギリア株式会社
研究部 探索グループ リードプログラマー

1999年、「JAVA PRESS」(技術評論社)にて、携帯アプリの開発方法の連載を開始。2001年、株式会社ドワンゴにて、世界初のJava搭載携帯電話「503i」のローンチタイトル『サムライロマネスク』の開発に携わる。

以後、新端末の新機能を活用したアプリを作りつつ、技術書を書き続け、18年で40冊ほどに。現在はギリアにて、ヒトとAIの共生環境の実現を目指して、人工知能の研究開発に取り込んでいる。

主な著書に「AlphaZero 深層学習・強化学習・探索 人工知能プログラミング実践入門」「Unityではじめる機械学習・強化学習 Unity ML-Agents実践ゲームプログラミング」(ボーンデジタル)など。

続いて登壇したギリア株式会社の布留川英一氏は、GDMイベントの前日が9月19日で「メガドライブミニ」が発売された日ということで、『ソニック・ザ・ヘッジホッグ』(以下、『ソニック』)を攻略する人工知能の育て方を紹介しました。

ギリア株式会社 布留川英一氏

機械学習と強化学習

人工知能は「ルールベース」と「機械学習」に大きく分かれ、人間が予測や判断を行うルールを考えたもの、従来のゲームはほとんどが対応しているのがルールベース、そのルールをすべてデータから自動生成するのが機械学習です。

そして、機械学習には「教師あり学習」「教師なし学習」「強化学習」の3つがあり、今回の『ソニック』の攻略には強化学習を利用します。

強化学習とは、エージェントが環境の状態に応じて、どのように行動すれば報酬が多くもらえるか、などを学習する手法です。

エージェントとは環境に対して行動を起こす主体となるもの、『ソニック』の場合はプレイヤーや人工知能を指し、環境は、エージェント側から行動を受け取って、報酬と状態を投げ返す部分を指します。

強化学習の学習サイクルについて、エージェント(人工知能)は最初は何をすべきかを判断できないため、取れる行動の中からランダムで決定して環境に送ります。

行動を受け取った環境は、それに対して状態と報酬の善し悪しをエージェントに返します。その状態と行動に応じて「報酬をどのくらいもらうのか」といった経験を記憶します。

続いて、経験に応じてエージェントが方策を求め、2回目の行動は単なるランダムな動作ではなく、編み出した「ランダム+方策」を組み合わせた行動をします。

そのサイクルを繰り返すことにより、将来的に多くの報酬を得られる方策を求めていきます。強化学習に用いられる用語も紹介されました。

開発環境と開発フレームワーク

開発環境には「Python3.6」、Pythonの仮想環境を作成するためのツール「Anaconda」、そしてクラウド環境での学習に必要な「Google Colab」を使用しています。

開発フレームワークには「OpenAI Gym」「Stable Baselines」「Gym Retro」を使用しています。以下で各フレームワークの詳細を紹介します。

OpenAI Gym

「OpenAI Gym」は、強化学習用のツールキットで、エージェントと環境間の共通インターフェース、タスク学習に利用できるさまざまな環境が構築できる特長を持っています。

「OpenAI Gym」インターフェースについて、環境の生成、リセット、1ステップ実行、描画について詳しいソースコードも紹介され、実際の実行画面も公開されました。

Stable Baselines

「Stable Baselines」は、強化学習アルゴリズムの実装セットで、「OpenAI Baselines」の改良版です。実際の学習時のソースコードと実行画面もあわせて公開されました。

Gym Retro

「Gym Retro」は、レトロゲームを「OpenAI Gym」の環境として利用する拡張ライブラリです。使えるゲームプラットフォームはファミコン・メガドライブ・スーパーファミコン・ゲームボーイ・PCエンジンなど。ROMは自身で入手する必要があります。今回はSteamで『ソニック』を購入し、retro.importでROMをインポートし、動作確認をします。

『ソニック』の攻略

・1回目

まず環境を用意して単純に学習させて、動くかどうかを確認してみますが、スタート地点で飛び跳ねているだけでうまく学習できずに、失敗となりました。

強化学習はよほど簡単なタスクでない限り、そのまま学習アルゴリズムを走らせただけでは学習に時間がかかるため、ノウハウを詰め込んで助けてあげる必要があると、布留川氏は述べました。この時点での改善アイデアは以下になります。

【前処理】エージェントに情報を渡す前に学習しやすい形式に変換する、前処理のユーティリティを選びます。ここでは『ソニック』用の行動空間の変更する前処理を作ります。『ソニック』はメガドライブ対応ソフトのため、コントローラに12個のボタンがあり、それらのオンオフが実際の行動の情報になります。ここでボタンのキー数を減らすことで、学習効率を上げることができます。

その他にも以下の前処理を組み込んでいます。

・StochasticFrameSkip:フレームスキップ
・Downsample:ダウンサンプリング
・Rgb2gray:グレースケール
・FrameStack:フレームスタック
・ScaledFloatFrame:状態の正規化
・TimeLimit:5分タイムアウト

【完了条件】最初は「ライフが0になったとき」と設定されていましたが、「ライフが2になったとき」「レベルを攻略したとき」「5分経ったとき」と完了条件を変更しました。

【報酬関数】最初は「獲得したスコアの値」でしたが、今回は1面をクリアするという目標を重視するため「現在のX座標-1フレーム前のX座標」に設定しました。

・2回目

ここまでの調整を実施して、もう一度学習をさせてみましょう。残念ながら失敗となりました。『ソニック』1面の中盤には、マップに一回転するループが設置されており、助走が必要になるギミックです。

そこで、報酬関数に関して「現在のX座標-1フレーム前のX座標」から「現在のX座標-進捗したX座標の最大値(負の報酬はなし)」に切り替えました。

・3回目

さらに学習をさせてみましたが、今回も失敗となりました。マップのループも越えられず、報酬獲得も不安定になってしまいました。

そこで、学習アルゴリズムのパラメータに関して「報酬が継続的に増加しない場合は、学習率の値を小さくする」という設定しました。ここでの「学習率」とは、今回学習したデータをどのくらい重視するか、という数値になります。

そのため新しいものを吸収しすぎると、間違ったことも学習してしまいます。学習の時間は遅くなってしまいますが、学習率を小さくしたほうが正しいことを覚えると考えられるはずと仮定できます。

・ラスト

そして、さらに学習させてみたところ、約3時間以上かかった学習によって、ソニックは無事ゴールすることができました。

最後に布留川氏は、人工知能はなんでもできそうなイメージがありますが、まだまだ不可能なこと、未知数なことはたくさんあるため、一緒に人工知能の可能性を広げて行きたいと思う人がいればぜひ声をかけて欲しいとセッションを締め括りました。

CRI ADX2について

一條 貴彰 (いちじょう たかあき)

株式会社ヘッドハイ
代表取締役

ゲーム作家/Game DevRel。代表作は『Back in 1995』(PS4 /Switch等)。現在は新作4人対戦ゲーム『デモリッション ロボッツ K.K.』を開発中。ゲームミドルウェア会社の営業職を5年間務めたのち、独立。株式会社ヘッドハイを設立し、ゲーム開発ツール専門のコンサルティング 事業を展開。特にインディーゲームクリエイター向けの事業サポートを得意とする。

本セッションでは、一條氏が手がけた書籍「Unityサウンドエキスパート養成講座」より、デモアプリの見かたとツールデモが紹介されました。

ちなみに一條氏は、セッションの休憩時間に、サウンドツール「CRI ADX2」を使用し、自身が開発を進めている新作ゲーム『デモリッション ロボッツK.K.』に使用しているサウンドを流し、セッションスタートに合わせて音楽をつないで終了させる、というデモを行っていました。

株式会社ヘッドハイ 一條貴彰氏

書籍の構成

書籍「Unityサウンド エキスパート養成講座」では、Unityのサウンドの実装について紹介されています。

大まかな構成として、Unityエンジンに搭載されているサウンド機能を使ってプログラムを書く「Unity標準サウンド」、VRならではの指向性のあるサウンドを紹介する「VRサウンド」、統合型サウンドミドルウェア「CRI ADX2」を利用したゲームの音楽の表現や負荷の低減、作業効率アップなどについて紹介する章に分かれています。

書籍のオススメの読み方として、新人クリエイターやサウンド開発がまだ良くわからない人などは0、1、2章を読み、音にこだわりがある開発者や、サウンドの物量が多い場合は4章を参照することが良いようです。

また、VRコンテンツクリエイターは0、3章を読むのがオススメだそうです。法人のモバイルゲーム開発会社は、現代ではサウンドミドルウェアを使わないと物量の管理やメンテが厳しいため、0、4、5章を読むと良いと一條氏は冒頭で述べました。

書籍第4章の「CRI ADX2」について

「CRI ADX2」は、株式会社CRI・ミドルウェアが開発する、音にまつわる演出が組み込まれたライブラリ&ツールのことです。

主な使われ方としては、音の演出開発コストを抑えることや、モバイルゲームでの膨大なサウンドの負荷軽減や圧縮、暗号化などに利用されることが多いようです。

ちなみに書籍「Unityサウンドエキスパート養成講座」は、「Unite Tokyo 2018」にて一條氏が登壇したセッション「Audio機能の基礎と実装テクニック」に来場者が多く訪れたため、ボーンデジタル社に働きかけて書籍化をした経緯があります。

CRIWAREは多くのコンシューマ・スマートフォン向けゲームに利用されており、特にキャラのボイスや音ゲーなどボイスが大量に使われているタイトルで使われることが多いようです。最近ではUnreal Engine 4と合わせて使われるケースも増えています。

Unity標準サウンドとADX2の違い

Unity標準サウンドでは、サウンドファイルと再生処理が1対1であり、「どの台詞をどのキャラクターのどの状態の部分で再生するのか?」など、サウンド情報を制御する何らかの手段が必要になります。

CRI ADX2では、複数のサウンドファイルや、パラメータを内包できる再生単位「キュー」を介して音を鳴らす仕組みで、専用ツール上で音の組み合わせテストを実施したり、Unity側のスクリプトを変えないで音の鳴らし方を変更・調整することが可能です。サウンドデザイナーとプログラマーの分業のようなイメージになります。

Unity標準サウンドのフロー

WAVEファイルをインポートし、スクリプトでAudio Clipを指定して再生、さまざまなサウンド制御を実装します。

Unity+ADX2のフロー

ADX2を使用する場合、WAVEファイルをいきなりUnityエディタに入れるのではなく、まずADX2のサウンドツール「Atom Craft」を操作して再生単位「キュー」を作り、鳴り方などをパラメータで指定します。

その後、Atom Craftから出力した圧縮データをUnity側のスクリプトでキューを指定して再生、ランタイムに実装済みのサウンド制御を指定して実行します。このフローに関しては、会場で実機デモが披露されました。

ADX2のエディション

CRI ADX2には、法人用の「CRI ADX2」と個人開発者向けの無償版「CRI ADX2 LE」が用意されています。

書籍におけるADX2章の構成

書籍「Unityサウンド エキスパート養成講座」には、最初にチュートリアルとして、まずはひとつの音を鳴らすまでが説明されており、続いてAndroid向け低遅延再生モードや低負荷コーデックの使い方、イントロ付きループ再生機能などの目玉機能の紹介がなされています。

さらにAtom Craftの詳細ツールやデモアプリ、応用編などが掲載されています。

収録されている4章で使用するデモアプリ「一方的タコ殴り ノーダメージ勇者さま」は、ちょっと懐かしめなソーシャルカードゲーム風デザインで、カードをタップしてモンスターを倒すシステムになっています。

会話シーンのサウンド演出について、台詞が流れたときにBGMのボリュームを自動的に落とす「BGMダッキング」、音声データへテキストデータ埋め込み機能、音声データへ表情変更タイミングの埋め込み機能が実装されています。

ダンジョンシーンに含まれる演出は、攻撃台詞を複数パターンからランダムに選ぶランダマイズ機能があります。また、再生制御のソースコードは同一で、データの差し替えのみでキャラクター台詞の切り替え設定や、攻撃の威力に連動してヒット音が変わるランダム設定が実装されています。

ダンジョンを進んで歩く足音に関しては、アプリ内のサウンドデータとしては「タッ」という短いひとつの音だけが収録されていますが、ツールの上で音を時系列に並べ、ピッチのランダマイズを加えて「タッタッタッ」といった長めの効果音を生成できるとのことです。

また、セリフや効果音に作用するリバーブやエコーも実装。ゲームの展開に合わせたBGMの展開変化も収録されています。こちらも実機デモで実際にダンジョンを進んで敵と戦い、クリアに合わせてBGMが終了するまでが披露されました。

そしてセッションの最後に、スマートフォン上で動作するこのデモアプリと、PCのツールをwifiで通信、連動させ、実際のスマートフォンアプリでの動作に合わせてツールでサウンドのリクエストや動きをチェックできるプロファイラ機能の様子がデモプレイされました。

書籍展示の様子

会場すぐ横のセミナールームには、登壇いただいた3名が執筆された書籍を含む、ボーンデジタル様出版の書籍が多数展示されました。来場者以外にもDeNA社員が自由に閲覧可能になっており、多くの人が手に取っている様子が見られました。

懇親会の様子

盛り上がった懇親会では、セッション中にはできなかった登壇者との質疑応答や名刺交換、来場者同士で現職の情報交換や悩みを相談するなど、交流も盛んに行われていました。

季節のデザート

今回の特選デザートは、予約殺到の専門店(受け取りのために当日スタッフが奔走しました!)の バスク風チーズケーキ(通称バスチー) をご用意。某コンビニチェーンでも話題となっているようで、どっぷりとした濃厚で新食感のチーズケーキは大人気でした。次回のデザートもお楽しみに!

 

取材・文・撮影:細谷亮介

GeNOM(ゲノム)とは

DeNAのゲームクリエイターを様々な切り口で紹介するメディア(運営:株式会社ディー・エヌ・エー)です。ゲーム開発の現場で生まれる様々なエピソードや、クリエイター紹介、イベント紹介などを通して、DeNAで働くメンバーの”ありのまま”をお伝えしていきます。

GeNOMの最新情報は、公式Twitterアカウントにて確認いただけます。ぜひフォローをお願いします!

JOIN US!
DeNAゲーム事業部の採用情報はこちら