ぷらこあ

ゆるふわゲームクリエイター / イベントオーガナイザーを目指してます

ゲーム開発マネジメント勉強会 vol.2 に参加しました

ゲーム開発マネジメント勉強会とは

management-for-game-development.connpass.com

@tk_adio さんが立ち上げた ゲーム開発マネジメント研究会 が企画/運営を進める、ゲーム開発に特化したマネジメントの勉強会です。第1回 が7月に開催され、2回目の開催となる今回はゲーム開発マネジメントに携わるメンバーによるトークセッションが行われました。

登壇

ゲーム開発マネジメントの現場から / 開発上がりのPMが気を付けていること

最初は株式会社サイバードでプロデューサーをしている谷 昌宏さん。普段はソーシャルゲームの開発/運営に携わっていて、ゲームサイクルや運営周りのディレクションも行なっているそうです。

📝考えているPM感

  • ゲーム開発において、デベロッパーの末端に行くほどアジャイル/スクラムが形骸化している
  • 裁量が不明瞭であったり、責任に裁量が伴っていないことがある等「意識が希薄」な現場が多い
    • プロジェクトマネージャーが不在/プロデューサーだけど実際はディレクター等
  • PMの能力の良し悪しがチームの幸不幸に関わるのに対し、現場のマネジメントに対する理解が薄かったりする
    • パフォーマンスを出すために "役割を啓蒙する" のも大事だと考える
    • PM以外の他の誰もやってくれないことではある

📝 事例集: "実行" のレイヤー

  • マネジメントにおける実行は リスク管理 にも置き換えることができる
  • 計画通りに行かなかったら何が起こるかを予想し、バックアッププランを立てる
  • リスクは 影響度発生率 の2軸で評価する
    • この軸をPM一人で判断するのは無理
    • ディレクターやリーダーと一緒に視点をたくさん持つ
    • これをどれだけ丁寧に入念にやっていくかがリスク管理の肝
影響度
  • どのくらいの人やタスクに影響があるか
  • 例えば、ゲームのコアが固まっていない場合、影響度が高い
  • 技術サイドから見たら影響度が高いケースもあるので、ゲームデザイン/仕様に止まらず、開発メンバーからリスクをボトムアップする仕組みや関係を構築するのが大事
  • 問題を組み上げる仕組みの一環として、PMは開発チームの中に席を作って一体感を持ってやる等
発生率
  • 経験やスキル、スタッフの実績を見て発生率を判断する
  • 期待に対してブレることもあるのでフレキシブルに評価を変動する

📝 事例集: "計画" のレイヤー

  • 「新作の打ち上げが伸びなくてまずいからなんとかして」
  • 改善ポイントが多くて対策していく必要があっても、終わりが見えない感じを見せないことでモチベーションを担保する
    • 目標をシンプルにする
  • 計画レイヤーで、ゴールに向かっている実感が得られるKPIを設定する
  • プレイヤーズジャーニーをKPIにするのも実感を得やすくてよい
    • ガチャでSSRを引く/ストーリーの山場を迎える等

📝 事例集: "ゴール" のレイヤー

  • 「現場が炎上していて、開発遅延中なので立直ししてほしい」
  • やっちゃいけないのは「今の作業をみんな頑張れ」
    • 炎上しているステータスを認識しているはずなので、終わりの見えないゴールに取り組むことになる
  • マネジメントの面から見ると 「どれだけ安心して仕事が出来る環境を作るか」 が大事
    • シンプルなゴールを提示する等

📝まとめ

  • 開発マネジメントとは開発を統括し、ゴールを目指すこと
  • 道筋を示して、リスクの把握と対策を継続的に実施すること
  • 安心して開発に打ちこめる環境を作り、それを改善し続けることを心がける

トークセッション

登壇者
  • 湯前 慶大さん: 株式会社アカツキ VP of Engineering/認定スクラムマスター/認定LeSS実践者
  • 山浦 大輔さん: 株式会社DeNA ゲームコンテンツ事業部 第一開発部 エンジニアグループ マネージャー
  • 山田 元基さん: 株式会社QualiArts 技術責任者/プロジェクトマネージャー
  • 開 哲一さん: ワンダープラネット株式会社 執行役員 VP of Engineering

