SlideShare ist ein Scribd-Unternehmen logo
1 von 34
ゲームデータDLとの戦い
~幻塔戦記グリフォン~
株式会社Aiming
ソフトウェアエンジニア
吉野 省吾
自己紹介
株式会社Aiming
ソフトウェアエンジニア
吉野 省吾
• 前職
– PCでオンラインゲームを作成していました
• 現職
– Unityを使ってスマホのオンラインゲーム作ってます
概要
ゲームデータのDLついて、苦労した点などを振
り返ろうと思います
– ゲーム紹介
– グリフォンでの実装
– 改定の歴史
– まとめ
ゲーム紹介
Publisher : SEGA
Developer: Aiming リリース : 2013年6月26日
© SEGA / Aiming All Rights Reserved
ゲーム紹介
• 横スクロールのアクションゲーム
• 最大4人までの協力プレイ
• 最大8人までの対戦プレイ
• 多彩な装備品によるアバターカスタマイズ
協力プレイ
対人プレイ
多彩な装備品によるアバターカスタマイズ
クライアントの開発環境
• Unity 3D
• スクリプト は C#
• ゲームデータのダウンロードには
AssetBundle を使用
AssetBundle について
• Unity標準のダウンロード用データ
– ダウンロードデータの作成、端末へのダウンロー
ド、ゲームへの読み込みをサポートしている
– 開発者が決めること
• どのデータ(Asset)をどのダウンロードデータにまとめる
(Bundle)するのか
• バージョンを変更し、どのデータを更新すべきか決め
る
歴史
一回戦(CBT時)
~2013.04 頃~
問題点
• ゲームのデータをダウンロードして更新する
機能が必要
対策
• PCのオンラインゲームと同じように、ゲーム
を始める前に更新されたものをすべてダウン
ロードさせる
実装
• ログイン直後にデータダウンロードタイミング
を設けてすべてダウンロードさせる
※画像は最新バージョンのものです
実装
• ダウンロードデータ名(AssetBundle名)と
バージョンのセットを一つのリストにして管理
二回戦(リリース時)
~2013.06 頃~
問題点
• 装備品をはじめとしたデータが増えてきて、ダ
ウンロード時間がだんだん延びてくる。
– 最長15分くらい
– 最初だけ我慢してもらうとしても長すぎる。
• ダウンロードデータ
– ファイル数:2000個前後
対策
• ゲームの進行度により徐々に機能が解放さ
れるので、進行しているところまでで必要なも
のをダウンロードするようにする
アバターメイク
チュートリアル開始
マルチプレイ解放
実装
• ダウンロードリストにゲーム進行度を追加
• ゲームが進行したら、そのタイミングで新しく
使う分のデータをダウンロードする
– たとえば、チュートリアル開始まで進行したら、マ
ルチプレイ解放までのデータをダウンロードする
実装
• 現在進行しているところまでのデータが更新
されたら、ログイン時にまとめて更新する
– 差分だけの更新になるはずなので、それほど長
時間にはならないだろうと予測していた
– ログインは必ず通るので、更新漏れする心配が
少ない
実装
1. アバター作成まで
• 職業選択見本用アバター装備
• BGM,SE
• キャラクターエディット用素材 など
2. キャラクター作成~マルチプレイ制限解除まで
• 一次職装備すべて
• ホーム系UIすべて
• 登場するステージ、敵、NPCデータ など
3. マルチプレイ制限解除~荒野エリアまで
• 装備品すべて
• 登場するステージ、敵、NPCデータ など
以降、エリア2つくらいを一単位にして順次拡張
三回戦(真章リリース時)
~ 2014.9 頃~
問題点
• ダウンロードデータの大規模更新がたびたび
発生
マルチプレイ
解放
チュートリ
アル開始
アバター
メイク
進行しているところまでのデータを
すべて更新するので、
ゲームが進んでいるほど
ダウンロード時間が延びる
仕様追加
• 特別な戦闘の実装
– イベントクエスト、リミテッドボスなど
– マルチプレイ解放後に参加できるようになる
問題点
• マルチプレイ解放時に出来ることが一気に
増えるのでこのタイミングのダウンロード時間
が極端に長くなった
アバターメイク
チュートリアル開始
マルチプレイ解放
全装備
季節イベ
ント
ギルド戦
対策
• 使用するときに使用する分だけのデータをダ
ウンロードする
– ダウンロードデータのうち、武器防具などの装備
品が七割、敵が二割を占めている
(ファイル数ベース)
– これらを使う時だけダウンロードできるようにすれ
ば大幅な改善が見込める
実装イメージ
データーサーバー
エリア1敵
など
アバター
1装備
チュートリ
アル
アバター
メイク
必要になったらその時必要な分だけダウンロードする
戦闘エリアの場合
• 敵、マップなど戦闘で使うデータは必要なものを事
前にリスト化しておき、エリアを選択したタイミングで
ダウンロードを行う
• ダウンロードするものリスト(目録ファイル)はダウンロード
データ作成時に一緒に生成して、ダウンロードサーバー
からとれるようにした
戦闘エリアの場合
目録ファイル
エリア1
エリアを選択
1. 参照
ダウンロードリ
スト
データーサー
バー
2. バージョン取得
3. 必要分だけダウンロード
アバターの場合
• 装備品は、あらかじめリスト化することができな
いので、アバターがビジュアルロビーなどに入っ
てきた時に一人分をダウンロードするようにする
• ただし、別々のアバターから同じ装備品を要求
される場合を考慮する
– Unityの仕様で既にLoadされているAssetBundleを再
度Loadすると例外が発生するため
– アバターに直接関連付けてしまうと管理しづらいので、
専用のダウンロード管理を用意したので、ちょっと複
雑になった
アバターの場合
1. 装備情報を基に
DLリクエスト
ダウンロードリスト
装備品DL管理
2. DL情報照合
3. DL情報取得
データーサーバー
4. ダウンロード要求
5. ダウンロード
6.アバターを作成
結果
• 最初のダウンロードにかかる時間が改善し
た
– 修正前 4000前後、約20分
– 修正後 130前後、約3分
まだ3分もかかってしまうのは最初のダウンロード
データの中にBGMなど比較的大きい必須ファイル
が含まれているため
• めったに更新されないのと、すぐに使用することにな
るため残してある
※全更新時、LTE環境での比較
結果
• 装備品と戦闘エリアがそれぞれ個別にダウンロード
できるようになったため、巨大なダウンロード待ちは
発生しなくなった
• 発生しそうな場合は開発段階で適切な分量に分割するよ
うにした
まとめ
リリースからの約二年において、データのダウン
ロードについて以下のような大きな遷移を経た
• 最初にすべてダウンロード
• 進行したところまでダウンロード
• 必要な時に必要なものだけダウンロード
結果として、最後に行った変更でDLによる時間待
ちが劇的に改善し、
今後の変更に対しても強い仕組みにできた。

