SlideShare une entreprise Scribd logo
1  sur  27
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Unityで本格戦国
シュミレーションRPG開発
第6回DeNAゲーム開発勉強会
株式会社ディー・エヌ・エー
Japanリージョンゲーム事業本部
技術・編成部 開発基盤グループ
西野 剛平 kohei.nishino@dena.com
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
自己紹介
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
 入社前
⁃ 電話機の基地局制御装置のプロトコル開発
⁃ デバイスドライバの開発
⁃ メーカー研究室で画像認識アプリケーション
開発
 DeNA入社後
⁃ mobageでのONE PIECE グランドコレクシ
ョンの立ち上げ
⁃ エンジニア研修講師
⁃ 入力支援 ジェスチャー認識 エンジン開発
⁃ 戦魂 リードエンジニア
C, C++, Java, C#, Perl, ActionScript3など実務で幅広くプログラミング言語を使用。個
人的にはC# 3.0以降が最も好き。比較的後発にあたるだけあって言語設計がしっか
りしている。また、クラスを継承のみで拡張していく事への限界を危惧して導入さ
れたジェネリックや拡張メソッドの機構など、Strict言語の堅牢性とスクリプトライ
クの手軽さの両立を実現しているのも好きなポイント。
プログラミング歴
西野 剛平
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
どんなゲームか?
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
 戦魂 –SENTAMA-
戦国時代がモチーフの戦略シミュレーションR
PG。プレイヤーは城主となり、武将達を率いて
戦国の乱世の統一を目指す。
https://www.youtube.com/watch?v=JHXZoIm5gxQ
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
戦場、武将ガチャ、訓練を
繰り返すことで部隊が強化され、
ゲームが進行。
戦場
訓練
武将ガチャ
武将をゲット! 金をゲット!
レベルアップ!
訓練した武将を
編成して、戦場へ
ゲットした武将や
強化姫を訓練で合成
手に入れた金で
武将ガチャをまわす
ゲームの進め方
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
開発概要
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
戦魂の開発
 mobage連携なしの iOS/Android アプリ
 Unity4.6 を使った初の内製大型タイトル
 サーバーサイドはSakashoを利用しクライアント開発に重力を置く
 メンバーはネイティブアプリ開発経験者、mobageサーバー開発経験者
、コンソール開発経験者、Unity開発経験者、テクニカルデザイナー、未
経験新卒の混成チーム
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Native Plugin
アーキテクチャ
Unity 4.6.X
DeAL Sakasho
SDK
Game
Sakasho
クライアント
サーバー
DnSystemNGUI
WebView, MoviePalayer, その他
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
サーバーはSakasho
Sakasho 、Sakasho SDK、Sakasho GM Tool で構成される
Sakasho
Ruby 製の Game Backend as a Service (汎用ゲームサーバー)
Sakasho SDK
ゲームクライアントは、Sakasho SDK の API を利用して
Sakasho と対話する。
Sakasho GM Tool
サーバーの設定や運用のオペレーションは Web 管理ツールから行う
Sakasho について詳しくは、
・第4回ゲーム開発勉強会 Ruby で作る Game Backend as a Service
http://www.slideshare.net/dena_study/game-baas
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
 非同期処理の画一化
 アセットバンドル管理
 サウンドインテグレート
 グラフィック
技術的なところ・・・
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
非同期処理の画一化
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Unityにおける非同期処理 1/2
Unityで重い処理を行うとき、概ね2つの手段が考えられる。
 コルーチン
⁃ IEnumeratorを使い処理全体を複数フレームに跨って行われるよう
分割する方法。
⁃ Unityメインスレッドで処理されるので、UnityのAPIが使える。
 スレッド
⁃ 別のスレッドなのでUnityメインスレッドが直接ブロッキングされる
事はない。
⁃ UnityのAPIは使えない。
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
 処理の単位をさらに小分けにし、複数コルーチンの組み合わせで処理全
体を構成する場合もある
Unityにおける非同期処理 2/2
処理 A
処理 B
処理 C
処理 A 処理 B
処理 C
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
非同期処理を実行する Jobクラス
 コルーチン型のJobクラス
• IEnumeratorを返すコルーチンをラップしたJobクラス。コルーチンが終了するとJobがDoneとなる。
 スレッド型のJobクラス
