こんばんは、✝生贄✝こと47代TTです。今日の話題はTTが作っているDirectXを使ったゲーム開発用ライブラリ、Shepherdです。
ライブラリの内容は、
などなど。Visual C++上で動きます。
ぶっちゃけ、DXライブラリみたいな感じです、車輪の再開発…。あと、3Dにはまだ対応していません。
差別化要素としては、コードをいじらずにDirectX 9、DirectX 11どちらでも動かせるという点でしょうか。
DirectX 11にも対応しているからストアアプリ化も簡単だね、ということでストアアプリ用のライブラリも用意しようとしています。1月末にはできているはずです、というかできていないといろいろと問題です (コンテストなどの兼ね合い) 。
あとは、ネットワーク関連を強化しています。IPv6対応のほか、TCPではshutdownを用いることができるように改良し、UDPではマルチキャストに対応しています。UPnPNATでポート解放をすることもできます。
では、簡単なコード例を示してみます。
#include <shepherd.h>
#pragma comment(lib, "shepherd.lib")
using namespace shepherd::ShepherdControl;
//FPSの設定
const int FPS = 60;
int WINAPI WinMain(_In_ HINSTANCE hinstance, _In_opt_ HINSTANCE hprevinstance, _In_ LPSTR lpcmdline, _In_ int ncmdshow) {
//テクスチャのハンドル
HTEX hogetex;
//Shepherdライブラリの初期化
Initialize(FPS);
//hoge.pngからテクスチャを作成
hogetex = LoadGraphFromFile(_T(“hoge.png”));
//メインループ (ウインドウの閉じ判定とメッセージ処理を同時に行う)
while (ProcessMessage()) {
//描画セクションの開始
StartRenderingSection();
//hogetexを左上 (クライアント座標 0,0) に描画
ChangeGraph(hogetex);
DrawGraph(0,0,0);
//描画セクションの終了 (FPS調整と画面描画)
EndRenderingSection();
}
//Shepherdライブラリの終了処理
Closing();
return 0;
}
このように、DirectXを使っていることを意識しなくても良い設計になっています。
また、描画セクションをはっきりと分け、自動でFPS管理をすることで、外でwait系の命令を呼ばなくてよいように工夫されています。
今後の対応予定は、
などなど。
実はすでにゲームが作れるようにはなっています。実際に (幻になった?) ばななろく2はDXライブラリを使わず、すべてこのライブラリで組まれています。 (ばななろく2の完成はいつかな?)
すぐ公開すると思うので暇だったら触ってみてください。
2015/01/07追記
描画セクションの開始部分でBeginRenderingSectionと書かれていましたが、正しいコードはStartRenderingSectionでした。該当部分はすでに修正済みです。