f:id:lycoris102:20181021122114j:plain

今回は事前にヒアリングした各項目に対して深掘りするようなスタイルで話が進んでいきました。

内容

📝開発手法について

  • 完全にスクラムとは言い難い組織が多かった
    • 例: 初期の計画や納期をガッツリ組んでいるところが理由で「終わらない」という課題感を避ける
    • 例: プロトタイプはアジャイルで作ったりするが、それから先は計画引けるのであれば引く

📝 BTS(Bug Tracking System) / ITS (Issue Tracking System)

  • JIRA は使いこなせる人が使える印象があり、全員が親しみやすく使える訳ではないという声
    • ただしリリース後のバグトラッキングツールとしては優秀
  • また Wrike を使っているチームもあった
  • 物理カンバンが見える化の側面と使い方の自由度の側面で人気があった
    • アナログは過去のタスクのトラッキングがしにくいがフロー情報として扱っているとのこと
    • もしくはJIRAより機能を落としたカンバンツールとして Trello を上げる人も

📝その他ツール

  • 情報教諭手段として confluence が採用されている組織が多かった
  • 仕様書に関しては、企画者がけっこう好きなツールで作っているとのこと

📝プロジェクト初期にやっていること

📝ふりかえり

  • KPTは1on1でも使用している
  • KPTの他にはサンクスカードを使ったりしている組織もあった

📝PMがメンバーに自己管理をどこまで求めるか?

  • 自己組織化したチーム/PMの役割がいなくてもスムーズに進むチームが理想
  • その上で、マイクロマネジメント/小まめなメンバーに対するケアが必要かどうかという話
    • タックマンモデルにおける形成期では必要なケースは多そう
    • その過程の中で「問題のシェア/発信」「自分自身のパフォーマンスを最大化するセルフマネジメント」の訓練をする
    • 自分でできた方が、その人のやり甲斐にも繋がる

📝オススメの書籍

SCRUM BOOT CAMP THE BOOK

SCRUM BOOT CAMP THE BOOK

Value Proposition Design: How to Create Products and Services Customers Want (Strategyzer)

Value Proposition Design: How to Create Products and Services Customers Want (Strategyzer)

🍻懇親会

感想

他社がどういうプラクティスを使って開発に臨んでいるのか、あまり表出する機会がないので、こういう勉強会は非常に貴重な機会だと考えています。今回のお話は結構ゲーム分野以外でも同じようなやり方をやっているように感じていて (それ自体は悪いことではなく需要はあると思うのですが) 欲を言えば 「ゲームならではの差異や悩み」 みたいなのがあれば、今後いっぱい聞いていきたさあります。

▲この「ハピネスドア」というプラクティスによるアンケート集計、とても書きたくなったので良さそう。

運営メンバーのみなさん、登壇者のみなさん、ありがとうございました! f:id:lycoris102:20181021125206j:plain

KPTのカードを棚卸しする際にTrelloのリストを使用して細かく分類してみた話

🌇背景

lycoris102.hatenablog.com

現職では業務改善のため、2週間に1度ふりかえりを実施しています。フォーマットはKPTTrello を使用しています。上記の記事にも記載しましたが、Trelloを使用しての所感は以下の通りです。

メリット
  • 事前にコメントで不明点や具体的なケースが深掘りでき、時間が削減できる
  • コメントで捕捉できるので、見返したときに抽象的になりにくい
  • リモートワークでも参加できる
デメリット
  • 各自の手元のPCを注視しがちで集中しにくい
  • 紙に比べて視認性が悪く、全体を網羅しにくい
  • 常に目に見えるところに置いておけず、見える化しにくい

Trelloを使用してのKPTを開始して半年経過しましたが、デメリットにおける 「紙に比べて視認性が悪く、全体を網羅しにくい」 という点が非常に悪さをしていました。継続していきたいKEEP/チームとして取り組むべきPROBLEMがカードの蓄積によって埋もれてしまい、意識することが出来ない状態になってしまい、結果として過去を見返さない進捗報告会のようなスタンスになっていました。

