SlideShare a Scribd company logo
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.
ご静聴ありがとうございました!!
今後とも戦魂を
よろしくお願いします!

More Related Content

What's hot

Photon Fusionのはじめの一歩
Photon Fusionのはじめの一歩Photon Fusionのはじめの一歩
Photon Fusionのはじめの一歩
聡 大久保
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
DeNA
 
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow) UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
エピック・ゲームズ・ジャパン Epic Games Japan
 
UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!
Unity Technologies Japan K.K.
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
torisoup
 
Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてUnity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてTatsuhiko Yamamura
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
 
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunityUnityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
torisoup
 
マーブル図で怖くないRxJS
マーブル図で怖くないRxJSマーブル図で怖くないRxJS
マーブル図で怖くないRxJS
bitbank, Inc. Tokyo, Japan
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
Preferred Networks
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
 
200人での対戦も可能!?Photon 新SDKについて
200人での対戦も可能!?Photon 新SDKについて200人での対戦も可能!?Photon 新SDKについて
200人での対戦も可能!?Photon 新SDKについて
Photon運営事務局
 
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門
Shingo Tamaki
 
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
torisoup
 
【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門
Unity Technologies Japan K.K.
 

What's hot (20)

Photon Fusionのはじめの一歩
Photon Fusionのはじめの一歩Photon Fusionのはじめの一歩
Photon Fusionのはじめの一歩
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow) UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
 
UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてUnity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成について
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
Unityと.NET
Unityと.NETUnityと.NET
Unityと.NET
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunityUnityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
 
マーブル図で怖くないRxJS
マーブル図で怖くないRxJSマーブル図で怖くないRxJS
マーブル図で怖くないRxJS
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
 
200人での対戦も可能!?Photon 新SDKについて
200人での対戦も可能!?Photon 新SDKについて200人での対戦も可能!?Photon 新SDKについて
200人での対戦も可能!?Photon 新SDKについて
 
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門
 
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
 
【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門
 

Viewers also liked

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 Service
Makoto 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 Ruby
dena_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
 

Viewers also liked (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との付き合い方
 

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

ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
Go Sueyoshi (a.k.a sue445)
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
Toshiyuki Hirata
 
1.29.user,user,user
1.29.user,user,user1.29.user,user,user
1.29.user,user,user
Tonny Xu
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Toshiyuki Hirata
 
fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCI
Toshiyuki 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!で気軽にCI
Takafumi Ikeda
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
Go 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”の 利用体験・開発効率の向上.pdf
Naoto Ono
 
Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -
Toshiyuki Hirata
 
Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化
Toshiyuki Hirata
 
The evolution of c#
The evolution of c#The evolution of c#
The evolution of c#
leverages_event
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウKentarou Mukunasi
 

Similar to 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ゲーム開発ノウハウ
 

Recently uploaded

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 

Recently uploaded (15)

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 

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. ご静聴ありがとうございました!! 今後とも戦魂を よろしくお願いします!

Editor's Notes

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