DXライブラリのススメ

DXライブラリは、DirectXやWin32APIをラップしたなかなか便利なゲーム用ライブラリである。
http://homepage2.nifty.com/natupaji/DxLib/index.html
これを用いると、煩雑なDirectXの仕様だの入力の取得だのを気にすることなく、ごく単純なC言語だけでWindowsゲームを作ることができる。
よって初心者に嬉しい逸品だが、このライブラリはプログラミングの得意な、ベテラン開発者たちにも多くの恩恵を齎す。本記事はどちらかというとDXライブラリなんて、と思っている人たちに向けた宣伝である。

何が出来るか

まず、プログラミングがあまり得意でない人、DXライブラリを初めて聞いた人に向けて説明する。
DXライブラリは、主に以下の機能を持つ。

  • 描画
  • ウィンドウ生成
  • 入力の取得

この他にもネットワーク通信だの画像出力だの便利な機能は入っているが割愛する。逆に、いわゆる「ゲームエンジン」にあるような、以下の機能は持っていない

  • オブジェクト管理・挙動の設定
  • リソース管理
  • ステージ編集

つまりDXライブラリは、Windows上で動作するアプリケーションを作成する上で、最低限の機能しか提供されていない。よくDXライブラリを初心者専用、簡単にゲームが作れるライブラリなどと言う者も居るが、誤りである。DXライブラリを使っても往年のコンシューマ名作ソフトを作ることは可能であるし、DXライブラリを卒業したからといって上級者になれるわけでもない。

使用する利点

まず、前述した通りDXライブラリを使うことで、煩雑なDirectXの仕様やウィンドウ作成に何十行も必要なWin32APIから解放される。
また、DirectXを利用するWindowsアプリケーションを作ると、環境によって様々なエラーやバグが起きる。XP, Vista, 7はまるで仲良くしてくれない。動作環境に「グラボ必須」と書くことは簡単だが、出来ればグラボ無しでも動いてくれたほうがいい(そして残念なことに、注意書きをしてもグラボ無しで動かそうとする人は大勢いる)。そしてそれらのバグは、大抵自分の持っていない環境で起きるため、修正が非常に面倒である。
DXライブラリを使うと、そういった環境バグから(完全にではないが)解放される。DXライブラリを使ったソフトは多数あるため、そのプレイヤーが環境不具合を報告すれば、フィードバックがライブラリ製作者まで届くからだ。即ちDXライブラリは数千・万種類の環境での動作が保障されている。DXライブラリを馬鹿にするなら、少なくとも2000〜7までの環境を一通り、32bit, 64bit含めて持っている必要がある。如何にプログラマが熟練していようがしていまいが、起動しないゲームはゴミである。
更に、それでも環境バグが起きてしまった場合も、ライブラリに原因を投げることが出来る。これは少しずるい。プレイヤーには「ライブラリの更新を待て」と言いながら、新しいゲームに取り掛かれるのである。もっとも、こういったケースはライブラリのバグではなくプレイヤーの環境がおかしい可能性のほうが高い。それもひっくるめて、「貴方の環境を直すか、ライブラリの更新を待て」と言えるのである。自分はお咎め無しだ。

あと、これは利点というわけではないのだが、2DゲームならDXライブラリを使わない理由はほぼ無い。自分で一から作っても出来上がるのは似たようなものなのだ。しかもバグが多いし環境テストも出来てない。速度は1%くらい早くなっているだろうか。費やした時間は考えたくもない。

使用すべきでないケース

3Dゲームは、苦手である。3Dゲームを作りたいならSeleneなど別のライブラリを使うか、直にDirectXを叩くしかない。
ツール作りにもあまり向いていない。一応メニューを付けたりメッセージをフックすることはできるが、DXライブラリを使う意味が薄れてしまう。DXライブラリはリソースが最低限でも20〜30MB前後のメモリを食うので、軽い動作が求められるものには使うべきでない。
また、DXライブラリはWindowsアプリケーション専用のものなので、MacLinuxでは(プレイヤー自身が特殊な方法を用いない限り)起動しない。