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の動作環境
BaseCrossは
VisualStdio2015で動作します。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++担当)