Weitere ähnliche Inhalte

Was ist angesagt?

アプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきことアプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきことYutoNishine
 
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例Satoshi Yamafuji
 
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだことUnity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだことKatsutoshi Makino
 
誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)YutoNishine
 
Jokerscriptを勝手に紹介
Jokerscriptを勝手に紹介Jokerscriptを勝手に紹介
Jokerscriptを勝手に紹介tuna cook
 
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法historia_Inc
 
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたリアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたYutoNishine
 
ゆるロボ製作所開発事例 – ドローコール削減
ゆるロボ製作所開発事例 – ドローコール削減 ゆるロボ製作所開発事例 – ドローコール削減
ゆるロボ製作所開発事例 – ドローコール削減 Mikito Yoshiya
 
Adobe AIR で作る カジュアルゲーム開発
Adobe AIR で作る カジュアルゲーム開発Adobe AIR で作る カジュアルゲーム開発
Adobe AIR で作る カジュアルゲーム開発KLab Inc. / Tech
 
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話Takahiro YAMAGUCHI
 
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいリアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいYutoNishine
 
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウGameCreators,CyberAgent
 
ゲーム開発で使えるかもしれないレイアウトデザイン
ゲーム開発で使えるかもしれないレイアウトデザインゲーム開発で使えるかもしれないレイアウトデザイン
ゲーム開発で使えるかもしれないレイアウトデザインKodai Yano
 
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~UnityTechnologiesJapan002
 
