Edited at

DxPortLibを使ってマルチプラットホームゲーム開発

More than 5 years have passed since last update.


DxPortLibとは

mauvecowさんが開発したマルチプラットホームなゲーム開発ライブラリです。(https://github.com/mauvecow/DxPortLib)

Windowsではおなじみのゲーム開発用ライブラリDxLibと同じ関数、構造体を使うことができます。

MacやLinuxなどでC++やCでゲーム開発しようとすると、今までOpenGLやSDLをいじる

必要がありましたが、このライブラリを用いることにより比較的簡単なDxLibと同じような

感じで開発できるようになります。(最近は現代的で使いやすいSiv3Dなども出てきているようですが、Linuxのサポートは今のところ予定されていないようです...)


Fedoraに導入(たぶんUnix環境ならだいたい同じはず)


前提条件

あらかじめ次のライブラリが導入されていることが前提です。


  • SDL2

  • SDL2_image

  • SDL2_ttf

  • Vorbisfile

また、今回使うツールとしては


  • cmake

を使います。当然gccなどのコンパイラも必須です。


導入

まずは適当なディレクトリにgitから落とします。

$ git clone https://github.com/mauvecow/DxPortLib.git

DxLibPortのライブラリをコンパイルするためにcmakeとautomaketools版が提供されていますが、

今回はcmakeを使います(個人的に慣れているため)

automaketools版の方を用いるとtestまでコンパイルしてくれるようなので気になる方はそちらも試してみてください。

$ cd DxPortLib/

$ mkdir lib
$ cd lib
$ cmake ..
$ make

とここまでして

$ ls *.so

libDxPortLib.so

と出力され確かにライブラリが生成されていることが確認できます。


動作テスト

とりあえずウィンドウを表示するだけの簡単なサンプル

//main.cpp

#include "DxLib.h"

int main(int argc, char **argv) {

SetUseCharSet(DX_CHARSET_EXT_UTF8);
SetWindowSizeChangeEnableFlag(TRUE);
SetWaitVSyncFlag(TRUE);
SetGraphMode(640, 480, 32);

SetWindowText(_T("DxPortLib Test"));

ChangeWindowMode(TRUE);

DxLib_Init();

while (ProcessMessage() == 0) {

WaitTimer(1);
}

DxLib_End();

return 0;
}

ここでも例のごとく簡単のためcmakeをつかってコンパイルします。

次のようにCMakeLists.txtを記述します。

cmake_minimum_required (VERSION 2.8)

project(DxPortLibTest)

set(CMAKE_CXX_FLAGS "-std=c++1y")

link_directories( <path_toDxPortLib>/lib/)
include_directories(path_toDxPortLib>/include)

add_executable(a.out main.cpp)

target_link_libraries(a.out SDL2 libDxPortLib.so)

最新の機能をつかいたいのでc++1yオプションつけていますが、

マルチプラットホームで開発したいならVSで使えない機能使ってても

きづけないのでc++11あたりにしとくのが無難かもしれません。

あとは

$ mkdir build

$ cd build
$ cmake ..
$ make
$ ./a.out

でウィンドウがでたら成功です。