🗑棚卸し会

そこで古いカードの中で「既にチームに定着したのでKEEPに配置しなくても意識できるもの」「既に解消されたか時間経過によって問題ではなくなったPROBLEM」を廃棄して、見通しを良くする 「棚卸し会」 を開催することにしました。今回は既に予定されていたふりかえりの時間を使用することにしました。

🛠やり方

Trelloのリスト機能を用いて、 分類用のリスト を作成しました。これらのリストに関して 事前に 各自で割り振ってもらいました。カードの作成者にカードにアサインしてもらっているので、最低でも各自が作成したカードに対して、分類を促します。ただし、他の人の意見を聞きたいものに関しては議論するので、そのまま残してもらうようにお伝えしました。当日は、割り振りが適切かを各自で目視してもらい、違う考えがあれば声を上げてもらうようなスタイルで90分の枠を過ごしました。

f:id:lycoris102:20181017094234j:plain ▲非常に横長いリストになってしまった

KEEP

KEEP小分類リスト
  • KEEP (守りたい/何をしたらいいかわかる)
  • KEEP (守りたい/何をしたらいいかわからない)
  • KEEP (合わない)
  • KEEP (定着した)

KEEPに関しては上記のような分類リストを設け 「合わない(1枚)」「定着した(34枚)」 に該当するカードをアーカイブ対象としました。 「何をしたらいいかわかる(8枚)」「何をしたらいいかわからない(14枚)」 に関しては、KEEPをより具体的な行動に落とし込むための分類として用意しました。KEEPは 行動に落とし込んでこそKEEP だと思っているので何をしたらいいか分からないまま置いてあるKEEPはそのままではノイズになってしまいます。今回は個別のカードまで見る時間は無かったですが 「これを行動に移すためにはどう表現したらいいだろう」「具体的に何をすればいいか」 まで話すことができるのが理想でした。 今後は このリストに入らないような記載をする というのが1つのカードの書き方の指針として機能すると考えています。

f:id:lycoris102:20181017101638p:plain

PROBELM

PROBLEM小分類リスト
  • PROBLEM (今も起きている/業務や目標への影響が大きいと感じている)
  • PROBLEM (今も起きている/クリティカルで無い)
  • PROBLEM (メンバーにとってコントローラブルではない)
  • PROBLEM (解消された)

PROBLEMに関しては上記のような分類リストを設けました。「解消された(21枚)」アーカイブ対象です。 「メンバーにとってコントローラブルではない(3枚)」 もアクションに持って行きにくいので、アーカイブすることにしました。「今も起きている/クリティカルで無い(8枚)」 はスコープの小さい話題であることが多いので、各セクションに持ち帰ってもらったり、話す優先度を下げる対応を取ります。こうして残った 「今も起きている/業務や目標への影響が大きいと感じている(10枚)」 に関しては、今後深掘りしていくような動きが出来たら良いと思っています。

f:id:lycoris102:20181017101649p:plain

TRY

TRYに関してはアイデアベースで出してもらったものが多く、PROBLEMが解消されたのに残っているものが多かったので 「達成済み/不要(68枚)」 のリストを作って分類してもらうようにし、今後タイミングが合えば実行したいと思えるTRYだけを残すようにしました。

✨ふりかえり

最後に表明じゃんけんをして、この会がどうだったかを全員で振り返りました。

表明じゃんけん
  • 1~5段階でこの会を評価する
  • 5が「最高!またやりたい!今夜は宴!」
  • 1が「もう二度とやりたく無い、時間が勿体無い」
  • 評価が決まったら拳を上げてもらって、揃った時点で「せーの!」で表明する
  • 例えば4を出した人に「もう1点プラスするには何が改善されているといいですか?」とか聞く

以下のような意見が出ました。

具体的なカードの切り方や今後の分類ルールが出来てなく、今後も抽象的なカードが生まれそう

