コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】エディタ編集中に他のシーンを開いた時に呼び出されるコールバック関数を実装する

using UnityEditor;
using UnityEngine;

public static class Hoge
{
    [InitializeOnLoadMethod]
    private static void OnChangedCurrentScene()
    {
        EditorApplicationUtils.mChangedCurrentScene = currentScene =>
        {
            Debug.Log( currentScene );
        };
    }
}

例えばエディタ編集中にUI用のシーンを開いた時に
Sceneビューの表示を2Dモードに変更するなど行いたい時に役に立ちます

【Game Graphics Groove】「『ファントム オブ キル』における3D制作事例 ~クオリティコントロールのポイントと実制作の裏側~」メモ

ファントム オブ キル

ファントム オブ キル

  • gumi Inc.
  • ゲーム
  • 無料

はじめに

  • ファントムオブキルはUnity製
  • 3Dモデルの制作はMaya

外部制作の管理について

  • ファントムオブキルでは180体以上のキャラクターモデルを作成した
  • 協力会社と連携して3Dモデルを制作して
    クオリティコントロールするスキルが必要だった

外部制作の管理の問題と回避方法

「対応に時間を取られる」を回避するために

チェックフロー作成 

  • 例)キャラクターモデル
    • 協力会社さんがイラスト資料を受け取り制作開始
    • 完成したモデルを提出
    • gumiクオリティチェック
    • チェックシートをもとに納品データ確認
    • gumiチェック
    • 納品完了

フィードバックの仕方で時間短縮

  • 提出されたイラストに赤ペンで丸数字を描いて
    下記のようなフィードバックをテキストにまとめる
    1. デザインが抜けています
    2. ハートが縦に潰れています
    3. エプロンのヒラヒラを大きくしてください
    4. 末端を広げてください
  • 海外の協力会社さんもいるのでイラストとテキストを分ける
  • テキストを分けることでローカライズが簡単になる
  • 赤ペンで伝えきれない部分に関しては、
    Photoshopのゆがみツールを使用して画像変形してフィードバック

クオリティが上がらない!

  • 資料を作成すること
    • UI表示用のイラスト
    • 3Dモデル用のデザイン
      • ファントムオブキルでは3Dモデルは
        デフォルメされてるから必要だった
      • 3Dモデル用の補足デザイン(背面付)
    • クオリティの高いイラストを用意すること

背景フィールドモデル編

  1. イメージイラストを用意する
  2. ディレクターがエクセルでマップの地形効果を設定して
    それに対してデザイナーがデザインを指定する
  3. そのエクセルをもとに内製で2時間程度で仮のモデルを作成する
  4. その後、協力会社さんに作って頂く

武器モデル制作資料

  • 線を引いて大きさを表現

データの仕様のミスが多い!

  • 納品物チェックシートを作成
    • モデルの命名規則は正しいか
    • テクスチャの命名規則は正しいか
    • アルファチャンネルがないか
    • モデルに貼るテクスチャはPNGではなくPSDか
    • ポリゴン数は規定数以内に収まっているか
    • ポリゴンの両面描画が使われていないか
    • etc.

Unityでの3Dゲーム開発について

Unitでの背景3D表現について

Unityによるライトマップによる陰影表現

  • Unity上でライトマップを使用して陰影を表現

Unityシェーダーアニメーション制作

  • 「SHADER FORGE」というアセットを使用
    • https://www.assetstore.unity3d.com/jp/#!/content/14147
    • ビジュアルスクリプトエディタ
    • Unityのシェーダースクリプトに置き換えられる
    • 専用のライブラリーを必要としない
    • 描画負荷についてプログラマに確認しながら使用

Unityでの戦闘シーン演出について

  • Mayaで作成したコンテ画像(23枚)
  • なぜ3Dのコンテ?
    • 3Dが得意な開発メンバーが多かった

MayaとUnityの連携

Maya   Unity
モデル モデル
モーション モーション
カメラ カメラ
エフェクト エフェクト(Shuriken)、SE & ボイスをつける

まとめ

