Unityゲーム開発 パイプライン事例紹介

Slides:



Advertisements
Similar presentations
Internet Explorer 障害解析 最初の一歩 - IE のトラブルを理解する -. 概要 Internet Explorer を使用中に発生するトラブルの 種類と、調査のための切り分け方法を紹介します! (以降は IE と略称で表記します) よくあるお問い合わせ Web ページの表示が白画面のまま完了しない.
Advertisements

InstallShieldLecture InstallShield でインストーラを作成する方法 ( 初級編 ) ソニーエンジニアリング 設計 3 部 1 課 齋藤佑輔.
IBM SmarterCloud Control Desk 7.5 新機能ガイド - 資産と構成アイテムの同期
F5 を押すか、または [スライド ショー] > [最初から] をクリックして、コースを開始してください。
目次 このドキュメントについて・・・前提条件……………………………………… 2
7-1.WEKOコンテンツ 一括登録 マニュアル Version2.5
TeX で数式を書くための PowerPoint アドイン Ver (2011/06/26) Ver. 0.1 (2007/5/30)
Powerpointを使用した ゆっくり動画の作成
本日のスケジュール 14:45~15:30 テキストの講義 15:30~16:15 設計レビュー 16:15~16:30 休憩
PROCESS 14:一般情報(2) InstallShieldLecture
WagbyR6.5 Update 14 PPT版 更新情報
合同会社IT政策調査研究所 All Rights Reserved.
SAP システムにおける SQL Server 運用ノウハウ
Knowledge Suite(ナレッジスイート) ファーストステップガイド (管理者向け)
3DCGコンテンツの基礎 第5回授業:最終課題制作
デジタルポートフォリオ作成支援ツール PictFolio 使用マニュアル
Lync 会議 Lync 会議に参加する Lync 会議をスケジュールする 会議のオプションを設定する
PCの情報を得る - 「システム情報」 ①「スタート」→「すべてのプログラム」→「アクセサリ」→「システム ツール」→「システム情報」とクリックする。 ②左欄の項目を選択すると、右欄に情報が表示される。
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
talend活用事例 ・ナビゲータグラフのカスタマイズにおける事例 ・CSVダウンロードでのカスタマイズ事例
オンライン登記申請マニュアル 【第4段階】 オンライン登記申請編
法人e名刺 ブログ運用マニュアル 社外秘 目次 □ブログ運用ルール
「絵葉書を通じてのハルビンの 街の印象調査」システムUIの iPadアプリ化 谷研究室  飯 祐貴.
エンタープライズアプリケーション II 第10回 / 2006年7月23日
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
Mavenによる プロジェクト管理 近畿大学理工学部 情報学科3年  小野実.
「RnR FixLinks Pro」解説(一般公開用・無償版)
WagbyR6.5 Update 12 PPT版 更新情報
バージョン管理超入門 まだファイルコピーしてます?
15分でわかる RefWorks 基本操作.
F5 を押すか、または [スライド ショー] > [最初から] をクリックして、コースを開始してください。
PowerPoint スライドの HTML化支援ツール epppt version 3
IM、プレゼンス、連絡先 IM 要求を受け入れる Lync 2013 クイック リファレンス プレゼンスを設定または変更する ユーザーの検索
WebCluster スライドショーで見る操作ガイド
アプリケーション共有機能 〈参考〉 (図1) (図2)
~スマートフォン利用~ 店舗管理システムのご提案 サイボウズ中国.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
~企画~ GO,桑田,ヒルズ.
情報 第2回:状態遷移 その2.
オンライン登記申請マニュアル 【第3段階】 オンライン登記申請編(PDF等先行方式)
SAS University Edition 導入のすすめ
プログラミング演習3 第2回 GUIの復習.
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
専用ソフトは不要 Webブラウザだけで簡単モニタリング VioStor Series Live Monitoring
プログラミング 設計資料 メンバー:.
Oracle APEX Forms変換の概要
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
アウトバウンド業務 ガイダンス Ver.7 アウトバウンド業務について、作業フローを具体的な事例別にご説明します。
Copyright © 2014 JOPS AWS Working Group, All rights reserved.
≅ ≰ ≳ ≗ ≲ ≩ ≴ ≥ ver manual Tanaka.
○ ○ ○ こんな場合にお勧め 機能概要 SAP ERP伝票/マスタ入力をExcelを使って簡単に実現 Excel入力テンプレート
プログラミング演習3 第2回 GUIの復習.
フィールドセンシング最終課題 総合政策学部2年 吉村 拓 70409634.
ゲーム開発モデルの基礎.
0.2 プロジェクトの準備 DXライブラリを使うための準備.
EGSに対応した粒子軌跡と 計算体系の3次元表示ソフト - CGVIEW -
徳島大学病院看護部 「CDSS 改修版」 管理者向けマニュアル
株式会社プラチナゲームズ 技術戦略グループ 副グループ長 大寺 毅
中国の日系企業に最適のシステム 御社の業務に最適な3つの理由 初期投資なしで すぐに始められる ITに詳しい 担当者不要 何度でも 変更可能.
管理画面操作マニュアル <物件情報> 第5版 改訂 株式会社アクア 1.
≅ ≰ ≳ ≗ ≲ ≩ ≴ ≥ ver manual Tanaka.
一歩進んだ Views の使い方 スタジオ・ウミ 山中.
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
Linux の世界に 触れてみよう! 情報実験 第 3 回 (2005/10/21)
常設チャット トピック フィードを作成してアクティビティをフォローする Lync 2013 クイック リファレンス
Copyright 2016 FIT Co., Ltd. All rights reserved.
スライドの終わりまでテキストが繰り返しスクロールされます • スライドの終わりまでテキストが繰り返しスクロールされます •
地理情報コンテンツ・データベースコンテンツ新規作成
FPS(続き).
第0.5回: ~Unity Editorの操作方法~
Presentation transcript:

