DXライブラリとは?導入から使い方・ゲーム作成まで初心者向けに解説

DXライブラリは、山田巧氏が2001年から公開しているWindows向けの無料ゲーム開発ライブラリです。DirectXの複雑な処理を数行の関数で呼び出せるように包んであり、C++の入門者でも画像表示・音の再生・キー入力を短いコードで扱えます。最新はVer3.24fで、Visual Studioに設定を通せばその日のうちに最初のウィンドウを表示できます。この記事は、DXライブラリの定義から導入手順、基本的な使い方、ゲームループの組み方、そしてSiv3DやUnityとの使い分けまでを一気通貫でまとめました。

まとめ:DXライブラリの要点

  • DXライブラリ=DirectXを簡単に扱えるC++製の無料ゲームライブラリ。作者は山田巧氏、2001年から継続更新。
  • 最新はVer3.24f。Windows(Visual Studio/MinGW/C++Builder/C#)に加え、Android・iOS・HTML5版も配布。
  • ライセンス料は無料・商用・法人を問わず一切かからない。ソースコードを配布する場合のみ著作権表示が必要。
  • 導入はダウンロード→解凍→Visual Studioのインクルード/ライブラリパス設定の3ステップ。
  • 画像はLoadGraphDrawGraph、音はPlaySoundMem、入力はCheckHitKeyで扱い、ProcessMessageのループで動かす。

以降で、DXライブラリの正体と対応環境、導入から実際にキャラクターを動かすまでを順に見ていきます。

DXライブラリの正体と用途

DirectXを包む無料ライブラリ

Windowsでゲームや2Dグラフィックスを扱うにはDirectXを直接呼び出すのが本来の方法ですが、初期化やデバイス管理の記述が長く、初心者には負担が大きいのが実情です。DXライブラリはこのDirectXをラップし、DxLib_Initを1回呼ぶだけで描画・音・入力の準備が整うようにした無料ライブラリです。内部でDirectXを直接呼び出すため、開発者はDirectXの定型処理を書かずにゲームのロジックへ集中できます。「directx」で検索してこの記事に辿り着く人が多いのは、DirectXの入口としてDXライブラリが選ばれているためです。

DXライブラリで作れるもの

得意領域は2Dゲームです。シューティング、アクション、ノベル、パズルといったジャンルは標準の関数だけで実装できます。同人ゲームや学校の課題、プログラミング学習用の小作品で採用例が多く、実際に商業・同人で頒布された作品にも使われています。3D描画やモデル読み込み(MV1形式)にも対応しますが、3Dを本格的に扱うならUnityなどのゲームエンジンのほうが向きます。DXライブラリは「C++の練習をしながら動くゲームを作りたい」層に最も向いています。

DXライブラリの対応環境とライセンス

対応コンパイラと言語

DXライブラリはコンパイラ別にパッケージが分かれており、Ver3.24fの時点でVisual Studio(C++)、MinGW(Gnu C++)、C++Builder 12、Borland C++ Compiler 5.5に対応します。C++が基本ですが、Visual C#用パッケージも配布されており、C#からも同じ関数群を呼び出せます。初心者はサンプルや解説記事が最も多いVisual Studio(C++)版を選ぶのが無難です。

対応プラットフォーム

WindowsがメインですがAndroid版・iOS版・HTML5版も公式配布されており、同じコードに近い形でスマホアプリやブラウザゲーム(WebGL)へ展開できます。Live2D対応のAndroid/iOS版も用意されています。PlayStation 4(2015年)やNintendo Switch(2018年)など家庭用ゲーム機への対応も公式にアナウンスされていますが、これらは各メーカーの開発者登録が前提で、公式ダウンロードページからは配布されません。まずはWindows版で作り、必要になった段階で他プラットフォームへ移すのが現実的です。

ライセンスと商用利用

DXライブラリを使って作ったソフトウェアには、無料・有料・商用・法人利用を問わずライセンス料が一切発生しません。制約は「ライブラリのソースコードを再配布する場合に著作権表示を残す」ことだけで、実行ファイルとして頒布するぶんには表示義務もありません。この寛容なライセンスが、個人開発から企業の学習教材まで幅広く採用される理由です。最新のライセンス条項は公式サイトの著作権関係ページで確認できます。

DXライブラリの導入手順(ダウンロード〜Visual Studio)

ダウンロードと解凍

公式サイト「DXライブラリ置き場」のダウンロードページから、Visual Studio(C++)用のVer3.24fパッケージ(約200MB)を取得します。zip形式なので、必ず解凍してからフォルダを任意の場所に置いてください。解凍せずにzipのまま参照するとヘッダーやライブラリが見つからずビルドに失敗します。バージョンは更新されるため、最新版の番号は公式ダウンロードページで確認してください。

Visual Studioでのプロジェクト設定

Visual Studioで空のC++プロジェクトを作成し、プロジェクトのプロパティで解凍したDXライブラリのフォルダを次のように登録します。設定を通す環境として、最新のVisual Studioを使う場合はVisual Studio 2026の新機能とシステム要件もあわせて確認しておくと導入で詰まりにくくなります。

  • VC++ディレクトリの「インクルードディレクトリ」に、ヘッダーDxLib.hのあるフォルダを追加する。
  • 「ライブラリディレクトリ」に、拡張子.libファイルのあるフォルダを追加する。
  • 「文字セット」を「マルチバイト文字セットを使用する」に変更する(公式サンプルがマルチバイト前提のため)。

この3点を設定すれば、以降は#includeするだけでDXライブラリの関数が使えます。

最初のプログラムとリンクエラー対処

次のコードは、ウィンドウを開いて文字列を表示し、キー入力で終了する最小構成です。

#include "DxLib.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine, int nCmdShow)
{
    ChangeWindowMode(TRUE);              // ウィンドウモードで起動
    if (DxLib_Init() == -1) return -1;   // 初期化に失敗したら終了

    DrawString(0, 0, "Hello, DxLib", GetColor(255, 255, 255));
    WaitKey();                           // 何かキーを押すまで待つ

    DxLib_End();                         // 終了処理
    return 0;
}

ビルド時にdxguid.libd3dcompiler.libが見つからないというリンクエラーが出ることがあります。これはライブラリディレクトリの登録漏れか、プロジェクトのプラットフォーム(x86/x64)とライブラリの組み合わせが合っていないのが主因です。設定したパスと、ビルド構成のプラットフォーム指定を見直すと解消します。

DXライブラリの基本的な使い方

画像の描画

画像はまずLoadGraphでハンドル(識別番号)として読み込み、DrawGraphで座標を指定して描きます。回転や拡大を伴う描画にはDrawRotaGraphを使います。

int handle = LoadGraph("chara.png");   // 画像を読み込む
DrawGraph(100, 100, handle, TRUE);     // (100,100)へ透過ありで描画

読み込みは重い処理なので、ループの外(起動時)で一度だけ行い、描画だけを毎フレーム実行するのが定石です。

音・BGMの再生

音はLoadSoundMemで読み込み、PlaySoundMemで再生します。第2引数に再生方式を渡し、BGMのようにループさせたいときはDX_PLAYTYPE_LOOP、効果音のように一度だけ鳴らすときはDX_PLAYTYPE_BACKを指定します。

int bgm = LoadSoundMem("bgm.ogg");
PlaySoundMem(bgm, DX_PLAYTYPE_LOOP);   // BGMをループ再生

対応形式はWAV・MP3・OGGなどで、効果音とBGMをハンドルで使い分けます。

キー入力の取得

特定のキーが押されているかはCheckHitKeyで調べます。引数にKEY_INPUT_RIGHTのようなキーコードを渡し、押されていれば1が返ります。複数キーを毎フレーム判定するなら、256個分の状態を一括取得するGetHitKeyStateAllが効率的です。ゲームパッドの入力はGetJoypadInputStateで取得します。

if (CheckHitKey(KEY_INPUT_RIGHT) == 1) x += 4;  // 右キーで移動

ゲームループの作り方(実践)

メインループとダブルバッファリング

ゲームは「入力→更新→描画」を毎フレーム繰り返します。DXライブラリではProcessMessageがウィンドウの状態を監視し、ウィンドウが閉じられると0以外を返すので、これをループ条件にします。ちらつきを防ぐため、描画先を裏画面(DX_SCREEN_BACK)にして、1フレーム分描き終えてからScreenFlipで表画面へ一気に切り替えるダブルバッファリングを使います。

キャラクターを動かすサンプル

矢印キーで画像を左右に動かす最小のゲームループは次のとおりです。読み込みをループ外に置き、ループ内では更新と描画だけを行う構造に注目してください。

ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) return -1;
SetDrawScreen(DX_SCREEN_BACK);          // 描画先を裏画面に

