SlideShare a Scribd company logo
短期間+大規模ゲーム開発でも破綻
しない HTML・SCSS




                株式会社 Aiming
                   岩野 尚吾
自己紹介
• @shiwano 
• HTML版ロードオブナイツのプロジェ
 クトには、6月中旬からアサイン

• ゲーム開発への本格的な参加は、今回
 が初めて

• それまでは普通の Web 製作で、マー
 クアップとかやってた
本筋を進める前に
HTML版ロードオブナイツ
   について軽く説明
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
もともとは Unity 製の
スマートフォン・ネイティブアプリ!
  (最近 Android 版も出た)
それを HTML5 に移植したのが
 HTML版ロードオブナイツ
開発時に伝えられていた
   要件は―
マルチデバイス対応!



• PC版とモバイル版を同時リリース
  → Mobage と Yahoo! Mobage で

• モバイル版はもちろん Android にも対
 応(2.2から)
IE8 対応!




    やはり 20% 超の
ユーザーベースはふつう切れない
デザイン一新!

• PC版もモバイル版も新規デザインに
• モバイル版は縦持ち用
• ネイティブアプリをそのままコピーす
 ればいいというわけではない
  → UI 作り直し!!!
Unity版


         HTML・モバイル版
Unity版
         HTML・PC版
そして、なにより…
スケジュール最優先!


• なにより期日優先!!!!
• タイトなスケジュール
  → 自分がアサインされてから、
    リリース予定日まで 2ヶ月しかない…

• 社内で優先度が一番高いプロジェクトに
ということで、
開発はすごく大変でした
今日のテーマ


• そういう厳しい開発の中で、プロダク
 トを完成させるために、何を諦めて、
 何を諦めなかったか

• 主にマークアップ方面を担当した者の
 視点から
ゲーム開発で大切なことって何だろう?
期日を守ることです
(今回のプロジェクトでは)
人は何かの犠牲なしに
何も得ることは出来ない
限られた工数の中で
   期日を守るために
まず、何を犠牲にしたのか?
諦めたもの・その1


セマンティック・ウェブ
セマンティック・ウェブとは




• Webサイトの各記述の意味を適切に捉
 え、正しいタグやメタデータを付与し
 ていきましょうという考え方

• HTML5 では特に重視されている
セマンティック・ウェブとは




• 付与したメタデータをもとにコン
 ピュータが情報を収集・解釈できた
 り、ハンディを持つ人たちが情報にア
 クセスしやすくなる
具体的にどうしたの?
• ワイルドマークアップ 
• ID やクラスの命名規則は、ほとんど決
 めてない

• タグは基本 div(たまに ul, li)
  →   a タグも使ってない
  →   HTML5 新規のタグは機能的に
      必要なもの以外は使わない
  →   アウトライン?
      セクショニング・コンテンツ? なにそれ
で、どうだった?