Unityゲーム開発 パイプライン事例紹介 Maya×Unity、Jenkins×ChatOpsによる自動化事例 ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

©2016 Tokyo RPG Factory Co., Ltd. All rights reserved. 自己紹介 村上 学 ゲーム業界歴7年目 最初はモーションデザイナー 現在はTAとして4年ほど活動中 パイプライン構築が専門 現在はTokyo RPG Factory に所属 テクニカルアーティストの仕事とスキル Tokyo RPG Factory ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

©2016 Tokyo RPG Factory Co., Ltd. All rights reserved. セッションの概要 Tokyo RPG Factory 1作目「いけにえと雪のセツナ」は Maya×Unityで開発。 スタッフのほとんどがUnity開発経験ゼロ、過去資産ゼロという状況でスタート。 国内盤「いけにえと雪のセツナ」は PlayStation 4, PlayStation Vita で発売中。 海外版「I am Setsuna」は PlayStation 4, Steam で発売中。 今回のセッションはこちらのプロジェクトの事例紹介になります。 ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

目次 事例1.データ入出力パイプライン 事例2.アーティストのためのJenkins Appendix スライドは公開しますので写真撮影は不要です。 事例1.データ入出力パイプライン 事例2.アーティストのためのJenkins Appendix AppendixはJenkinsに関する補足資料を記載しています。 セッション中には触れませんので、公開されたスライドでチェックしてみてください。 ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

©2016 Tokyo RPG Factory Co., Ltd. All rights reserved. 事例1.データ入出力パイプライン Mayaデータを最終的なゲームデータにするには、多くの手作業が存在している データ出力 Prefab生成 データ出力:  頻繁に行うので、通常メニューを  何度も操作するのは非常に手間がかかる。 ・UI手動オペレーション ・出力先の指定 ・出力オプションの設定 Prefab生成:  アーティストにとってデリケートで  複雑なデータ。手作業ではミスが発生する。 ・手作業による作成 ・手作業による更新 ・Prefab詳細仕様の把握 ゲーム開発の場合、作成した3Dデータをゲーム用のデータにするというのは必ず存在する作業かと思います。 今回のプロジェクトでは、MayaからUntiyへデータを入出力し、最終的にPrefabを作るというのがアーティストのワークフローにありました。 ここには多くの手作業が存在しています。(データ出力&Prefab生成) この作業から手作業を排除するためにデータ入出力パイプラインを構築しました。 ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

©2016 Tokyo RPG Factory Co., Ltd. All rights reserved. 1-1 ヒアリング 現場の意見をもとに解決すべき課題を決める  * Maya)FBXを出力したらスグUnityに反映したい  * Maya)1つのシーンから複数のモーションを出力したい  * Unity)マテリアルにシェーダーなどを設定するのが手間  * Unity)ついでにスクリプトもPrefabへ付与して欲しい  * Unity)そもそもPrefabとは? 解決策の理想を共有して齟齬を減らす まずは現場の意見収集を行いました。 … 意見を元に実際どのような課題があるのかを引き出します。 そして、課題に対する理想と着地点を決めていきました。 理想とは、理想とする解決方法で、実現できるかはわからないが、こうなるとハッピーだよね。というものです。 理想を共有することで、対策の方向性とクオリティラインのブレを抑える事ができます。 ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

1-2 理想的なゴール 検証や設計を行い実現可能な着地点を決める * Mayaから1クリックでUnityにデータを持っていける 1-2 理想的なゴール * Mayaから1クリックでUnityにデータを持っていける * Prefabは自動的に生成&更新される 検証や設計を行い実現可能な着地点を決める ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

©2016 Tokyo RPG Factory Co., Ltd. All rights reserved. 1-3 データ入出力の全体像     Maya側のデータ  * Mesh  * Texture  * Animation     Unity側のデータ  * Mesh  * Texture  * AnimationClip ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

変更頻度と変更のしやすさを考慮して、何をどこで変更可能にするかを決定 1-3 データ入出力の全体像     Maya側のデータ  * Mesh  * Texture  * Animation     Unity側のデータ  * Mesh  * Texture  * AnimationClip  * Prefab  * Shader  * AnimatorController  * Components データによっては、使い慣れたMayaで設定したほうが効率がいいというようなデータもありました。 今回のパイプラインではこのデータを対象にパイプライン構築を行っていきました。 変更頻度と変更のしやすさを考慮して、何をどこで変更可能にするかを決定 ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

©2016 Tokyo RPG Factory Co., Ltd. All rights reserved. 1-4 データ出力の着地点 カスタムエクスポーターを実装  * MayaからUnityフォルダに直接FBXをエクスポート  * FBXエクスポート時にテクスチャもUnityへコピー  * Mayaデータ構造にルールを持たせ、Unity用のデータを出力    →GroupNode、CustomAttribute、NodePlugin、XML出力 Unity ROOT * MayaからUnityフォルダに直接FBXをエクスポート UnityはUnityフォルダ内へのデータ追加&変更を感知すると自動的にインポートしてくれます。 操作を最小限にしたいのでこの仕様を活用。 MayaからUnityへの出力パスが必要になる。 UnityとMayaのディレクトリ構造を近づける(フォルダ名や階層の深さ)。 さらにUnityとMayaの共通ルートフォルダを作ることで相対パス操作が出来るようにしました。 * FBXエクスポート時にテクスチャもUnityへコピー テクスチャデータも必要なのでFBXと同じタイミングで、 Mayaシーンが参照しているテクスチャをUniyへコピーしています。 * Mayaデータ構造にルールを持たせ、Unity用のデータを出力(GroupNode) グループノード名をUnityの設定項目とし、 グループノードの子供にメッシュを格納してもらう。 それによってメッシュデータとプロパティ情報を関連付け、Unity側で処理できるようにしました。 * Mayaデータ構造にルールを持たせ、Unity用のデータを出力(CustomAttribute) データ仕様が固まってくると、データ毎に使用するシェーダーもおおよそ決まってきます。 事前に設定できるということで、MayaマテリアルのカスタムアトリビュートへUnityシェーダー名を埋め込みました。 * Mayaデータ構造にルールを持たせ、Unity用のデータを出力(NodePlugin) エクスポーターでは、モーションをフレーム分割しています。 そのフレーム情報とモーション名を専用ノードを作成して格納しています。 * Mayaデータ構造にルールを持たせ、Unity用のデータを出力(XML出力) FBXで出力できないデータはXMLファイルに出力しています。 CustomAttribute、NodePluginなど。 Maya ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

©2016 Tokyo RPG Factory Co., Ltd. All rights reserved. 1-5 Prefab生成の着地点 カスタムインポーターを実装:  * FBXインポート時にPrefab生成用のダイアログを表示  * Material生成、Shader設定、Texture設定  * Component付与、パラメーター設定  * AnimatorController付与、クリップ設定 反応 *.FBX * FBXインポート時にPrefab生成用のダイアログを表示 ダイアログ無しでPrefabを生成しても良かったのですが、下記の理由で表示しています。  ・FBXだけ試しに更新したい。Prefabは生成したくないというケースもあった。  ・バージョン管理を行っているため、意図的にPrefabを更新したという意識づけを行いたかった。 * Material生成、Shader設定、Texture設定 UnityデフォルトのFBXからマテリアルを生成する処理をOFFに。 Materialを自前コードで生成してShaderとTextureも設定。 ※生成にはMayaから出力したXML情報を利用。 ※ShaderはUnity側で後から変更する可能性が高いので、   Materialを新規生成するときにだけXML情報を利用しています。 * Component付与、パラメーター設定 データ仕様が決まると、付与するComponentと初期値が決まってくるのでコードで設定。 * AnimatorController付与、クリップ設定 キャラクタープレハブなどはControllerが必要になります。 事前にコントローラーのテンプレートを作成しておき、そこからPrefab毎のコントローラーを生成。 さらに、コントローラーのステート名に合致するClipを自動アサインしています。 ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

©2016 Tokyo RPG Factory Co., Ltd. All rights reserved. 1-6 完成したパイプラインの効果 アーティストから見たワークフロー:  1.Maya)エクスポーターを起動する  2.Maya)エクスポーターの出力ボタンを押す  3.Unity)ウィンドウをアクティブにする  4.Unity)自動表示されるPrefab生成ボタンを押す 4 Steps !! 理想的なゴールには到達できませんでしたが、 手作業を排除するという点では合格ラインではないかなと思います。 これで事例1.データ入出力パイプラインのお話は終わりです。 TAというと単発のツールを作るようなイメージもありますが、 今回のようにデータフローの全体を踏まえたパイプラインづくりも行うことが可能です。 1つ目の事例紹介は以上です ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

事例2.アーティストのためのJenkins *LightBuild *負荷計測 LightBuild:  ライトや配置の調整で繰り返し発生。  自分のマシンでやりたくない作業。 ・分散ビルドが出来ない ・処理に時間がかかる ・他のUnity作業ができない 負荷計測:  最新ビルドでシーンのテクスチャ  使用量を把握したい。 ・手動でビルドしたくない ・手動で実機実行したくない ・チェックするのが手間 ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

2-1 Jenkins & ChatOps システム構成 監視 通知 ジョブ呼出 実行 ChatOpsに関しては詳細を割愛、ざっくり言うと、 チャットを監視して事前に決めておいたメッセージが流れると他のシステムなどに何らかのアクションを起こす仕組み。 そして、その監視役をボットと呼びます。 Chatwork以外のソフトウェアは、全て1台の共有マシン上で稼働しています。 Jenkinsからの完了通知は、チャットメッセージに加えて、 テキスト音声読み上げも行っています。(EFD) 実機, Subversion, etc… ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

2-2 LightBuildの実例(ChatOps) 背景アーティストがチャットから命令 Jenkinsが反応してLightBuildを開始 LightBuildが完了すると通知がくる Unityにはコマンドライン引数で指定したStaticメソッドを実行する仕組みがあります。 それを利用して指定シーンをライトビルドしています。 自分のPCを使用せず、しかも職場以外の場所からでもライトビルドを実行、結果確認をすることが出来る。 ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

2-3 負荷計測の実例(TextureSize) 真夜中にJenkinsが負荷計測を実行、 完了するとチャットに通知してくる。 過去3回分のテクスチャサイズを一覧化。 計測結果が色分けされて視覚的に見やすい。 負荷計測のジョブ:  SVN更新で最新ゲームデータを取得、  Unityでゲームデータをビルド、  ビルドを計測モードで実機実行、  計測モードだと各シーンのテクスチャサイズをCSV出力してくれる(グラフィックスプログラマーが作ってくれた)  計測が終わると、CSVをもとにHTMLを作成する。 継続的にテクスチャサイズ計測と改善ができる環境に。 2つ目の事例紹介は以上です ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

©2016 Tokyo RPG Factory Co., Ltd. All rights reserved. ご静聴ありがとうございました ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

©2016 Tokyo RPG Factory Co., Ltd. All rights reserved. Appendix Jenkinsプラグイン ChatWork Plugin(Chatwork通知用) Groovy Label Assignment plugin(Node指定でLabel指定用) Workflow plugin(複数ジョブの連続実行&一括制御) Unity3d plugin(Unity起動用) HTTP Request Plugin(hubotアクセス用) Rebuilder(リビルド実行用) プロジェクトで利用したプラグインになります。 Jenkinsの導入から設定、カスタマイズまで個人で行っています。 ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.

©2016 Tokyo RPG Factory Co., Ltd. All rights reserved. Appendix Jenkinsジョブ(一部) 特定ワークスペースのSVN更新を毎日Chatwork通知 Unity:全マップを調べ非アクティブなGameObjectを出力 Unity:全背景プレハブを調べTransformなどがおかしいデータを出力 Unity:全マップのHierarchy構造を出力(オブジェクト名、Prefab状態など) Unity:全マップを調べMissingなGameObjectを出力 Unity:全マップのProfiler情報を出力(オブジェクト数、メモリなど) Unity:全マップを調べ配置されているPrefabの種類と数を出力 Unity:全マップを調べ設定値がおかしいものを出力(FOGがONか?などの汎用チェック) Unity:全マップを調べStandardShaderを使用しているGameObjectを出力 Unity:全FBXを調べReadableになっているものを出力する Unity:全マップを調べマイナススケールなGameObjectを出力する Unity:全テクスチャを調べフォーマット情報を出力する(解像度、圧縮設定など) Unity:Prefabで使用されていないマテリアルを出力する 作成したジョブの一例です。 ©2016 Tokyo RPG Factory Co., Ltd. All rights reserved.