Unity入門ハンズオン
Unity入門ハンズオンUnity入門ハンズオン
Unity入門ハンズオンKazuya Hiruma
 
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」Web Technology Corp.
 
【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜
【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜
【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜Unity Technologies Japan K.K.
 

Was ist angesagt? (20)

アプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきことアプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
 
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
 
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだことUnity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
 
誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)
 
Jokerscriptを勝手に紹介
Jokerscriptを勝手に紹介Jokerscriptを勝手に紹介
Jokerscriptを勝手に紹介
 
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
 
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたリアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
 
ゆるロボ製作所開発事例 – ドローコール削減
ゆるロボ製作所開発事例 – ドローコール削減 ゆるロボ製作所開発事例 – ドローコール削減
ゆるロボ製作所開発事例 – ドローコール削減
 
Adobe AIR で作る カジュアルゲーム開発
Adobe AIR で作る カジュアルゲーム開発Adobe AIR で作る カジュアルゲーム開発
Adobe AIR で作る カジュアルゲーム開発
 
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話
 
Unity って何?
Unity って何?Unity って何?
Unity って何?
 
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいリアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
 
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ
 
ゲーム開発で使えるかもしれないレイアウトデザイン
ゲーム開発で使えるかもしれないレイアウトデザインゲーム開発で使えるかもしれないレイアウトデザイン
ゲーム開発で使えるかもしれないレイアウトデザイン
 
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
 
Unityと.NET
Unityと.NETUnityと.NET
Unityと.NET
 
ロボット好き集まれ!こいつ、動くぞ。星と翼のパラドクス開発事例
ロボット好き集まれ!こいつ、動くぞ。星と翼のパラドクス開発事例ロボット好き集まれ!こいつ、動くぞ。星と翼のパラドクス開発事例
ロボット好き集まれ!こいつ、動くぞ。星と翼のパラドクス開発事例
 
Unity入門ハンズオン
Unity入門ハンズオンUnity入門ハンズオン
Unity入門ハンズオン
 
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
 
【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜
【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜
【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜
 

Andere mochten auch

Unity物理におまかせゴルフ ぐるぐるイーグル
Unity物理におまかせゴルフ ぐるぐるイーグルUnity物理におまかせゴルフ ぐるぐるイーグル
Unity物理におまかせゴルフ ぐるぐるイーグルMasanori Nishio
 
良くわかるMeta
良くわかるMeta良くわかるMeta
良くわかるMetadaichi horio
 
新人エンジニアの1年と新しい取り組み
新人エンジニアの1年と新しい取り組み新人エンジニアの1年と新しい取り組み
新人エンジニアの1年と新しい取り組みsusumu kobayashi
 
剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題AimingStudy
 
ログレスの戦闘から見るデータ同期について
ログレスの戦闘から見るデータ同期についてログレスの戦闘から見るデータ同期について
ログレスの戦闘から見るデータ同期についてSatoshi Yamafuji
 
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術Satoshi Yamafuji
 
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成(shibao)芝尾 (kouichiro)幸一郎
 
DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1
DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1
DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1Akihiro Sugeno
 
これまでのオンラインゲーム、これからのオンラインゲーム
これまでのオンラインゲーム、これからのオンラインゲームこれまでのオンラインゲーム、これからのオンラインゲーム
これまでのオンラインゲーム、これからのオンラインゲームTakahiro Hozumi
 
Imprementation of realtime_networkgame
Imprementation of realtime_networkgameImprementation of realtime_networkgame
Imprementation of realtime_networkgameSatoshi Yamafuji
 
Aiming のクラウド採用基準
Aiming のクラウド採用基準Aiming のクラウド採用基準
Aiming のクラウド採用基準Takahiro Hozumi
 
MMORPGで考えるレベルデザイン
MMORPGで考えるレベルデザインMMORPGで考えるレベルデザイン
MMORPGで考えるレベルデザインKatsumi Mizushima
 
ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法Nohina Hidenari
 
クエリちゃんの『いじりかた♡』
クエリちゃんの『いじりかた♡』クエリちゃんの『いじりかた♡』
クエリちゃんの『いじりかた♡』Nobuhiko Sasaki
 
