Base Cross概要

concept 概要

BaseCrossについて

BaseCrossはVisualStdio2015によって動作する、ゲーム作成のための「ゲームフレームワーク」(現在作成中)です。これまで、ゲームフレームワークとして「DxBase2015」「DxBase2016」の2つのバージョンを公開しました。両バージョンともGitHubに公開されています。

DxBase2016

https://github.com/WiZFramework/DxBase2016

DxBase2015

https://github.com/WiZFramework/DxBase2015

ダウンロードは、それぞれのリンクをクリックください。

現在、このサイトでは「DxBase2016」の後継である「BaseCross」の開発ブログを発信しております。BaseCrossはその名のとおり「クロスプラットフォーム」を目指すゲームフレームワークです。現在、Dx11およびDx12の両環境で使用できるよう制作中です。興味がある方は、ブログ実験と実装とをお読みください。

以下は、これまで公開してきた、DxBase2015、DxBase2016フレームワークの概要になります。

DxBase2015、DxBase2016は、C++のフレームワークであり、基本的にプログラマー育成のために使用されることを前提に作成されています。
商用目的の利用も、部分的完全版問わず可能ですが、育成用が基本にあるため、例外throwの表示など、商用には向かない機能が内蔵されています。その場合は、このページの最後の商業利用についての欄をお読みください。

  1. C++11文法に乗っ取った記述スタイルとなっています。C言語的に代替えできる、もしくはそのほうがシンプルであるとしても、あえてC++11的記述にしてあります。
  2. フレームワーク全体をbasedx11というnamespace内に収めています。
  3. WinaMain()を含め、例外処理を階層的に記述しています。そのため、関数の戻り値のエラー等は例外発生throwによって処理されます。
  4. 例外はほとんどのケースで強制終了を意味します。(復帰を試みない)。これはゲームのフレームワークであるという性質上、致し方がない処理と考えます。プログラマは例外が発生しないように記述すべきです。あるいは、分岐に例外を使用する場合は、各個人の管理の中でローカル的に処理されるべきです、その場合、catchの記述も各個人で行います。
  5. 例外発生によってthrowされるのは、エラー内容および発生個所(関数名)です。このことは、発生原因を調べるのに役立つと思われます。もし商業利用等で、関数名などの表示が思わしくない場合、WinMain.cppにcatchした例外のメッセージ表示の記述がありますので、そこを修正ください。WinMain.cppはフレームワーク外にあります。
  6. #defineはできるだけ使用しません。テンプレートもしくはconst変数(定数)など、C++11文法を使用しています。
  7. goto文は使用しません。
  8. グローバル関数はできるだけ使用しません。どうしても必要な場合は、テンプレートにするか、子名前空間に含めるか、構造体、クラス内に含め、static関数とします。ただし、WinMain()関数と、ウインドウプロシージャ、あるいはコールバック関数は例外です。
  9. グローバル変数は、できるだけ使用しません。クラス内に収めるようにします。
  10. STLを使用しています。主に多用しているのは、スマートポインタ、vector、wstringなどです。スマートポインタの登場にともない、もともとのポインタは生ポインタと表記することがあります。
  11. UNICODE環境で作成されます。しかし、Microsoftの_T()で記述される、環境による文字列の自動変換機能は使用しません。基本的にwstringまたはwchar_t*を使用し、データ等がマルチバイトの場合は意識的にstring、char*を使用しています。
  12. メモリの取得はスマートポインタの仕様に沿って記述されます。自作のmalloc関数や、operator newなどを使用してメモリを管理するテクニックは使用ません。これはC++11の学習を基本に置くという前提によります。仕事現場では、環境の違いにより、場合によっては必須になるかもしれないそういったテクニックは、専門学校における基礎理解の範疇を超えると考えます。
  13. 同様の理由で、仮想関数を多用しています。現場によっては、たとえば仮想関数を使わずに記述を求められる場合もあると思われますが、仮想関数の仕組みを理解するということは、オブジェクト指向の理解を深めるのに役立ちます。これらの知識は、将来、もしC++以外の開発を行う場合(Java、C#、PHPなどなど)の基礎的知識となります。
  14. templateを多用しています。

動作・開発環境

DxBase2015、DxBase2016は、ゲームエンジンにDirectX11を使用し、VisualStdio2013(VisualC++)により作成されます。OSはWindows8.1以降で動作します。シェーダーバージョンは5.0です。

表記規則

表記規則には、厳密ではありませんが、以下の規則にしたがいます。

  1. クラス内メンバ変数は、m_で始まる記述にします。(例: m_Size)
  2. 変数に型識別は生ポインタについてはpをつけます(例: m_pName)。しかし、C++11となり、ソース内には生ポインタはほとんど出てきません。
  3. スマートポインタについては、特別の表記規則はありません(メンバの場合はm_をつける、は上記同様)。これはスマートポインタが、自動的に破棄されるため、newで取得したポインタは必ずdeleteしなけらばならないという生ポインタのような制約がないためです(つまり、そんなに意識する必要がない)。また、autoを使うことにより、暗黙の型の変数を作成できます。だんだん型という概念が、ソース上から見えなくなっている(見えなくなるが、存在はしている)ので、表記規則もそれに合わせています。
  4. 関数の命名規則は特にはありませんが、アクセサ(あるいはこれに類するもの)は、GetまたはSetをつけています。bool型のGetアクセサはIsで始まるバージョンも用意してあることが多いです。

記述スタイル

  1. クラスのメンバ初期化は、メンバイニシャライザをできるだけ使用します。実際の初期化は、スマートポインタの登場に伴い、Create仮想関数による2段階構築になることが多くなります。ただしその場合でも、エラー処理は例外処理を使用します。
  2. クラス内のアクセス制限は、privateまたはpublicが多くなり、protectedはごく少数になりました。これはデータメンバーは派生クラスでも基本的にアクセッサを介して行う、という原則にしたものです。protectedは、たとえば派生クラスからのみインスタンスを作成できる(プロテクトコンストラクタ)などに使用しています。
  3. 1行のみのループであっても{ }で囲みます。
    例:

    int a = 0;
    for(int i = 1;i <= 10;i++)
    a += i;

    int a = 0;
    for(int i = 1;i <= 10;i++){
    a += i;
    }

    と記述すします。

  4. 生ポインタおよびリファレンス(参照)は

    wchar_t* pName;

    void Function(const wstring& str){
    //…
    }

    のように、左側につける形で記述する。これは、プログラミング言語C++(Stroustrup著)の記述スタイルに基づきます。

著作権

  1. DxBase2015、DxBase2016並びに本ドキュメントの著作権はWiZ(国際情報工科大学校)に属します。以下に述べる個所はMicrosoft等、ほかの団体の規約に従います。
  2. タイマーおよびシェーダーに、DirectXTK、DirectXTex、DirectXサンプルのソースをそのままもしくは改変し使用しています。そのため、それらのソースはMicrosoftサンプルソース使用の条件に従います。(それらはマイクロソフトパブリックライセンス、「Microsoft Public License (Ms-PL)」です)
  3. SpriteStdioの読み込みは、SpriteStudio5-SDKのソースを参考に作成しました。この部分はSpriteStdioSDKの利用規約に基づきます。
  4. モデルはFBXを利用しています。FBXのヘッダ及びライブラリはLibsディレクトリに保存されています。
    ライブラリの一部に、各書籍に記述されているアルゴリズムを参考に記載された箇所が含まれます。それらは、各書籍に転載自由と記載されているものに限られ、また、書籍中コードをそのまま使用しているものではなく、必ず、環境に合うよう、カスタマイズされています。
  5. 学生が在学中、あるいは卒業後、ライブラリソースを、フリーソフト、業務等含め直接使用することもできます。その際は、GNUオープンソースライセンスに基づきます。その場合でも、このライブラリで利用している、他ツールなどは、各ライセンス規約に基づきますので、必要であれば、各社各団体への連絡は各自お願いします。
    また、「DxBase2015」を使用したことによる不具合等は、当方は関知しません。各自責任の上で再利用することとします。

商業利用について

  1. 卒業生でなくても、商業利用はご自由ですが、以下の制限があります。
  2. フレームワークの不具合、矛盾点などがあり、それにより利用者が損害を受けても、当方は一切責任はありません。各社各自各々の責任においてご利用ください。
  3. 「DxBase2015」「DxBase2016」はMITライセンスに基づきます。その場合でも、このライブラリで利用している、他ツールなどは、各ライセンス規約に基づきますので、各社各団体向けのライセンス処理は各自お願いします。
  4. 実行ファイルのみを公開・販売するのは自由ですが、その場合「DxBase2015」「DxBase2016」を使用している旨を記述いただければ幸いです。
  5. フレームワーク使用方法、個別指導などをご希望の方は、下記へお問い合わせください。

謝辞

フレームワークで使用させていただいてます、SpriteStdioの株式会社ウェブテクノロジ様。このたび、「DxBase2015」を「SpriteStudio 3rdParty」に加えていただきました。
URL http://spritestudio3rdparty.github.io/

また、FBXSDKを提供されてます、オートデスク株式会社(Autodesk, Inc.)様。そして、DirectXツールキットやDirectXTX、なによりもDirectX本体、VisualStdioを提供していただいてますMicrosoft様、皆様のツールやライブラリ、エンジン、コンパイラは、まさに夢の世界への切符と言えます。本当にありがとうございます。

カテゴリー

ピックアップ記事

  1. 2016092201
    今回は前回のサンプルを少し機能を追加しまして、いろんなオブジェクトを追加しています。FullTuto…
  2. 2016092001
    前回更新から時間がたってしまいましたが、今回はフルバージョンチュートリアル003をアップしました。内…
  3. eyecatch
    前回更新から時間がたってしまいましたが、今回はフルバージョンチュートリアル002で懸案となっていまし…
PAGE TOP