Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ゲームを制作しながらどうやって開発環境を整えるか?“現場“のツール作成手法

 ゲームを制作しながらどうやって開発環境を整えるか?“現場“のツール作成手法

GREE Tech Conference 2023で発表された資料です。
https://techcon.gree.jp/2023/session/TrackB-1

gree_tech
PRO

October 13, 2023
Tweet

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. ゲームを制作しながら
    どうやって開発環境を整えるか?
    “現場“のツール作成手法
    株式会社WFS
    ゲームプログラマー
    奥村 典史

    View Slide

  2. ゲームを作るということはツールを作るというこ
    と!
    2

    View Slide

  3. 自己紹介
    奧村 典史
    株式会社フロム・ソフトウェアを経て、
    2012年
    に入社。「ららマジ」などの開発に携わる。そ
    の後「アナザーエデン 時空を超える猫」に参
    加し、2018年ごろから「ヘブンバーンズレッ
    ド」にメインプログラマーとして参画。スケ
    ジュール管理やアドベンチャーパートの実
    装、その他ゲーム全体のシーケンスなどを
    担っている。
    3

    View Slide

  4. ツール=
    ゲームを作るために必要な全てのソフトウェア
    4

    View Slide

  5. ゲーム開発で必要なソフトウェア
    ● データを作る
    ● 効率を上げる
    5

    View Slide

  6. ゲーム開発で必要なソフトウェア
    ● データを作る
    ● 効率を上げる
    ○ 速度を上げる
    ○ 作る難しさを緩和する
    6

    View Slide

  7. もくじ
    ● なぜツールをつくるのか?
    ● なぜツールを「現場」でつくるのか?
    ● ツールを現場で作ることの問題点
    ● 時間が無い!
    ● 共通化出来ない!
    ● さいごに
    7

    View Slide

  8. なぜツールをつくるのか?
    8

    View Slide

  9. なぜツールを作るのか?
    ● 1.データを作る
    ● 2.関わる人を減らす
    ● 3.単純作業や大量の作業をこなす
    ● 4.コンテキストスイッチを減らす
    ● 5.イテレーションの速度を上げる
    ● 6.知識を補う
    ● 7.ミスを防ぐ
    9

    View Slide

  10. 1.データを作る
    とあるゲーム制作者がゲームを作る・・・
    ● 絵が書きたい
    ● プログラムを書きたい
    ● ゲームバランスや設計された
    レベルデザインを作りたい
    10
    なぜツールを作るのか?
    ↑彼

    View Slide

  11. ゲームを作るデータを作る
    ● 絵を作るツール
    ● プログラムを書くツール
    ● ゲームバランスや
    レベルデザインを作るツール
    1.データを作る
    11
    なぜツールを作るのか?
    010101010
    100101010
    001010100
    010101010
    01000

    View Slide

  12. 1.データを作る
    画像を作るツール
    ● Photoshop
    ● Illustrator
    プログラムを作るツール
    ● VisualStudio
    ● Rider
    12
    なぜツールを作るのか?

    View Slide

  13. 1.データを作る
    ゲームエンジン
    ● Unity
    ● Unreal Engine
    13
    なぜツールを作るのか?

    View Slide

  14. 1.データを作る
    ゲーム固有のデータ
    ● マップ作成ツール
    ○ 各プロダクト用のデータを作る
    14
    なぜツールを作るのか?

    View Slide

  15. 1.データを作る
    画像データから特定のゲームの中だけ
    で使われるデータまで
    ありとあらゆるデータでゲームはできて
    いる
    ツールによって効率的にデータの作成
    ができる
    15
    なぜツールを作るのか?

    View Slide

  16. 2.関わる人を減らす
    人にデータを依頼・・・
    考えたものを人に作ってもらうのは非
    常にコストがかかる
    16
    なぜツールを作るのか?

    View Slide

  17. 例えば・・・
    ● プランナーさんが敵の攻撃行動を
    考える
    ● プランナーさんと会議を開きエンジ
    ニアに内容を伝える
    ● エンジニアがAIを実装する
    2.関わる人を減らす
    17
    なぜツールを作るのか?

    View Slide

  18. 2.関わる人を減らす
    例えば・・・
    ● プランナーさんが敵の攻撃行動を
    考える
    ● プランナーさんがビヘイビアツリー
    で実装する
    ツールによって工程と関わる人が減っ
    た!
    18
    なぜツールを作るのか?

    View Slide

  19. 2.関わる人を減らす
    考えている人が考えていることをそのま
    ま出力できると・・・
    ● 時間的な効率が上がる
    ● クオリティが上がる
    無駄なお手玉を減らすためにツールが
    活躍する
    19
    なぜツールを作るのか?

    View Slide

  20. 3.単純作業や大量の作業をこなす
    単純作業や大量の作業の例
    ● FBXのモデルからゲームで使えるデータに変換する
    ● ファイルを一定の規則でリネームする
    20
    なぜツールを作るのか?

    View Slide

  21. 3.単純作業や大量の作業をこなす
    1000ファイルの名前を変えよう!
     MQ010105.lua→MQ01_01_05.lua
    21
    リネームにかかる時間
    20秒 ✕ 1000 
    = 20000秒 
    = 5時間33分20秒!
    なぜツールを作るのか?

    View Slide

  22. 3.単純作業や大量の作業をこなす
    1000ファイルの名前を変えよう!
     MQ010105.lua→MQ01_01_05.lua
    会議とリネームで今日が終わった・・・
    22
    リネームにかかる時間
    20秒 ✕ 1000 
    = 20000秒 
    = 5時間33分20秒!
    なぜツールを作るのか?

    View Slide

  23. 3.単純作業や大量の作業をこなす
    リネームツールなら一瞬ですよ!
    23
    リネームにかかる時間
    0.001秒 ✕ 1000 
    = 1秒 
    なぜツールを作るのか?

    View Slide

  24. 3.単純作業や大量の作業をこなす
    大量の仕事をツールで自動化する
    人間には出来ないことを機械にやってもらう
    24
    なぜツールを作るのか?

    View Slide

  25. 4.コンテキストスイッチを減らす
    一瞬目を奪われたり、ファイルの作業をするだけで
    人は今やっている事を忘れる!
    25
    なぜツールを作るのか?

    View Slide

  26. 4.コンテキストスイッチを減らす
    そうだ、このシーンに木を一本、生やそう
    26
    なぜツールを作るのか?

    View Slide

  27. 4.コンテキストスイッチを減らす
    どれどれ?このシーンの名前は・・・
    Main・・・ちがうなBaseTown_A_PL0807.unityか・・・・
    27
    なぜツールを作るのか?

    View Slide

  28. 4.コンテキストスイッチを減らす
    じゃあまずは、BaseTown_A_PL0807.unityを探さないとな
    28
    なぜツールを作るのか?

    View Slide

  29. 4.コンテキストスイッチを減らす
    BaseTown_A_PL0804.unity
    BaseTown_A_PL0805.unity
    BaseTown_A_PL0806.unity
    BaseTown_A_PL0807.unity
    BaseTown_A_PL0808.unity
    BaseTown_A_PL0809.unity
    BaseTown_A_PL0810.unity
    29
    なぜツールを作るのか?

    View Slide

  30. 4.コンテキストスイッチを減らす
    BaseTown_A_PL0804.unity
    BaseTown_A_PL0805.unity
    BaseTown_A_PL0806.unity
    BaseTown_A_PL0807.unity これだ!
    BaseTown_A_PL0808.unity
    BaseTown_A_PL0809.unity
    BaseTown_A_PL0810.unity
    30
    なぜツールを作るのか?

    View Slide

  31. 4.コンテキストスイッチを減らす
    ここであなたの大切な猫がモニターとキーボードのあいだを横切ります
    31
    なぜツールを作るのか?

    View Slide

  32. 4.コンテキストスイッチを減らす
    BaseTown_A_PL0807.unityを開いた
    32
    なぜツールを作るのか?

    View Slide

  33. 4.コンテキストスイッチを減らす
    なにするんだっけ・・・?
    33

    なぜツールを作るのか?

    View Slide

  34. 4.コンテキストスイッチを減らす
    そうだ、このシーンに木を一本、生やそう
    ここに「シーンを開く」ボタンがあるだけで防げたはず・・・!
    34
    開く
    なぜツールを作るのか?

    View Slide

  35. 4.コンテキストスイッチを減らす
    一瞬忘れると作業を思い出すのに意外に時間はかかる
    ● 操作するところをまとめたり、
    ボタンを一つ作るだけでコンテキストスイッチは減る
    想像しているより、
    小さなボタンの効果は大きい
    35
    なぜツールを作るのか?

    View Slide

  36. 5.イテレーション速度を上げる
    ゲームでは何回も同じ場所をブラッシュアップしていきます。
    天才が1回で作ったものよりも
    凡人が100回作り直したものの方が
    面白いことが多い!
    36
    なぜツールを作るのか?

    View Slide

  37. 5.イテレーション速度を上げる
    じゃあぼくは100回ブラッシュアップしましょう!
    タイトル画面から、Aの街のなかの町娘Cに話しかけて、
    選択肢Aを選んだ後に道具屋に話しかけると200秒かかりました
     
    37
    ブラッシュアップにかかる時間
    200秒 ✕ 100 
    = 20000秒 
    = 5時間33分20秒!
    なぜツールを作るのか?

    View Slide

  38. 5.イテレーション速度を上げる
    じゃあぼくは100回ブラッシュアップしましょう!
    タイトル画面から、Aの街のなかの町娘Cに話しかけて、
    選択肢Aを選んだ後に道具屋に話しかけると200秒かかりました
    会議とNPCに話しかけてたら
    今日が終わった・・・・
    38
    ブラッシュアップにかかる時間
    200秒 ✕ 100 
    = 20000秒 
    = 5時間33分20秒!
    なぜツールを作るのか?

    View Slide

  39. 5.イテレーション速度を上げる
    状況を再現するのが20秒に短縮されたら・・・
    39
    ブラッシュアップにかかる時間
    20秒 ✕ 100 
    = 2000秒 
    = 33分20秒!
    なぜツールを作るのか?

    View Slide

  40. 5.イテレーション速度を上げる
    状況を再現するのが20秒に短縮されたら・・・
    日が沈まない!
    祈る時間が増えた
    40
    ブラッシュアップにかかる時間
    20秒 ✕ 100 
    = 2000秒 
    = 33分20秒!
    なぜツールを作るのか?

    View Slide

  41. 5.イテレーション速度を上げる
    現在のゲームの状態が一瞬で再現できるデバッグメニュー
    ● ユーザーデータを保存、ロードできる
    ● ロード時にすぐにゲーム自体がリスタートする
    41
    なぜツールを作るのか?

    View Slide

  42. 5.イテレーション速度を上げる
    単体の機能だけが置いてあるシーン
    ● 再生するだけで機能の確認が出来る
    42
    なぜツールを作るのか?

    View Slide

  43. 5.イテレーション速度を上げる
    繰り返しのボトルネックをツールで減らす
    時間効率はクオリティに直結する
    43
    なぜツールを作るのか?

    View Slide

  44. 6.知識を補う
    ドキュメントも立派なツールです
    44
    なぜツールを作るのか?

    View Slide

  45. 6.知識を補う
    ツールチップとか
    45
    なぜツールを作るのか?

    View Slide

  46. 6.知識を補う
    ヘルプボタンとか
    46
    なぜツールを作るのか?

    View Slide

  47. 6.知識を補う
    Gitを使うのが苦手な人が簡単にgitを使えるツール
    FireCommitter
    47
    なぜツールを作るのか?

    View Slide

  48. 6.知識を補う
    ツールを通して知識を共有する
    知識が共有されることでチーム全体の効率を上げることができる
    48
    なぜツールを作るのか?

    View Slide

  49. 7.ミスを防ぐ
    マスターバリデーション
    ● 値の範囲チェック
    ● 他マスターとの繋がりチェック
    ● アセット参照チェック
    →変換時にチェックすることで
    環境が壊れることを防ぐ
    49
    なぜツールを作るのか?

    View Slide

  50. 7.ミスを防ぐ
    一つのミスは連鎖的に次のミスにつながる
    チーム全体を止めてしまう事もある
    ミスをすることを恐れて効率を落としてしまうこともある
    ミスを防ぐツールは速度も向上させる
    50
    なぜツールを作るのか?

    View Slide

  51. なぜツールを作るのか?
    ● 1.データを作る
    ● 2.関わる人を減らす
    ● 3.単純作業や大量の作業をこなす
    ● 4.コンテキストスイッチを減らす
    ● 5.イテレーションの速度を上げる
    ● 6.知識を補う
    ● 7.ミスを防ぐ
    51

    View Slide

  52. なぜ「現場」でツールをつくるのか?
    52

    View Slide

  53. なぜ「現場」でツールをつくるのか?
    ● 1.同じゲームは2つとない
    ● 2.「現場」のことは「現場」でしかわからない
    53

    View Slide

  54. 1.同じゲームは2つと無い
    あなたのゲームにはあなたのゲームにしか無い「しくみ」がある
    54
    なぜ「現場」でツールをつく
    るのか?

    View Slide

  55. 1.同じゲームは2つと無い
    CharacterAssetConcierge
    ● 1ボタンでとてもたくさんの作業を
    するツール
    ● 「ららマジ」でしか使わないキャラク
    ターのアセットを作るために存在し
    ている
    55
    1ボタンでやっている処理一覧
    Bake退避データのインポート
    Spineのインポート
    Bakeデータ作成
     defaultのダメージコリジョンの作成
     defaultのトランスフォームアニメーション
     新しいRootモーションに更新する
    アニメーターの作成
     (アニメーションクリップの生成)
     defaultのメカニムをコピー
    トランスフォームアニメーション作成
    エフェクトのSpineデータインポート
    エフェクトのアニメーター作成
    Viewのプレハブをつくる
     インスタンス化
     飛び道具のコピー
     モーションエフェクターのコピー
     コリジョンのコピー
     ステータスエフェクトをのせる
     ボーンを減らす
    UIViewのプレハブを作る
    容量オーバーのBakeを退避
    なぜ「現場」でツールをつく
    るのか?

    View Slide

  56. 1.同じゲームは2つと無い
    探検マップエディター
    ● 「ヘブンバーンズレッド」の探検機能
    を作るためだけに存在
    ● ミニマップととそれと同じ構造のダ
    ンジョンのつながりを作る
    56
    なぜ「現場」でツールをつく
    るのか?

    View Slide

  57. 1.同じゲームは2つと無い
    すべてが同じ仕様のゲームはこの世に2つ存在しない
    だから、ゲーム作りでは
    共通化出来ないツールも作らなければならない
    57
    なぜ「現場」でツールをつく
    るのか?

    View Slide

  58. 2.「現場」のことは「現場」でしかわからない
    ● 「こんなツールが欲しい!」は使う人にしか分からない
    ● 「使いやすい」は使う人にしかわからない
    欲しくないツール
    使いにくいツールはどうなる?
    58
    なぜ「現場」でツールをつく
    るのか?

    View Slide

  59. 使われない
    59

    View Slide

  60. 2.「現場」のことは「現場」でしかわからない
    現場の困っていることを解決
    FireCommitter
    ● Gitを使えない人でも簡単に使え
    るツール
    ○ 手元を最新にする(git pull)
    ○ ファイルをアップロードする( git
    commit)
    60
    なぜ「現場」でツールをつく
    るのか?

    View Slide

  61. 2.「現場」のことは「現場」でしかわからない
    FireCommtterが生まれたあらすじ
    ● ファイルを最新に出来ない
    ○ Unityは時々勝手にmetaファイルを変える
    ○ 変更されたファイルがローカルにあると gitはpullしない
    ○ git checkout .などでファイルを戻さなければいけないが・・・
    ■ アートさんはわからない
    ● コマンドは難しいし
    ● GUIツールでも難しい
    ● 自分で変えたわけではない
    ○ じゃあ、全部git checkout .で「燃やし尽くして」から pullすればいいじゃん!
    ■ →すごく乱暴だけど上手くいった。みんな pullできるようになった。
    61
    なぜ「現場」でツールをつく
    るのか?

    View Slide

  62. 2.「現場」のことは「現場」でしかわからない
    FireCommtterが生まれたあらすじ
    ● ファイルをアップロードできない
    ○ アップロードするためには・・・
    ■ git checkout -b feature/hogehoge  ←ブランチを切ってるブランチ名を決めなきゃだ
    ■ git add hogeFile.unity ←ファイルをステージしてる。ステージって何?
    ■ git add hogeFile2.unity ←全部ステージしなきゃいけない
    ■ git commit -C “ファイルを更新” ←ちゃんとコミットログ書いて欲しい
    ■ git push origin feature/hogehoge ←ネットにアップしてる
    ■ Githubでプルリクを出す
    ○ どうか1ボタンで・・・・・
    62
    なぜ「現場」でツールをつく
    るのか?

    View Slide

  63. なぜ「現場」でツールをつくるのか?
    ● 1.同じゲームは2つとない
    ● 2.「現場」のことは「現場」でしかわからない
    63

    View Slide

  64. ツールを現場でつくることの問題点
    64

    View Slide

  65. ツールを現場でつくることの問題点
    ● 時間がない
    ● 共通化出来ない
    65

    View Slide

  66. だけど・・・
    ● 時間がないけどツールは現場で作る必要がある、
    またツールを作らないとよけいに時間はなくなる
    ● 共通化全ては無理だけど、出来る部分もあるはずだ
    だから、現場でツールを作ろう!共通化しよう!
    チームや組織で肯定していこう
    66
    ツールを現場でつくることの
    問題点

    View Slide

  67. ツールを現場でつくることの問題点
    ● 時間がない
    ● 共通化出来ない
    67

    View Slide

  68. 時間がない!
    68

    View Slide

  69. 時間がない!
    ● 1.ツールを作るコストを減らす
    ● 2.ゲームと同時に作る
    ● 3.効率化することで、時間を作り出す
    ● 4.作る人を増やすことで、時間を増やす
    69

    View Slide

  70. 1.ツールを作るコストを減らす
    ● 「ツールを作るツール」を使う
    ● 「ツールを作るツール」を作る
    ● コードの依存性を切り、機能を独立させる
    70
    時間がない!

    View Slide

  71. 1.ツールを作るコストを減らす
    ● 「ツールを作るツール」を使う
    71
    時間がない!

    View Slide

  72. 1.ツールを作るコストを減らす
    ● 「ツールを作るツール」を作る
    ○ Decoma
    72
    時間がない!

    View Slide

  73. 1.ツールを作るコストを減らす
    ● コードの依存性を切り、機能を独立させる
    ○ 機能の依存の樹を小さくする
    ○ プロジェクトのコードがシンプルじゃないとツールを作るコストも上がる!
    73
    時間がない!

    View Slide

  74. 2.ゲームと同時に作る
    ゲームを作るには
    ● データを作らなければならない
    ● イテレーションを繰り返さなければならない
    74
    時間がない!

    View Slide

  75. 2.ゲームと同時に作る
    ゲームを作るには
    ● データを作らなければならない
    →データを作るツール
    ● イテレーションを繰り返さなければならない
    →イテレーションを早くするツール
    75
    時間がない!

    View Slide

  76. 2.ゲームと同時に作る
    データを作るツール
    ● 最初はどういうゲームを作ればいいかわからない
    ● エンジニアが企画を聞いて最低限で実装
    ○ 実装を作る時にツールも実装
    ○ 完璧でなくていいし、未完成で良い、方向性が正しいか見てもらうのが重要
    ● ゲームの仕様変更に合わせてデータを作るツールを改善していく
    ○ 最初から作りすぎてしまうと変更に時間がかかる
    ○ 未完成の方が軌道修正のコストが小さくてすむ
    76
    時間がない!

    View Slide

  77. 2.ゲームと同時に作る
    イテレーション(確認)を早くするツール
    ● 「開発中」が一番たくさん確認する
    ○ もっともツールの効果が最大化する
    ● 細かく確認してもらう事で仕様変更が小さくなる
    77
    時間がない!

    View Slide

  78. 2.ゲームと同時に作る
    ゲームと同時にツールを作っていく
    ● 探検マップエディター
    ○ どうやってマップ間をつなげるのか?
    ○ そのデータはどう作るのか?
    ○ どんな見た目のミニマップを作るの
    か?
    ○ マップ上には何を配置するのか?
    様々な事をゲームと同時に決めな
    がらツールの制作を行った!
    78
    時間がない!

    View Slide

  79. 2.ゲームと同時に作る
    ゲームと同時にツールを作っていく
    ● 細かく早く確認してもらうことで仕様変更が小さく細かくなる
    ○ 作りすぎる事が少なくなる!
    ● 早く準備することによってツールで減らせるコストは最大化する
    時間を作れる!
    79
    時間がない!

    View Slide

  80. 3.効率化することで、時間を作り出す
    シナリオ変換ツール
    「ちゅーりっぷ」
    シナリオファイルをLuaファイルに変
    換!
    ● いちいちコピペで書き写すよりも1
    ファイル10分以上の節約に!
    80
    時間がない!

    View Slide

  81. 4.作る人を増やすことで、時間を増やす
    簡単にデバッグコマンドを作れるツール「Decoma」
    ● アドレスとIMGUIを
    書けば簡単に
    誰でもデバッグコマンドを
    作成可能なツール
    81
    new DebugCommand("Debug/リセット", () =>
    {
    if (GUILayout.Button("リセット"))
    {
    Reboot();
    }
    });
    時間がない!

    View Slide

  82. 4.作る人を増やすことで、時間を増やす
    ● デバッグメニューの作成のハードルを下げることで・・・
    ○ 経験の浅いプログラマーでも!
    ○ 痒いところに手が届かないのをもどかしく思っていたプランナーでも!
    ○ 簡単に状況を作り出してデバッグしたい QAでも!
    実際に作れました!
    82
    時間がない!

    View Slide

  83. 4.作る人を増やすことで、時間を増やす
    プログラムを書くことを職掌でフタをしない
    ● 「誰でもかける様」にしておくこと!
    ● 「誰でも書いて良い」にしておくこと!
    おかしなプログラムが入ってきたら怖い
    →場所をエディターやデバッグコマンドに限定する
    →コードレビューをきちんとする
    83
    時間がない!

    View Slide

  84. 4.作る人を増やすことで、時間を増やす
    企画者ウインドウ
    ● フタをしなかった結果、生まれた良
    い例
    ● 企画者の得意な人がC#で書いて
    くれた
    ● プログラマーが書くよりも「要件」を
    よく知っている人が書いたので便
    利!
    84
    時間がない!

    View Slide

  85. ● 1.ツールを作るコストを減らす
    ● 2.ゲームと同時に作る
    ● 3.効率化することで、時間を作り出す
    ● 4.作る人を増やすことで、時間を増やす
    時間がない!
    85
    時間はない!永遠にない!
    しかし、
    ツールを作らなければもっとない!
    みんなで時間を生み出そう

    View Slide

  86. 共通化出来ない!
    86

    View Slide

  87. 共通化出来ない!
    ● 共通化はなんで難しいか?
    ● 共通化が成功したツール
    ● 1.命名せよ!
    ● 2.パッケージ化せよ!
    ● 3.前のプロジェクトを継承してゆっくり育てる
    ● 4.ドキュメント制作会議
    87

    View Slide

  88. 共通化はなんで難しいか
    ● どんなツールがあるのか知らない
    ● 他の現場のツールを持ってくることが出来ない
    ● 機能が少ないので使ってくれない
    ● ドキュメントが無い
    88
    共通化出来ない!

    View Slide

  89. 共通化が成功したツール
    ● OniUI
    ○ MVCで言うところのViewのレイヤー
    を完全に切り分けるための UIライブ
    ラリ
    ○ 詳しくはCEDEC2022のUIの講演で
    も紹介しています
    →UIの開発スピードを高速化させる
    仕組み ~ヘブンバーンズレッドにお
    けるUnityを用いた事例~
    https://cedil.cesa.or.jp/cedil_s
    essions/view/2651
    このツールで有効だった
    手段をいくつか・・・
    89
    共通化出来ない!

    View Slide

  90. 1.命名せよ!
    “まるで鬼神のごとき速さでUIを実装す
    るライブラリ「OniUI」”
    ● 使う人が呼んでくれる
    ● 何に対しての会話かが分かる
    ● 導入する時にも「◯◯がほしい!」
    「◯◯でいこう!」と言える
    ● 導入しないときにも「◯◯は今回は
    なしで!」と言える
    90
    共通化出来ない!

    View Slide

  91. 2.パッケージ化せよ!
    もしかしたら共通化出来ないツールで
    も積極的にサブモジュール化する
    ● プロジェクトに依存したコードを排
    除できる
    ● 他のプロジェクトが簡単に導入す
    る事ができる
    ● 開発中の段階から2つ以上のプロ
    ジェクトで変更を入れていくことが
    できる
    91
    共通化出来ない!

    View Slide

  92. 3.前のプロジェクトを継承しゆっくり育てる!
    Project AnimalでのOniUI
    ● LWFをUIに使っていた
    ● LWFのオブジェクトに対して値を
    入れる中継クラスがあった
    92
    Project
    A
    共通化出来ない!

    View Slide

  93. 3.前のプロジェクトを継承しゆっくり育てる!
    Project XaiでのOniUI
    ● LWFで実装してあったコードをそ
    のままにNGUIに置き換える必
    要があった
    ● 同じインターフェイスでNGUIに
    置き換えられうように
    ● コード自動生成なし
    ● オートバインドなし
    93
    Project
    A
    Project
    X
    共通化出来ない!

    View Slide

  94. 3.前のプロジェクトを継承しゆっくり育てる!
    「ららマジ」でのOniUI
    ● インターフェイスのコードを拡充
    ● UITechさんによるViewのコードを書く場所を追加
    ● UIのベースクラスの自動生成
    Project WでのOniUI
    ● UGUIへの置き換え
    ● カルーセルの機構追加
    ● イケてるバーチャルスクロール
    94
    Project
    A
    Project
    X
    らら
    マジ
    Project
    W
    共通化出来ない!

    View Slide

  95. 3.前のプロジェクトを継承しゆっくり育てる!
    「ヘブンバーンズレッド」でのOniUI
    ● コードバインドの自動生成
    95
    Project
    A
    Project
    X
    らら
    マジ
    Project
    W
    ヘブ
    バン
    Next
    Next
    共通化出来ない!

    View Slide

  96. 3.前のプロジェクトを継承しゆっくり育てる!
    思想やプログラムは人と一緒に移動する!
    ● 奥村が昔のプログラムを持ってProjectを移動する
    ● UITechさんがプログラムをもって別のProjectに移動する
    人の移動によって思想が広まっていき、多くのProjectに入っていった
    思想だけでも移動すると共通化が進んでいく
    96
    共通化出来ない!

    View Slide

  97. 4.ドキュメント制作会議
    ドキュメントがないから直接教えて欲しい!
    ● 教えて欲しい人を募って会議
    ● 機能ややり方を解説する
    ● 参加者がその場でまとめる

    あら不思議!
    ドキュメントが完成!
    97
    共通化出来ない!

    View Slide

  98. 共通化出来ない!
    ● 共通化はなんで難しいか?
    ● 共通化が成功したツール
    ● 1.命名せよ!
    ● 2.パッケージ化せよ!
    ● 3.前のプロジェクトを継承してゆっくり育てる
    ● 4.ドキュメント制作会議
    98

    View Slide

  99. 参考
    [CEDEC2022]ヘブンバーンズレッドにおけるLuaの活用事例 

    https://cedil.cesa.or.jp/cedil_sessions/view/2697 

    [CEDEC2022]UIの開発スピードを高速化させる仕組み ~ヘブンバーンズレッドにおけるUnityを用いた事例~ 

    https://cedil.cesa.or.jp/cedil_sessions/view/2651 

    [CEDEC2018]『アナザーエデン 時空を超える猫』における“ツール運営“事例 〜開発ツールの運用で学んだこと〜 

    https://cedec.cesa.or.jp/2018/session/detail/s5ab9f3ac0efa3.html 

    [Unite 2017 Tokyo]Unityで出来る『見える開発』のススメ ~スマホゲーム「ららマジ」開発事例~ 

    https://events.unity3d.jp/unitetokyo/2017/session-lineup.html#session81 

    [Unity Sync2022]『ヘブンバーンズレッド』の大規模開発と高速イテレーションを支える、自作ツール群の秘密 

    https://events.unity3d.jp/sync/session/8/ 

    Unityで開発しているゲームの単体テストをCI環境で運用している話 

    https://labs.gree.jp/blog/2015/12/15392/ 

    [WFS Tech Talk #1]ららマジでしかできない!?キャラクターアセット最適化事例 

    https://www.slideshare.net/greetech/ss-149149594 

    [GREE Tech Conference 2022] ヘブンバーンズレッド × バトル × アドベンチャー 〜WFSのゲーム制作・演出の最大化手法〜 

    https://techcon.gree.jp/2022/session/TrackB-2 


    99

    View Slide

  100. さいごに
    ● 走りながらツールをつくろう
    ● ゲームを作る人にしか出来ないツールづくりがある
    この発表がもし、あなたのゲーム作りの助けになれば!
    100

    View Slide

  101. 101

    View Slide