Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Unity×HTMLで作るiPhoneオンラインゲーム開発事例                          株式会社 Aiming               リードソフトウェアエンジニア                         ...
こんばんは
細田幸治といいます。http://www.facebook.com/kouji.hosodaMMORPGのサーバーを書いたり、通信ライブラリを書いたり、ブラウザゲームを作ったり、スマホのオンラインゲームを作ったりしています。
この発表のターゲット●   ある程度Unity触ってる人●   オンラインゲームの作り方に興味ある人●   iPhoneアプリを出そうとしてる人●   開発の開始からリリースまでのプロセスに興味    がある人時間がないので細かい実装の話は次の...
話すこと● 作ったゲームについて● HTML連携とかの技術的な話● 開発中の問題と改善● 社内テストとブラッシュアップ● AppleStoreリリースあれこれ
作ったゲームについて http://lordofknights.jp/
どんなゲーム?カードを強化して戦うストラテジーRPGあれ、似たようなゲームみたことある!→ブラウザ三国志、戦国IXA、etc.実はプロダクトオーナーはブラ三を作ったメンバー→先行タイトルを研究し、 ライトなターゲットに向けて仕様を作成
規模感● クライアント開発3-8人● サーバー開発約5人● 企画3人● デザイン3人の約20人でリリースまで8ヶ月半現在はリリースされたので運営とマーケティングも加わりもっと増えてる
何でUnity選んだの?● iPhoneとAndroidの両方でリリースしたいから● 当時マーケットが大きかったiPhone版から開発● 現在Android版も開発中
Unity×HTMLな理由画面数が多く、Unityだけだと工数きつい● 内政、マップ、レポート、メール、ショップ、合成、  カード・・・・・・など40画面以上!● UnityでUI作るの大変!
HTMLを使うメリット要件ごとに得意なほうで分担できる● Unity: 動きが多い&レスポンス早くしたい画面● HTML: リスト系など静的な画面                  HTML製
HTMLを使うメリットその2リリース後のアップデートがしやすい● 審査なしでアップデート可能 ○ キャンペーンページなどの自由が利きやすい ○ 仕様変更が多い画面はまずはHTMLで   ■ 仕様が固まったらUnity化
HTMLを使うメリットその3自由文字入力ができる● iPhone上でフォントに使えるテクスチャサイズに  制限がある ○ 1つのフォントごとに2048*2048ピクセルのテクスチャに   収める必要がある● HTMLだと上記のような制限がない ...
HTMLを使うデメリット● ローディングが長い● 反応が遅い  ○ どうしてもユーザー体験が落ちる● メモリーを喰う  ○ ゲーム内メールなどのリストを追加読み込みし続けると   突然落ちたりする● エディターで確認できないところがある ○ 後...
どんな作りになっているかというと
技術的な話● 基本設計● HTML連携● サーバーとの通信
基本設計● MVCっぽく依存を分離  ○ Model,View,Controllerにクラスを分けて役割を明確化    ■ ロジックはModelで管理。Unityに依存しないように    ■ Modelの変更はイベントでViewに通知、反映  ...
HTML連携● Native Pluginでインゲームブラウザを実装● Unity、HTML間で情報を相互に通信  ○ shouldStartLoadWithRequestを使ってパース    ■ クエリストリング(?aho=hoge&foo=...
サーバーとの通信● JSON-RPC形式● 通信実装コードの自動生成  ○ ppcuni/rpcoderを使った    ■ githubに上がってる自社制ライブラリ    ■ https://github.com/ppcuni/rpcoder ...
実際の開発で起きた問題と改善ついて
開発初期の問題と改善最初の1ヶ月ほとんど進捗なし● 頻繁な衝突、参照外れ● EzGUIがEasyじゃない● C#なれてない● 仕様が最初にそろってない→見積もりぜんぜんあわない
どうやって改善?● 頻繁な衝突、参照外れ↓● ワークフローを工夫して衝突回避● コードレビュー&CIで早期発見
どうやって改善?● EzGUIがEasyじゃない↓● EzGUIなれてきた● UIデザインできる人に入ってもらった
どうやって改善?● C#なれてない↓● C#達人にプロジェクトに入ってもらった  ○ (++C++;// 未確認飛行 Cの中の人)
どうやって改善?● 仕様が最初にそろってない↓● アジャイル開発プロセスを導入  ○ バーンダウンチャート  ○ スプリントでの振り返り  →リスク早期発見
改善の結果→見積もりあってきた
そうやって改善しながら
開発を続け
社内テストとブラッシュアップ開発を開始して4ヶ月(中間地点)で各パートの実装がそろい一通り遊べるように。↓社員全員を対象にした社内テストを開始
社内テストとブラッシュアップ● 数十人規模で同時にプレイ  ○ 倍速モードでテスト時間短縮● テストプレイヤーには別プロジェクトやバックオ  フィスの人もいた  ○ ガチプレイしてもらえた● バグと要望の収集にはSkypeとグーグルスプ  レッ...
そしてリリースへ
AppleStoreへのリリースあれこれ初めての iPhone アプリリリースだったノウハウがなかったので試行錯誤
審査についてリリースまでにリジェクト3回されました● リジェクト理由  a. キャッシュファイルの保存場所が悪くてアウト!     ■ 永続化用と一時用があるので気をつける  b. 審査専用アカウントを使ってくれなくて審査用サーバー   にログ...
審査についてその2どのくらいで通るの?● だいたい審査出してから約5営業日で審査開始  (In Review)、だいたいその数時間後に結果出る● 場合によってはIn Reviewのまま1日過ぎることも  あるので油断しないどういう判断基準?● ...
まとめると
まとめ● HTMLのハイブリッドいいよ● C#便利に使おう● 通信部分は自動生成とMockで快適開発● 設計はしっかり、メンテナンスコストを下げよう● アジャイルいいね
まとめ● Unityの癖を知り乗りこなそう  ○ Unity助け合い所助かってます● なるべく早くテストプレイできるようにしよう  ○ ブラッシュアップのサイクルは多いほどいい● Appleでのリリースは地雷が多いので早く踏む  ○ オンライン...
そしてとにかく楽しむどんなトラブルも懸念事項も前向きに取り組めば楽しいクエストになります
おわり
Unity×HTMLで作るiPhone オンラインゲーム開発事例
Unity×HTMLで作るiPhone オンラインゲーム開発事例
Upcoming SlideShare
Loading in …5
×

Unity×HTMLで作るiPhone オンラインゲーム開発事例

69,027 views

Published on

第3回 渋谷Unity技術勉強会-Unity×Html/Unity 2D-(http://atnd.org/events/24710)での発表内容をUP用に編集したものです。
UnityとHTMLのハイブリッドアプリを開発した時のTipsとリリースまでのプロセスの話です。

Published in: Technology

Unity×HTMLで作るiPhone オンラインゲーム開発事例

  1. 1. Unity×HTMLで作るiPhoneオンラインゲーム開発事例 株式会社 Aiming リードソフトウェアエンジニア 細田幸治 2012/03/29 @http://atnd.org/events/24710
  2. 2. こんばんは
  3. 3. 細田幸治といいます。http://www.facebook.com/kouji.hosodaMMORPGのサーバーを書いたり、通信ライブラリを書いたり、ブラウザゲームを作ったり、スマホのオンラインゲームを作ったりしています。
  4. 4. この発表のターゲット● ある程度Unity触ってる人● オンラインゲームの作り方に興味ある人● iPhoneアプリを出そうとしてる人● 開発の開始からリリースまでのプロセスに興味 がある人時間がないので細かい実装の話は次の機会に
  5. 5. 話すこと● 作ったゲームについて● HTML連携とかの技術的な話● 開発中の問題と改善● 社内テストとブラッシュアップ● AppleStoreリリースあれこれ
  6. 6. 作ったゲームについて http://lordofknights.jp/
  7. 7. どんなゲーム?カードを強化して戦うストラテジーRPGあれ、似たようなゲームみたことある!→ブラウザ三国志、戦国IXA、etc.実はプロダクトオーナーはブラ三を作ったメンバー→先行タイトルを研究し、 ライトなターゲットに向けて仕様を作成
  8. 8. 規模感● クライアント開発3-8人● サーバー開発約5人● 企画3人● デザイン3人の約20人でリリースまで8ヶ月半現在はリリースされたので運営とマーケティングも加わりもっと増えてる
  9. 9. 何でUnity選んだの?● iPhoneとAndroidの両方でリリースしたいから● 当時マーケットが大きかったiPhone版から開発● 現在Android版も開発中
  10. 10. Unity×HTMLな理由画面数が多く、Unityだけだと工数きつい● 内政、マップ、レポート、メール、ショップ、合成、 カード・・・・・・など40画面以上!● UnityでUI作るの大変!
  11. 11. HTMLを使うメリット要件ごとに得意なほうで分担できる● Unity: 動きが多い&レスポンス早くしたい画面● HTML: リスト系など静的な画面 HTML製
  12. 12. HTMLを使うメリットその2リリース後のアップデートがしやすい● 審査なしでアップデート可能 ○ キャンペーンページなどの自由が利きやすい ○ 仕様変更が多い画面はまずはHTMLで ■ 仕様が固まったらUnity化
  13. 13. HTMLを使うメリットその3自由文字入力ができる● iPhone上でフォントに使えるテクスチャサイズに 制限がある ○ 1つのフォントごとに2048*2048ピクセルのテクスチャに 収める必要がある● HTMLだと上記のような制限がない ○ チャットなど自由入力出来る画面はHTMLで作成
  14. 14. HTMLを使うデメリット● ローディングが長い● 反応が遅い ○ どうしてもユーザー体験が落ちる● メモリーを喰う ○ ゲーム内メールなどのリストを追加読み込みし続けると 突然落ちたりする● エディターで確認できないところがある ○ 後で説明するUnityとHTMLとの連携部分
  15. 15. どんな作りになっているかというと
  16. 16. 技術的な話● 基本設計● HTML連携● サーバーとの通信
  17. 17. 基本設計● MVCっぽく依存を分離 ○ Model,View,Controllerにクラスを分けて役割を明確化 ■ ロジックはModelで管理。Unityに依存しないように ■ Modelの変更はイベントでViewに通知、反映 ■ Viewにロジックが必要な場合はViewModelをつくる ■ 複数のView間でデータを取り回す場合もViewModel ■ ControllerはViewの出し入れModelの呼び出しなど● ソートや検索などのデータ処理はLINQを活用 ○ クライアントで処理するのでサーバーの負担が減る
  18. 18. HTML連携● Native Pluginでインゲームブラウザを実装● Unity、HTML間で情報を相互に通信 ○ shouldStartLoadWithRequestを使ってパース ■ クエリストリング(?aho=hoge&foo=barの部分)をクリッ クや画面ロードのタイミングでパース ○ UnitySendMessageでパースしたデータを送信● ブラウザが操作不能になる問題が出た ○ Unity側が自動生成するAppCotroller.mmの描画フラグ を変更(@Unity3.4) ■ #define USE_DISPLAY_LINK_IF_AVAILABLE 0
  19. 19. サーバーとの通信● JSON-RPC形式● 通信実装コードの自動生成 ○ ppcuni/rpcoderを使った ■ githubに上がってる自社制ライブラリ ■ https://github.com/ppcuni/rpcoder ■ アプリケーション層で通信実装を気にする必要はな いようになってる● Mockを使ったスタンドアローン開発 ○ サーバーの実装スケジュールとの依存が少ない ○ 異常系の確認も手軽にできる
  20. 20. 実際の開発で起きた問題と改善ついて
  21. 21. 開発初期の問題と改善最初の1ヶ月ほとんど進捗なし● 頻繁な衝突、参照外れ● EzGUIがEasyじゃない● C#なれてない● 仕様が最初にそろってない→見積もりぜんぜんあわない
  22. 22. どうやって改善?● 頻繁な衝突、参照外れ↓● ワークフローを工夫して衝突回避● コードレビュー&CIで早期発見
  23. 23. どうやって改善?● EzGUIがEasyじゃない↓● EzGUIなれてきた● UIデザインできる人に入ってもらった
  24. 24. どうやって改善?● C#なれてない↓● C#達人にプロジェクトに入ってもらった ○ (++C++;// 未確認飛行 Cの中の人)
  25. 25. どうやって改善?● 仕様が最初にそろってない↓● アジャイル開発プロセスを導入 ○ バーンダウンチャート ○ スプリントでの振り返り →リスク早期発見
  26. 26. 改善の結果→見積もりあってきた
  27. 27. そうやって改善しながら
  28. 28. 開発を続け
  29. 29. 社内テストとブラッシュアップ開発を開始して4ヶ月(中間地点)で各パートの実装がそろい一通り遊べるように。↓社員全員を対象にした社内テストを開始
  30. 30. 社内テストとブラッシュアップ● 数十人規模で同時にプレイ ○ 倍速モードでテスト時間短縮● テストプレイヤーには別プロジェクトやバックオ フィスの人もいた ○ ガチプレイしてもらえた● バグと要望の収集にはSkypeとグーグルスプ レッドシートを使用 ○ 報告を集めやすかった↓優先度をつけて以降のマイルストーンに反映
  31. 31. そしてリリースへ
  32. 32. AppleStoreへのリリースあれこれ初めての iPhone アプリリリースだったノウハウがなかったので試行錯誤
  33. 33. 審査についてリリースまでにリジェクト3回されました● リジェクト理由 a. キャッシュファイルの保存場所が悪くてアウト! ■ 永続化用と一時用があるので気をつける b. 審査専用アカウントを使ってくれなくて審査用サーバー にログインできなくてアウト! ■ アカウントで審査版かどうかを判断しないように c. 審査中にメンテしたら問題おきてログインできなくなった ■ In Reviewになったら予定しているメンテがあってもリ スケする
  34. 34. 審査についてその2どのくらいで通るの?● だいたい審査出してから約5営業日で審査開始 (In Review)、だいたいその数時間後に結果出る● 場合によってはIn Reviewのまま1日過ぎることも あるので油断しないどういう判断基準?● 審査のたびに判断基準がまちまち● 深く見られる時もあれば一瞬でOKでる時も
  35. 35. まとめると
  36. 36. まとめ● HTMLのハイブリッドいいよ● C#便利に使おう● 通信部分は自動生成とMockで快適開発● 設計はしっかり、メンテナンスコストを下げよう● アジャイルいいね
  37. 37. まとめ● Unityの癖を知り乗りこなそう ○ Unity助け合い所助かってます● なるべく早くテストプレイできるようにしよう ○ ブラッシュアップのサイクルは多いほどいい● Appleでのリリースは地雷が多いので早く踏む ○ オンラインゲームのリリースはいろいろ大変
  38. 38. そしてとにかく楽しむどんなトラブルも懸念事項も前向きに取り組めば楽しいクエストになります
  39. 39. おわり

×