今後はこのリストをそのまま残しおき、既存のカードをベンチマークにしてもらえると良さそう (試しでやってみて、合わなければ直ぐに廃止したり他のアプローチを試みたい精神)

おそうじを実施したということ自体が価値が高い

KPTボードの可読性の担保のために実施した会ですが、実際に多くのカードをアーカイブできて、注力すべき問題が見えて良かったです。棚卸し自体の価値がメンバーに伝搬できたと思うので、定期的にやって良さそうな雰囲気を感じました。

KEEPの深掘り時間が少なかった

「守りたいけど何をしたらいいか分からない」リストに関して、深掘する時間が足りなかったです。今後はここに該当しないカードの書き方が一種のベンチマークとして求められそう。(もしくは他の人から「具体的には何をしたらいい?」みたいな話題提起が出ると良い)

💬 感想/相談

Trelloのリストを使って、KPTを小分類していくやり方は結構面白かったので、Trello使ってKPTしているところは取り入れてみて感想ください! (今回は具体性および優先度の観点から分類しましたが、セクション毎に分けても良さそう)

これとは別な課題として恣意的にTrelloを見に行かないとKEEPやPROBLEMを認識できない (その場だけの問題になってしまう) という点に関しては、まだ課題が残るので、もしいい感じに解消しているチームや組織があれば、教えてください!🙏 ゆるふわレトロスペクティブおじさんでした。

【TECH x GAME COLLEGE #5】Unityのアニメーションシステムの今と未来の話 に参加しました

TECH x GAME COLLEGEとは

www.techcross.co.jp

株式会社テクロスさんの主催する技術系の勉強会。
『UNITIA 神託の使徒×終焉の女神』『神姫PROJECT』を開発しているところ。
勉強会コンセプトは 「毎週渋谷でちょっといい人呼んでゲーム勉強会」
(こういう勉強会の指針が分かりやすいコンセプトは個人的に好み)
京都の会社だけど東京オフィスも出来るということもあり 絶賛採用強化中 とのこと。

今回の会について

techxgamecollege.connpass.com

今回は 「Unityのアニメーションシステムの今と未来の話」 という題材について、Unityを触っている人であれば1度はお世話になるであろう テラシュールブログ で有名なUTJエヴァンジェリスト山村 達彦 さんがトークしました \キャー椿サーン/

▼以下、ざっくりまとめです。

🗓Unityのアニメーションシステムの過去

Animation

f:id:lycoris102:20181011123457p:plain

AnimationComponent の話。AnimationClip を再生する機能を持つシンプルなアニメーション再生のためのコンポーネントなのだけど、Unity5から Legacy/非推奨 になった。どうしても使いたいケースがあるときは Animation ClipのLegacyフラグを有効にする 必要がある。ただ、企業サイドからは今でも根強い人気があるため、このまま残り続けるでしょうという話だった。

⏰Unityのアニメーションシステムの今

Mecanim

f:id:lycoris102:20181011123434p:plain

Unity4から入ったAnimationClipの再生制御を行う仕組みで現在最も流行っている仕組み。

Mecanimの主な機能

リターゲット

GameObjectを経由せずに直接マトリクスに書き込む

キャラクターの移動をアニメーション側で制御

再生アニメーションを判断する機能

リターゲット

ヒューマノイドアニメーションのリターゲティング - Unity マニュアル

異なる体型(ボーン構造)であっても異なるモデルで同じアニメーションを再生させる機能のこと。リターゲットするためには各モデルの設定 Rig > Animation TypeHumanoid に指定して Avatar を作成し、必要に応じてメッシュとボーンの紐付けを行う必要がある。

GameObjectを経由せずに直接マトリクスに書き込む

Avatar経由でアニメーション情報をボーンに書き込むことができる (Transformを経由しない分だけ効率的に扱える) ただしアニメーションの事後処理が使えなくなるので注意。

tsubakit1.hateblo.jp

キャラクターの移動をアニメーション側で制御

アニメーション側に移動距離を持たせることができる。主な用法として、移動時に足滑り (踏み込んでいる時に瞬間的に踏みとどまって欲しいはずが移動してしまう) を回避できる等。

