【CEDEC 2017 フォローアップ】Cygames における次世代ハイエンドコンソール向けゲームエンジンの開発 ~最高のコンテンツを支えるゲームエンジン~


こんにちは、 Cyllista Game Engine 統括マネージャーの多胡です。
CEDEC 2017 にて、『Cygames における次世代ハイエンドコンソール向けゲームエンジンの開発 ~最高のコンテンツを支えるゲームエンジン~』というタイトルで講演させていただきました。
講演に参加いただきました皆様には改めて御礼申し上げます。
また会場が早い段階で満員になってしまい、ご迷惑をおかけしました。
参加できなかった方におかれましては本エントリーにて講演内容を確認していただけると幸いです。

当日の資料がこちらになります。

また、公演中に使用したムービーはこちらになります。

Cyllista Game Engine の紹介

エンジン開発ツール cybuild によるテスト駆動開発

Runtime Compiled C++ のデモ

Cyllista Game Engine でのアセットプレビュー

最高のゲームエンジン

講演では、まず、 Cyllista Game Engine の簡単な紹介を行いました。
そして目標としている『最高のゲームエンジン』とは

  • ハードウェアが最高のパフォーマンスを出せる
  • ゲーム開発者が最高のパフォーマンスを出せる

ことであると定義しました。
そして後者の「ゲーム開発者が最高のパフォーマンスを出せる」ようにするための取り組みについて説明しました。

本エントリーではその中でふれたエンジン開発ツールである cybuild について語り切れなかった内容を補足したいと思います。

スライドにもあります通りエンジニアが利用するエンジン開発ツールは cybuild と呼ばれる CUI ツールにすべてを統合しています。

cybuild は GUI ツールではなくてあえて CUI ツールを選択しています。
CUI ツールを選択している理由は作業効率です。
CUI は GUI に比べてとっつきにくい部分はありますが、キーボードから手を離さなくても作業ができるので最終的には効率がよくなります。
そして CUI のとっつきにくさを改善するために行っていることが2つあります。

コマンドのヘルプ

ひとつはヘルプを用意することです。
CUI コマンドのヘルプは必ず用意してコマンドがどういう動作をするのか、どういったオプションがあるのかがすぐにわかるようになっています。

そのために利用しているのが docopt という Python モジュールです。
docopt はヘルプドキュメントから引数のパーサーを生成するモジュールです。
すなわちヘルプドキュメントを書けばそのとおりに引数をパースしてくれます。
docopt を利用することで常にヘルプドキュメントが存在するようにし、またヘルプとコマンドの仕様のズレが生じないようにしています。

cybuild-help

コマンドプロンプトでのタブ補完

もう一つはコマンドプロンプトでのタブ補完の機能です。
Windows のコマンドプロンプトでは標準の状態では柔軟なコマンドの補完ができません。

そこで clink というソフトウェアを導入しています。
clink はコマンドプロンプトでタブ補完を行ってくれるソフトウェアです。
lua でルールを記述することでコンテキストに基づいた補完候補の内容をカスタマイズできるようになります。
たとえば cybuild と打ったあとでタブを押せば cybuild の全コマンドの候補が表示されるようになっています。
また、モジュール名を要求されている場面ではモジュール名のリストがタブ補完の候補になるようにしています。

cybuild-completion

最後に

Cygames では一緒に最高のゲームエンジンを制作し、さらにはそのエンジンを利用して最高のコンテンツを作るメンバーを募集しています。
詳細につきましては、こちらをご覧ください。