【参加レポ】グローバルなネットワーク環境と複数OSに対応するためのLINE Game Client Platform開発戦略 【LINE DEVELOPER DAY_2015】#linedevday
4/28に開催されたLINEのエンジニアチームの様々な経験を、未解決の課題も含めて共有する技術カンファレンス、
に参加してきたのでその時のまとめ。
LINE GAME Client Platformに関するレポートです。
他のセッションは以下からどうぞ
LINE GAME Platform?
- 日本だけではなく各国の人たちが開発したりしてます
- ミッションはグローバルでヒットするタイトルが少しでも多くなることを目指してる
- 開発者たちが組み込みやすいようにAuth, Noticeなどの機能を提供している
- 様々な環境でも安定・安全なサービスを提供できるようにする
- はじまりは2013年度に、ポップ、ポコパン、ウィンドランナーが提供され始めたのが最初
- 2014年度にグローバル向けに開発した
様々なゲーム開発環境上での対応
- 必要な機能だけをコンポーネントにした
- unityに関してはCallAPIは一つだけになるようにした
Phase1
Phase1の問題点
- 一貫性を保つのが難しい -> OSごとに開発した
- バージョン管理が難しい -> 複数のライブラリ提供
Phase2:アプリはAPIをコールしてその結果をみるだけにするようにした
各エンジンc++を使うことが多い
- obj-c、javaをわからなくてもゲーム開発ができる
- 複数の言語をサポートするようになった
Phase3 2015の目標
- NativeとつながるところはC++で書きなおす
- ネットワークモジュールもプラットフォーム側がコントロールできるように作る
NativeLayerについて
Platform Integration
各ビルドのbinding構成について
各言語でのAPI呼び出し例
グローバルなネットワーク環境
- リクエスト数をできるだけ減らした
- 複数のリクエストをまとめるMergeAPIというのを導入した
- データ量は増えるがリクエスト成功率は増える
- Client Caching
- ネットワークが遅い場合はキャッシュ情報をかえして、あとでサーバとデータをシンクする
- LINE GAME Global POP
- タイまでがぎりぎりで、もっと世界中にサービスするにはPOPを増やす必要がある
Network Library:LINE GAME Platform向けのNetwork機能を一部公開してGlobalドメインの機能を提供する
グローバルサービスの対応事例
- 3G WarmUpはLINE Bubbleで使った
- warmupしないときは通信できるまで6秒かかったことも。
warmupした時としなかったときの比較図
- ゲームのアイテム購入はまとめてやる
- 1個購入するたびにタイとかではRTTが500msになるケースがあるので、一度に複数のアイテムが購入できるようにIntergaceを修正することで解決した
- 海外のあるネットワーク環境で一部LINE GAMEがプレイできない問題
- 通信パケットが一部切れて通信されていた
- 通信会社に連絡して、通信会社のほうでパケットをきったりしているせいだったので、Gatewayを修正してもらった
- IAPのprice問題
- あるゲームがインドネシアで決済できない問題
- 現地のメンバにログ出力を依頼した結果。$99.99 => 1,205,196 IDRのせいだった
- サーバ側で8byte処理ができずエラーになっていた
- 8byteだけ保持してリクエスト返すようにした
今後の目標
- Data Synchronize
- プラットフォーム側のデータだけではなく、ゲーム側のデータもサポートできるようにしたい
- Networkモジュール強化
- 複数のプロトコルをサポートしたり、独自プロトコルのサポートをしたりしてゲームプレイをもっと快適に
- Game Cloud (Server side)
所感
今回のセッションはちょっと理解があまりできなくて難しかったのですが、LINEで使われるSDKも日々開発者に使いやすく、またユーザーにより使ってもらえるよう進化させているのが感じられるセッションでした。
懇親会で後ほど聞いたのですが、LINE Gameはcocos2d-xか、Unityを使っているのが多いらしいのですが、cocos2d-xはやはり製作コストが高いらしいです。
また、cocosstudioやsprite stduioといったものは使わず結構コードでviewの部分を書いてるとかいう話でした。
いいGUIツールがないか模索中みたいです。