• ThreadPoolで実行させる関数をラップしたJobクラス。関数の実行が終了するとJobがDoneとなる。
 結果ありのJobクラス
• 結果を指定することができるJobクラス。関数の実行が終了するとJobがDoneとなる。
IJob job = new AsyncThreadJob(AsyncAction);
void AsyncAction()
{
// 処理
}
IJob job = new Job(Coroutine());
IEnumerator Coroutine()
{
yield return null;
}
IJob job = new ResultfulJob<MyResult>(AsyncAction());
MyResult AsyncAction()
{
// 処理
}
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
コンテナ型 Jobクラス
 Jobを直列に実行するJobクラス
• Addされた順番でJobを実行する。全てのJobが終了した時点で、このJob自身がDoneとなる。
 Jobを並列に実行するJobクラス
• AddされたJobを同時に実行する。全てのJobが終了した時点で、このJob自身がDoneとなる。
SerializeJob job = new SerializeJob();
job.Add( jobA);
job.Add( jobB);
job.Add( jobC);
// jobの実行
JobManager.Run(job);
ParallelJob job = new ParallelJob();
job.Add( jobA);
job.Add( jobB);
job.Add( jobC);
// jobの実行
JobManager.Run(job);
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
アセットバンドル管理
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
アセットバンドルのバージョン管理
 AssetBundleのバージョン管理
⁃ 各AssetBundleの情報はバージョン管理専用のアセットバンドルに
格納。
⁃ バージョン管理専用アセットバンドルでは各AssetBundleの以下の
情報を保持。
⁃ アセットバンドルの名前
⁃ アセットバンドルに含まれる有効なアセットパス
⁃ アセットバンドルの圧縮の有無
⁃ チェックサム(破損のチェックに利用)
⁃ これらの情報とストレージ(キャッシュ)の状態をチェックする事で
ダウロードが必要かを判断
⁃ アセットバンドル生成の過程でアセットパスをユニーク化する事で
格納元アセットバンドル名を意識しないロードが可能
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
アセットバンドル名を意識しないロード
 Character001.unity3d
⁃ A.png
⁃ B.png
⁃ C.png
 Character002.unity3d
⁃ D.png
⁃ E.png
 Character003.unity3d
⁃ F.png
⁃ G.png
⁃ H.png
⁃ I.png
 Character004.unity3d
⁃ J.png
 Resources
⁃ A.png
⁃ B.png
⁃ C.png
⁃ D.png
⁃ E.png
⁃ F.png
⁃ G.png
⁃ H.png
⁃ I.png
⁃ J.png
① Resourceフォルダ配下に
アセットバンドル化するファイルを格納。
② アセットバンドルが
ほぼ同じサイズになるように
ファイル数を調整しながら自動生成
③ AssetBundleLoader.Load<Texture>(“G.png”);
といった具合に格納元のアセットバンドル名は意識せずにロードが可能。
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
サウンドインテグレート
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
内製のサウンドエンジンDeALを採用
 Unityサウンドシステムを使わなかった理由
⁃ Unityにはミキサーなどの概念はなく、戦魂の豪華なサウンド演出を
実現するには機能が足りていない。
⁃ Unityサウンドシステムでサポートされている圧縮フォーマットは
mp3のみのためOggファイルを再生する事ができない。
 DeALを使う理由
⁃ Oggフォーマットに対応しており、ストリームやオンメモリなどの
再生方法が選択可能。
⁃ 内製ゲームエンジンのLiftEngineで利用されており、「パズル戦隊
デナレンジャー」としての実績あり。
⁃ ミキサーの音量設定や再生チャネルなどは、ゲームロジックとは分
離されたDeALプロジェクトファイルとして管理されている。そのた
め、サウンドデザイナとエンジニアで作業領域を明確に分けること
が可能。
※ Unity5ではサポートされています。
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
DeALのネイティブプラグイン化
 DeALをネイティブプラグインとして組込むための準備
