SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
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.
ご静聴ありがとうございました!!
今後とも戦魂を
よろしくお願いします!

Weitere ähnliche Inhalte

Was ist angesagt?

自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方光晶 上原
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化DeNA
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計UnityTechnologiesJapan002
 
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!amusementcreators
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021Atsushi Nakamura
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方Daisaku Mochizuki
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能Yoshifumi Kawai
 
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説Unity Technologies Japan K.K.
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践Yoshifumi Kawai
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~infinite_loop
 
脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTask脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTaskEuglenaching
 
ゲーム開発を加速させる クライアントセキュリティ
ゲーム開発を加速させる クライアントセキュリティゲーム開発を加速させる クライアントセキュリティ
ゲーム開発を加速させる クライアントセキュリティLINE Corporation
 
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」U-dai Yokoyama
 
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGoogle Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGoogle Cloud Platform - Japan
 
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニックUnityTechnologiesJapan002
 
【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity DevelopersUnityTechnologiesJapan002
 
【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
 

Was ist angesagt? (20)

自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
 
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
 
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTask脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTask
 
ゲーム開発を加速させる クライアントセキュリティ
ゲーム開発を加速させる クライアントセキュリティゲーム開発を加速させる クライアントセキュリティ
ゲーム開発を加速させる クライアントセキュリティ
 
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
 
多機能ボイチャを簡単に導入する方法
多機能ボイチャを簡単に導入する方法多機能ボイチャを簡単に導入する方法
多機能ボイチャを簡単に導入する方法
 
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGoogle Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
 
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
 
【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers
 
【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
 

Andere mochten auch

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
 
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門dena_study
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方dena_study
 

Andere mochten auch (11)

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との付き合い方
 

Ähnlich wie 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
 

Ähnlich wie 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ゲーム開発ノウハウ
 

Kürzlich hochgeladen

2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦Sadao Tokuyama
 

Kürzlich hochgeladen (12)

2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 
2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
 
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 

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

Hinweis der Redaktion

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