テストから見えてくるGoogleのソフトウェア開発
読了したのでFBした。
久々のプレゼン資料、作成がつらい。。 3ヶ月くらいダラダラと発表を避けてきたけど、なんとか形にできてよかったー。
本の感想
本の内容は面白かった。 のだけれど図とか絵がもっとあってもいいのになーとところどころ思う。(活字疲労が・・ インタビューやらテストエンジニアの職種の内容が本の中ではメインコンテンツになっいるんだけど、 退屈だったのでFBの資料からはバッサリ省きました。 それでも話し足りない量の内容がつまっているので、気になったらぜひ買って読んでみるのが良いと思います。
最後に。 本のプレゼントしてくれた @masasuzu さん、ありがとうございます!
CAOS 2015 Summer メモ
CAOS 2015 Summer 〜開発効率のツール開発とオープンソース活動〜 のめも
Webponizeの紹介
Author
- @1000ch
WebP
webpに変換してくれるくんをつくったよ
STF
Smartphone Test Farm
- https://openstf.github.io/
- mac からadb でつないでサーバー上からリモートに端末を操作できるくん
詳細
- c/c++で非公開APIをつかってSocket通信している
- framebufferを使っている。(いろいろ問題あり)
- まともにやると0.5fpsしかでない
- screenrecordのbackend apiは4.2から
- minicapをAOSPから取ってきてビルド、全ターゲットで動くようにsharedlibrary作る
- 2.3 - 4.1 : ComposerService::getComposerService()->captureScreen()
- 4.2 - : SufaceComposerClient::createDisplay()
- jpgでencodeしてclientに送信してる
- 170 device / 3 device segmentation fault => メーカが非公開APIをカスタマイズしてるから
- 40fpsくらいはでる
- x264 をつかってhardware encodeすればもっとパフォーマンスでる
管理者モード
- 上上下下右左右左EnterEnterで管理者になれる
duck
グルーピングしてリアルタイム通信したい & platform化したい
運用
- 2ヶ月前から運用してる
- 2game
- c4.2xlarge x 3 instance on AWS
- 今同時接続2000人くらい
- 1.2 billion message / month
- まだ数すくない
TBC
- githubには公開予定
ImageHayabusa
psd をおいたまま配信できるサービス
- http://hayabusa.io/
- 作業時間: 1day -> 30minに
- workflowが早くなる
- デザインの確認すぐできる
input
- psd, ai, png
output
初期リクエストで変換 -> そのあとキャッシュされる
- urlはデフォルトパラメータが設定されてる
- 差分情報のみurlに反映する
食戟のソーマのレシピ再現がんばった 04-06
最近料理のレパートリーが広がらず悩んでいる。 やっぱり意識的に新しい料理にチャレンジしていかないと・・・! というわけで今季は食戟のソーマの料理を頑張った。
アリスのミルクセーキ pic.twitter.com/DgtxFgocEY
— めしてろ (@mustankatti) 2015, 6月 23
女王のエッグベネディクト? pic.twitter.com/mXleeFyauS
— めしてろ (@mustankatti) 2015, 6月 14
リンゴ粥リゾット、ビシソワーズ pic.twitter.com/pvMMeePGdy
— めしてろ (@mustankatti) 2015, 6月 13
昔ながらのナポリタン、じゃがいものポタージュ pic.twitter.com/5x62Xjx6dd
— めしてろ (@mustankatti) 2015, 6月 8
昔ながらのナポリタン、サーモンのカルパッチョ~梅バルサミコソース pic.twitter.com/dE8aAOp6BU
— めしてろ (@mustankatti) 2015, 6月 6
シューファルシ pic.twitter.com/fDKkj58JfA
— めしてろ (@mustankatti) 2015, 6月 1
インサラータ・フリッタータ pic.twitter.com/I0wUdXCngP
— めしてろ (@mustankatti) 2015, 5月 27
インサラータ.フリッタータ pic.twitter.com/igTLryuUur
— めしてろ (@mustankatti) 2015, 5月 26
お柿揚げ pic.twitter.com/G5g8SNc4Gu
— めしてろ (@mustankatti) 2015, 5月 20
銀ダラとホタテのおかき揚げ pic.twitter.com/6uvZWIN2sM
— めしてろ (@mustankatti) 2015, 5月 19
田所特製3種のおにぎり pic.twitter.com/UlrxXPKhK9
— めしてろ (@mustankatti) 2015, 5月 11
鶏もも肉の香り焼き〜緑のソースを添えて〜、トマト味噌汁 pic.twitter.com/6B5K38mgGG
— めしてろ (@mustankatti) 2015, 5月 10
化けるふりかけご飯 pic.twitter.com/9WYa1vgfxT
— めしてろ (@mustankatti) 2015, 5月 7
スフレオムレツ pic.twitter.com/gRfK2kWeEh
— めしてろ (@mustankatti) 2015, 5月 4
シャリアピン丼 pic.twitter.com/jErntMNmGe
— めしてろ (@mustankatti) 2015, 5月 4
鯖バーグ pic.twitter.com/A3SBUzX9ng
— めしてろ (@mustankatti) 2015, 4月 22
さわら🍙茶漬け、焼き茄子 pic.twitter.com/W4pexLd3dV
— めしてろ (@mustankatti) 2015, 4月 20
さわらの山椒焼き春キャベツのピューレ添え、ポトフ pic.twitter.com/naQJNmIAYb
— めしてろ (@mustankatti) 2015, 4月 19
なんちゃってローストポーク。オーブントースター入れすぎた感 pic.twitter.com/KHPP6ceojU
— めしてろ (@mustankatti) 2015, 4月 18
以上16品。1-3刊は制覇。あとは難しい料理をおいてまちまちという感じ。
振りかえり
16品なので毎週何かは作れていたかなという感じ。 かなり見た目が下手くそなのもあるが(ローストポーク、ベネディクト...)、ひと通りレシピ試せたのは楽しかった。
美味しさの順で言うと、
- シャリアピンステーキ
- さわらの山椒焼き春キャベツのピューレ添え
- 田所特製3種のおにぎり
シャリアピンステーキの梅醤ごはんはうまいので超おすすめ。 さわらの山椒焼きはどくどくの風味が出て美味しかった。 田所ちゃんのおにぎりは、豚肉のにんにくはちみつ味噌漬けがご飯のススム美味しさだった。
難しさの順で言うと
シューファルシは茹で過ぎ中が硬くなって肉々しくなってしまうので、レギュムの魔術師感を出すには調理時間をきちんと守ったり、🍖詰め過ぎないようにしたり、キャベツを甘みの出る品種にしてみるとかちょっと工夫しないとダメかも。
エッグベネディクトは1人前でケチってオーランドソースを少なくしたり、湯煎しすぎたりすると失敗する。あと新鮮な玉子で水溶性卵白を少なめにしないとポーチドエッグがうまくできないかも。
ローストポークはベーコンをケチったり、焼き過ぎたりしちゃダメ。 思ったよりエリンギでカサが増すので分量注意が必要。
暗殺教室の122話の図形
Unite 2015 Day2 めも
Session1: Autodesk Session & Workshop
建築用のデータ (BIM) -> ゲーム用のデータ (FBX)
階層で分ける
- みえるところ
- 床、地面など
ゲームに特化する
- 建築は厚みがあるが、ゲームでは板ポリでよいものがおおい
- 底の厚さを削除. ある程度の粒度でまとめてしまう
- 階段一枚の板ポリにする
UV
- 必要ならMayaでUVつくる
- 気軽に取り組めばよい
Material
- Mayaで管理しやすいように色分けする. データを作り分ける
- 要素ごとの色分け. 壁、床、エレベータ、・・・
Data Conversion
- REVit ARCHITECTURE -(fbx)-> Maya -(fbx)-> Unity
Unityでの配置
- Texture / Materialの設定
- 2pattern: 一つ一つ作って配置? Mayaで全部作って1ファイルで持ってくる?
- ひとつひとつ配置すると結構大変. ある程度壁をまとめるとよい
Lighting
- Unityの中でbakeしている
重要な点
- BIMデータはリッチだが、ゲームには大げさ.
- 小さくデフォルメするのが良い
- あくまでテンプレート程度に考える
Session2: Unityのシーンを紐とき把握するには?
山村
- Unity Field Engineer
- 技術的な相談
今回の話
- プロジェクトをさくっと読む方法 => 再利用性を高く
- サンプルシーンの解析
- コード書くの面倒
- 昔作ったプロジェクトが読めない
- もっと楽に解析できれば...
Unityの構造
- Project > Scene > Object > Component > Assets
コンポーネントはコールバック
- Start / Update / FixedUpdate / OnCollisionEnter2D ...
- 基本コールバックから始まる
GameObject間では参照が必要
- GetCompoentns / AddCompoennt /..
生成ルール
- Object: Instantiate / New GameObject..
- Resource: Resources / AssetBundle / AddComponent / Prefabs...
どのコンポーネントがいつ動くのか?
- ランタイムで減ったり増えたりする
- OnCollider / SendMessage / ...
Compoennt List => Callback List
- 実行時にEditor拡張で設定
- 無理. すべてのリストを列挙すれば参照元がわかる
参照先の座標の確認
- 矢印を貼るとわかりやすい
- 参照. 被参照. Editor上にを引く
- 閉じたら線を表示しないなどで参照数を減らす
参照関係のないオブジェクト
- 自己完結型.
- 砂漠から砂を拾うような感じになる
- それ以外をHierarchyに表示するようにすればスッキリ
コンポーネントの依存関係
グラフ化
Model
- Component間の参照とは別に、なんかのクラスがあるとき => GameManager的なゲームの進行管理に使われているかも
Manager系のObject
- Singleton
- 役割は様々
- 何かイベントを食らったら操作を行う系がおおい
ギミック系オブジェクト
- 自己完結型のオブジェクト
- ステージ作る系のギミックとか
Updateで頑張るドン
- Updateやコルーチンで自発的に動く
そのObjectはどうやって参照された?
参照先の状態を知る
- 「誰をみる」ではなく「どうやって見るかる」なので。
参照関係を把握する
- 自分で動かす or 管理される
- 動き出すと参照がつくのがある
検索パターン
- FindWithTagで検索される
- Uniqueなタグを保つ場合FindWithTagで検索される
対マネージャー (シングルトン)
なぜ参照を保つ必要がある?
- キャッシュ
- 位置を知る
- ...
そのオブジェクトはどっから持ってきたのか?
生成コードの検索
- シーン内に最初から配置?
- Instantiateで検索? ObjectPpoolで検索?
該当のPrefabをもつシーンを探す
- Reference Viewer (Unite2014) anchan828/unitejapan2014/tree/master/ReferenceViewer
- LoadLevelAdaptiveの場合、ロードするシーンを探す
- SerializedObject <=> YAML / 検索
- Smart Marge : シーンやプレハブをマージ可能に
近いうちに公開する予定
- 5分くらいでガガッと把握できるように
Session3: エディター拡張マニアックス 2015
- 安藤圭吾
- Field Engineer
- Unity部 もくもく会
- SlackにUnityコミュニティつくった
Unity 5.1ベースの話
- 資料は後日Uniteページに公開
- ソースも公開予定
- Animation Data Auto Generationについて話す
- Sprite Animationを題材
Sprite Animationの作成
- プロジェクトview -> Scene ViewにDrag&Drop. AnimationClip & AnimationController生成
- Animation WindowでCreate New Clipでやる
- 選択 Create -> Animationでアニメーションクリップが生成される
- Inspectorを Debugモードにすると下の方に配列でSpriteが表示される
- でも画像で見たい
CustomPreviewを使って実装するといい?
- defaultは変更できない.. ? => 変更可
- AssetPreview.GetAssetPreview(target) -> sprite -> textureを取得
- custom previewにはtextureは表示できない
Sprite Animationをスクリプトで作成する
ObjectReferenceKeyFrame
- keyframeのobject版
- floatの代わりにObjectを設定可能
EditorCurveBinding
- ...
Property名を知るには?
- component -> SerializedObjectに変換
- property取得
- デバックログで吐く
- YAMLじゃなくてもSerialized Objectを直接触ればいける
- 手段としてYAMLを直接いじるのはあり
Animator Override Controller
- Spriteだけ変更
- Animationは同じ
GetComponent<Animator>().runtimeAnimatorController = overrideController;
複数のAnimatorOverride Controllerを作成するなら
- ScriptableWizardで作成する
ReorderbleList
UnityEditorInternalだけど使えばいい
EditorのLifeCyble
- EditorApplication.update
- Package Import
- Update Window
- Update Inspector
- EditorApplication.delayCall
都合がわるくなったとき
- EditorApplication.delayCall += () => {}
Unity5の新機能
- InitializeOnLoadMethod
- UnityEditor.Menuの追加
- UnityEngine.HelpURLAttribute
[HelpURL("http://...")] public class Example: {}
GUI.Scope
- Scopeの作成が楽に
using (new BackgroundColorScope(Color.yellow)) { GUILayout.Button("") }
SceneViewクラス
- Editor.OnSceneではなく、GlobalなonSceneGUIDelegateがある
ProjectWindowUtil.CreateAssetは覚えておくと良い
- project treeのアイテムを作成できる
ActiveEditorTrackerクラス UnityStatsクラス ComponentUtilityクラス
- componentコピーが行える
Unity上でTwitterが見たい
- reflectionを利用して、publicクラスじゃないものを使う
- UnityEditor.Webview...
アセンブリブラウザでみる
- EditorGUIの中身がみれる
- ScriptableObject / Window.GUIの中身は必見
Session4: MOBIUS FF における Unity開発事例
- はまぐち
- りーどぷろぐらま
コンセプト
- スマフォで動くHDクオリティのゲームの驚きを、より多くの人に
ナンバリングタイトルを手がけてきたスタッフ陣が作成!!
- ほんき
- もぐ: 久野美咲
- 北瀬
Theme
- リッチなクオリティをスマホでやるには?
- 大規模開発でのUnityの注意点
- HDクオリティのゲーム制作をする心得
大規模開発での心得
基本
- 同じファイルを同時に触る人が増える
複数人のデータ編集のイメージ
Hierarchyで編集する.scene, .prefabを同時に編集できるか?
- ここが一番のネックだった
- Unityはこれが非常に苦手
Hierarchyで依存関係を作らない
attack.prefab |- motion.prefab |- plan.prefab |- sound.prefab
基本:
- 一つのアセットとしてattachを設定する
- Hierarchy上で依存をつくらず、Inspectorで設定
- コミットを検知してCommitHookサーバーが最新の依存関係をattack.prefabに更新してcommit
- NOTE: 依存関係は .metaに記載されているguidによって構築されるので
視認性が落ちる
MOBIUSの開発環境
- Graphics -> Maya -> prefab
- Sound -> soundは自社ツール
- Timeline -> タイムラインツールは自作
- xls -> .asset (yaml) -> unityで取りやすいクラスに吐き出す
- menu -> nGUI
- effect -> ShurikenMaker
データ確認フロー
- AssetBundle Build Server.
- Console ModeでUnityEditorを起動
- 全部のAssetBundleを作成するのに3時間
- ゲームサーバー側のストレージにup
- 3-4時間後に実機で確認できる
モバイルでHDクオリティを作成するための心得
Unityが遅いというかC#の特性を知る必要がある
- strutはstackに確保されるが、classはheapなのでgc頻度上げる
- 文字列層は気をつけて class enumのtoString()はおそい
- foreachを使うとEnumerableがヒープ確保されるので、これもgc頻度を上げる
- Vector演算を真面目にやるとかなりキツイ
特性をしればそんなに遅くならない
- foreachでIEnumerableでallocationしてるとか、
最適化はNative化を検討
- IKや揺れ者の物理はnativeで実装
- Asset/Pluginにdllにおいて簡単にnative呼び出しできる
まずは敵を知るところから
アプリが使えるメモリ量
iOS 350-600MB Android 400-1.1G
Android先行で開発したほうがうまくいく?
DownloadSize
| パッケージサイズ | 70MB(32bit/64bit universal) / 40MB | | 初回起動DLサイズ | SD 350MB / 500MB | HD 700MB / 1G |
- サイズ的に倍くらい違う
Texture
- RGB PVRTC 4bit (iOS)
- RGB ETC 4bit (Android)
- RGBA PVRTC 4bit (iOS)
- RGBA ETC2 8bit (Android)
- specular / diffuse など加えると3倍
それぞれのGPUに最適なテクスチャ形式を
- ほとんどsnapdragon
- GPUごとに得意なフォーマットが違う
- 試み: 端末最適化データ, テクスチャのサイズは落ちるけど、画質は上がる
だがデザイナ管理は1画像データに
AssetBundleBuildServer側で対応
- 10代以上のAssetBundle Build Serverがあるので最適化
- Textureファイルのフォーマットが変更させると. cacheがリセット...
- ビルドが24時間で終らない・・・
- Unity起動前に textureFormat: -1に上書きして起動する
- キャッシュが壊れると1日作業できないとかある・・
Shaderは必ず1つにパックして初回に初期化
- ConsoleGame: Compile済みのshaderを提供できる
- MobileGame: ゲーム起動時にshader compile
- モデル読み込み時に毎度コンパイルされてカクつく
- AssetBundleで参照設定を別にして、毎度buildが走らないようにする
- NOTE: AssetBundle作るときにきちんと定義しないとコピーされて含まれるので注意
おまけ
UnityChanとこらぼする
Session5: 白猫プロジェクトの裏側! - パフォーマンス・チューニングとリアルタイム通信のすべて -
- 池田洋一
- UnityEngineer
白猫
- 3D、4人リアルタイム対戦
開発フロー
- 2-3人
- α 4ヶ月
- β 4ヶ月
- 18人
特徴
- 全社配布 (全員にベータ版)
- 子供レビュー (チュートリアルができてない)
最適化事例
- キャッシュ
- フラグメントシェーダ見直し
- ..
オブジェクトのキャッシュ
- ボトルネックはInstantiate
- ほどんどキャッシュされてなかった
- もっとも不可が高い. hp判定
- Destroyはしない
Audio Clipのキャッシュ
- ボトルネックはLoad
- 必要になった時にキャッシュ (一回でもなればキャッシュが使われる)
- battle内での最適化
Effectのキャッシュ
- 断念. Activeにした時に別座標になる
- 足の砂煙とか
- ParticleSystem以外の制御もあった
GPU Buttoleneck
- マップ画面で処理落ち
- 海のシェーダ FragmentShader
- sinとかFragmentShaderないで使わないでほしい
- vertex shaderに全部移した. 掛け算とかは展開
Shaderの一括変換
- つかってないcolor計算のshaderを一括置換
- PC用の買ってきたshaderを変換
起動時間の高速化
独自のキャッシュシステムを作成
- Caching.readyを待たないで早く起動
- www.LoadFromCacheOrDownloadを使わない
- PlayerPrefsのversion diffをチェック
- 結果: 1分 -> 8秒にios
AssetVersionListの作成
- Path / VersionNumber
- AssetBundle / AssetVersionListを同時にアップ
ファイル読込数の問題
- ロードが早い
- カットシーンで大量のAssetBundleをDLしていた
複数のファイルDL処理の呼び出し
- RequestAssetsCoroutine
読み込み数問題
- 問題点:ちょっと設定値をあげると発現 iOS
- 1ファイルづつcloseしてcompleした
不必要なDLL、コードの削除
- AssetStoreで購入したもののサンプルは完全に削除するか. Editorフォルダ内に入れる
- 1つでもjsがあるとBoo.Lang.dllがリンクされる => 不要なので削除
StrippingLevelの変更
- UnityEngine間で必要なComponentまでStripされた
LinkerSceneを作成
- Stripされすぎるのを防ぐ
- Awakeで削除
AssetBundleのメモリリークの修正
- RC形式を採用
- Release前にDestroyされてしまい, AssetBundleが解放されなかった
Xcodeを使って調査
- FrameDebuggerは超便利
- VRAMの中身をチェックして破棄されてなければならないテクスチャを調査
今後の課題
- CharacterControllerをやめたい
- UIの構築用でない軽量な2d Assetを探す?
- キャッシュで来て大量に表示できるエフェクトシステム
- ダメージパケットなど大量に送信するもののバッチング...
- 全部やれば1.5倍くらいのキャラ出せるのでは?
リアルタイムサーバー
- 廣本洋一
- Serverエンジニア
- 白猫、黒猫
Agenda
- Server System
- Realtime
- Awareness note
白猫のsystem
Realtime
- キャラ変更、ボスの動き
- 雑魚キャラは動きは同期されてない (HPのみ同期)
WebSocket Server
- nginx -> node -> RabbitMQ => php - (batch) -> mysql
- deployすると nodejsのconnection切れてしまう
- nodejs側はコードを固く、汎用的にしている
- php側のバッチコードで代替対応
- 半年移行nodejsのコードは変更していない
マルチプレイ同期データ
- hogt: Boss , self character, stage gimic
- gest: self character, ほかはhostからもらう
通信保証データ
- データが受け取れていないと進行不能になるような重要なデータは通信保証データとして受取済みであることを送信者に送信する
- websocketには3handshakeてきな保証がないので自分で実装
- 反応がないならばgame connection切る
クライアントとサーバーのデータ不一致
- requestは成功するけど、resposeがとれない
- webserver -> db -> webserver -> user
- responseが帰ってない
- client側がtokenを生成してrequest -> キャッシュサーバーでtokenベースでキャッシュ
- webの世界の2重リクエストの阻止と同じ
- GameResult画面でエラーがみたいなケースを防げる
クライアントの数値データの上限値
- ちゃんとDBの最大値を入れてテストする
- client側に入れてテスト -> 失敗
- クライアントの修正を伴う不具合になるのでやばい
- Bigint (server) <=> int (client) で不整合など
Session6: Unity x Sprite Animation
- Whomor
- 木下 (engineer) / 遠藤 (director)
- Maya & unity3d 本, spine本
ゲーム要素
- Architect (仕様)
- Art <= 今回の主題
- Program
- Senario
- Music
Artの表現
- イラスト/UI/3DCS/..
スプライトアニメーションの構成
- イラスト + スプライト + アニメーション => スプライトアニメーション
種類
- コマアニメ: 容量食う
- keyframe方式: flashアニメーションとか. 実装工数高い
チャレンジ内容
- スプライトの表示: 画像の拡縮. トゥイーンとか
- ただひとつのアニメーション: コマアニメ
- 複数のアニメーション: エンジニアのみだと大変.
- 連番画像を大量に. セット指定. つなぎ指定
- これらをすべてに提供するのはムズい
- 専用ソフトつかうのがいい
歴史
- 93' AffterEffects -> 13' Spine/Puppet2D/SpriterPro
3つ紹介
- Autodesk Maya
- Spine
- Puppet2D
- SpriteStudio
アニメーションのワークフロー
- メッシュ機能をつかったdeform animationいい
デザイナ共通手順
- イラスト書く
- パーツ分割
- scriptで画像を書き出し (手で作業するのは大変)
Mayaのワークフロー
- パーツの数だけshaderを作る
- パーツのレイヤーを設定
- IKを設定
- アニメーション設定
- fbxをexportする
特徴:
- 作業大変
- MELScriptで効率化すればいいかも?
Spineのワークフロー
- ...
特徴:
- なれると簡単
Puppet2Dのワークフロー
- ...
特徴:
- なれると簡単
- Unityになれてれば簡単・・・
エンジニアフロー
Spine
- 公式SDKをUnityにImport
- データimport
- Mechanim Animationでオブジェクトを生成
- Animator Controllerを作成
- 2015/2から公式がmechanimに対応
特徴
- エンジニアにやさしい
Maya
- FBXデータをImport
- Animationをモーションごとに分割
- Animator Controllerを作成
- Animationで手戻りがはっせいすると大変
Puppet2D
- AnimationControllerつくるだけ
- 工数が発生しない
- ただデザイナーとレギュレーション握る
ソフトウェアを検証
デザイナ視点
- Spineはdeform / ik機能などいい感じ
- しっぽをどうしても滑らかに動かしたい => Puppetに
- Mayaはちょっとオーバーキル
- fbxからのインポートが面倒
エンジニア視点
- 工数がpuppet2dが有利
- 仕様変更に耐える -> Spineが有利
- Spineがデータ変更ですぐに反映できるのでSpineよい
- Puppet2Dは位置座標、スケールなど調整が必要なので出戻り辛い
マネージャー
- Spine ...
- puppet2d $60
- maya $5000 + $6000
- 分業はSpineやりやすい
- Puppet2dはサポートがないけど、そんな必要でもないかも
- Puppet2DがUnity上で同時編集必要なので辛い
まとめ
- Spine: 万人向け, updateもはやい
- Maya: 機能的に最高. 十分にpreproductionするチーム向け
- Puppet2D: Unityのinterfaceの改善に期待. 普段からUnityに慣れているならばよし
Session7. Unity Google Extreme
1 billion Android 3/4がgame playしてる 7billion支払い => 8400億円
去年の話
- Standard Technique for Success.
- Game Developer Best Practices
- quality/core.htmlをまもる
- TagManagerは面白いが今日は割愛
- Admob収益化もいいよ
- サービスのためのpluginは... url...
Developerが直面する問題
- 最新のAndroid Versionに準拠. Android Themeに準拠が必要
- だが、UnityはJingerbreadにcompatibilityが設定されている
- Custom Pluginで設定は可能
- Plugins/Android/いかに配置するといい
- Manifestでtheme設定など
- AndroidCodeを作る必要はない. 1度で使いまわせる
Unity Google "Extreme"
1. Android TV support
導入すると注目のチャンス. Unityならば簡単にintegration.
- mobileと全く同じ. GooglePlayの画面も同じ. Standardization.
- Android Ecosystemが大きく拡大. 多くのメーカーが開発する.
テレビでゲームをする時の問題.
- 離れた場所からコントロールするDPADが必要
- 方向キー: 上下左右 + Center / Back + Select
- github.com/CMZCODE/GamePadSampleUnity
- nvidiaの友人がbest practive作ってる
- permissionでgamepad加える必要あり
Middlewareに注意
- Permission.
- UnityでのAsset/Plugins/ directoryに追加が必要
PlayGames
- CloudSaveはべんり
- Quest/Leaderboardは維持率をあげる
Second screen & multiplayer gaming
- Nearby Connection API
- 近くのものをコントローラにできる
- 同じネットワーク上ならばすぐに認識される. P2P Connection.
- ローカルでのマルチプレーヤーゲームができる
- Signinをわざわざする必要がない.
LyRicle事例
- Android TVをつかってアンケート
2. GooglePlayGame Services
成功しているdeveloperがやっていること
- 1日あたりの売上目標値
- うけているところ、問題点をみつける
- Analyticsをつかってどのようにゲームを進めているのか解析
Developerの違い
- 大型のチーム: 専門チームが別個にいる
- Indie Developer: 少人数. 1人. なんでもやる. データ分析はあとに
PlayGames Player Analytics
- 1日あたりの目標値
- hotスポット
- Understand players
GooglePlayGameServices無償でついてくる
まずは売上目標
- もし目標を下回っているなら... HotSpotを探す
- 他の会社とベンチマークする. (他の会社に対して劣っているところが見える)
- 他のゲームに乗り換えている人、ユーザの進行度がわかる
- 全部何も設定せずにできる、そうGooglePlayGameServicesならね
BomSquad - Eric Froemling
- 自分でゲームエンジンさえ作成
- 1ヶ月ほどまえゲームはよかった. 収益を出してなかった
- Sources And Sinks Reportをみてもらった.
- ゲームのお金通貨を使い込む前に. 過剰提供していた
- もっとチケットをつかう機能を得た. => 財務体質改善
- 課金ユーザ 70%増加. 売上x2
Sources and Sinks Report
- PlayGamesPlatform.Instantiate.....
復習
- 売上目標を決める
- hotspotを決める
- 改善
Cardbord
VR for Everyone
- 100万install
- 光学系、マグネット、NFCタグ
BiteSizedのVRとよんでる
- もりまさひろ. 不気味の谷現象.
- VRも同じ好感度カーブがある. => ある閾値からすごく気持ちよく. その手前はすごく気持ち悪い
- フレームが高過ぎるとかえって気持ち悪い
- VRの不気味の谷の前にあるもの
- 覗き見感覚. 視野が全部置き換えられたわけじゃない. カジュアルなVRを提供
GoogleMap
- 2回タップすると StreetViewを3Dモードに出来る
- すごい!!
CardbordとUnityの統合
- Cardboardのpluginを追加.
- MainCameraのしたにStereoCameraを入れる
- ステレオに
- ...
Publishing Cardboard VR
Unite 2015 Day1 めも
KeyNote
David
John Riquid Tailer Talk about push way.
- Incredible Graphics
- Feature rich & high flexible editor
- Industory leading multiplatform support
- Unmatched efficiency boosted by the Cloud
- Tools for more efficent developing
Professional Edition
- Team LIcence
- Unity Cloud build Pro .. task
- もういちどね
- Access to Betas / Previews
- Unity Analytics Pro
- Game Performance Reporting ( crush report / performance …)
- Unity Asset Store Level 11 Deals
- Same Price as Unity 4
Personal Edition
- Unity 5 engine with all feature
- Physics based Shading , Enlighten , reflection probes...
Incredible Graphis
- PBR
- Global Illumination with Enlighten
- Reflection probes
PV
- html5 っぽいロゴ
- 剣士と呪術師が戦う
REPUBLIQUE demo
- hide and seek
- 2年前のunite japan.
- 発売前のプロダクト紹介した
- 少人数での開発
- モバイル、PCので開発ができる
- 2月に発売したゲームはunity5 の全機能をつかった
- PV
- Criware
- エピソード販売形式
- facial captureをつかっている
- iOS Apple Featuresもらった. ひょうばん上々
- unity 4 -> 5: PBR
- 3月にunity.comにどうやって移行したかの内容をupした
- 次のプロジェクト camouflaj
- ゲームのクオリティよりも課金に集中していてがっかり
- 高級なエンタメ. 小説や映画のような経験を提供したい
- 感情表現が豊かにできる
- FF15 / Bladbone / MGS など楽しみ. そんな名作をもっと作ろう
- unity3d.comに無料のプロジェクトファイルをアップした => やばい
demo解説
- ライティングwindow追加された
- ambient intensity / indirect transfor (反射光
- iraradienceを使うと環境光の影響のみを見ることができる
- emissive material 蛍光灯素材のようなものも設定できる
- metaric = 1 / smoozeness = 1 => 鏡
- reflection probeで拾った影響をそのまま適用する => パフォーマンスよくしながらより良い影響
- StateMachine Behavior
- Mixierの方で3d選択が含まれる
- スナップショットを切り替えるだけで、音量調整一発
- duckingで他の音量を下げてる
Feature-rich & Highly Flexible Editor
- 64bit editor
- PhyscX 3.3 upgrade
- Animation improvements
- new audio tools
- ...
Industry leading multiplatform support
- AnyPlatform..
Unmatched efficiency boosted by the Cloud
- WebGL
- IL2CPP / .NEt Performance Test
- Performance / arm64 0.64s -> Mono Armv7 5s
- Amazing!!
- IL2CPP : PS{3,4,Vita} Xbox WiiU
- Massive R&D
- 300 developers & hiring.
- New NINTENDO 3DS support !!
VR
- Palmer Lucky / Oculus Fouder
- Indie game & professional games developer
- Great consumer VR isimminent - and we are not alone.
- Unity + Oculus: workflow improve 120fps multiple rendering, easy to target ...
5.1beta VR integration demo
- player setting other: VR support
Unmatched efficiency boosted by the Cloud
- Cloud Build - without your computer. 10 min
- Alyways available . Ease of distribution
- source control
- Detect commits
- Build in the cloud
- Install & test
- build.cloud.unity3d.com / FREE | Pro $25 /m| STUDIO $100/m | ENTERPRISE
Unity Ads
- Helping developer make a living
- 1500 games
- 3 of TOP 10 iOS games
- GREE / CyberAgent supports
- 3.5 億 / 3month
Session1. ここが変わる!Unity 5のスマホ開発 ~アセットバンドル、ビルド、プラグイン~
Speaker
- unity technologies japan. evanjelist 伊東周
Asset Bundle
- Qiitaの記事
今まで
- 複雑
- ビルド時間かかる
- 依存関係めんどい
- 互換性がない
解決方針
- シンプル (ランタイム、ビルド方法)
- Incremental Build
- 依存性はunityが解決
- 互換性を保持
- 新旧まぜるな危険
変更点
- AssetBundleのビルド方式
- ...
ビルド方式
- Asset / AssetBundleを結びつける
- ビルドスクリプト呼ぶ
拡張子 .unity3d でなくてもいい
名前付け
- 小文字のみ、同名禁止、パス構成 / が有効に.
- assetImporter.assetBundleName = assetPath しとけば一応名前付けずに使える
Buildスクリプト
- 出力パス
- BuildAssetBundleOptions (後述)
- 出力ターゲット
BuildAssetBundleOptions
- IgnoreTypeTreeChanges (オプション)
- ソースコードが健康されても変更したとみなされない
- DisableWriteTypeTree
- タイプツリー自体を削除 (サイズ削除)?
AssetBundle Version
- 5.1 -> 5.xで互換する. (5.0はバグあり)
依存
- AssetBundleManifestで依存解決
- Single Manifestファイル => 依存関係を解決できる. ランタイムに読んで使用
- その他.manifestファイル => マテリアルごとに出力される
- ふぉるだめいが親玉マニフェストファイルのベースネームに
Variantとは
- Runtime時に読み込むAssetBundleを変更できる
新しいRuntime
- files.unity3d.com/.../users_assetbundle-demo.zip : サンプルプロジェクト
- AssetBundleManager.cs
- BaseLoader.cs
1.基本のロードの仕組み : LoadAssetAsync 2. 依存関係解消: ABに依存するリソースを自動で取得 3. エディタエミュレーション GetAssetPathsFromAssetBundleAndAssetName 4. Variantsを使った切り替え => 最後の名前を付け替えてる makoto-unity/NewAssetBundleSample
マルチプロセスビルドHack
- Projecct 複数コピー / symlink Assetsはフォルダの中身をリンク
- Unityはバッチモード Unity -quit -batchmode -projectPath [] -executeMethod BuildScript.cs
- スクリプト公開する
- 運用は自己責任で
ビルド
IL2CPP
- Before => Xcode -> Armv7
- Current => (c++ =>) Xcode => Armv7 / Arm64 : armv7のサイズ若干大きい
- Future => (c++ =>) Xcode => arm64
Plug-inの設定の変更
- フォルダ内に入れなくても、チェックでOK
- 依存するFrameworkを選択可能
- コンパイルオプションを設定可能
- 全部再設定しなくちゃダメ? => Plugins/iOS/に於けば自動で認識
- 「がぞうはPluginとしてにんしきされない」 => Plug
NativePlugin
- objc_getClass / objc_msgSend ( C# -> ObjC )
- 引数使えない
- tsubaki1.hatenablog.com/...
Session2. GLOBAL ILLUMINATION IN UNITY 5
PV
- SHADOWOOD
AGENDA
- What is Enlighten
- How does Enlighten work?
- Realtime Reflections
- What’s next
ENLIGHTEN?
GI Output
- precompute
- realtime lightmaps
- Realtime Light maps
- Realtime cubemaps (5.xで入る予定)
- baked lighted maps
- based ..
間接照明しか無い 低周波 L1の表面関数
Based GI OUTPUTS
- high resolution baked lightmaps
- direct lighting / ao / indirect lighting... 比較的計算コストは安い
- ほぼ静的なライト、モバイル向け
WHAT DOES REALTIME GI MEAN
- 反射率. Shaderのカスタマイズ、オブジェクトの係数
WHAT CAN YOU DO WIth THIS?
- 一日の表現
- ものの光、ヘッドライト、フラッシュライト、爆発、ムードライト、発射時のライト
- Blacksmith: 間接光の反射が表現できる
WHAT CAN YOU +NOT+ DO NOW
- 動的にあジオメトリバンスライト
- 動的なジオメトリでの発行ライト
- 環境に関しては基本静止
- SceneをStatic / Dynamicに分ける必要がある
- 完全な生成型のライト環境はまだつくれない
SMOKE AND MIRRORS - THE TRICKS
- boxの中であえてレンダリングしないなど
HOW DOES ENLIGHTEN WORKS
- レンダリングの積分関数を最適にとく
- エネルギー関数
- radiosityは計算コスト高い.
- pixel数を小さくしてnを小さくする
- repackageする
- Lightmaps are low res and tightly packed
- Emittor / ReceiverをDecouplingする
- clusterをtexcelで分割、より大きなクラスタから光を設定していく
- texcelの16倍高速化
- クラスタ改装を構築して、上方向にmergeしていく
- treeのcutを明示的にしていく. (エリアの最小化. merge)
- 突合していく
- 定数k (budget)が シーンのリッチさにつながる
HOW DOES ENLIGHTEN WORK?
- Phase1. Prime clusters with direct lighting
- クラスタごとにてんセットを持つ
- 直接光の評価
- Phase2. 事前バウンスライト読み込む
- UVをクラスタにassignする必要がある
- radianceを
- Phase3. Gather
- 64-256 の間のクラスタ数で切る. 複数回足す
- platformごとに最適化している
- reframeが少ない、データ量が少ない
- CPU側ですべて行われている
REALTIME REFLECTIONS
- 反射に対して適切に行う
- 球面反射を行う
- Boxを作りその中の影響だけを適用する
- 表面によって反射具合は変わる
SMOOTHNESSを使う - Cubeのmiplevelでスムーズさをカエルことができる
REALTIME REFL. PROBE CONCL.
- GPU上で動く
- シームレスmipmapを生成する
SCHEDULING
- タイムスライスを行う
- 複数のフレームを使って畳み込む
SCREEN SPACE REFLECtiONS
- ImageEffect built-in deffered shading pipeline
- レイマーチング
- SSRで間接反射が表現できる
WHAT'S NEXT
- FixBug : ユーザが使うworkflowとの差分がないか?
- Documentation improve : video / web
- Optimize the precompute / base phase
- LAN Lighting Build : 同じネットワーク内の危機を使ってビルドする
- Cloud Lighting Build : クラウドでビルドする
- Level up iteration speed. PowerVRとインテグレートする: 何度も繰り返す処理を早く
- Improve mixed realtime/baked shadows
Session3. Unity 5グラフィックス機能使いこなしガイド
- 高橋啓治朗
- 普段つかっている機能でちょっと使うと便利な機能とか紹介
TOPIC
- Lightingの新機能
Realtime GI の基礎
Unity5 graphicsガイド実践編 => 後日配信
LIGHTING
AMBIENT LIGHT
- 3方式に
- Skybox
- Gradient
- Solid Color
Window -> Lighing Ambient Source
- Skybox: ちょうべんり
- Gradient : グラデーション 3上中下で設定できる
- Solid: 単色
SKYBOX
- PROCEDURAL Skybox : 生成型
- Cubemap Skybox : パノラマ画像
material : Skybox/Procedual
- Sunの設定: 太陽が自動ででる. 光源自動
- Atmosphare Tickness : ゆうやけかん。水星線
- sky tint 空の色味
- exposure: 絞り
Skybox/Cubemap
- panorama image
- sidl archiveからDLしてきた / .hdr, .exrをDROPするだけ
- Cubemap apply
- 太陽の方向を合わせておくだけでちょっとクオリティアップ
CAST SHADOWS OPTIONS
- Two Sided : 洞窟内とかきちんと影出る
- Shadows Only : 影のみみえて見た目はきえる
PCF SOFT SHADOW きれいなソフトシャドーがでる
BAKED SOFT SHADOW
- Baked Shadow Angle
- 半影の部分. 0度 -> 8度
SHADOW BIAS
- バイアスを掛けてアーティファクトを除去する
- Bias: ちょっとさきにする
- Normal Bias: 法線の逆方向に小さくする
- アーティファクト: しましま
- Normal Biasで遠ぽうからの影を消せる. Biasだとかげのしっぽが出る
- かげの助が出るときには、NormalBiasを低く、Biasを高く
REALTIME GI
グローバルイルミネーションとは?
- 光源から食せつ照らされている範囲のみだったが
- Indirect Lighting: 間接光の表現ができるようになる
General GI
- Indirect Intensity: 間接光の光源を適用
- 光源が移動した時に間接光も変化
REALTIME GI
- static フラグをつけると, Spotlightの間接照明
- Diffuse materialのベイク処理を前計算する
- 動き回るdynamicなobjectに影響与えるには、LightProbeGroupを置く必要がある
- おくとprecompute
- おいた地点に対して間接光. 最近店に対して間接光が当たる
Reflection probe
- staticなobjectのspecularに間接光を適用する場合に利用する
- これもおいた瞬間にprecompute
まとめ
- DirectLightingはかなにもかんがえなくていい
- Indirect Lighting (diffucse) は light probeないと動くものには反映されない
- Indirect Lighting (specular) は reflection probeがないと動くものには適用されない
default specularはSkybox. Skyboxの内容が映り込む
- specularが意図せず青白くなっていたらreflection probeを設定しわすれの疑い
間接光の法線マップが適用されない
- directional light
- Directional Mode -> Directionalを追加すると、どの方向から光が入っているか近似してくれる => 法線マップが適用される
- Directional Specular Mode -> 追加情報をつけたして、シェーダの機能が引き出せるようになる
- デメリット: 計算量。容量。表現が曖昧になる (代表的な光の方向1塔のみをつかうようになる)
- このような場合は、reflection probeででかてか反射を表現するのがよい
Reflection Probe
- つなぎは?
- 多重反射は?
- リアルタイム反射は?
- BoxProjectionは?
Cubemapを行き違うときにぱりぱりっとなる
- Reflecion probeを blend optionにする -> もやっとなる
多重反射
- 逆のreflection probeを表示するときには真っ黒になる
- reflection bouncesを回数増やせば、真っ黒領域減る -> 2ぐらいまではいいかなー
- reflection probe type: bake -> reatime にする
- fresh time: every time (動きがうつる)
- Time slicing : Individual Faces がずれるがふかすくない
- Time slicing : Noneで完全一致。ただ画質が落ちる
Box Projection
- Classic Cube mapping => 近くを移すと不自然
- Reflection probeのbox projectionオプションをつけるとリアル
- 無限遠には程遠いならば、あり、
- モバイルではつかえない、ちょっと重い
- 立方体の環境
Session4. スケルトンを用いた2Dキャラクターアニメーション開発 虎の巻
Advanced 2D Charactor Animation
Veli - Pekka Kokkonen
- 2D & animation tools @Unity
- Used Unity 8y
2D Character Animation
- wrorkshop styleで発表するよ
- キャラクタの階層
- 整列方法
- poseを生成
- アニメーションの記録
- アニメーションイベント
- Ragdoll
2D Character Animation
- public APIで作成
- bitbucketで利用可能. 最後のスライドでlinkを貼るよ
workshop
- SpriteSheetw用意
- SpriteEditorで領域指定
- 最小領域を自動でとってくれるよ
- pivot pointを指定する (間接に当たる)
- Spriteの中のパーツになまえを付ける
- partsをDR&DL
- 親子階層をしっかり設定する
- 階層の設定でpivot点に対して回転ができる
階層を作る
- order in layerで設定
- Add Compnent Sourting Group
- Gruopないでオーダーを設定
- Sorting Group (Script)
- Sortting Mode Hieralchy : default -> 親が後ろのソーティングレイヤーになる
pose設定
- objectを複製
- sorting groupで次の動作を前に
- あとは変更する
Invertse Kinematics
- Inverse Kinematics 2D (Script)
- 肘がうしろに曲がってしまう
- 最大角度と最小角度を指定すると行ける
- 3点: End Transformを指定することでそれ以上は曲がらないという指定が可能
- Joints: 2
- 小さな円が角度、大きな円が場所
アニメーションの記録
- ポーズを整えて保管するだけ
- アニメーションでソーティンググループをカエル
Animation Event
- Override Animationにチェック
- Cueをつくって設定するだけで追従
...
- Polygon Collider 2D を追加
- Hinge Joint 2D を追加. 間接のナビゲーションを追加できる
- キャラクターの造形を保ったまま、当たり判定ができる
DL
Session5. Unity for New ニンテンドー3DS
Hiroki Omae @Unity technology
New ニンテンドー3DS
New じゃないニンテンドー3DS
リリースプラン
- 2015 夏: 任天堂に提出可能なβ版をリリース予定 / 一部close になる可能性あり
トピック
- 調査研究、考え方
- 移植開発した話
- 実機デモ
調査研究
- モチベーション: みんなのゲームがどのくらい動くか?
- 方法: 市場にでているアプリを調査. メモリ使用量やCPU使用率などチェック
- ハードのパフォーマンスを比較検証
- UnityGameJapanで扱ってるゲームを実際に移植
はじめ
- BlueScreenにキューブを出す
- テクスチャ貼ったQube
- Scriptのサポート
- ..
サンプルプロジェクトで検証
- 2D/3Dのサンプルを移植 (platformerとか)
- key入力とか、シュミレーション
Robot Invador
- ねじ巻きナイト2
- WiiU 版を Unity Games Japanで担当
3DSへのゲーム移植の課題
テクスチャの最適化と調整
- 400x240 (3DS)では不要
- 見た目の悪いテクスチャサイズをあげる
- 50% - 60%のメモリ容量に
mandelbrot benchmark (CPU)
- Android Nexus5 (Mono) < iPad Mini Retina (IL2CPP) < Nintendo (IL2CPP) < iPhone6 (IL2CPP)
- 現在のミドルレンジのスマートフォン向けのゲームならば大丈夫
エンジンの最適化: Z-buffer on / off
- pixel shaderの処理がない
- z-buffer必要ないゲーム (2D/2.5D)はいい感じ
- ちょい早
3画面: 上両眼 + 下画面 で 60fps
- Profilerでチェック
- 1位. Idol Threadでがら空き
- IL2CPPがすごい
Programmable VertexShaderはあり. Programmable FragmentShaderはなし.
- ShaderLabをつかった一般的な解決方法をチャレンジ中
- 固定ピクセルシェーダーに変更
スクリプト対応: ねじ巻きナイト2
audio
- Android: ogg/vorvis
- editor上でbuild時にnintendo 3dsフォーマットに変換
エンジンの最適化
- ゲーム自体は毎フレーム再描画が必要
- UI描画は重いので、不要なときに特定の画面を描き直さないオプションの追加を検討
2D モードの改善 (今後)
- 3D volume は off にできる
- Anti-alias 処理など
まとめ
- 2015夏頃にリリース予定 (ベータ版)
- middle rangeのスマートフォンターゲットのゲームなら一考の価値あり
- GameEngine は DogFoodingが必要なのでUGJでサポート
QA.
Native Pluginはやる?
Enlighten support?
static light mapはsupport
PBRはむり
Network support?
TCP only
- UDP is not
UNet がサポート予定
Local Network support? (adhoc networking)
Native pluginでそのまま使え.
betaはマイナー機能のサポートしない.
Build time?
IL2CPPが時間食う
- 5min
Session6. Asset Store マニアックス
- FreeLance x2
Unity Asset Press
- Asset紹介カタログ (本)
- AssetStoreのオススメを多数紹介
アセットが超特価になるプラン Level11
デモゲームを交えたオススメ
縦シューティング
BIG Environment Pack [$50]
- 地形とか、家とか、skyboxとか
- 中世風
Origami Pack [$2]
- 折り紙で作られたオブジェクト
- 蝶、鶴...
Sky5X One [free]
- skyboxに設定するテクスチャ
- 朝夕、夜
- よさそう
Elements [free]
- 50 effect
- 爆発、雷とか
Simple Particle Scaler [$2]
- パーティクルの大きさを変更する
Free SciFi Fighter [free] HighRes Shuttle Class Starship [free]
- 便利
iTween Visual Editor [free]
- 2秒かけて250までみたいな.
Computer Font Pack [free]
- 無料
- fontがいっぱい
少まとめ
- ゲームのモックとして作るにはいいのでは?
アセット事例
ホラーゲーム
フィールド: 3D建物
- Church & Graveyard [$45]
- ホラーテイストでいい感じ
Character
- Unity-chan! model [free]
Cartoon Zombie [Sample][free]
- animationつき
- 走ったり徘徊したり
Female Walk Animset [$25]
- 腰を利用した女性らしいモーション
TakeDown Animations [free]
- CQC
Parkour & Acrobatics Animation Pack [$25]
- Assasines creedっぽい
Footsteps SFX Ultimate Pack [$15]
- 水たまり、鉄板、カーペット
Effect
Simple Torch [free]
- クオリティ高い、火加減調整可能
MEGA 504+ Fire&Fog Magic...
- 火とか霧...
debug log
Live Console [$15]
- 多機能
- ログの検索. 注釈など
カメラワーク
Camera Path Animator [$35]
- カメラワーク設定アセット
- パスをつなげていくだけで簡単にカメラワークが設定できる
- べんりそう
- パスにそってキャラの移動に合わせて移動とかも簡単
ImageEffect
Bloom, 魚眼レンズ...
Colorful - Image Effects [$40]
- モバイルでもつかえる
- アナログテレビ ー霜がついたエフェクト
- heatmap
- 水に入ったゆらぎ
- ...
- vintageで古めかしく
大手開発会社におけるAssetの活用
interview: Colopha / SQ
NGUI: [$95]
- アニメーションがつけやすい
- デザイナーがデザインつけやすい
- LiveConsole [$15] (Colophla) / Editor Console Pro [$25] (SQUAREENIX)
AI for mecanim [$70] A* Path finding Project Pro [$100]
- 企画の人がAIをいじったり
Effectたくさん買ってる
- Shuriken Magic Effect Pack [$35]
- 教材としてつかっている
Unity導入のメリット
Assetに学ぶ
- Effect Assetを購入して理想エフェクトの参考に
- 完成プロジェクトからゲーム実装方法を学ぶ
Unity Asset Press本購入してね
「これだけ! KPT」を読んだ
- 作者: 天野勝
- 出版社/メーカー: すばる舎
- 発売日: 2013/08/23
- メディア: 単行本
- この商品を含むブログ (9件) を見る
なぜ読んだ?
最近自分の周囲のプロジェクトでKPTが流行している。 各プロジェクトいろんなアプローチがあって、うまくいっているケースとうまくいってないケースがあるなと感じてる。その原因を知りたいなって思ったのが1つ目の理由。もう一つは、リーダーらしいものを任される機会があって、何をどうすればいいのか悩んでるから。自分だけが空回りする状況になりがちだし、もっと自律的な集団にしたい。そのヒントがあればって思ったのが2つ目の理由。結果、読んでよかった。
リーダーってなんだろ?
リーダー=MTGをまわす人ってくらいの認識状態の僕は、読了後にふりかえってみると失敗していたんだなと実感できる。 本の中で言及されているのだけど、何でもかんでもやってしまう一見有能なリーダーってのがよくないパターンで出てくる。MTGの準備もチームのためのアクションもすべて自分でやらなきゃダメだって勝手に思っていた。それで「提案する自分」と「それに合わせてくれてやっているメンバー」っていう構図が自然に出来上がってた。何かやらなくちゃダメだって、もっと変えていきたいんだって思うのだけど、それは僕のための集団でメンバーのための集団ではなかった。リーダー型でない、自律的な集団であるには?って点が本書では言及されていて、気になる人は一度読んでみるといいと思う。
KPTの形
「KPT? Keepは続けたいこと、Problemは問題になっていること、TryはProblemに対してActionしたいことでしょ?」この本を読む前はこんな認識だった。そして読了後に、この認識の浅はかさに気づいた。 KPTはなにかいいらしいと噂だけを耳にした僕は、5分でサクッとやるKPTという題目で導入していた。なんとなく溜まっていくKeepに満足しながら、変化がないproblemや実行されないtryにこれでいいのかって疑問を覚えつつ、何も改善しないまま議論も真剣にしないまま、最近はただの問題共有の時間に成り下がっていた。 KPTはやはり改善を促すためのフレームワークだし、tryとactionの時間、そもそもの実施する意義をきちんと合意できていなかったのが良くなかったと思う。それに永続化したKeepを剥がすって基本すらしらなかった。 本の中では、会議のカイゼンのためのKPT (個人的にこのアイデアが一番おもしろかった)、学習の振り返りのためのKPTなど種類を広く具体性をもって解説している。また時間の配分の仕方、Keep/Problem/Try/Todoといった別の形、5sなどの他の思考フレームワークと合わせて考えるなど紹介し、細かいテクニックや示唆とヒントに満ちている。 今すでにKPTを行っていても、それがうまくいってないか疑問をもっていたり自信のない人は一度読んでみることをオススメする。