• まあ、問題ない
  →   もともと、アプリの性質上、それほど
      アクセシビリティに気を配る必要ない
  →   基本、DOM さえあればいい(えっ
  →   後ろめたい気持ちはある

• もっとゲームに特化した意味付けをで
 きるスキーマがあってもいいのでは?
諦めたもの・その2


一般的な段組レイアウト
一般的な Web サイトでは

• HTML の要素順 + スタイルシート の
 float プロパティを使った段組レイアウ
 トが一般的

• 最近だとそれに加えて、「レスポンシ
 ブ・ウェブ・デザイン常識だよね」と
 いう感じ
しかし、ゲームの UI って複雑
複雑な UI の一例
縦横無尽にクリックできる!
Web サイトと同じように
 レイアウトを組むのは
      難しい
具体的にどうしたの?

• position: absolute; 多用
  → どこもかしこもこれで要素の
    位置を指定している

• z-index も多用
  → マップタイルの重なり制御など
    かなり複雑化している
で、どうだった?

• ぜんぜんレスポンシブじゃない
  → でもゲームってそんなものかも

• 工数削減にはなった
  → ただし、メンテナンス性は微妙…

• エディタで CSS を編集して、ゲームの
 UI を作るのは筋が悪いのでは?
  → GUI ツールの必要性をちょっと感じた
諦めたもの・その3


画像アセット管理
画像組み込みのフロー


PSDで
         画像    マーク
元素材                  コミット
        スライス   アップ
 作成
画像組み込みのフロー


PSDで
         画像    マーク
元素材                  コミット
        スライス   アップ
 作成


        この部分を自動化しないとつらい!
アセット管理の重要性
• オンラインゲームの開発は初回リリー
 スで終わりではない

• 継続的に行われるアップデートで、ど
 のアセットが必要となるか、管理する
 ことがとても大切!
  → 普通の Web サイトでも大切だが、
    ゲームだと特に重みを増す

• テクニカル・アーティストの職域
具体的にどうしたの?




• マンパワーでなんとかする!!! 
で、どうだった?




• やっぱり事故る!!! 
諦めたもの・その4


 IE8 対応
当初は、タスクとして見積
   もっていたが…
• スケジュールの都合で、モバイル版のデ
 ザインをそのまま、PC版に持ってくる
 ことに

• CSS も IE8 対応にするために、余分な
 工程をたくさん踏まねばならなかった
  → Retina 対応と IE8 対応の矛盾

• そもそも JS が動かない
ということで、IE8 は
 対応しないことに
で、どうだった?

• 開発的にはすごくハッピー!!! 
• 運営的にはやはり潜在的な顧客が減る
 ので微妙…

• スケジュールのために、一度でも IE8
 対応をスコープから外すと、もう二度
 と復活しない
諦めたもの一覧


 • セマンティック・ウェブ
 • 一般的な段組レイアウト
 • 画像アセット管理
 • IE8 対応
じゃあ、それらを諦めて、
 代わりに何やったの?
大切なのは、期日
つまり、重視すべきは
開発効率!
メンテナンス性:開発効率
      ↓
     1:3
こんなことをやりました

• 開発環境でのマークアップ管理
• 画像最適化
• SCSS + Compass の導入
• PC版・モバイル版の出し分け準備
• 実装の把握
やったこと・その1


開発環境でのマークアップ管理
何が問題だったの?


    デザイン確認用のマーク
    アップは、Rails の
    public ディレクトリで管
    理していて煩雑だった
何が問題だったの?


      この部分が
      必要なだけなのに
      DRY に書けない
どう対応したの?



• デザイン確認用のマークアップに、専
  用のルーティングを用意して、Rails で
  表示できるようにした

• http://localhost:3000/pc/map/
何がよかった?

• 開発環境はひとつだけというのが明確
 になった
  → デザイン用に環境を分けるのは、
    よくないと思う

• DRYレイアウトファイルに共通部分を書ける
   →
      に書ける

  → Rails のヘルパーメソッドが使える

• 実装するときも組み込みやすい
  → PC版の開発速度が上がった
やったこと・その2


画像最適化
画像の最適化大事

• 特にモバイル版 
• 3G 回線経由だと、画像のファイルサイ
 ズがボトルネックになりうる

• また、高解像度ディスプレイで綺麗に
 見えるよう画像も高解像度のものを使
 わなければならない

• 両立は大変! 
高解像度ディスプレイ対応




 横 720px 用にデザインされた画像を
      縮小して配置している
どう対応したの?


   • モバイル版重視
   • Chrome の開発者ツール
    で読み込んでいる画像サ
    イズを確認しながら、丁
    寧に最適化を行った
何がよかった?

• モバイル版の画像サイズを抑制できた
  → 同等の機能で実質解像度的にも
    大した差はない中で

• モバイル版の総画像サイズ
  → 5.3 MB

• PC版の総画像サイズ
  → 6.6 MB
最適化ツールなど

• ImageOptim (画像ファイルサイズ最適化)
  → http://imageoptim.com/

• ImageAlpha (透過を保ちつつPNG高圧縮)
  → http://pngmini.com/

• CSSスプライト
  → 類似の画像をまとめるなど
    必要な部分だけ
やったこと・その3


SCSS + Compass の導入
+

やっぱり便利!
簡単に説明すると―
SCSS とは

 • CSS の拡張メタ言語
  → CSS のスーパーセット

 • 便利な機能がたくさん
  →   変数
  →   演算式
  →   Mixin
  →   Function
Compass とは

  • SCSS のフレームワーク
  • CSS3 の記述を簡潔にする
   Mixin が多数用意

  • Web 制作に便利な再利用可
   能パターンを多数用意
   → CSS スプライトの
     自動生成など
最近は、紹介記事も増えて
 業務で使う人も多い?
(デファクトスタンダードになってほしい)
具体的にどんな感じで
  書いてるのか
たとえば、アイコン



      • data 属性の値
       で、アイコンが
       差し替わる
このような SCSS を使用
モバイル版のマップ


    • マップタイルのサイズ
     は 42px!
PC版のマップ


   • マップタイルのサイズ
    に 64px!

   • モバイル版よりちょっ
    と大きい
このような SCSS を使用




  変数の値を調整するだけ
SCSS ファイルの
トータルのコード行数は
    16685
展開される CSS ファイルの
 トータルのコード行数は
     32712
(expanded style, line_comments OFF)
何がよかった?

• 開発速度アップ!
  → コード行数の大幅削減
  → PC版の開発をしているときに
    マップ部分のデザインが一瞬で終わった

• DRY に書けた
  → PC版・モバイル版のコードを共通化
  → Compass の Mixin 便利!
やったこと・その4


PC版・モバイル版の
  出し分け準備
PC版・モバイル版のデザインを
   効率的に管理したい!
要件について整理

• HTML版ロードオブナイツは
 Single Page Application
  → HTMLファイルはたった一つ
  → CSSファイルは少なければ少ないほどよい

• 現在は、PC版・モバイル版だけだが、将
 来的に新しいバージョンが追加されるこ
 とがありうる
  → 適切なディレクトリ分けが必要
よって、SCSS は
 このような形に
SCSS のディレクトリ構成



• modules
   → 共通で使う mixin や 変数などを
     まとめたディレクトリ

• partials
   → プラットフォームごとに使う
     SCSS ファイルをまとめたディレクトリ
SCSS の中身




 このように import して
最終的に1ファイルに出力!
View(HTML) は
  このような形に
View のディレクトリ構成




• app/views 以下に、pc と mobile と
 いうディレクトリを作成
  → View ファイルはすべて ERB 形式で記述
View の中身の例




  ゲームで使う HTML は
独自ヘルパーメソッドを使って
    テンプレート化
テンプレートの例




テンプレート化された HTML は、
  このように Mustache 化も
    されていたりする
そして最終的には
全 2766 行数の単一のHTML
   ファイルとして出力
何がよかった?

• この規模のゲームを Single Page
 Application として運用したこと
  → モバイル版でも、特にパフォーマンス
    に問題はなかった

• PC版とモバイル版のデザインを適切に
 出し分けることができた

• 新しいバージョンを追加する作業が容
 易になった
やったこと・その5


実装の把握
何が問題だったの?


• 基本、DOM 依存が激しいゲーム
  → それ関連のバグが山ほどある

• JS 側のバグか HTML・CSS 側のバグ
 か、判別もけっこう大変
例えば、こんなバグチケット!
どう対応したの?

• ペアプロする!
• JS のコードはなるべく読む
  → 特に View 側
  → Github 見やすくて便利

• 自分でマークアップして、自分で実装
 のパターンも
何がよかった?

• 結果的に工数削減!
  → コミュニケーションコストが減るため

• デザイン側のバグ、JS 側のバグの対
 応・判別が容易

• 自分の関われる範囲が増えるのは、や
 はり嬉しい!
結果、期日はどうなったの?

• プロジェクト初期に、想定されていた7
 月中旬に出すというのは守れなかった

• 8月3日に Mobage 審査に出すという
 約束は守れた
  → 途中審査落ちるなど色々ありつつも、
    8月中に何とかリリースできた
ということで、まとめ!
まとめ
• プロジェクトの性質によって、何が大
 切かよく変わるので、みんなしっかり
 考えよう

• Web 制作のセオリーをそのまま無批判
 にゲーム開発に持ってくるとつらい

• アセット管理大事
• SCSS + Compass みんな使おう
あと、何より―
ゲーム開発って、面白い!
ご清聴ありがとうございました
最後に、このプロジェクトの
   管理手法について

• 弊社開発者ブログに記事があるので、
 ご覧になってない方は是非

• JS 大規模プロジェクトの管理手法 ‒
 ロードオブナイツの実例紹介
  → http://goo.gl/JFrlt

More Related Content

短期間+大規模ゲーム開発でも破綻しないHTML・SCSS

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy