DXライブラリ
作者 | 山田巧 |
---|---|
初版 | 2001年5月1日 |
最新版 |
3.24
/ 2022年10月13日 |
プログラミング 言語 | C++ |
対応OS | Microsoft Windows、PlayStation Vita、PlayStation 4、Android、Nintendo Switch、iOS |
サポート状況 | 開発中 |
種別 | ライブラリ |
ライセンス | オープンソース |
公式サイト | DXライブラリ置き場 |
DXライブラリ(ディーエックス・ライブラリ、またはダイレクトエックス・ライブラリ、デラックスライブラリ)とは、2001年に山田巧がC++用に開発した、無料のコンピュータゲーム開発用ライブラリである。広義にはゲームエンジンに分類される。DxLibとも表記される。
ライブラリ自体の著作権は開発者の山田巧が保持しているが、ライブラリはオープンソースとして公開されている[1]。ライブラリの使用に制限や条件は一切なく、ソースコード配布時に限りライブラリの著作権表示を求めている[2]。
概要
[編集]専門学校のゲーム学科[3]で既に使用されていた一般公開されていない教材(ライブラリ)を元に、関係者の協力の下、山田巧がパソコンゲーム(Windows)用に開発した[4][5]。2001年5月に初版がリリースされてから、2019年10月現在でも開発が進んでいる。名称は「DirectXライブラリ」から由来している[6]。
ライブラリ独特の仕様が少なく自由度が高いため、ゲームジャンルや開発規模に制約されないことを特徴に上げている。C++用のライブラリではあるがC言語の知識だけでも扱えるよう工夫されている。DirectXおよびWindows APIを意識せずに使えるように設計されているものの、プログラムのエントリーポイントはWinMain(その他プラットフォーム向けでは異なる)になる。基本的な設計思想について山田巧は、ライブラリの前身にあたる教材の影響を強く受けていると語っている[5]。
2001年開発当初は、DirectXおよびWindows APIを使用しているため、全体的にWindowsに依存しておりマルチプラットフォーム設計ではなかった。2015年9月にPlayStation Vita、同年10月にPlayStation 4、2017年2月にAndroid、2018年6月にNintendo Switch、2019年3月にiOSにそれぞれ対応した。Windows版とその他プラットフォーム向けではソースコードの共有もできるが、一応対応していない関数・機能も存在する。また、有志によってPlayStation Portableで動作する派生ライブラリを開発するプロジェクトが存在する。
開発時のOSはWindows XP以降が必要である。サポートされている開発環境はVisual C++、C++ Builder (Borland C++)、Gnu C++の他にも、Visual C#用パッケージも用意されている。ライブラリ単体でDirectXが利用できるよう設計されているため、DirectXのSDKがなくてもコンパイルできる。ライブラリは静的リンク方式(*.LIB
)でのみ提供されておりDLLは存在しない。DXライブラリのソースコードはライブラリ自体には入っておらず、山田巧により DxLibMake というファイルで別途公開されている。
公式サイトにライブラリの関数リファレンスページやサンプルプログラムが用意されているが、「主な関数の説明」とされており掲載されていない関数もある[7][8]。公式リファレンスページ上で全ての関数が掲載されていない状況について、2010年10月に山田巧も「ドキュメントが整備し切れていない」と認めている[9]。なお、公式サイトは2016年3月に一度移転している。
2015年12月、DrawFormatStringなどの文字列を渡す関数でバッファオーバーランが発生し、任意のコードを実行される脆弱性が公表された[10]。2016年1月、JVN iPediaにて告知されIPA上にも掲載された[11][12]。脆弱性は3.16で修正されている。
開発者の名前について、公式サイトや付属の説明書では山田巧で統一されているが、ミラーで配布されているベクターではハンドルネームで夏夕樹と名乗っている[13]。
沿革
[編集]小規模なアップデートは省略する。
日時 | バージョン | 更新内容 |
---|---|---|
2001年5月 | 1.00 | 初版リリース |
2001年5月 | 1.30 | 通信関係の機能追加 |
2001年5月 | 1.41 | lib形式(静的リンク方式)での配布に決定・変更 |
2004年4月 | 2.12b | 開発環境・Borland C++に対応 |
2005年9月 | 2.19 | DirectX SDK不要でコンパイル出来るように |
2008年11月 | 開発環境・Visual C#に対応 | |
2009年9月 | 3.00 | DirectXのバージョンを9に変更 |
2010年7月 | 3.02f | Unicode設定によるコンパイルに対応 |
2011年7月 | 3.05a | 通信関係がIPv6に対応 |
2012年5月 | 3.08 | Visual C++のx64版追加 |
2014年4月 | DirectX 11に対応 | |
2015年9月 | PlayStation Vitaプラットフォームに対応 | |
2015年10月 | PlayStation 4プラットフォームに対応 | |
2015年12月 | 3.15f | DrawFormatStringなどの文字列を渡す関数でバッファオーバーランとなってしまう問題を修正 |
2017年2月 | 3.17b | Androidに対応 |
2018年6月 | 3.19b | Nintendo Switchに対応 |
2019年3月 | 3.20c | iOSに対応 |
2019年10月 | 3.21b | Live2D Cubism 4に対応 |
2021年11月 | 3.23 | Windows 11に対応 |
サポートされている機能
[編集]ゲーム開発用に設計されたライブラリのため、ゲーム開発における関連技術を中心にサポートしている。一方で、一般的なアプリケーションの開発に必要なウィジェット(コントロール)はサポートされていない。
なお、3Dグラフィックス機能としてMikuMikuDanceのモデルファイルとモーションファイルの読み込みにも対応しているが、一部仕様に違いが見られる。
サンプルプログラム
[編集]- 最も一般的なHello worldプログラム
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// DXライブラリ初期化
if( DxLib_Init() == -1 ) {
return -1;
}
//文字列表示
DrawString( 10, 10, "Hello, world", GetColor(255, 255, 255));
//キー入力待ち
WaitKey();
// DXライブラリ使用の終了
DxLib_End();
return 0;
}
採用実績と評価
[編集]ライブラリ自体の用途に制限は一切無く、使用した旨を記載・公言する義務も課せられていないため、採用数(使用した作品数)は不明である。ただし、一部機能を使用した場合著作権・ライセンス表記が必要である[2]。
公式サイトに使用作品を紹介するページが開設されているほか、動画投稿サイトやその他ウェブサイトなどでも使用作品が公開されている。
ライブラリを教材として授業に使用する大学や専門学校もある[14][15]ほか、独自に作成した派生ライブラリを活用している事例もある[16]。
DXライブラリについて、「(DirectXを扱うことと比較し)画像ファイルを読み込んで画面上に動かす、効果音や音楽を再生するといったゲームに欠かせない処理を簡単に実行できる。」[17]「C言語で楽にゲームを作る機能を提供してくれる (引用略) 一般的なゲームプログラムの組み方を学習するという意味でも、優れたライブラリ」[18]と評価する声もある。
関連書籍
[編集]DXライブラリを使用したゲームプログラミングの入門書も多数発売されている。
- 14歳からはじめるC言語わくわくゲームプログラミング教室 Windows98/2000/Me/XP対応 ISBN 4-8997-7151-7
- 14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2008編―Windows XP/Vista対応 ISBN 4-8997-7217-3
- 14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2010編 ISBN 4-8997-7281-5
- 14歳からはじめるC言語オンラインゲームプログラミング教室 Windows XP/Vista対応 ISBN 4-8997-7240-8
- 14歳からはじめるC++わくわくゲームプログラミング教室―Windows98/2000/Me/XP対応 ISBN 4-8997-7165-7
- 14歳からはじめる リアルに動く!ゲーム物理プログラミング教室 C言語編―Windows 98/2000/Me/XP/Vista対応 ISBN 4-8997-7180-0
脚注
[編集]- ^ ダウンロードページ 「改造希望の方へ」
- ^ a b 著作権関係 <<DXライブラリのライブラリファイルやソースコードの再配布について>>
- ^ 学校名などの詳細は公表されていない
- ^ 仕様&特徴説明 「ライブラリ制作にご協力していただいた方」
- ^ a b インタビュー1-2 of Visual Studio2010編予告サイト(LibroWorks Inc)
- ^ 説明書参照(Ver 3.06c時点)
- ^ 関数リファレンスページ
- ^ リファレンスページとライブラリのヘッダファイルを比較のこと
- ^ インタビュー2-2 of Visual Studio2010編予告サイト(LibroWorks Inc)
- ^ DXライブラリの脆弱性情報 2016年3月26日確認
- ^ JVNDB-2016-000001 DXライブラリにおけるバッファオーバーフローの脆弱性 2016年3月26日確認
- ^ 「DXライブラリ」におけるバッファオーバーフローの脆弱性対策について(JVN#49476817) 2016年3月26日確認
- ^ 作者:夏夕樹 2015年3月9日確認
- ^ カリキュラム(芸術学部) (東京工芸大学)
- ^ TDG BLOG » 【ゲームクリエイター科】第2回目 AOプレスクール! (東京デザイナー学院)
- ^ 環境情報学科 プログラミング入門 ゲーム作成コーナー 「DXライブラリについて」 (東京情報大学)
- ^ 14歳からはじめるC++わくわくゲームプログラミング教室―Windows98/2000/Me/XP対応 ISBN 4-8997-7165-7 第1章「ゲーム作りに欠かせないDXライブラリ」
- ^ ゲームプログラマS.S-新卒の方々へ 株式会社イニス 2011年7月20日
関連項目
[編集]外部リンク
[編集]- DXライブラリ置き場(公式サイト)
- DXライブラリPortable(PSP動作の派生ライブラリ)
- DxPortLib(似た構文を利用するマルチプラットホーム環境)