Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ゲームを制作しながらどうやって開発環境を整えるか?“現場“のツール作成手法
Search
gree_tech
PRO
October 13, 2023
Technology
1
1k
ゲームを制作しながらどうやって開発環境を整えるか?“現場“のツール作成手法
GREE Tech Conference 2023で発表された資料です。
https://techcon.gree.jp/2023/session/TrackB-1
gree_tech
PRO
October 13, 2023
Tweet
Share
More Decks by gree_tech
See All by gree_tech
REALITY株式会社における開発生産性向上の取り組み: 失敗と成功から学んだこと
gree_tech
PRO
2
130
『ヘブンバーンズレッド』におけるフィールドギミックの裏側
gree_tech
PRO
2
92
セキュリティインシデント対応の体制・運用の試行錯誤 / greetechcon2024-session-a1
gree_tech
PRO
1
100
『アナザーエデン 時空を超える猫』国内海外同時運営実現への道のり ~別々で開発されたアプリを安定して同時リリースするまでの取り組み~
gree_tech
PRO
1
81
『アサルトリリィ Last Bullet』におけるクラウドストリーミング技術を用いたブラウザゲーム化の紹介
gree_tech
PRO
1
93
UnityによるPCアプリの新しい選択肢。「PC版 Google Play Games」への対応について
gree_tech
PRO
1
110
実機ビルドのエラーによる検証ブロッカーを0に!『ヘブンバーンズレッド』のスモークテスト自動化の取り組み
gree_tech
PRO
1
110
"ゲームQA業界の技術向上を目指す! 会社を超えた研究会の取り組み"
gree_tech
PRO
1
140
Jamstack でリニューアルするグリーグループのメディア
gree_tech
PRO
2
300
Other Decks in Technology
See All in Technology
SRE×AIOpsを始めよう!GuardDutyによるお手軽脅威検出
amixedcolor
0
180
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
440
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
The Role of Developer Relations in AI Product Success.
giftojabu1
0
140
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
330
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
200
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
390
CDCL による厳密解法を採用した MILP ソルバー
imai448
3
150
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
150
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
3
630
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
How STYLIGHT went responsive
nonsquared
95
5.2k
Why Our Code Smells
bkeepers
PRO
334
57k
Fireside Chat
paigeccino
34
3k
Teambox: Starting and Learning
jrom
133
8.8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Done Done
chrislema
181
16k
The Cost Of JavaScript in 2023
addyosmani
45
6.8k
A designer walks into a library…
pauljervisheath
204
24k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Transcript
ゲームを制作しながら どうやって開発環境を整えるか? “現場“のツール作成手法 株式会社WFS ゲームプログラマー 奥村 典史
ゲームを作るということはツールを作るというこ と! 2
自己紹介 奧村 典史 株式会社フロム・ソフトウェアを経て、 2012年 に入社。「ららマジ」などの開発に携わる。そ の後「アナザーエデン 時空を超える猫」に参 加し、2018年ごろから「ヘブンバーンズレッ ド」にメインプログラマーとして参画。スケ
ジュール管理やアドベンチャーパートの実 装、その他ゲーム全体のシーケンスなどを 担っている。 3
ツール= ゲームを作るために必要な全てのソフトウェア 4
ゲーム開発で必要なソフトウェア • データを作る • 効率を上げる 5
ゲーム開発で必要なソフトウェア • データを作る • 効率を上げる ◦ 速度を上げる ◦ 作る難しさを緩和する 6
もくじ • なぜツールをつくるのか? • なぜツールを「現場」でつくるのか? • ツールを現場で作ることの問題点 • 時間が無い! •
共通化出来ない! • さいごに 7
なぜツールをつくるのか? 8
なぜツールを作るのか? • 1.データを作る • 2.関わる人を減らす • 3.単純作業や大量の作業をこなす • 4.コンテキストスイッチを減らす •
5.イテレーションの速度を上げる • 6.知識を補う • 7.ミスを防ぐ 9
1.データを作る とあるゲーム制作者がゲームを作る・・・ • 絵が書きたい • プログラムを書きたい • ゲームバランスや設計された レベルデザインを作りたい 10
なぜツールを作るのか? ↑彼
ゲームを作るデータを作る • 絵を作るツール • プログラムを書くツール • ゲームバランスや レベルデザインを作るツール 1.データを作る 11
なぜツールを作るのか? 010101010 100101010 001010100 010101010 01000
1.データを作る 画像を作るツール • Photoshop • Illustrator プログラムを作るツール • VisualStudio •
Rider 12 なぜツールを作るのか?
1.データを作る ゲームエンジン • Unity • Unreal Engine 13 なぜツールを作るのか?
1.データを作る ゲーム固有のデータ • マップ作成ツール ◦ 各プロダクト用のデータを作る 14 なぜツールを作るのか?
1.データを作る 画像データから特定のゲームの中だけ で使われるデータまで ありとあらゆるデータでゲームはできて いる ツールによって効率的にデータの作成 ができる 15 なぜツールを作るのか?
2.関わる人を減らす 人にデータを依頼・・・ 考えたものを人に作ってもらうのは非 常にコストがかかる 16 なぜツールを作るのか?
例えば・・・ • プランナーさんが敵の攻撃行動を 考える • プランナーさんと会議を開きエンジ ニアに内容を伝える • エンジニアがAIを実装する 2.関わる人を減らす
17 なぜツールを作るのか?
2.関わる人を減らす 例えば・・・ • プランナーさんが敵の攻撃行動を 考える • プランナーさんがビヘイビアツリー で実装する ツールによって工程と関わる人が減っ た!
18 なぜツールを作るのか?
2.関わる人を減らす 考えている人が考えていることをそのま ま出力できると・・・ • 時間的な効率が上がる • クオリティが上がる 無駄なお手玉を減らすためにツールが 活躍する 19
なぜツールを作るのか?
3.単純作業や大量の作業をこなす 単純作業や大量の作業の例 • FBXのモデルからゲームで使えるデータに変換する • ファイルを一定の規則でリネームする 20 なぜツールを作るのか?
3.単純作業や大量の作業をこなす 1000ファイルの名前を変えよう! MQ010105.lua→MQ01_01_05.lua 21 リネームにかかる時間 20秒 ✕ 1000 = 20000秒 = 5時間33分20秒! なぜツールを作るのか?
3.単純作業や大量の作業をこなす 1000ファイルの名前を変えよう! MQ010105.lua→MQ01_01_05.lua 会議とリネームで今日が終わった・・・ 22 リネームにかかる時間 20秒 ✕ 1000 = 20000秒 = 5時間33分20秒! なぜツールを作るのか?
3.単純作業や大量の作業をこなす リネームツールなら一瞬ですよ! 23 リネームにかかる時間 0.001秒 ✕ 1000 = 1秒 なぜツールを作るのか?
3.単純作業や大量の作業をこなす 大量の仕事をツールで自動化する 人間には出来ないことを機械にやってもらう 24 なぜツールを作るのか?
4.コンテキストスイッチを減らす 一瞬目を奪われたり、ファイルの作業をするだけで 人は今やっている事を忘れる! 25 なぜツールを作るのか?
4.コンテキストスイッチを減らす そうだ、このシーンに木を一本、生やそう 26 なぜツールを作るのか?
4.コンテキストスイッチを減らす どれどれ?このシーンの名前は・・・ Main・・・ちがうなBaseTown_A_PL0807.unityか・・・・ 27 なぜツールを作るのか?
4.コンテキストスイッチを減らす じゃあまずは、BaseTown_A_PL0807.unityを探さないとな 28 なぜツールを作るのか?
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 なぜツールを作るのか?
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 なぜツールを作るのか?
4.コンテキストスイッチを減らす ここであなたの大切な猫がモニターとキーボードのあいだを横切ります 31 なぜツールを作るのか?
4.コンテキストスイッチを減らす BaseTown_A_PL0807.unityを開いた 32 なぜツールを作るのか?
4.コンテキストスイッチを減らす なにするんだっけ・・・? 33 ? なぜツールを作るのか?
4.コンテキストスイッチを減らす そうだ、このシーンに木を一本、生やそう ここに「シーンを開く」ボタンがあるだけで防げたはず・・・! 34 開く なぜツールを作るのか?
4.コンテキストスイッチを減らす 一瞬忘れると作業を思い出すのに意外に時間はかかる • 操作するところをまとめたり、 ボタンを一つ作るだけでコンテキストスイッチは減る 想像しているより、 小さなボタンの効果は大きい 35 なぜツールを作るのか?
5.イテレーション速度を上げる ゲームでは何回も同じ場所をブラッシュアップしていきます。 天才が1回で作ったものよりも 凡人が100回作り直したものの方が 面白いことが多い! 36 なぜツールを作るのか?
5.イテレーション速度を上げる じゃあぼくは100回ブラッシュアップしましょう! タイトル画面から、Aの街のなかの町娘Cに話しかけて、 選択肢Aを選んだ後に道具屋に話しかけると200秒かかりました 37 ブラッシュアップにかかる時間 200秒 ✕ 100 = 20000秒 = 5時間33分20秒!
なぜツールを作るのか?
5.イテレーション速度を上げる じゃあぼくは100回ブラッシュアップしましょう! タイトル画面から、Aの街のなかの町娘Cに話しかけて、 選択肢Aを選んだ後に道具屋に話しかけると200秒かかりました 会議とNPCに話しかけてたら 今日が終わった・・・・ 38 ブラッシュアップにかかる時間 200秒 ✕ 100 = 20000秒
= 5時間33分20秒! なぜツールを作るのか?
5.イテレーション速度を上げる 状況を再現するのが20秒に短縮されたら・・・ 39 ブラッシュアップにかかる時間 20秒 ✕ 100 = 2000秒 = 33分20秒! なぜツールを作るのか?
5.イテレーション速度を上げる 状況を再現するのが20秒に短縮されたら・・・ 日が沈まない! 祈る時間が増えた 40 ブラッシュアップにかかる時間 20秒 ✕ 100 = 2000秒 = 33分20秒! なぜツールを作るのか?
5.イテレーション速度を上げる 現在のゲームの状態が一瞬で再現できるデバッグメニュー • ユーザーデータを保存、ロードできる • ロード時にすぐにゲーム自体がリスタートする 41 なぜツールを作るのか?
5.イテレーション速度を上げる 単体の機能だけが置いてあるシーン • 再生するだけで機能の確認が出来る 42 なぜツールを作るのか?
5.イテレーション速度を上げる 繰り返しのボトルネックをツールで減らす 時間効率はクオリティに直結する 43 なぜツールを作るのか?
6.知識を補う ドキュメントも立派なツールです 44 なぜツールを作るのか?
6.知識を補う ツールチップとか 45 なぜツールを作るのか?
6.知識を補う ヘルプボタンとか 46 なぜツールを作るのか?
6.知識を補う Gitを使うのが苦手な人が簡単にgitを使えるツール FireCommitter 47 なぜツールを作るのか?
6.知識を補う ツールを通して知識を共有する 知識が共有されることでチーム全体の効率を上げることができる 48 なぜツールを作るのか?
7.ミスを防ぐ マスターバリデーション • 値の範囲チェック • 他マスターとの繋がりチェック • アセット参照チェック →変換時にチェックすることで 環境が壊れることを防ぐ
49 なぜツールを作るのか?
7.ミスを防ぐ 一つのミスは連鎖的に次のミスにつながる チーム全体を止めてしまう事もある ミスをすることを恐れて効率を落としてしまうこともある ミスを防ぐツールは速度も向上させる 50 なぜツールを作るのか?
なぜツールを作るのか? • 1.データを作る • 2.関わる人を減らす • 3.単純作業や大量の作業をこなす • 4.コンテキストスイッチを減らす •
5.イテレーションの速度を上げる • 6.知識を補う • 7.ミスを防ぐ 51
なぜ「現場」でツールをつくるのか? 52
なぜ「現場」でツールをつくるのか? • 1.同じゲームは2つとない • 2.「現場」のことは「現場」でしかわからない 53
1.同じゲームは2つと無い あなたのゲームにはあなたのゲームにしか無い「しくみ」がある 54 なぜ「現場」でツールをつく るのか?
1.同じゲームは2つと無い CharacterAssetConcierge • 1ボタンでとてもたくさんの作業を するツール • 「ららマジ」でしか使わないキャラク ターのアセットを作るために存在し ている 55
1ボタンでやっている処理一覧 Bake退避データのインポート Spineのインポート Bakeデータ作成 defaultのダメージコリジョンの作成 defaultのトランスフォームアニメーション 新しいRootモーションに更新する アニメーターの作成 (アニメーションクリップの生成) defaultのメカニムをコピー トランスフォームアニメーション作成 エフェクトのSpineデータインポート エフェクトのアニメーター作成 Viewのプレハブをつくる インスタンス化 飛び道具のコピー モーションエフェクターのコピー コリジョンのコピー ステータスエフェクトをのせる ボーンを減らす UIViewのプレハブを作る 容量オーバーのBakeを退避 なぜ「現場」でツールをつく るのか?
1.同じゲームは2つと無い 探検マップエディター • 「ヘブンバーンズレッド」の探検機能 を作るためだけに存在 • ミニマップととそれと同じ構造のダ ンジョンのつながりを作る 56 なぜ「現場」でツールをつく
るのか?
1.同じゲームは2つと無い すべてが同じ仕様のゲームはこの世に2つ存在しない だから、ゲーム作りでは 共通化出来ないツールも作らなければならない 57 なぜ「現場」でツールをつく るのか?
2.「現場」のことは「現場」でしかわからない • 「こんなツールが欲しい!」は使う人にしか分からない • 「使いやすい」は使う人にしかわからない 欲しくないツール 使いにくいツールはどうなる? 58 なぜ「現場」でツールをつく るのか?
使われない 59
2.「現場」のことは「現場」でしかわからない 現場の困っていることを解決 FireCommitter • Gitを使えない人でも簡単に使え るツール ◦ 手元を最新にする(git pull) ◦
ファイルをアップロードする( git commit) 60 なぜ「現場」でツールをつく るのか?
2.「現場」のことは「現場」でしかわからない FireCommtterが生まれたあらすじ • ファイルを最新に出来ない ◦ Unityは時々勝手にmetaファイルを変える ◦ 変更されたファイルがローカルにあると gitはpullしない ◦
git checkout .などでファイルを戻さなければいけないが・・・ ▪ アートさんはわからない • コマンドは難しいし • GUIツールでも難しい • 自分で変えたわけではない ◦ じゃあ、全部git checkout .で「燃やし尽くして」から pullすればいいじゃん! ▪ →すごく乱暴だけど上手くいった。みんな pullできるようになった。 61 なぜ「現場」でツールをつく るのか?
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 なぜ「現場」でツールをつく るのか?
なぜ「現場」でツールをつくるのか? • 1.同じゲームは2つとない • 2.「現場」のことは「現場」でしかわからない 63
ツールを現場でつくることの問題点 64
ツールを現場でつくることの問題点 • 時間がない • 共通化出来ない 65
だけど・・・ • 時間がないけどツールは現場で作る必要がある、 またツールを作らないとよけいに時間はなくなる • 共通化全ては無理だけど、出来る部分もあるはずだ だから、現場でツールを作ろう!共通化しよう! チームや組織で肯定していこう 66 ツールを現場でつくることの
問題点
ツールを現場でつくることの問題点 • 時間がない • 共通化出来ない 67
時間がない! 68
時間がない! • 1.ツールを作るコストを減らす • 2.ゲームと同時に作る • 3.効率化することで、時間を作り出す • 4.作る人を増やすことで、時間を増やす 69
1.ツールを作るコストを減らす • 「ツールを作るツール」を使う • 「ツールを作るツール」を作る • コードの依存性を切り、機能を独立させる 70 時間がない!
1.ツールを作るコストを減らす • 「ツールを作るツール」を使う 71 時間がない!
1.ツールを作るコストを減らす • 「ツールを作るツール」を作る ◦ Decoma 72 時間がない!
1.ツールを作るコストを減らす • コードの依存性を切り、機能を独立させる ◦ 機能の依存の樹を小さくする ◦ プロジェクトのコードがシンプルじゃないとツールを作るコストも上がる! 73 時間がない!
2.ゲームと同時に作る ゲームを作るには • データを作らなければならない • イテレーションを繰り返さなければならない 74 時間がない!
2.ゲームと同時に作る ゲームを作るには • データを作らなければならない →データを作るツール • イテレーションを繰り返さなければならない →イテレーションを早くするツール 75 時間がない!
2.ゲームと同時に作る データを作るツール • 最初はどういうゲームを作ればいいかわからない • エンジニアが企画を聞いて最低限で実装 ◦ 実装を作る時にツールも実装 ◦ 完璧でなくていいし、未完成で良い、方向性が正しいか見てもらうのが重要
• ゲームの仕様変更に合わせてデータを作るツールを改善していく ◦ 最初から作りすぎてしまうと変更に時間がかかる ◦ 未完成の方が軌道修正のコストが小さくてすむ 76 時間がない!
2.ゲームと同時に作る イテレーション(確認)を早くするツール • 「開発中」が一番たくさん確認する ◦ もっともツールの効果が最大化する • 細かく確認してもらう事で仕様変更が小さくなる 77 時間がない!
2.ゲームと同時に作る ゲームと同時にツールを作っていく • 探検マップエディター ◦ どうやってマップ間をつなげるのか? ◦ そのデータはどう作るのか? ◦ どんな見た目のミニマップを作るの
か? ◦ マップ上には何を配置するのか? 様々な事をゲームと同時に決めな がらツールの制作を行った! 78 時間がない!
2.ゲームと同時に作る ゲームと同時にツールを作っていく • 細かく早く確認してもらうことで仕様変更が小さく細かくなる ◦ 作りすぎる事が少なくなる! • 早く準備することによってツールで減らせるコストは最大化する 時間を作れる! 79
時間がない!
3.効率化することで、時間を作り出す シナリオ変換ツール 「ちゅーりっぷ」 シナリオファイルをLuaファイルに変 換! • いちいちコピペで書き写すよりも1 ファイル10分以上の節約に! 80 時間がない!
4.作る人を増やすことで、時間を増やす 簡単にデバッグコマンドを作れるツール「Decoma」 • アドレスとIMGUIを 書けば簡単に 誰でもデバッグコマンドを 作成可能なツール 81 new DebugCommand("Debug/リセット",
() => { if (GUILayout.Button("リセット")) { Reboot(); } }); 時間がない!
4.作る人を増やすことで、時間を増やす • デバッグメニューの作成のハードルを下げることで・・・ ◦ 経験の浅いプログラマーでも! ◦ 痒いところに手が届かないのをもどかしく思っていたプランナーでも! ◦ 簡単に状況を作り出してデバッグしたい QAでも!
実際に作れました! 82 時間がない!
4.作る人を増やすことで、時間を増やす プログラムを書くことを職掌でフタをしない • 「誰でもかける様」にしておくこと! • 「誰でも書いて良い」にしておくこと! おかしなプログラムが入ってきたら怖い →場所をエディターやデバッグコマンドに限定する →コードレビューをきちんとする 83
時間がない!
4.作る人を増やすことで、時間を増やす 企画者ウインドウ • フタをしなかった結果、生まれた良 い例 • 企画者の得意な人がC#で書いて くれた • プログラマーが書くよりも「要件」を
よく知っている人が書いたので便 利! 84 時間がない!
• 1.ツールを作るコストを減らす • 2.ゲームと同時に作る • 3.効率化することで、時間を作り出す • 4.作る人を増やすことで、時間を増やす 時間がない! 85
時間はない!永遠にない! しかし、 ツールを作らなければもっとない! みんなで時間を生み出そう
共通化出来ない! 86
共通化出来ない! • 共通化はなんで難しいか? • 共通化が成功したツール • 1.命名せよ! • 2.パッケージ化せよ! •
3.前のプロジェクトを継承してゆっくり育てる • 4.ドキュメント制作会議 87
共通化はなんで難しいか • どんなツールがあるのか知らない • 他の現場のツールを持ってくることが出来ない • 機能が少ないので使ってくれない • ドキュメントが無い 88
共通化出来ない!
共通化が成功したツール • OniUI ◦ MVCで言うところのViewのレイヤー を完全に切り分けるための UIライブ ラリ ◦ 詳しくはCEDEC2022のUIの講演で
も紹介しています →UIの開発スピードを高速化させる 仕組み ~ヘブンバーンズレッドにお けるUnityを用いた事例~ https://cedil.cesa.or.jp/cedil_s essions/view/2651 このツールで有効だった 手段をいくつか・・・ 89 共通化出来ない!
1.命名せよ! “まるで鬼神のごとき速さでUIを実装す るライブラリ「OniUI」” • 使う人が呼んでくれる • 何に対しての会話かが分かる • 導入する時にも「◯◯がほしい!」 「◯◯でいこう!」と言える
• 導入しないときにも「◯◯は今回は なしで!」と言える 90 共通化出来ない!
2.パッケージ化せよ! もしかしたら共通化出来ないツールで も積極的にサブモジュール化する • プロジェクトに依存したコードを排 除できる • 他のプロジェクトが簡単に導入す る事ができる •
開発中の段階から2つ以上のプロ ジェクトで変更を入れていくことが できる 91 共通化出来ない!
3.前のプロジェクトを継承しゆっくり育てる! Project AnimalでのOniUI • LWFをUIに使っていた • LWFのオブジェクトに対して値を 入れる中継クラスがあった 92 Project
A 共通化出来ない!
3.前のプロジェクトを継承しゆっくり育てる! Project XaiでのOniUI • LWFで実装してあったコードをそ のままにNGUIに置き換える必 要があった • 同じインターフェイスでNGUIに 置き換えられうように
• コード自動生成なし • オートバインドなし 93 Project A Project X 共通化出来ない!
3.前のプロジェクトを継承しゆっくり育てる! 「ららマジ」でのOniUI • インターフェイスのコードを拡充 • UITechさんによるViewのコードを書く場所を追加 • UIのベースクラスの自動生成 Project WでのOniUI
• UGUIへの置き換え • カルーセルの機構追加 • イケてるバーチャルスクロール 94 Project A Project X らら マジ Project W 共通化出来ない!
3.前のプロジェクトを継承しゆっくり育てる! 「ヘブンバーンズレッド」でのOniUI • コードバインドの自動生成 95 Project A Project X らら
マジ Project W ヘブ バン Next Next 共通化出来ない!
3.前のプロジェクトを継承しゆっくり育てる! 思想やプログラムは人と一緒に移動する! • 奥村が昔のプログラムを持ってProjectを移動する • UITechさんがプログラムをもって別のProjectに移動する 人の移動によって思想が広まっていき、多くのProjectに入っていった 思想だけでも移動すると共通化が進んでいく 96 共通化出来ない!
4.ドキュメント制作会議 ドキュメントがないから直接教えて欲しい! • 教えて欲しい人を募って会議 • 機能ややり方を解説する • 参加者がその場でまとめる → あら不思議!
ドキュメントが完成! 97 共通化出来ない!
共通化出来ない! • 共通化はなんで難しいか? • 共通化が成功したツール • 1.命名せよ! • 2.パッケージ化せよ! •
3.前のプロジェクトを継承してゆっくり育てる • 4.ドキュメント制作会議 98
参考 [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
さいごに • 走りながらツールをつくろう • ゲームを作る人にしか出来ないツールづくりがある この発表がもし、あなたのゲーム作りの助けになれば! 100
101