Tech Toolbox for Game Programmers @GDC2016
せっかくだから俺はこの動画を要約するぜ
1. The Poor Man's Dialogue Tree
お金を掛けないダイアログツリーの作り方
普通のやり方
- Unityのアセットストア等で買うと高い
- サードパーティ製(本当に必要なものではない可能性がある)
- 退屈!(人にやらせるなら楽しい仕事のほうがいいよね)
- 大量のデータを作るためにちゃんとしたツール(GUIなども)を用意してあげる必要がある
- パフォーマンス重要でゲームのコードも共有する必要がでてくる(C++/C#)
我々のやり方
- 8割問題を解決するための2割(本当に必要なもの)を自分で書く
- HTML5(クロスプラットフォーム、実装簡単、パフォーマンスは重要じゃない、色々なライブラリが使える、JSONみんな使える)
- JointJSとNW.jsを使ってノードグラフが動くデスクトップアプリを作成
- NW.jsつかえばファイルリネームするだけでデスクトップアプリができるのでめっちゃ便利
- ファイルフォーマットは3種類用意(編集用JSON、最適化JSON、ローカライズ用のテキストをxlsxに)
- なぜExcelか→テキストデータがExcel形式だと有志に手伝ってもらいやすい
まとめ
- DIYたのしい
- 本人が実装したダイアログツリー ---> https://github.com/etodd/dialogger
2. Automating Data Implementation With IDs
Darkest Dungeonでどのようにデータが実装されたか
- Darkest Dungeon → ターンベースRPG、プロシージャル。プログラム2人。C++の内製(?)エンジンとミドルウェア
- 定義したIDから必要なデータ(ファイルパス)やコードが自動生成される
- コード生成はマクロとプリプロセッサ
特別なことはしてないけど、ゲーム内容にあった実装を正しく選択した感じ
3. Tracery - generating texts, graphics, and more!
自動生成システムTracery.jsの紹介
- SporeとかSimCityにも携わったKate Compton(@galaxykate)さん、プロシージャルコンテンツ生成をしている
- Tracery最初はテキスト生成のToyを作ろうと思ったが、多目的言語ができて、TwitterBotを作るサービスができた
- Botで絵文字(AA)や画像を自動生成する人もでてきた
- ゲームにも使えるんじゃないですかね?ストーリー、音楽、コードの自動生成等々
機能
- ハッシュタグで囲まれた文字列をルールに沿って置換する({"greetings": ["hello", "nihao"], "origin": "#greetings#, World!"}的な)
- 再帰的置換、テキストのモディファイア(例:複数形への変換)、生成されたテキストの保存と再利用
4. Putting the "Game" in "edi-game-tor"
A Good Snowman Is Hard To Build のレベルデザインにPuzzleScriptを使ったよという話
- ほとんどのゲームはレベルエディタが必要
- 「外部ツール 」か「ゲーム内エディタ」のどちらかを選択する
- 第三の選択として「エディタ内のゲーム」がある → PuzzleScript
- イテレーションを加速する既存のツールを使おう