int chara = LoadGraph("chara.png");
int x = 300, y = 220;

while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
    ClearDrawScreen();                  // 裏画面を消す
    if (CheckHitKey(KEY_INPUT_RIGHT)) x += 4;
    if (CheckHitKey(KEY_INPUT_LEFT))  x -= 4;
    DrawGraph(x, y, chara, TRUE);
    ScreenFlip();                       // 裏画面を表へ
}

DxLib_End();

このループに当たり判定やスコア表示を足していけば、そのままシューティングやアクションへ発展させられます。

DXライブラリと他のゲームライブラリの比較

C++で2Dゲームを作る選択肢はDXライブラリだけではありません。特にモダンC++で書けるSiv3Dと、統合開発環境を備えたUnityがよく比較されます。用途で選ぶのが失敗しないコツです。

項目 DXライブラリ Siv3D Unity
言語 C++ / C# C++(C++20) C#
得意分野 2D中心 2D中心 2D・3D両方
記述量 やや多い 少ない エディタ主体
料金 無料 無料 無料枠+有料
学習資料(日本語) 多い 多い 非常に多い

C++の基礎を関数レベルから学びながら軽量に2Dを作るならDXライブラリが向きます。同じC++でも、より短いコードでモダンに書きたいなら無料C++ゲーム開発フレームワークのSiv3Dが有力で、両者は正面から競合する選択肢です。一方、本格的な3Dや商用タイトル、マルチプラットフォーム配信を最初から見据えるならUnityを選ぶべきで、DXライブラリで無理に3Dを組むのは遠回りになります。「とにかくC++でゲームの仕組みを手を動かして理解したい」——この目的にはDXライブラリが最も素直な入口です。

よくある質問

DXライブラリは無料ですか?商用利用もできますか?

無料です。作成したソフトを有料販売しても、法人が業務で使っても、DXライブラリ側のライセンス料は発生しません。義務はソースコードを配布する場合の著作権表示のみです。

DXライブラリはC言語やC#でも使えますか?

基本はC++ですが、C言語スタイルの記述でも動きます。さらにVisual C#用パッケージが配布されており、C#から同じ関数群を呼び出せます。

dxguid.libが見つからないとリンクエラーが出ます。なぜですか?

ライブラリディレクトリの登録漏れか、プロジェクトのプラットフォーム(x86/x64)とライブラリの不一致が主な原因です。プロパティのライブラリパスとビルド構成を見直してください。

Macやスマホアプリも作れますか?

Android版・iOS版が公式配布されており、スマホアプリを作れます。Windows向けのライブラリなのでmacOSのネイティブ開発には向きませんが、HTML5版を使えばブラウザ経由でmacでも動かせます。

関数のリファレンス(一覧)はどこにありますか?

公式サイト「DXライブラリ置き場」の関数リファレンスページに全関数の仕様がまとまっています。DxLib_Initなどの引数や戻り値もそこで確認できます。

関連記事

資料請求

RELATED POSTS 関連記事