【参加レポ】グローバルなネットワーク環境と複数OSに対応するためのLINE Game Client Platform開発戦略 【LINE DEVELOPER DAY_2015】#linedevday

公開日: 

4/28に開催されたLINEのエンジニアチームの様々な経験を、未解決の課題も含めて共有する技術カンファレンス、

LINE DEVELOPER DAY_2015 Tokyo

に参加してきたのでその時のまとめ。

 

LINE GAME Client Platformに関するレポートです。

 

他のセッションは以下からどうぞ

 

sponcer link

Heejun Kim様
linedevday-lgcp-1

 

LINE GAME Platform?

  • 日本だけではなく各国の人たちが開発したりしてます
  • ミッションはグローバルでヒットするタイトルが少しでも多くなることを目指してる
  • 開発者たちが組み込みやすいようにAuth, Noticeなどの機能を提供している
    • 様々な環境でも安定・安全なサービスを提供できるようにする
  • はじまりは2013年度に、ポップ、ポコパン、ウィンドランナーが提供され始めたのが最初
    • 2014年度にグローバル向けに開発した

様々なゲーム開発環境上での対応

  • 必要な機能だけをコンポーネントにした
    • unityに関してはCallAPIは一つだけになるようにした

Phase1

linedevday-lgcp-2-phase1

linedevday-lgcp-3-login

 

linedevday-lgcp-4-unity-plugin 

linedevday-lgcp-5-unity-plugin2

linedevday-lgcp-6-unity-plugin3

 

Phase1の問題点

  • 一貫性を保つのが難しい -> OSごとに開発した
  • バージョン管理が難しい -> 複数のライブラリ提供

 

Phase2:アプリはAPIをコールしてその結果をみるだけにするようにした

linedevday-lgcp-7-phase2

linedevday-lgcp-8-login

 

各エンジンc++を使うことが多い

  • obj-c、javaをわからなくてもゲーム開発ができる
  • 複数の言語をサポートするようになった

linedevday-lgcp-9-use-lang

 

Phase3 2015の目標

linedevday-lgcp-10-phase3

  • NativeとつながるところはC++で書きなおす
  • ネットワークモジュールもプラットフォーム側がコントロールできるように作る

NativeLayerについて

linedevday-lgcp-11-native-layer

 

 

Platform Integration

linedevday-lgcp-13-integration2

 

各ビルドのbinding構成について

linedevday-lgcp-14-ios-binding linedevday-lgcp-16-unity-binding linedevday-lgcp-15-android-binding

 

 

各言語でのAPI呼び出し例

linedevday-lgcp-17-profile-api

 

グローバルなネットワーク環境

  • リクエスト数をできるだけ減らした
    • 複数のリクエストをまとめるMergeAPIというのを導入した
    • データ量は増えるがリクエスト成功率は増える
  • Client Caching
    • ネットワークが遅い場合はキャッシュ情報をかえして、あとでサーバとデータをシンクする
  • LINE GAME Global POP
    • タイまでがぎりぎりで、もっと世界中にサービスするにはPOPを増やす必要がある

 

Network Library:LINE GAME Platform向けのNetwork機能を一部公開してGlobalドメインの機能を提供する

linedevday-lgcp-18-network-library linedevday-lgcp-19-network-library2

 

グローバルサービスの対応事例

  • 3G WarmUpはLINE Bubbleで使った
    • warmupしないときは通信できるまで6秒かかったことも。

warmupした時としなかったときの比較図

linedevday-lgcp-20-3gwarmup

 

 

  • ゲームのアイテム購入はまとめてやる
    • 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ツールがないか模索中みたいです。

  • このエントリーをはてなブックマークに追加
  • Pocket
PAGE TOP ↑