外部制作の管理について

  • メール以外のやり取りをすること
  • 必要最低限の資料作成を見極め協力会社さんが求める資料を作る
  • チェックシートで人為ミスを減らす

Unityでの3Dゲーム開発について

  • 3D背景のライトマップ実例を紹介
  • シェーダーアニメーション実例を紹介
  • 3D演出の制作フロー実例を紹介

質疑応答

  • UIデザイナーさんの担当はどこまでか
    • UIデザインを作成してPhotoshopでUI配置
    • それをプログラマが用意した変換ツールでNGUIに変換
    • あとはプログラマがUIを操作するプログラムを実装
    • アニメーションはアニメーターがUnity上でTweenを使って実装
    • デザイナーさんもUnity上でNGUIを使えるとのこと

他レポート一覧

【Game Graphics Groove】「グラフィッカーがこの先生きのこるには ~『スクールガールストライカーズ』のリソース設計思想~」メモ

はじめに

  • 現在はネイティブアプリ全盛期
  • 以前よりも質も量も高いものを求められる

よくある死因その1

絵の差別化ができずに死ぬ

  • スクストでは3Dを採用して、その強みを生かすことにした
  • 2Dのカード絵はリッチ化しすぎていて差別化が難しい
    • スクエニの自信のある3Dで勝負

ぶっちゃけ予算がかかるんじゃないか

  • やりかた次第
  • とはいえ高くなりがちなのは確か

静止画だと、2Dイラストの魅力に負けるんじゃね?

  • 負ける。なので、できるだけ静止画で勝負しない
  • 女の子の反応や、イベントシーンでのカメラワーク等、3Dならではの
    女の子が「そこにいる」という存在感を出すことに注力した

まとめ

  • 差別化は必須だけど、やるなら特化しないと厳しい

よくある死因その2

動く端末が少なすぎて死ぬ

  • iPhone6だときれいに動くけど・・・

スクストではハードの上限を叩かないリソース仕様にした

  • 意外となんとかなる

スマホのグラフィックエンジンの弱点は触らない

  • 極力アルファテストとアルファブレンドは使わない

まとめ

  • 最初でやりすぎないことが大事
  • ゲームの動作が軽いとユーザーさんも継続してプレイしやすいし、
    あとからの仕様変更にも強くなる

よくある死因その3

作り終わらないで死ぬ

  • 「すべての要素で100点満点」を目指さないこと
  • スクストでは女の子の魅力の表現だけに特化した

女の子の個性と魅力を出す!

  • この女の子ならこういう仕草を取るなど

引き換えに諦めたこと

  • 業界の中でのみ受けがいい高度な技術の披露
  • 髪の毛の物理コリジョンの正確さ
  • 同じ時間を費やすなら女の子の個性や存在感を出す制作に注力

まとめ

  • こだわりは必要だけど、方向は絞ること
  • 作り終わってリリースできることが大事

よくある死因その4

売り上げが上がらずに死ぬ

  • スクストでは、ユーザーさんの手に入るものをリッチ化した
  • 自分が買わないものはユーザーさんも買わない
    • 何が手に入ればうれしいか考えた

一回のガチャで手に入るものを増やした

  • コスチュームやアクセ、戦闘シーンなど
    ユーザーさんに渡せるものはすべて渡す設計にした

手に入るものをリッチにしたことでよかったこと

  • パラメータだけでガチャの価値を担保しなくて良かったため
    無茶なパラメータインフレが抑えられた

まとめ

  • せっかくリソースを作るならユーザーさんに渡せるものを

よくある死因その5

運営に必要なリソースを用意できずに死ぬ

  • 最初の売り上げが良くても・・・
  • スクストでは必要なリソース量から逆算して作品を決めた
  • 一か月に作る量をまともに作ると死んでしまう

徹底的な効率化を考えた

  • 女性しか出さない
    • ボーン構造の共通化、
      モーションの共有ができる仕組みの実装など
  • 作品は「現在」が舞台
    • リアリティの説明に必要な素材、
      たとえば建物の構造などを描かなくていい
  • 3Dモデルにライティングを行わない
    • キレイな陰影が出るような法線編集の手間を省く
  • バトルは異空間の空中で行う
    • エフェクトが床に刺さって見栄えが悪くなるのを回避
    • 前方&後方移動のモーションもカットできる
  • など、大きなものから小さなものまで
    • チリも積もれば山となる
  • ストーリーやキャラクターからではなく
    この条件を満たした作品を作る方針にした

