orzEngine (2)

カーソルキーでぐりぐり動きます.
http://www.dwahan.net/nyaruru/programming/orzEngine/
元々ネタのつもりだったんですが(id:NyaRuRu:20040601#p2),サークルの後輩がC#DirectXでゲームを作りたい*1ということでMDXラッパーを作ってみました.上記アーカイブにサンプルの実行バイナリと全てのソースコードが入っています.サンプルを動かすにはAssembly Version 1.0.1901.0のMDXが動作する環境を用意してください.
このorzEngineは「悩む余地すらないぐらいに制限された描画手法」をコンセプトとしています.描画ですがどれぐらい制限されているかというと,

  • 描画命令はプリミティブ(点・線分・三角形)描画しかない
  • 1回の描画命令で描画できるのは1つのプリミティブだけ
  • 描画属性は塗りつぶしカラーのみ(Zバッファ・アルファブレンディング・テクスチャマッピングなどは非サポート)

という感じです.実際内部では以下のようなエフェクトファイルを使っています.

#include 

technique T0
{
    pass P0
    {
        CullMode = None;
        Lighting = false;
        ZEnable = false;
        ShadeMode = Flat;
        ColorOp[0] = SelectArg2;
        AlphaOp[0] = SelectArg2;
    }
}

描画以外にはWin32APIのGetAsyncKeyStateのラップも行っていて,非同期的なキーボード状態の読み取りにも対応しています.これで貧弱ながらも入力と出力が揃ったわけで,後はまあゲーム制作者にセンス次第でしょう.
ちなみにorzEngine本体の実装では個人的な趣味による新技術の試し斬りを行っていて,ContextBoundObjectを使ったAOP的手法のテストなんかも行っています.興味がある方は覗いてみてください.

*1:本音を言うと先にC# .NET Frameworkだけである程度経験を積んもらいたいところですが