11th global forum on tourism statistics observations and conclusions
11th global forum on tourism statistics   observations and conclusions11th global forum on tourism statistics   observations and conclusions
11th global forum on tourism statistics observations and conclusionsOECDTourism
 
ネイティブゲーム開発におけるこれからの品質保証
ネイティブゲーム開発におけるこれからの品質保証ネイティブゲーム開発におけるこれからの品質保証
ネイティブゲーム開発におけるこれからの品質保証gree_tech
 
Unity 5 の AssetBundle について (浅く) まとめてみた - 2015/05/22 第31回 Unity 勉強会
Unity 5 の AssetBundle について (浅く) まとめてみた - 2015/05/22 第31回 Unity 勉強会Unity 5 の AssetBundle について (浅く) まとめてみた - 2015/05/22 第31回 Unity 勉強会
Unity 5 の AssetBundle について (浅く) まとめてみた - 2015/05/22 第31回 Unity 勉強会Mori Tetsuya
 
Unityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknightsUnityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknightsKouji Hosoda
 

Andere mochten auch (20)

Unity物理におまかせゴルフ ぐるぐるイーグル
Unity物理におまかせゴルフ ぐるぐるイーグルUnity物理におまかせゴルフ ぐるぐるイーグル
Unity物理におまかせゴルフ ぐるぐるイーグル
 
良くわかるMeta
良くわかるMeta良くわかるMeta
良くわかるMeta
 
新人エンジニアの1年と新しい取り組み
新人エンジニアの1年と新しい取り組み新人エンジニアの1年と新しい取り組み
新人エンジニアの1年と新しい取り組み
 
剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題
 
ログレスの戦闘から見るデータ同期について
ログレスの戦闘から見るデータ同期についてログレスの戦闘から見るデータ同期について
ログレスの戦闘から見るデータ同期について
 
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
 
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
 
DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1
DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1
DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1
 
これまでのオンラインゲーム、これからのオンラインゲーム
これまでのオンラインゲーム、これからのオンラインゲームこれまでのオンラインゲーム、これからのオンラインゲーム
これまでのオンラインゲーム、これからのオンラインゲーム
 
Imprementation of realtime_networkgame
Imprementation of realtime_networkgameImprementation of realtime_networkgame
Imprementation of realtime_networkgame
 
Aiming のクラウド採用基準
Aiming のクラウド採用基準Aiming のクラウド採用基準
Aiming のクラウド採用基準
 
AimingでGoogle Cloud Platformの利用について
AimingでGoogle Cloud Platformの利用についてAimingでGoogle Cloud Platformの利用について
AimingでGoogle Cloud Platformの利用について
 
MMORPGで考えるレベルデザイン
MMORPGで考えるレベルデザインMMORPGで考えるレベルデザイン
MMORPGで考えるレベルデザイン
 
ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法
 
クエリちゃんの『いじりかた♡』
クエリちゃんの『いじりかた♡』クエリちゃんの『いじりかた♡』
クエリちゃんの『いじりかた♡』
 
11th global forum on tourism statistics observations and conclusions
11th global forum on tourism statistics   observations and conclusions11th global forum on tourism statistics   observations and conclusions
11th global forum on tourism statistics observations and conclusions
 
Di入門
Di入門Di入門
Di入門
 
ネイティブゲーム開発におけるこれからの品質保証
ネイティブゲーム開発におけるこれからの品質保証ネイティブゲーム開発におけるこれからの品質保証
ネイティブゲーム開発におけるこれからの品質保証
 
Unity 5 の AssetBundle について (浅く) まとめてみた - 2015/05/22 第31回 Unity 勉強会
Unity 5 の AssetBundle について (浅く) まとめてみた - 2015/05/22 第31回 Unity 勉強会Unity 5 の AssetBundle について (浅く) まとめてみた - 2015/05/22 第31回 Unity 勉強会
Unity 5 の AssetBundle について (浅く) まとめてみた - 2015/05/22 第31回 Unity 勉強会
 
Unityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknightsUnityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknights
 

Ähnlich wie ゲームデータDLとの戦い ~幻塔戦記グリフォン~

