この記事は
クロスプラットフォームのC++ゲーム開発で使えそうなライブラリを自分のためにまとめてる記事です。
追記
2012/2/15 : orgeとirrlicht engineとOpenALとbulletを追加
使えそうなライブラリ
Simple Directmedia Library(SDL)
本家:http://www.libsdl.org/index.php
ゲーム開発に必要そうな機能がいろいろ揃ったライブラリ。名前の通りシンプル。
これ単体でも簡単なグラフィックス機能を持っているが、OpenGLと連携させると便利。
マルチプラットフォームで入出力をあれこれ出来るライブラリがこれしか見当たらない。キーボード+マウス+ジョイスティックってなるとこれしか無いのでは?
一応、音声もサポートしている。
OpenGL
本家:http://www.opengl.org/
ハードウェアのグラフィックス機能を使うためのAPI。OpenGL自体が状態を記憶してくれるため、関数をポコポコ呼び出すだけでいいという素晴らしさ。でも、複雑な3Dグラフィックス処理はできないとかなんとか?
日本語フォントが使えないというやや面倒な点があるものの、SDL_ttfでサーフェイスからテクスチャを作ってなんとか出来るらしい。
OGRE
本家:http://www.ogre3d.org/
クロスプラットフォーム対応の3Dレンダリングエンジン。レンダリングのみをサポートしていて、外の機能はサポートしてない。
中身はOpenGLとかDirectXとかいろいろサポートしているみたい。
そしてバージョンのブランチ名が冒涜的。
SDLと連携可能。
irrlicht
本家:http://irrlicht.sourceforge.net/
3Dゲームエンジン。音声以外のゲーム開発に必要とおもわれる機能が揃っている?
SDL対応
eigen
本家:http://eigen.tuxfamily.org/index.php?title=Main_Page
行列計算ライブラリ。インラインループ展開やら並列命令やらでかなり早いらしい。
そもそも、科学計算とかに使えるようなライブラリなので線形代数の演算いろいろも入っている。
OpenGLと型の互換性があるとかないとか?
PhysX
本家:http://www.nvidia.co.jp/object/physx_new_jp.html
物理演算ライブラリ。GPUパワーを使って演算を行う。サポートはnVidia製GPUのみ?
当然だが、衝突判定もできる。
Bullet
本家:http://bulletphysics.org/wordpress/
物理演算ライブラリ。オープンソース。
MMDとか国内リアルタイム3Dエロゲとか、DxLibでサポートしてるとか、とにかく国内で激アツ?
OpenAL
本家:http://connect.creativelabs.com/openal/default.aspx
マルチチャンネル3Dオーディオを効率的に扱うためのライブラリ。
当然マルチプラットフォーム。
音のソースとリスナーを設定して聞こえ方をシミュレート出来るらしい。
SDLの音声再生で満足できなかったらこっち?
サポート的なツールキットであるALUTが存在する
Lua
本家:http://www.lua.org/
スクリプト言語。エンジンをC++で組み込める。
スクリプトとそのパーサを自作しなくていいというのはものすごいメリット。
Boost
本家:http://www.boost.org/
みんな大好きBoost。C++の準標準ライブラリ。痒いところに手が届く、便利な機能が詰め込まれてる。
ffmpeg
本家:http://www.ffmpeg.org/
いろんなメイディアファイルを読み込むのに。主にお世話になるのは圧縮音声ファイルのデコードでしょうか。OPムービーとかあるんならそれをデコードして再生してもいいのかも。あとはプレイ中の画面のリアルタイムファイル出力?
自作しないとダメっぽいもの
メモリプール
どういうわけか見当たらない。いや、C++標準とかboostにあるのは知ってるけどそういうことじゃない。
そのうち記事にするかも。
線形リスト
std::list使えばいいじゃんって言われそうだけど、面倒が多いので専用の線形リストをクラスを作る。大した手間ではない。
使ってみていろいろわかったら記事にするかも。
bullet vs physx
いろいろハードルが低いのはbullet。
LSI組んでるようなハイエンド環境向けの物理演算したかったらphysxの方が優秀?
でもbulletでもGPGPU出来るみたいなので、なんとも言えない。
導入とか
こちらは後日、winとubuntuでいろいろ試してから。