Hello World / plɹoM ollǝH

Programmers Live in Vain

Tech Toolbox for Game Programmers @GDC2016

せっかくだから俺はこの動画を要約するぜ

www.youtube.com

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形式だと有志に手伝ってもらいやすい
まとめ

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
  • イテレーションを加速する既存のツールを使おう

5. Making Your Own Tools & Hiden Benefits

自作ツールの隠れたメリット

  • 何故自作ツールが必要なのか→「とにかく始められる&レベルデザイン」にフォーカスしすぎで「システムの理解とオーサリング」が足りない
  • ゲームロジックとデータを可視化して、チームで問題を素早く解決したい
  • imguiがめっちゃ便利
  • ツールはドキュメントの代わりになる(常に最新&ナレッジも共有される)

C++でインゲームGUIつくるならimgui一択か