AltseedというマルチプラットフォームのゲームライブラリをArch Linuxで使う時のちょっとしたメモです。
どっちも導入までは公式の文書がちゃんとあるのであまり難儀はしませんが、アプリケーションコンパイル時/実行時にちょっと詰まったので
環境
- Arch Linux(Linux 4.1.6-1-ARCH x86_64)
- デスクトップ環境はGNOME+OpenBoxですが大体他の環境でも同じかなと思います(たぶん)
- gcc 5.2.0
- Altseed(masterブランチのcommit 485cdf741b24044670a6255ef9188e374c395bc7)
はじめにビルドするときに
Arch Linuxでは依存パッケージとして以下のものが必要です。
p7zip cmake libx11 glu glew libxrandr swig
もしこれらをインストールしてもビルドに失敗する場合はエラーメッセージを添えてコメントなりなんなりしていただければ手助けぐらいはできるかと思います(もっとも、Archをインストールしてデスクトップ環境を整えられるくらいであれば自力で解決できそうな気もしますが、その場合はぜひとも追加の依存パッケージを教えていただけると助かります(? )
コンパイルに際しての注意点(オプションとか)
最低でも以下のものを指定すればきちんとコンパイルできます。
- C++11フラグ(-std=c++11、1yでもとりあえず動く)
- 追加インクルードディレクトリ(-I(Altseedルート)/Dev/include)
- ここで指定せずソース内でパス指定してもきちんとコンパイルされます
- 追加ライブラリディレクトリ(-L(Altseedルート)/Dev/lib)
- Altseedライブラリ本体(-lAltseed)
- X11のライブラリ(-lX11)
- ダイナミックリンク用ライブラリ(-ldl)
なので、
# include <Altseed.h>
int main(int, char**)
{
if(!asd::Engine::Initialize(asd::ToAString("App").c_str(), 640, 480, asd::EngineOption()))
return -1;
while(asd::Engine::DoEvents()) asd::Engine::Update();
asd::Engine::Terminate();
return 0;
}
として、同じディレクトリで
% g++ main.cpp -o main -std=c++11 -I(Altseedルート)/Dev/include -L(Altseedルート)/Dev/lib -lAltseed -lX11 -ldl
とすればコンパイルには成功します(typoがなければ)。
あとは./main
とすれば黒塗りのウィンドウが出る...と思いがちですがそうでもなかったのが今回のミソ
しっかりダイナミックリンク用のパスを指定する
この記事で使用しているバージョンの場合、cmake時にBUILD_SHARED_LIBSをoffにしても共有ライブラリを使う設定でビルドされます。さらに、make installでLD_LIBRARY_PATHが設定されないため、
- LD_LIBRARY_PATHに"(Altseedルート)/Dev/bin"を追加する
- 実行時にLD_LIBRARY_PATHを指定する
- LD_LIBRARY_PATHが通っているディレクトリに手動で配置する
のいずれかの手順を追加で踏む必要があります。今回は単純にテスト目的なので実行時にLD_LIBRARY_PATHを指定する形にします。
% LD_LIBRARY_PATH=(Altseedルート)/Dev/bin:$LD_LIBRARY_PATH ./main
以上で、基本的なAltseedのウィンドウ(真っ黒い画面)が出てくるかなと思います。
わざわざArch Linuxを使ってゲーム開発を行うなんて人は滅多にいないとは思いますが(たぶん)、3Dモデル制作ならBlenderがありますし2DでもGIMP等がありますし、音響でもArdourやRosegardenなどで大体賄えたりしますから(wineでWindows向けDAWを動かすこともできますが、遅延がさすがにひどすぎるのとかいろいろ面倒すぎるので絶対におすすめしません)ゲーム制作プラットフォームの選択肢としては十分にありだと思います(?