Windows用 DirectX / OpenGL対応の2Dゲームライブラリです。標準でスプライト表示、コントローラー操作、圧縮音楽再生の他、動画再生にも対応しています。2Dゲームを作るのに適した機能に絞り覚える関数が少ないぶん習熟が速いのが特徴です。実際にWindows/PSP/STEAM/PS4/iOS/Android/で販売、運用された実績があり、スプライトベースのアクションゲームを作るのに必要な機能がそろっています。コツとしては7割位をライブラリでまかない、必要に応じてタイトルに合わせた改造を施すくらいがちょうどいい感じです。全方向にライブラリで対応するとできることも絞ることになるのと保守が大変なのでそういう仕様です。特に小難しいソースコードでもないので適宜改造してみてください。
LuaスクリプトからgxLibを通じた描画、サウンド再生、コントローラー入力が可能です。C言語環境なしにプログラミング可能です。シューティングゲーム「Visoriser」をLuaに移植したサンプルが付属していますので、C++版と比較して学習できます。
システム自体を一時停止します。再開は再度F1キーを押してください
動作中であれば一時停止となります。停止中であればコマ送りを行いGameMain()を1度通過します。
コントローラーの設定を行います。システムで使用するパッドと各種ボタンを割り当てます。ライブラリは4方向ハットスイッチ、12ボタン、アナログレバーx2のコントローラーを想定しています(詳細仮想ゲーム機)ゲーム中のコンフィグ(射撃やジャンプボタンなど)は別途ゲーム内にコンフィグを設けてください。DirectX版ではDirectInputに対応。OpenGL版ではXInputに対応させています。
※操作はキーボードのみ受け付けます(コントローラーIDが変わった時に操作不能になるため)キャンセルはBS
画面左上に現在のオブジェクトリクエスト数とサブリクエスト、及び1秒間に行われた描画処理の回数(FPS)を表示します。
vSyncを待たずにありったけのCPUパワーで処理します。速いマシンはめちゃくちゃ早くなります。
vSyncを待たずにありったけのCPUパワーで処理します。速いマシンはめちゃくちゃ早くなります。
フルスクリーン時はWindow表示に戻ります。Window表示時にESCを押すとアプリを終了します。
特徴としては他のライブラリに比べて関数に渡す引数が少し多いです。関数の数を少なくする分、1つの関数で覚えることが少し多くなりますが、できるだけ短く書けるようにオプション的なものにはデフォルト引数を設定してあります。複数の関数や構造体を覚えなくてもいいように1関数の仕組みを覚えて工夫できるようにするポリシーで策定されています。
デバッグ、マスター(リリース)の切り替えについて2種+1の定義を持っています。
ビルドのバージョンについて独自の定義が色いろあるとマルチプラットフォーム的にややこしいので以下の3種類をライブラリ側で提供します。
GX_DEBUG | デバッグコンパイル時に使用(デバッグ情報を出力)、最適化なし |
GX_RELEASE | 最適化されたコンパイルでデバッグ出力あり |
GX_DEBUGとGX_RELEASEはライブラリ内部でDebugG/Releaseコンパイル時に自動的に定義されるプリプロセッサです。自分で定義する必要はありません。
GX_MASTER | デバッグ出力なし(主にGX_RELEASEと併用する) |
「GX_MASTER」は製品版相当にする時に自分で定義します。デバッグルーチンを通らず、またデバッグ出力を消して製品版相当にすることができます。GX_MASTERはコンパイルの最適化には関与せず、単に製品版の見た目にするかどうかだけを切り替える定義です。主にGX_RELEASEと併用して使われます。
その他、ビルドに応じて以下が自動で定義されます。
GX_BUILD_OPTIONx86 | 32bit版コンパイル |
GX_BUILD_OPTIONx86 | 64bit版コンパイル |
PutTriangle( x1,y1 ,u1,v1, x2,y2 ,u2,v2, x3,y3 ,u3,v3, tpg, prio,atr,argb );例
PutTriangle( 128,0, 16,0, 256,256,32,32, 0,256,0,32, 0, 100,ATR_DFLT , ARGB_DFLT )
Sint32 | x1,y1 | 1つめの頂点XY | 時計回りで頂点を策定してください |
Sint32 | x2,y2 | 2つめの頂点XY | |
Sint32 | x3,y3 | 3つめの頂点XY | |
Sint32 | u1,v1 | 1つめの頂点が参照するテクセル座標XY | |
Sint32 | u2,v2 | 2つめ | |
Sint32 | u3,v3 | 3つめ | |
Sint32 | tpg | テクスチャページ番号 | |
Sint32 | prio | プライオリティ | |
Uint32 | atr | アトリビュート | |
Uint32 | argb | アルファ付きRGB値 |
性質がPutSpriteと大きく異なるところがあり、通常指定された四角形はレンダリング時に拡大率や回転を考慮してその頂点座標を再計算されますが、PutTriangleでは再計算されずに与えられた頂点をそのまま描画します。これは隣接したポリゴン同士で頂点を共有している時に有効です。
たとえば背景用マップチップなど頂点を共有した四角形の集まりなどを描く時にPutSpriteで描くとレンダリング時に再計算された時、隣接した矩形の頂点が「ほぼ一致しているが同じではない」状況が発生し隣接したポリゴンとの間につなぎ目が見え隠れしてしまうことがあります。
PutTriangleでは再計算されないため、レンダリング時にも共有している頂点情報を維持してつなぎ目をなくすことが可能です。
現在ベータ運用
gxLibでは古い形式の一般コントローラー(dInput)の他、360コントローラー(xInput)専用のソースコードを選んでサポートします。 どちらがサポートされるかはコンパイル時にリンクされたソースにより決定されます。