実体験に基づく、少人数制作によるシューティングゲームの提案
実体験に基づく、少人数制作によるシューティングゲームの提案実体験に基づく、少人数制作によるシューティングゲームの提案
実体験に基づく、少人数制作によるシューティングゲームの提案IGDA Japan
 
Unity恐くないよ!!
Unity恐くないよ!!Unity恐くないよ!!
Unity恐くないよ!!nakamura001
 
ITWeekモバイル活用展登壇資料
ITWeekモバイル活用展登壇資料ITWeekモバイル活用展登壇資料
ITWeekモバイル活用展登壇資料altplus-lab
 
[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1MinGeun Park
 
消滅都市5周年の運営を支えた技術とその歴史
消滅都市5周年の運営を支えた技術とその歴史消滅都市5周年の運営を支えた技術とその歴史
消滅都市5周年の運営を支えた技術とその歴史gree_tech
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化DeNA
 
Couchbase x unity
Couchbase x unityCouchbase x unity
Couchbase x unityMakotoItoh
 
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)ミルク株式会社
 
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜KLab Inc. / Tech
 
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?モノビット エンジン
 
Game Development and Automation @ Agile Sapporo 2018 #1
Game Development and Automation @ Agile Sapporo 2018 #1Game Development and Automation @ Agile Sapporo 2018 #1
Game Development and Automation @ Agile Sapporo 2018 #1Michael Tedder
 
エンジン戦略におけるブリッジエンジニアの役割
エンジン戦略におけるブリッジエンジニアの役割エンジン戦略におけるブリッジエンジニアの役割
エンジン戦略におけるブリッジエンジニアの役割gree_tech
 
3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメ3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメinfinite_loop
 
【ライヴエイド福島】Rainbow apps 2013.0614
【ライヴエイド福島】Rainbow apps 2013.0614【ライヴエイド福島】Rainbow apps 2013.0614
【ライヴエイド福島】Rainbow apps 2013.0614Tomoharu Fukushima
 
Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化COLOPL, Inc.
 
「デモリッションロボッツK.K.」のGenvidインティグレート事例
「デモリッションロボッツK.K.」のGenvidインティグレート事例「デモリッションロボッツK.K.」のGenvidインティグレート事例
「デモリッションロボッツK.K.」のGenvidインティグレート事例Takaaki Ichijo
 
CEDEC 2011 「ARG:プラットフォームに依存しない新しい遊び方」八重尾スライド
CEDEC 2011 「ARG:プラットフォームに依存しない新しい遊び方」八重尾スライドCEDEC 2011 「ARG:プラットフォームに依存しない新しい遊び方」八重尾スライド
CEDEC 2011 「ARG:プラットフォームに依存しない新しい遊び方」八重尾スライドSIG-ARG: @epi_x
 
インタラクティブ・ストリーミングが変えるゲームコンテンツの未来
インタラクティブ・ストリーミングが変えるゲームコンテンツの未来インタラクティブ・ストリーミングが変えるゲームコンテンツの未来
インタラクティブ・ストリーミングが変えるゲームコンテンツの未来Takaaki Ichijo
 

Ähnlich wie ゲームデータDLとの戦い ~幻塔戦記グリフォン~ (20)

実体験に基づく、少人数制作によるシューティングゲームの提案
実体験に基づく、少人数制作によるシューティングゲームの提案実体験に基づく、少人数制作によるシューティングゲームの提案
実体験に基づく、少人数制作によるシューティングゲームの提案
 
Unity ゲーム開発
Unity ゲーム開発Unity ゲーム開発
Unity ゲーム開発
 
Unity恐くないよ!!
Unity恐くないよ!!Unity恐くないよ!!
Unity恐くないよ!!
 
ITWeekモバイル活用展登壇資料
ITWeekモバイル活用展登壇資料ITWeekモバイル活用展登壇資料
ITWeekモバイル活用展登壇資料
 