tsubakit1.hateblo.jp

再生アニメーションを判断する機能

AnimatorController によって再生するAnimationを制御する機能。ステートマシンを用いて特定の条件下にて特定のアニメーションを再生させることができたり、BlendTree を用いて、複数のアニメーションをブレンドさせたりすることができる。StateMachineBehaviour を用いることで、Stateに入ったり抜けたりするときにフックして振る舞いを付与することも可能。

tsubakit1.hateblo.jp

また、キャラクター毎に共通したアニメーションを使いつつ、一部のモーションだけ個別に設定したいみたいなケースの時は AnimationOverrideController を使用すると良い。

tsubakit1.hateblo.jp

SimpleAnimation

f:id:lycoris102:20181011123524p:plain

Mecanimが非常に高機能であったのに対し、例えば2Dでのアニメーション制御等を考えるとここまで機能がいらなくて「再生したいタイミングで任意のAnimationClipを再生できればいい」みたいなケースでは今は SimpleAnimation を使うと良い。

tsubakit1.hateblo.jp

SimpleAnimationは PlayableAPI / Animation再生に関わる低レイヤの仕組みにアクセスし処理をすることができるため、AnimatorControllerを介する必要がない。

tsubakit1.hateblo.jp tsubakit1.hateblo.jp

Animation Instancing

一方、多数のオブジェクトを動かすための技術としては Animation Instancing というものがある。GPU Instancing を使って SkinnedMeshRenderer を多数動かす場合、ドローコールの数とアニメーション計算の量が多くなっていたところを Animation Instancing は良しなにしてくれる。ただし、Shaderで頂点アニメーションを行う側面もあり、ローポリ向け。

blogs.unity3d.com

アニメーション制御の使い分け

Timeline

f:id:lycoris102:20181011123609p:plain

Timeline は複数のオブジェクトをアニメーションや音声、パーティクルの再生タイミング、イベントの実行タイミングを制御し、カットシーン (イベントシーンや演出) を作る際にアドバンテージがある仕組み。出来ることも多いため、今回は概要のみの解説。

tsubakit1.hateblo.jp

🌄Unityのアニメーションシステムの未来

Animation C# Jobs

blogs.unity3d.com

Animation C# Jobsを使うとプロパティやTransformの評価に割り込むことができる。究極的にはAnimationClipすら不要で自分でAnimationStreamに流し込むことも可能。独自のアニメーションやIK処理を組み込むことができる。IAnimationJob を実装していくことになる。サンプルコードは コチラ にある。

kinematica

blogs.unity3d.com

機械学習を用いた新しいモーション制御の仕組み。事前にモーションデータを学習させておくことで、軌跡や速度を元に次のポーズを判断させることができる 。とはいえ、現在はモーションキャプチャースタジオにてモーションデータを収録する必要があるため、一般のご家庭で使用することは難しい。映像作品やAAAタイトル向けになっていきそう。

💭感想

▪️ 2Dを中心に扱う人は引き続き、ユーザ操作は Mecanim or SimpleAnimation / カットシーンは Timeline にお世話になっていきそう。よりリッチな体験や作り込んだ演出や人体の動きを追求する場合は、低レイヤ (PlayableAPI) への理解が必要になっていきそう。個人的に触ったことない部分なので、触ってみるTODOタスク積んでおきます。

▪️ 引用でテラシュールブログさんの記事をたくさん貼ったけど、完全に椿さんの活動がUnityアニメーションシステムの歴史を体現してて、アウトプットを継続する素晴らしさを感じることもできました。

▪️ トーク自体は60min程度で残りは簡単な交流時間が20min程度でした。人数が少ない時は全員で自己紹介したりするのですが、今回は大人気だったため近くの人と交流したり名刺交換するスタイル。その後、希望者で別の店で懇親会という感じの流れでした。(今回だけかもですが) 費用が掛かるという事前連絡を頂きつつ、無料でご馳走になってしまいました。どうもありがとうございました! (何故かずっと現職/前職のプロジェクト管理の話だったり評価制度や勉強会制度の話をしてました)