⁃ 「マネージコードからアンマネージコードの呼び出しは、iOS 上で
は高負荷です。フレーム毎に複数のネイティブプラグインを呼び出
さないでください。」(Unityマニュアルより引用)
⁃ 各GameObjectがDeALのサウンド再生関数を直接コールするよう
なアーキテクチャを取る場合ネイティブコールの制御は不可能とな
ってしまう。
⁃ DeALへの関数コールは一旦スタックした後、それらを束ねてマーシ
ャルコピーしネイティブコールを行うようなPluginBundlerを作成
。
マーシャリングコストを削減する必要がある。
そこで・・・
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
PluginBundlerの概要
Plugin Bundler
GameObject 2GameObject 1 GameObject 3
① SE1再生命令をスタック
Dispatcher
Unity層
(Managed層)
Native層
(UnManaged層)
DeAL
② Voice1再生命令を
スタック
③ SE2再生命令を
スタック
Result Pool
④ 3つの命令を束ねてネイティブコール
⑤ SE1, Voice1, SE2 の各再生命令
⑥ SE1, Voice1, SE2 の再生結果を
Result Poolに格納
⑦ Result Poolにデータがある場合は取得して
コール元のGameObjectに通知する。
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
グラフィック
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
 2D Sprite と 法線 + 鏡面強度のmapを組み合わせて、ポイントライ
トによるディティール調整
2D Sprite
法線 + 鏡面強度 map
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
 ラジアルブラー、カメラシェイクと
いった臨場感あるバトル表現
 ブルーム、リムライティングなどの
光の表現
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ご静聴ありがとうございました!!
今後とも戦魂を
よろしくお願いします!

Contenu connexe

Tendances

一般的なチートの手法と対策について
一般的なチートの手法と対策について一般的なチートの手法と対策について
一般的なチートの手法と対策について優介 黒河
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnity Technologies Japan K.K.
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現Unity Technologies Japan K.K.
 
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説Unity Technologies Japan K.K.
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす増田 亨
 
テストを書こう、Unity編
テストを書こう、Unity編テストを書こう、Unity編
テストを書こう、Unity編Hiroto Imoto
 
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例UnityTechnologiesJapan002
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するYoshifumi Kawai
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計UnityTechnologiesJapan002
 
Unityネイティブプラグインの勧め
Unityネイティブプラグインの勧めUnityネイティブプラグインの勧め
Unityネイティブプラグインの勧めKLab Inc. / Tech
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解したtorisoup
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介torisoup
 
UniTask入門
UniTask入門UniTask入門
UniTask入門torisoup
 
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」U-dai Yokoyama
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ信之 岩永
 
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術Unity Technologies Japan K.K.
 
UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!Unity Technologies Japan K.K.
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All ThingsUnityTechnologiesJapan002
 

Tendances (20)

一般的なチートの手法と対策について
一般的なチートの手法と対策について一般的なチートの手法と対策について
一般的なチートの手法と対策について
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現
 
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
 
テストを書こう、Unity編
テストを書こう、Unity編テストを書こう、Unity編
テストを書こう、Unity編
 
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
 
Unityネイティブプラグインの勧め
Unityネイティブプラグインの勧めUnityネイティブプラグインの勧め
Unityネイティブプラグインの勧め
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解した
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ
 
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
 
UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
 

En vedette

FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術dena_study
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceMakoto Haruyama
 
FINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてFINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてdena_study
 
Game BaaS Implemented in Ruby
Game BaaS Implemented in RubyGame BaaS Implemented in Ruby
Game BaaS Implemented in Rubydena_study
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術dena_study
 
ガールアックス:リアルタイム通信処理の効率的な実装
ガールアックス:リアルタイム通信処理の効率的な実装ガールアックス:リアルタイム通信処理の効率的な実装
ガールアックス:リアルタイム通信処理の効率的な実装dena_study
 
制作を支えたツール達 (パズル戦隊デナレンジャー)
制作を支えたツール達 (パズル戦隊デナレンジャー)制作を支えたツール達 (パズル戦隊デナレンジャー)
制作を支えたツール達 (パズル戦隊デナレンジャー)dena_study
 
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてDeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてMakoto Haruyama
 
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)dena_study
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門dena_study
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方dena_study
 

En vedette (12)

FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
 
FINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてFINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについて
 
Game BaaS Implemented in Ruby
Game BaaS Implemented in RubyGame BaaS Implemented in Ruby
Game BaaS Implemented in Ruby
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
ガールアックス:リアルタイム通信処理の効率的な実装
ガールアックス:リアルタイム通信処理の効率的な実装ガールアックス:リアルタイム通信処理の効率的な実装
ガールアックス:リアルタイム通信処理の効率的な実装
 