[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1
 
消滅都市5周年の運営を支えた技術とその歴史
消滅都市5周年の運営を支えた技術とその歴史消滅都市5周年の運営を支えた技術とその歴史
消滅都市5周年の運営を支えた技術とその歴史
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
 
Couchbase x unity
Couchbase x unityCouchbase x unity
Couchbase x unity
 
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
 
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
 
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
 
Game Development and Automation @ Agile Sapporo 2018 #1
Game Development and Automation @ Agile Sapporo 2018 #1Game Development and Automation @ Agile Sapporo 2018 #1
Game Development and Automation @ Agile Sapporo 2018 #1
 
エンジン戦略におけるブリッジエンジニアの役割
エンジン戦略におけるブリッジエンジニアの役割エンジン戦略におけるブリッジエンジニアの役割
エンジン戦略におけるブリッジエンジニアの役割
 
Reinvent2017 recap-gaming-session-2
Reinvent2017 recap-gaming-session-2Reinvent2017 recap-gaming-session-2
Reinvent2017 recap-gaming-session-2
 
3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメ3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメ
 
【ライヴエイド福島】Rainbow apps 2013.0614
【ライヴエイド福島】Rainbow apps 2013.0614【ライヴエイド福島】Rainbow apps 2013.0614
【ライヴエイド福島】Rainbow apps 2013.0614
 
Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化
 
「デモリッションロボッツK.K.」のGenvidインティグレート事例
「デモリッションロボッツK.K.」のGenvidインティグレート事例「デモリッションロボッツK.K.」のGenvidインティグレート事例
「デモリッションロボッツK.K.」のGenvidインティグレート事例
 
CEDEC 2011 「ARG:プラットフォームに依存しない新しい遊び方」八重尾スライド
CEDEC 2011 「ARG:プラットフォームに依存しない新しい遊び方」八重尾スライドCEDEC 2011 「ARG:プラットフォームに依存しない新しい遊び方」八重尾スライド
CEDEC 2011 「ARG:プラットフォームに依存しない新しい遊び方」八重尾スライド
 
インタラクティブ・ストリーミングが変えるゲームコンテンツの未来
インタラクティブ・ストリーミングが変えるゲームコンテンツの未来インタラクティブ・ストリーミングが変えるゲームコンテンツの未来
インタラクティブ・ストリーミングが変えるゲームコンテンツの未来
 

ゲームデータDLとの戦い ~幻塔戦記グリフォン~

Hinweis der Redaktion

  1. 本日は、お招きいただきありがとうございます。 聞き苦しい点などもあるかと思いますが、最後までよろしくお願いいたします。
  2. はじめに、自己紹介から。 株式会社Aiming ソフトウェアエンジニアの吉野といいます。 前職ではPCでオンラインゲームを作成していました。 現職ではUnityを使ってスマホのオンラインゲームを作っています。
  3. 今回は、ゲームデータのダウンロードについて苦労した点などを振り返っていこうと思います。 ゲーム紹介、グリフォンでのダウンロードの実装、改定の歴史、まとめ の順で話していきます。
  4. まずはゲーム紹介から。 パブリッシャー、SEGA デベロッパー Aiming でサービスしているタイトルで、 リリース日は2013/6/26 です。 リリースから約二年間サービスしています。 内容説明は次に
  5. ゲームの特色としては、 横スクロールのアクションゲーム 最大4人までの協力プレイ 最大8人までの対戦プレイ 多彩な装備品によるアバターカスタマイズ があげられます。
  6. 戦闘の画面です。協力プレイ、対戦プレイなどがあります。
  7. アバターです。さまざまな装備を自由に組み合わせることができます。
  8. 開発ツールは Unity 3D 、スクリプトはC# を使っています。 ダウンロードデータはUnity標準の AssetBundle を使っています。
  9. Unity標準のダウンロード用データ ダウンロードデータの作成、端末へのダウンロード、ゲームへの読み込みをサポートしているので、 独自に実装する必要がないです。 開発者が決めることは、ダウンロードデータ一つにどんなゲームデータを含むのか、と、どのダウンロードデータを更新させるのか というところになります。
  10. ここから歴史を振り返っていこうと思います
  11. 第一回戦、CBT時です。
  12. 問題点というか、課題というかですが、ゲームのデータをダウンロードして更新する機能が必要 です。
  13. PCのオンラインゲームと同じように、ゲームを始める前に更新されたものをすべてダウンロードさせる 初めてのスマホのゲーム開発だったので、経験があったPCのオンラインゲームでの実装に則って、こうすることにしました。
  14. PCにおける、ランチャーのようなものは使えないので、 ゲームへのログイン直後にデータダウンロードタイミングを設けてすべてダウンロードさせることにしました
  15. ダウンロードするデータは ダウンロードデータ名(AssetBundle名)とバージョンのセットが書かれたリストを用意して管理することとしました。
  16. 第二回戦、正式リリース時です
  17. 装備品をはじめとしたデータが増えてきて、ダウンロード時間がだんだん伸びてきました。いくら最初だけだで、あとは差分ダウンロードになるとしても、第一印象が悪いです。
  18. ゲームの進行度により徐々に機能が解放されるので、進行しているところまでのものをダウンロードするようにしました
  19. 実装としては、ダウンロードリストにゲーム進行度を追加しました ダウンロードデータを差分で更新する時は、現在進行しているところまでの該当するデータを更新する、ということにしました。 ゲームをプレイして進行度が更新されたら次の進行度までに使うデータをダウンロードする、という感じです。
  20. 今進行しているところまでで更新が発生した場合は、ログイン時のダウンロードで更新することにしました。 これは、差分だけのダウンロードになるので、それほど長時間にならず、またログイン画面ならば確実に通過するので確実に更新できるから という意図でした。
  21. 具体的な流れです キャラクター作成までは、必ず使うBGMやSEなどのデータと、職業を選ぶときに参考にするための装備品などです 作成からマルチプレイ解放まではずっと一次職なので、一時職装備、UIすべて、最初に使う戦闘用データだけにしました マルチプレイ解放時は、あらゆる装備のアバターとパーティプレイすることを想定して、二次職のすべての装備品を落とすようにしました また、未開放の戦闘エリアには行けない仕様なので、最初のエリアまでのデータをここで落とします。 以降、戦闘エリア解放ごとに徐々にダウンロードさせることにしました。
  22. 第三回戦、真章リリース時です
  23. Unityのバージョンアップや、ゲーム上のデータ構造の変更などにより、全更新や大規模な更新が必要になることがあります。 進行度による更新だと、今の進行度までの全データがダウンロード対象になり、長時間にわたるダウンロードが発生します。
  24. イベントクエスト、リミテッドボスなど特別な戦闘が実装されました。 これらは進行度とは直接関係なく、ほとんどの場合マルチプレイが解放されたら参加できるようになっています
  25. マルチプレイ解放時にできることが一気に増えるため、このタイミングでダウンロードするものがたくさんあり、ダウンロード時間が長時間になってしまいました。
  26. ダウンロードデータのうち、装備品と敵だけで約九割を占めている。 これらを使うときだけダウンロードするようにできれば大幅な改善が見込めるはず。
  27. このように、必要なものを必要な分だけピンポイントでとってこようということになりました。
  28. 敵、マップなど戦闘で使うデータは必要なものを事前にリスト化し、そのリストを参照して都度ダウンロードするようにします ダウンロードするものリスト、以降目録ファイルは、ダウンロードデータ作成時に一緒に作成して、同じダウンロードサーバーにアップロードしてあります。
  29. 大体の実装図です。このような流れになっています。
  30. 装備品はそれを持ったアバターが表示されるタイミングで一人分のデータを特定し、都度ダウンロードするようにします 注意点としては、複数のアバターが同時に出現することがあるので、別々のアバターから同じ装備品を要求されることを考慮します。 これは、Unityの仕様で、すでにLoadされているAssetBundleに対して再度Loadを呼ぶと例外を投げられて終了してしまうためです。
  31. こんな感じです。 実装内容としては、アバターに直接ダウンロード要求をさせず、ダウンロード管理を間に挟んで処理することにしました。 なので少し複雑になっています。
  32. 結果、最初のダウンロードにかかる時間が劇的に改善しました。 元の15%くらいの間で終わるようになりました! 最も時間がかかるところでもLTE環境で3分を超えないようになりました。
  33. また、問題になっていた長大なダウンロードもなくなりました。 発生しそうな場合は、開発段階で適切な単位に分解するようにしています。 たとえば、戦闘エリア単位を戦闘クエスト単位にしたりといった感じです。 最初の戦闘エリアは、ユーザーの利便性を考えて、最初のダウンロードに含めることにしました
  34. まとめますと、上記のようになります。読む。