効率化で浮いた時間でサービスの質を向上させた

  • 当初の予定の1.5倍ほどのリソースを用意している
  • ときどきはゲーム進行とは全く関係ないミニゲームなどで
    キャラクターの魅力を伝える
  • 余裕がないと制作陣も楽しめないし、楽しんで作らないと、
    それはユーザーさんに絶対伝わってしまう!

まとめ

  • グラフィックの効率化はとても大事
  • 戦略ミスは、戦術では取り返しがつかないことも多い

よくある死因 番外編

UnityやUE使ったらすぐできるでしょ?で死ぬ

  • スクストではエンジンと同時開発を行った

エンジン使ってもリソース制作効率は上がらない

  • エンジン使って効率化が図れるのはゲーム性の確認のみ

まとめ

  • グラフィッカーは声を上げていこう!
  • グラフィッカーには当たり前でも、
    他の職種の方からは知られてないことはまだまだたくさんある

他レポート一覧

【Unity】アセットバンドルのサンプルプロジェクトのURL

Unite 2015 の「ここが変わる!Unity 5のスマホ開発」において
下記のサンプルプロジェクトがアセットバンドル周りの
実装の役に立つとのことでした

http://files.unity3d.com/vincent/assetbundle-demo/users_assetbundle-demo.zip

  • AssetBundleManager.cs(マネージャークラス)
  • BaseLoader.cs(基本ローダー)

【Unity】シーンファイルが作成、削除された時に自動でScenes In Buildに追加、削除するエディタ拡張

概要

このスクリプトをUnityプロジェクトの「Edior」フォルダに追加した状態で
Unityプロジェクトにシーンファイルが追加、削除されると
自動で「Build Settings...>Scenes In Build」に追加、削除されます

シーンファイルを作成したり削除したりするたびに
Build Settingsウィンドウを開いてScenes In Buildを
編集する手間を省くことができます

関連記事

【Unity】シーンファイル作成してScenes In Buildに追加するエディタ拡張 その2

概要

このスクリプトをUnityプロジェクトの「Edior」フォルダに追加すると
下記の項目がUnityのメニューに追加されます

f:id:baba_s:20150405170302p:plain

「Empty Scene」を選択すると空のシーンファイルを、
「Scene」を選択すると「Main Camera」と「Directional Light」が
存在するシーンファイルが作成され、Build Settingsの
「Scenes In Build」にそのシーンファイルが登録されます

f:id:baba_s:20150405170417p:plain

f:id:baba_s:20150405170422p:plain

関連記事

【Unity】シーンファイル作成してScenes In Buildに追加するエディタ拡張

概要

このスクリプトをUnityプロジェクトの「Edior」フォルダに追加すると
下記の項目がメニューに追加されます

f:id:baba_s:20150405161148p:plain

「Create Empty Scene」を選択すると空のシーンファイルを、
「Create Scene」を選択すると「Main Camera」と「Directional Light」が
存在するシーンファイルをどこに保存するのか選べるダイアログが表示されます

保存場所を選択して「保存」を押すとシーンファイルが作成され
Build Settingsの「Scenes In Build」にそのシーンファイルが登録されます

f:id:baba_s:20150405161637p:plain

f:id:baba_s:20150405161648p:plain

シーンファイルを作成した後にScenes In Buildに追加する手順を省略できます

関連記事

【Unity】フォルダのInspectorを拡張する

Unity 5以降であれば、フォルダのInspectorを拡張可能です

例えば、上記のスクリプトをUnityプロジェクトの
「Editor」フォルダに追加することで、フォルダのInspectorを
下記のように拡張することが可能です

f:id:baba_s:20150405231312p:plain

フォルダの容量を見られるようにしたり
フォルダのパスをコピーできるようにしたりすると
役に立つかなと思っています