592 Views
June 13, 17
スライド概要
講演者:熊谷 宇祐(株式会社Tokyo RPG Factory)
北尾 雄一郎(ジェムドロップ株式会社)
栗野 智行(ジェムドロップ株式会社)
こんな人におすすめ
・Unityで家庭用向けゲームを開発している方
・Nintendo Switch™で開発を検討している方
受講者が得られる知見
・Unityを使用して家庭用向けゲームを開発する際の注意点
・Unityを使用してNintendo Switch™向けの開発をする際の注意点
講演動画:https://youtu.be/NZmwn2yq1HQ
リアルタイム3Dコンテンツを制作・運用するための世界的にリードするプラットフォームである「Unity」の日本国内における販売、サポート、コミュニティ活動、研究開発、教育支援を行っています。ゲーム開発者からアーティスト、建築家、自動車デザイナー、映画製作者など、さまざまなクリエイターがUnityを使い想像力を発揮しています。
Unite 2017 Tokyo
熊谷 宇祐 テクニカルディレクター 株式会社Tokyo RPG Factory 北尾 雄一郎 代表取締役/スタジオディレクター ジェムドロップ株式会社 栗野 智行 プログラムディレクター ジェムドロップ株式会社 Unite 2017 Tokyo
Nintendo Switch™本体同時発売必達、 家庭用向けRPG 「いけにえと雪のセツナ」 開発の裏側
目次 ・作品コンセプト ・開発情報 ・Nintendo Switch版開発の経緯 ・課題と対応事例 ・対応を終えての所感 ・質疑応答 Unite 2017 Tokyo
作品コンセプト ・Tokyo RPG Factoryの「Project SETSUNA」とは、 「これこそがRPGである」という作品を、 現在の技術により短期間で作り続けるプロジェクト。 ・「いけにえと雪のセツナ(セツナ)」は「Project SETSUNA」の第1作。 → 独自のエンジン開発等での技術蓄積を目的とせず、 開発者の時間をゲーム開発に割けるよう、 既存のゲームエンジンやミドルウェアを積極的に採用。 → Unityを採用。 Unite 2017 Tokyo
開発情報 ・Unityのバージョンは「5.2.2p3」で開発 ・サウンドはCRIのADX2を使用(Sofdec未使用) ・Luaを使用してゲーム内イベントを組み込み ・プログラム開発は「ジェムドロップ株式会社」 ・日本でPS4/PSVita版(日本語)を発売 … 2016年2月18日 ・欧米でPS4版(英語)を発売 … 2016年7月19日 ・グローバルでSteam版(日本語・英語)を発売 … 2016年7月19日 ・欧米のPS4版とSteam版にフランス語追加 … 2017年2月16日 Unite 2017 Tokyo
Nintendo Switch版開発の経緯 ・任天堂様から出る新ハード(当時NX)が、Unityで作ってあれば、 動作すると聞き、開発チーム内で、まずはノウハウを貯めよう ということで、「セツナ」の移植をスタート。 ・本体発売日から1か月以内程度で発売する方針。 Unite 2017 Tokyo
Nintendo Switch版開発の経緯 ・2016年秋: Unityの調整が進み、「セツナ」でエラーが出ない状態に。 ・2016年晩秋: 任天堂様に事前提出を行う。 → 本体発売に近いタイトルということで事前提出を行ったが、 世界で初めて事前提出されたのが、Unityで開発した「セツナ」 だったかなかったとかで、急に周りがザワザワしだす。 Unite 2017 Tokyo
Nintendo Switch版開発の経緯 ・2016年初冬: Unity様との打ち合わせが急遽セッティングされ、 本体と同時発売を目指すタイトルに。 任天堂様からは、同発であれば年内マスターアップをお願いされる。 ・2017年1月13日: 本体発売日が3月3日と発表されて、開発チーム騒然。 Unite 2017 Tokyo
Nintendo Switch版開発の経緯 ・2017年3月3日 = 本体発売日: 日本時間午前0時にグローバルでダウンロード販売開始 日本のみパッケージ版あり 日本語、英語、フランス語に対応 ・2017年4月13日: 「時の闘技場」を追加したアップデートデータ配信開始 Unite 2017 Tokyo
課題と対応事例 ・Switch特有の課題 ・Unity特有の課題 ・Unity for Switch特有の課題 ・「5.2.2p3」から「5.5.0p1」へのバージョン移行に伴う課題 ・その他 ※講演内では、一部をご紹介します。 それ以外につきましては、本資料の公開時にご確認ください。 Unite 2017 Tokyo
課題と対応事例 (Switch特有の課題) ・ドック抜き差しによるフレームバッファサイズの変更 「セツナ」では、携帯モード時に720p、TVモード時に1080pで画面処理を 行っており、メインメニューでは遷移直前の画面をキャプチャして ぼかした絵を背景に使用するようにしているが、メインメニュー中で ドックの抜き差しを行うと、メインバッファサイズが変更になり、 メニューの背景画像が崩れてしまう不具合が発生した。 レンダーテクスチャに画面をキャプチャして保持する場合は要注意。 Unite 2017 Tokyo
課題と対応事例 (Switch特有の課題) ・ドック抜き差しを行った際に負荷がかかる 非常に大きなフレームスキップが発生することがあり、 コリジョン抜けが発生することがあった。 → Maximum Allowed Timestep を 0.05 といった小さい数値にすることで回避。 Unite 2017 Tokyo
課題と対応事例 (Unity特有の課題) ・リリース毎のAssetBundleのデータを要バックアップ AssetBundleは出力の度にデータに変更が発生するため、 パッチサイズを小さくするためには、変更が発生したファイルを含む AssetBundleのみの出力に留める必要がある。 ※SwitchのSDKに付属しているツールを使用することで ROM内のファイルを開展することも可能。 Unite 2017 Tokyo
課題と対応事例 (Unity特有の課題) ・アプリケーション起動時にバックグラウンドが灰色になる アプリケーション起動時にバックグラウンドが一瞬灰色になり、 その後黒くなる不具合が発生。 この不具合は、シーン上にカメラが何も配置されていないと バックグラウンドカラーのクリアが不定になる為に発生する。 → メインカメラが生成される前にダミーのカメラを配置して、 クリアカラーを指定するようにして対応。 Unite 2017 Tokyo
課題と対応事例 (Unity for Switch特有の課題) ・「セツナ」では以下の自前のプラグインを作成 パッド入力(Joy-Con、Proコントローラー) 設定言語取得 ソフトウェアキーボード セーブロード サーバー認証 Unite 2017 Tokyo
課題と対応事例 (「5.2.2p3」から「5.5.0p1」へのバージョン移行に伴う課題) ・Object.GetInstanceID、UnityEngine.Object.GetHashCode について Unity 5.3 までは、GetHashCodeは、GetInstanceID と同じ値を返しており、 Unity 5.4 からは Editor 時のみ GetInstanceID を返し、 実行環境では GetHashCode の値を返すようになったとのこと。 → GetHashCode と GetInstanceID を同じ値として扱っている個所があり、 この挙動変更により、値が一致しなくなって不具合が発生した。 Unite 2017 Tokyo
課題と対応事例 (「5.2.2p3」から「5.5.0p1」へのバージョン移行に伴う課題) ・uGUI の ScrollRect の verticalScrollbarVisibility の初期値の変更 バージョンアップ時に verticalScrollbarVisibility の値が Parmanent(強制表示)に自動で変更されてしまい、 UIのスクロールバーが表示されっぱなしになる不具合が発生 → 「Auto Hide」に変更することで対処。 Unite 2017 Tokyo
課題と対応事例 (「5.2.2p3」から「5.5.0p1」へのバージョン移行に伴う課題) ・テクスチャの標準形式が RGBA に統一された事による影響 「セツナ」では、法線マップにカスタムテクスチャを使用しており、 その影響で UV がずれるメッシュが出ていた。 カスタムテクスチャのカラーチャンネルを ARGB を基準にデータを格納しているものがあれば注意が必要。 Unite 2017 Tokyo
課題と対応事例 (「5.2.2p3」から「5.5.0p1」へのバージョン移行に伴う課題) ・テクスチャインポーターの対応について テクスチャインポートの形式が変更になったため、テクスチャインポーターで 独自の設定を行っている場合は、Unity 5.5 に対応した形式に変更しないと、 意図したテクスチャフォーマットになっていなかったり、 勝手にミップマップが生成されてしまうため、必ず確認をしておいた方が良い。 Unite 2017 Tokyo
課題と対応事例 (「5.2.2p3」から「5.5.0p1」へのバージョン移行に伴う課題) ・uGUI の UI 表示位置がズレる リスト表示を行っている個所で項目の 表示位置がズレてしまう現象が発生。 (明確な原因不明) → 該当するGameObject を 非アクティブからアクティブに 一瞬で切り替えると改善。 Unite 2017 Tokyo
課題と対応事例 (その他) ・仏語追加時に発生したロケール依存の問題 浮動小数点をToStringで文字列化した際に「.」が「,」になり、 この文字列を使用してLuaで処理していた箇所で 「,」を引数の区切りと認識して不具合が発生していた。 → ToStringの第一引数に CultureInfo.InvariantCulture を指定することで、 ロケールに依存しないように Unite 2017 Tokyo
対応を終えての所感 ・「セツナ」を本体と同時発売できた理由 > Unityを使用していたから > 既出のマルチプラットフォームタイトルだったから(Steam版があったから) > 通信や対戦要素がなかったから > 高負荷を必要とする作品ではなかったから > 「Nintendo Developer Portal」の掲示板を活用したから Unite 2017 Tokyo
対応を終えての所感 ・既存のプロジェクトのSwitchへの移植難易度 > ハードウェアの特徴とマッチしている必要がある > スペックを把握する(フレームレートが変わることを踏まえて作っておく) > アプリのアイコンや言語等の設定する項目は非常にシンプル > 据え置きや携帯のマルチ展開をしている、もしくは予定のタイトルは相性が良い Unite 2017 Tokyo
質疑応答 Unite 2017 Tokyo
Thank you! Unite 2017 Tokyo