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