制作を支えたツール達 (パズル戦隊デナレンジャー)
制作を支えたツール達 (パズル戦隊デナレンジャー)制作を支えたツール達 (パズル戦隊デナレンジャー)
制作を支えたツール達 (パズル戦隊デナレンジャー)
 
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてDeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
 
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方
 

Similaire à Unityで本格戦国シュミレーションRPG 開発

Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Toshiyuki Hirata
 
1.29.user,user,user
1.29.user,user,user1.29.user,user,user
1.29.user,user,userTonny Xu
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -Toshiyuki Hirata
 
fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCIToshiyuki Hirata
 
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~Unity Technologies Japan K.K.
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Shunsuke Maeda
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみたMori Shingo
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよYohei Oda
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCITakafumi Ikeda
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsGo Sueyoshi (a.k.a sue445)
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスToshiyuki Hirata
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -Toshiyuki Hirata
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)Drecom Co., Ltd.
 
“debug.gem”の 利用体験・開発効率の向上
“debug.gem”の 利用体験・開発効率の向上“debug.gem”の 利用体験・開発効率の向上
“debug.gem”の 利用体験・開発効率の向上Naoto Ono
 
“debug.gem”の 利用体験・開発効率の向上.pdf
“debug.gem”の 利用体験・開発効率の向上.pdf“debug.gem”の 利用体験・開発効率の向上.pdf
“debug.gem”の 利用体験・開発効率の向上.pdfNaoto Ono
 
Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -Toshiyuki Hirata
 
Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Toshiyuki Hirata
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウKentarou Mukunasi
 

Similaire à Unityで本格戦国シュミレーションRPG 開発 (20)

ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
 
1.29.user,user,user
1.29.user,user,user1.29.user,user,user
1.29.user,user,user
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
 
fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCI
 
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみた
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCI
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
 
“debug.gem”の 利用体験・開発効率の向上
“debug.gem”の 利用体験・開発効率の向上“debug.gem”の 利用体験・開発効率の向上
“debug.gem”の 利用体験・開発効率の向上
 
“debug.gem”の 利用体験・開発効率の向上.pdf
“debug.gem”の 利用体験・開発効率の向上.pdf“debug.gem”の 利用体験・開発効率の向上.pdf
“debug.gem”の 利用体験・開発効率の向上.pdf
 
Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -
 
Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化
 
The evolution of c#
The evolution of c#The evolution of c#
The evolution of c#
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ
 

Dernier

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 

