More Related Content
Similar to Unityのオンラインゲームをhtmlに移植してわかったこと
Similar to Unityのオンラインゲームをhtmlに移植してわかったこと (20)
Unityのオンラインゲームをhtmlに移植してわかったこと
- 12. 目次
● Unity 版の開発と移植の経緯
○ Unity 版の開発経緯
○ HTML 版の移植経緯
● 移植のポリシーと実際
○ 移植チーム体制
○ 移植ポリシー
○ 移植の実際
■ 再利用性
■ 良かった点・ネックになった点
● 開発のこれから(おまけ)
- 17. Unity 版の開発経緯
Unity 版の開発経緯
● 2011 年夏
○ スマホでリッチなゲームが少なかった
○ そもそもゲーム少なかった
● iPhone と Android でリッチなゲームをすばやく
出せれば勝てる可能性が高いと判断
○ 当時使えそうなフレームワークを検討した結果 Unity に
- 18. Unity 版の開発経緯
Unity 版の開発経緯
● 2011 年夏
○ スマホでリッチなゲームが少なかった
○ そもそもゲーム少なかった
● iPhone と Android でリッチなゲームをすばやく
出せれば勝てる可能性が高いと判断
○ 当時使えそうなフレームワークを検討した結果 Unity に
● 工数の都合や当時の Unity での制約上、部分
的に HTML で作成
- 19. Unity 版の開発経緯
Unity 版の開発経緯
● 2011 年夏
○ スマホでリッチなゲームが少なかった
○ そもそもゲーム少なかった
● iPhone と Android でリッチなゲームをすばやく
出せれば勝てる可能性が高いと判断
○ 当時使えそうなフレームワークを検討した結果 Unity に
● 工数の都合や当時の Unity での制約上、部分
的に HTML で作成
● オンラインゲームなので追加開発は当然
○ メンテナンス性も重視
- 28. Unity 版の開発経緯
設計とレビュー
● 仕様レビュー
○ 企画の意図を理解し、Unity で作るか HTML で作るかを
判断
○ 実装コストが高いものについては仕様調整できないかも
随時相談
● コードレビュー(gerrit)
○ 全コミットがレビュー対象
○ 通信設計、クラス設計などは必ずレビューする
○ ブラックボックス作らない
- 34. Unity 版の開発経緯
コミュニケーション
● やり取りは Skype チャットがメイン
● 仕様は Redmine の wiki やエクセルで
● タスクの優先度付けは Google spreadsheet
● メールはほぼ使いません
- 47. HTML 版の移植経緯
移植の要件
● mobage のスマホ、PC の両プラットフォーム同
時リリースしたい!
● アプリ版よりブラウザ版の方が間口広いのでブ
ラウザで!
● UIデザイン作り直し!
○ スマホブラウザは縦持ちじゃないとプレイしにくい
○ PC版は画面サイズが結構違う
- 48. HTML 版の移植経緯
移植の要件
● mobage のスマホ、PC の両プラットフォーム同
時リリースしたい!
● アプリ版よりブラウザ版の方が間口広いのでブ
ラウザで!
● UIデザイン作り直し!
○ スマホブラウザは縦持ちじゃないとプレイしにくい
○ PC版は画面サイズが結構違う
● 工期3ヶ月で!
- 49. HTML 版の移植経緯
移植の要件
● mobage のスマホ、PC の両プラットフォーム同
時リリースしたい!
● アプリ版よりブラウザ版の方が間口広いのでブ
ラウザで!
● UIデザイン作り直し!
○ スマホブラウザは縦持ちじゃないとプレイしにくい
○ PC版は画面サイズが結構違う
● 工期3ヶ月で!
● ゲームの仕様は変わらないよ!
- 59. 移植チーム体制
チーム体制
クライアント側
● 移植チームは Unity 版チームと別メンバー
○ 開発初期は Unity 版も忙しく、移植チームは別動隊
○ 社内+業務委託で 12 人ぐらい
■ ロードオブナイツ経験者ほぼいない
● Unity 版と HTML 版で別ソース
○ Unity 版は C# ⇔ HTML 版は CoffeeScript
○ CoffeeScript をはじめて触る人がほとんど
- 67. 移植の実際
結果
● 工期
○ 1 ヵ月近くオーバーした
○ リミットラインの 8 月中にはなんとかリリースできた
● コード量
○ クライアントは CoffeeScript 20290 行
○ コード量 4 分の 1 になった!
● API
○ 4つ追加
○ ログイン、クライアントの設定保存用API
● 画面数
○ 微増
○ 友達招待系の画面追加
- 68. 移植の実際
Before/After
Unity 版 HTML 版
開発期間 8 ヶ月 3 ヶ月半
クライアント 8 万行 2 万行
コード量
API数 75 個 79 個
画面数 100 以上 微増
- 76. 良かった点
ネックになった点
設計面
● 良かった点
○ API は超再利用性高い
○ 通信設計が仕様書になる
● ネックになった点
○ Unity 版の HTML 画面がネックに
- 77. 良かった点
ネックになった点
良:API は超再利用性高い
● Unity 版のサーバーがほぼそのまま使えた
● JSON-RPC
○ ブラウザの開発者ツール使えばデバッグしやすい
● 自動生成なので変更コスト低い
- 78. 良かった点
ネックになった点
良:通信設計が仕様書になる
● 可読性が高い通信の定義書
○ それが実装仕様になる
● Unity 版でレビューしてきた成果がでた
- 79. 良かった点
ネックになった点
ネック:Unity 版の HTML 画面
● いろいろトリッキーな実装だった
○ Unity とのメッセージ連携
■ 独自プラグインで実装されていたので HTML 版でどう
するか模索
○ 通信内容が API 化されていない
■ HTML 版でどうワンページアプリとして実現するか模
索
HTML 版で上記が動くようになったのは残り1 ヶ月
ぐらいになってから
- 80. 良かった点
ネックになった点
チーム体制面
● 良かった点
○ Unity 版の HTML 画面のおかげで作業分担できた
● ネックになった点
○ 移植チーム孤立
○ パートナー会社とのコミュニケーション不足
- 81. 良:Unity 版の HTML 画面の
良かった点
ネックになった点
おかげで作業分担できた
● サーバー側は API が再利用できた分、HTML
画面の実装に回れた
● 並列作業が出来たので工期短縮に貢献
分担できてなかったらスケジュールやばかった
- 82. 良かった点
ネックになった点
ネック:移植チーム孤立
● 初期は Unity 版が忙しくて移植チームが孤立し
てた
● 新規メンバーはロードオブナイツあまり知らな
かった
○ スケジュールがタイトで使用理解不足のまま進んだ
○ 異常系などが漏れてバグバグになった
■ 急遽 Unity 版の優先度調整して Unity 版のメンバー
が参加
● Unity 版のメンバー参加後
○ 裏仕様や実装仕様の把握が進みスピードアップ
- 83. 良かった点
ネック:パートナー会社とのコ
ネックになった点
ミュニケーション不足
● infinite loop さんとのやり取り慣れてなかった
○ プロジェクトの優先度の共有ができてなかった
■ 初動が遅れた
○ プラットフォーム対応の実装優先度付けに失敗してた
■ 何がネックになるか把握できてなかった
■ サーバー側の課金や友達招待などの実装タイミング
がぎりぎりになってしまった
- 88. 移植で注意するべき3つのこと
1. API 設計はしっかり
○ レビューを活用して誰が見ても分かる状態をつくろう!
2. トリッキーな設計はなるべくしない
○ なるべくフレームワークに乗る範囲でやる!
3. コミュニケーションはやっぱり大事
○ 仕様や実装を把握しているメンバーも一緒にやる!
○ パートナー会社と優先度をしっかり共有する!
- 93. 質疑応答
● ここまででなにかあれば!
● Unity 版のコードを素直に移植しなかったのは
なぜ?とか
○ 初期に Unity 版メンバーがいなくて Unity 版のコードの伝
達出来てなかった
○ Unity とアーキテクチャが異なるのでそのままは使えない
ところも多かった(特に View 周り)
○ Model 層は結構使えたので最初に読んでいたらもっと開
発の効率上がってたと思う
○ でも直移植でないからこそコード量を圧縮できたという面
もある
- 96. 質疑応答
● 他になにかあれば!
● なぜ UnityWebPlayer を使わなかったのか?
○ スマホのブラウザで動かない
○ ネイティブプラグインの再実装のコストが結構かかりそう
だった
■ クライアント側のストレージ
■ Webとゲーム部分との機能連携
- 98. チームを1つに
● Unity 版、HTML 版の区別をなくしチームを統合
中
● 朝会、夕会を共有
● 開発は全員 Unity 版、HTML 版の開発環境を
触れるように
企画・仕様・設計の理解をメンバー全員が出来て
るようにするのがねらい