BaseCrossとは

 BaseCrossは、DirectX11、DirectX12のクロスプラットフォームをめざしたゲームフレームワークです。
 公開GitHubサイトは
https://github.com/WiZFramework/BaseCross
です。

 位置づけ的には、Dx11版ゲームフレームワークDxBase2016DxBase2015の後継に当たります。
 DxBase2016DxBase2015いずれもGitHub公開されており、以下のURLからダウンロードできます。

DxBase2016

https://github.com/WiZFramework/DxBase2016

DxBase2015

https://github.com/WiZFramework/DxBase2015

 上記2つのフレームワーク、及びBaseCrossは、福島県郡山市にありますWiZ(国際情報工科自動車大学校)C++ゲームプログラミングにおいて、実際に使用されている、ゲームフレームワークです。

WiZ(国際情報工科自動車大学校)ホームページ


 それぞれの利用方法につきましては、それぞれのGitHubサイトを参照ください。
 ただ、2017年現在、DxBase2015、DxBase2016についてはメンテナンスを行ってませんので、BaseCrossの使用をお勧めします。

BaseCrossの目標

 BaseCrossは、まだまだ進化中ですが、GitHub公開されています。

 制作途中で公開した理由としましては、フレームワーク作成という、通常であれば水面下で行われるであろう作業を、あえて公開することにより、学生の皆さんはじめ、ゲームプログラミングを学びたいと思っている方と、悩んだり修正したりするさまをぜひ共有したいと思ったからです。
 幸いGitにはコミットという概念があり、制作過程を容易に追いかけることが可能です。これらの制作方法は、僕の作り方であり、ほかにも無限に作り方があります。もちろん設計や仕様も、無限に方法があります。  BaseCrossという一つの設計を知ることにより、皆さんが独自のアイディアや独自の設計を考えるヒントになればと思います。
 BaseCrossの制作過程はブログとして公開されています。
実験と実装とというタイトルです。リンク先にブログがあります。興味があったら読んでみてください。主にDx12との格闘がブログ化されています。(ただ、2017年夏の時点で、Dx12版作成はしばらく止まっている関係で、ずいぶん更新しておりません。時期をみてまた書きたいと思います)

 2017年7月現在、Dx11はおおむね完成に近づいてますがDx12はまだまだです。

BaseCrossの動作環境

 BaseCrossVisualStdio2015で動作します。OSはDx11版であればWindows8.1以上Dx12版であればWindows10、Windows10SDKが必要です。
 言語はVisualC++です。VisualStdio2015はセットアップ時にVisualC++はデフォルトの設定ではインストールされません。かならずVisualC++をセットアップし、Dx12版をお使いの場合はWimndows10SDKをセットアップしてください。(なおWindows10でなければWimndows10SDKはセットアップできませんので、WIndows8.1の場合は自動的にDx11版のみの開発ということになります)

BaseCrossのサンプル

 BaseCrossのサンプルはこのドキュメントの上の階層に並べてあります。
 FullSample302などFullで始まる名前のサンプルはフルバージョンのサンプルです。
 SimpleSample001などSimpleで始まる名前のサンプルはシンプルバージョンのサンプルです。
 ディレクトリ内にBaseCrossDx11.slnBaseCrossDx12.slnというソリューションファイルがある場合があります。前者はDx11版であり後者はDx12版です。
 2017年7月現在、Dx11版のみのサンプルも多数あります。

フルバージョンとシンプルバージョンの違い

 フルバージョンは、DxBase2015、DxBase2016を実装経験のある人ならわかると思いますが、コンポーネント、ゲームステージなどのサービス的なライブラリを含みます。
 フルバージョンでのゲーム制作は、プログラミングというよりは設定に近い形で進められます。自動衝突判定、自動物理計算(ただし簡単なもの)、自動重力、自動補間処理などのコンポーネントや行動を実装することにより、オブジェクトが自動的に動作します。
 また、描画処理はほとんどの場合、ゲーム側で記述の必要はありません。描画用のコンポーネントがありますので、オブジェクトに合う描画コンポーネントを設定すれば描画されます。独自の描画を実装したい場合のみ、描画処理を実装することもできます。

 一方、シンプルバージョンは、上記のようなコンポーネント行動は実装されません。衝突判定や、補間処理、そして描画処理など、各ゲーム側で記述する必要があります。(衝突判定については基本的な関数は持ってますが、自動ではありません。)
 ですからシンプルバージョンによるゲーム制作は、Dx11もしくはDx12、の知識が必要になります。サンプルでできるだけ多くのパターンを紹介したいですが、サンプルでは限界もありますので、各自のやりくりも重要になります。

なぜ2つのバージョンがあるのか

 まず第一に教育上の理由です。現在はゲーム制作を始めるハードルがものすごく低くなっています。Unityなどのフレームワークを利用すれば、ほとんどコードを書くことなくゲーム制作を始められます。
 しかし、行列計算や、座標変換のメカニズム、あるいはレンダリングパイプラインの仕組みを知らずに制作を進めた場合、なかなかプロの現場で通用するとは思えません。
 実際にプロの現場でもUnityなどを使って制作を進めている企業様は山ほどあります。しかし、どこかでUnityの仕様を超える部分が出てきます。そんな場合は直接衝突判定を計算したり、ある時はシェーダを自作しなければならない場合があります。
 そうした場合、行列がわからない、三角関数がわからない、補間処理がわからない、パイプラインの何たるかもわからない、では、現場で破たんするのは見えています。
 いいたとえかどうかわかりませんが、料理人を目指すのに、出汁の取り方を知らずにめんつゆを使うようなものです。
 そうした便利なツールがある現代だからこそあえて不便な環境(自分で実装しなければいけない環境)に身を置いて、ゲーム制作にじっくり取り込む時期も、学生さんには必要と思います。そんな時に、教材として役立つのがシンプルバージョンと考えています。

 加えて、例えばDxBase2015、DxBase2016、そしてBaseCrossもMITライセンスンのフリーソフトですから、企業様でお使いいただいても一向にかまいませんし、直接使用しなくてもアルゴリズム研究テスト実装、などに利用していただいてもかまいません。そうした場合、省力化のため、まずはフルバージョンで制作を始めて、どうしても不満がある場合に部分的に描画処理や計算処理を自作するといった制作方法がとれます。フルバージョンは、シンプルバージョンの上に乗る、単なる追加ライブラリなので、いつでも低いレベルの処理を実装することが可能です。
 以上、大きくこれらの2つの理由で、フルバージョンとシンプルバージョンを用意しています。

BaseCrossの今後

 2017年夏現在、BaseCrossは開発途中です。サンプルやライブラリの修正がある都度GitHubにアップしますので、末永く見守っていただければ幸いです。
 何か質問、問い合わせがある場合は、ブログ、実験と実装とのお問い合わせにお送りください。

 それでは、一人でも多くに方のお役に立てますよう、願っています。

                          2017年夏 山ノ井 靖(WiZゲーム科非常勤講師:C++担当)