Dernier (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

Unityで本格戦国シュミレーションRPG 開発

  • 1. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Unityで本格戦国 シュミレーションRPG開発 第6回DeNAゲーム開発勉強会 株式会社ディー・エヌ・エー Japanリージョンゲーム事業本部 技術・編成部 開発基盤グループ 西野 剛平 kohei.nishino@dena.com
  • 2. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 自己紹介
  • 3. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.  入社前 ⁃ 電話機の基地局制御装置のプロトコル開発 ⁃ デバイスドライバの開発 ⁃ メーカー研究室で画像認識アプリケーション 開発  DeNA入社後 ⁃ mobageでのONE PIECE グランドコレクシ ョンの立ち上げ ⁃ エンジニア研修講師 ⁃ 入力支援 ジェスチャー認識 エンジン開発 ⁃ 戦魂 リードエンジニア C, C++, Java, C#, Perl, ActionScript3など実務で幅広くプログラミング言語を使用。個 人的にはC# 3.0以降が最も好き。比較的後発にあたるだけあって言語設計がしっか りしている。また、クラスを継承のみで拡張していく事への限界を危惧して導入さ れたジェネリックや拡張メソッドの機構など、Strict言語の堅牢性とスクリプトライ クの手軽さの両立を実現しているのも好きなポイント。 プログラミング歴 西野 剛平
  • 4. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. どんなゲームか?
  • 5. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.  戦魂 –SENTAMA- 戦国時代がモチーフの戦略シミュレーションR PG。プレイヤーは城主となり、武将達を率いて 戦国の乱世の統一を目指す。 https://www.youtube.com/watch?v=JHXZoIm5gxQ
  • 6. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 戦場、武将ガチャ、訓練を 繰り返すことで部隊が強化され、 ゲームが進行。 戦場 訓練 武将ガチャ 武将をゲット! 金をゲット! レベルアップ! 訓練した武将を 編成して、戦場へ ゲットした武将や 強化姫を訓練で合成 手に入れた金で 武将ガチャをまわす ゲームの進め方
  • 7. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 開発概要
  • 8. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 戦魂の開発  mobage連携なしの iOS/Android アプリ  Unity4.6 を使った初の内製大型タイトル  サーバーサイドはSakashoを利用しクライアント開発に重力を置く  メンバーはネイティブアプリ開発経験者、mobageサーバー開発経験者 、コンソール開発経験者、Unity開発経験者、テクニカルデザイナー、未 経験新卒の混成チーム
  • 9. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Native Plugin アーキテクチャ Unity 4.6.X DeAL Sakasho SDK Game Sakasho クライアント サーバー DnSystemNGUI WebView, MoviePalayer, その他
  • 10. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. サーバーはSakasho Sakasho 、Sakasho SDK、Sakasho GM Tool で構成される Sakasho Ruby 製の Game Backend as a Service (汎用ゲームサーバー) Sakasho SDK ゲームクライアントは、Sakasho SDK の API を利用して Sakasho と対話する。 Sakasho GM Tool サーバーの設定や運用のオペレーションは Web 管理ツールから行う Sakasho について詳しくは、 ・第4回ゲーム開発勉強会 Ruby で作る Game Backend as a Service http://www.slideshare.net/dena_study/game-baas
  • 11. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.  非同期処理の画一化  アセットバンドル管理  サウンドインテグレート  グラフィック 技術的なところ・・・
  • 12. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 非同期処理の画一化
  • 13. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Unityにおける非同期処理 1/2 Unityで重い処理を行うとき、概ね2つの手段が考えられる。  コルーチン ⁃ IEnumeratorを使い処理全体を複数フレームに跨って行われるよう 分割する方法。 ⁃ Unityメインスレッドで処理されるので、UnityのAPIが使える。  スレッド ⁃ 別のスレッドなのでUnityメインスレッドが直接ブロッキングされる 事はない。 ⁃ UnityのAPIは使えない。
  • 14. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.  処理の単位をさらに小分けにし、複数コルーチンの組み合わせで処理全 体を構成する場合もある Unityにおける非同期処理 2/2 処理 A 処理 B 処理 C 処理 A 処理 B 処理 C
  • 15. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 非同期処理を実行する Jobクラス  コルーチン型のJobクラス • IEnumeratorを返すコルーチンをラップしたJobクラス。コルーチンが終了するとJobがDoneとなる。  スレッド型のJobクラス • ThreadPoolで実行させる関数をラップしたJobクラス。関数の実行が終了するとJobがDoneとなる。  結果ありのJobクラス • 結果を指定することができるJobクラス。関数の実行が終了するとJobがDoneとなる。 IJob job = new AsyncThreadJob(AsyncAction); void AsyncAction() { // 処理 } IJob job = new Job(Coroutine()); IEnumerator Coroutine() { yield return null; } IJob job = new ResultfulJob<MyResult>(AsyncAction()); MyResult AsyncAction() { // 処理 }
  • 16. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. コンテナ型 Jobクラス  Jobを直列に実行するJobクラス • Addされた順番でJobを実行する。全てのJobが終了した時点で、このJob自身がDoneとなる。  Jobを並列に実行するJobクラス • AddされたJobを同時に実行する。全てのJobが終了した時点で、このJob自身がDoneとなる。 SerializeJob job = new SerializeJob(); job.Add( jobA); job.Add( jobB); job.Add( jobC); // jobの実行 JobManager.Run(job); ParallelJob job = new ParallelJob(); job.Add( jobA); job.Add( jobB); job.Add( jobC); // jobの実行 JobManager.Run(job);
  • 17. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. アセットバンドル管理
  • 18. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. アセットバンドルのバージョン管理  AssetBundleのバージョン管理 ⁃ 各AssetBundleの情報はバージョン管理専用のアセットバンドルに 格納。 ⁃ バージョン管理専用アセットバンドルでは各AssetBundleの以下の 情報を保持。 ⁃ アセットバンドルの名前 ⁃ アセットバンドルに含まれる有効なアセットパス ⁃ アセットバンドルの圧縮の有無 ⁃ チェックサム(破損のチェックに利用) ⁃ これらの情報とストレージ(キャッシュ)の状態をチェックする事で ダウロードが必要かを判断 ⁃ アセットバンドル生成の過程でアセットパスをユニーク化する事で 格納元アセットバンドル名を意識しないロードが可能
  • 19. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. アセットバンドル名を意識しないロード  Character001.unity3d ⁃ A.png ⁃ B.png ⁃ C.png  Character002.unity3d ⁃ D.png ⁃ E.png  Character003.unity3d ⁃ F.png ⁃ G.png ⁃ H.png ⁃ I.png  Character004.unity3d ⁃ J.png  Resources ⁃ A.png ⁃ B.png ⁃ C.png ⁃ D.png ⁃ E.png ⁃ F.png ⁃ G.png ⁃ H.png ⁃ I.png ⁃ J.png ① Resourceフォルダ配下に アセットバンドル化するファイルを格納。 ② アセットバンドルが ほぼ同じサイズになるように ファイル数を調整しながら自動生成 ③ AssetBundleLoader.Load<Texture>(“G.png”); といった具合に格納元のアセットバンドル名は意識せずにロードが可能。
  • 20. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. サウンドインテグレート
  • 21. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 内製のサウンドエンジンDeALを採用  Unityサウンドシステムを使わなかった理由 ⁃ Unityにはミキサーなどの概念はなく、戦魂の豪華なサウンド演出を 実現するには機能が足りていない。 ⁃ Unityサウンドシステムでサポートされている圧縮フォーマットは mp3のみのためOggファイルを再生する事ができない。  DeALを使う理由 ⁃ Oggフォーマットに対応しており、ストリームやオンメモリなどの 再生方法が選択可能。 ⁃ 内製ゲームエンジンのLiftEngineで利用されており、「パズル戦隊 デナレンジャー」としての実績あり。 ⁃ ミキサーの音量設定や再生チャネルなどは、ゲームロジックとは分 離されたDeALプロジェクトファイルとして管理されている。そのた め、サウンドデザイナとエンジニアで作業領域を明確に分けること が可能。 ※ Unity5ではサポートされています。
  • 22. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. DeALのネイティブプラグイン化  DeALをネイティブプラグインとして組込むための準備 ⁃ 「マネージコードからアンマネージコードの呼び出しは、iOS 上で は高負荷です。フレーム毎に複数のネイティブプラグインを呼び出 さないでください。」(Unityマニュアルより引用) ⁃ 各GameObjectがDeALのサウンド再生関数を直接コールするよう なアーキテクチャを取る場合ネイティブコールの制御は不可能とな ってしまう。 ⁃ DeALへの関数コールは一旦スタックした後、それらを束ねてマーシ ャルコピーしネイティブコールを行うようなPluginBundlerを作成 。 マーシャリングコストを削減する必要がある。 そこで・・・
  • 23. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. PluginBundlerの概要 Plugin Bundler GameObject 2GameObject 1 GameObject 3 ① SE1再生命令をスタック Dispatcher Unity層 (Managed層) Native層 (UnManaged層) DeAL ② Voice1再生命令を スタック ③ SE2再生命令を スタック Result Pool ④ 3つの命令を束ねてネイティブコール ⑤ SE1, Voice1, SE2 の各再生命令 ⑥ SE1, Voice1, SE2 の再生結果を Result Poolに格納 ⑦ Result Poolにデータがある場合は取得して コール元のGameObjectに通知する。
  • 24. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. グラフィック
  • 25. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.  2D Sprite と 法線 + 鏡面強度のmapを組み合わせて、ポイントライ トによるディティール調整 2D Sprite 法線 + 鏡面強度 map
  • 26. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.  ラジアルブラー、カメラシェイクと いった臨場感あるバトル表現  ブルーム、リムライティングなどの 光の表現
  • 27. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ご静聴ありがとうございました!! 今後とも戦魂を よろしくお願いします!

Notes de l'éditeur

  1. いろいろチャレンジングな事がありました。 弊社の場合、直置きタイトルはめずらしく、これだけdの大型タイトルでは初。
  2. マスターデータのダウンロード、プレーヤデータの保存、またアセットバンドルのダウンロードなどの決まった順番で処理を行わなければいけない部分などで、汎用てきにしよう。
  3. キャラ画像やvoiceなどは アセットバンドル として管理している。
  4. アセットバンドルのビルドプロセスでユニークを担保する。
  5. もともとLiftエンジン用のサウンドシステムとして作られたものをUnityに組み込む必要があった。
  6. 戦魂のバトルシーンを想定します。
  7. カスタムシェーダーを使った例
  8. X, y ,z, a