ライセンス
This software is released under the MIT License, see LICENSE.txt.
ゲーム開発用ライブラリ
このライブラリは基本的にゲーム開発を補助するためのライブラリです。
内部的に行われていることはDirectXやOpenGL(未実装)などの機能をパック化した形になります。
使用環境
現在動作確認済み使用言語
現在動作確認済みOS
内容
ライブラリは大きく分けて7つ存在します。
ChBase
Chライブラリの根幹を担う機能をまとめたライブラリ
ChCpp
C++の機能のみで利用することが可能なライブラリ
他のプラットフォームへ持って行き、コンパイルして利用することができる。
ChWin
WinAPIを利用する際に便利な機能をまとめたライブラリ
ChD3D9
Direct3D9を利用する際に便利な機能をまとめたライブラリ
※現在更新予定なし(互換性を持たせておくため更新はあり)
ChD3D11
Direct3D11を利用する際に便利な機能をまとめたライブラリ
ChD3D
Direct3Dの機能ではあるもののDirect3DのDeviceに依存することなく利用することができる独立したライブラリ。
ChD3D9ライブラリやChD3D11ライブラリを呼ぶ際に同時に呼ばれる。
ChImGui
3D環境でOSや3DLibraryに依存しないWindowを表示させるライブラリをパック化したライブラリ。
※現在更新予定なし。
ExternalLibrary
このライブラリで使用する外部のライブラリです。
外部ライブラリは以下の通りです。
使用方法
以下にそれぞれの使い方を記述していく。
ChBaseライブラリ
ChCppライブラリ
ChWinライブラリ
ChD3D9ライブラリ
ChD3D11ライブラリ
ChD3Dライブラリ
ChImGuiライブラリ
ExternalLibrary
予定
- ChWinライブラリを大規模修正※(作業量が大きいためペンディング)
- TextObjectを修正(動作が少し重いため)
- Compresser(可逆圧縮)機能の追加(Deflate32,Deflate64を主に作成)
- FBXモデルのロード機能の追加
- HitTestObject関連の機能の追加
- Collider関連の機能の追加
- JsonObjectクラスの作成(Web関連で必要になったため)
- NetWork関連の機能の追加
- ChTextObjectを改修
- ModelObjectを共通化
- ChD3D11の大規模修正
- BaseObjectの継承方法の変更
- XWindowSystemのパック化ライブラリの追加
- OpenGLのパック化ライブラリの追加
- Vulkanのパック化ライブラリの追加
- mtlppのパック化ライブラリの追加
- CentOSで利用可能にする
- CarbonAPIを利用可能にする
更新(予定から移動したもの)
- QuickStarterの土台を開発
- ChBaseライブラリとChCppライブラリを調整する。
- ClassPertsをChCpライブラリとしてChCppからChBaseへ移行する。
- 外部ライブラリを容易に追加することができる機能を追加
中止(予定から移動したもの)
このライブラリのコンセプト
- できる限り他のライブラリを使わずに独立させたい(標準ライブラリを含む)
- 様々なソフト開発を容易にしたい
- あれば便利というものをまとめておきたい
- プラットフォーム関係なく開発できるようにしたい
- 他言語のライブラリ開発にも考え方を利用したい
歴史
学生時代にメモリの解放忘れや手順の間違いを無くせれば良いという考えでのみライブラリの開発を始めました。
開発当時は利用環境がDirectX9だったため、DirectX9をパック化した簡潔なライブラリとなっておりました。
学年が上がった関係で使用環境がDirectX9からDirectX11に変わり、今まで貯めていた機能を呼び出すだけでは利用することが不可能となってしまったため、ライブラリの開発方法を一新しました。
現在は以下の事を目的として開発するようにしております。
- 必要な手順を1つにまとめる。
※例:D3DXIntersectを行う際にRayにあたかも3DModelが動いたかのように見せるための処理を組み込む。
- メモリの解放忘れを防ぐ。
※例:LPD3DXTEXTURE9の解放忘れなどをRelease関数またはデストラクタで絶対に開放するようにする。
- クロスプラットフォームを可能とした開発を行う。
- 拡張性を持たせる。
※例:ClassPertsを継承させて様々な機能を追加したクラスを作成する。
- 協調性を持たせる。
※例:XMFloat3クラスをパック化したChVec3_11クラスが存在するが、基本的に引数でXMFloat3を利用する。
※現在は開発目的のうち3と5は実装できていない箇所が存在します。