基本操作

Windows用 DirectX / OpenGL対応の2Dゲームライブラリです。標準でスプライト表示、コントローラー操作、圧縮音楽再生の他、動画再生にも対応しています。2Dゲームを作るのに適した機能に絞り覚える関数が少ないぶん習熟が速いのが特徴です。実際にWindows/PSP/STEAM/PS4/iOS/Android/で販売、運用された実績があり、スプライトベースのアクションゲームを作るのに必要な機能がそろっています。コツとしては7割位をライブラリでまかない、必要に応じてタイトルに合わせた改造を施すくらいがちょうどいい感じです。全方向にライブラリで対応するとできることも絞ることになるのと保守が大変なのでそういう仕様です。特に小難しいソースコードでもないので適宜改造してみてください。

  • 2017.05.30 ver2.2.2をリリース
  • デバッグモードとPhotonによる通信対戦をサポートしました

LUA対応

LuaスクリプトからgxLibを通じた描画、サウンド再生、コントローラー入力が可能です。C言語環境なしにプログラミング可能です。シューティングゲーム「Visoriser」をLuaに移植したサンプルが付属していますので、C++版と比較して学習できます。

一時停止(F1)

システム自体を一時停止します。再開は再度F1キーを押してください

 コマ送り(F3)

動作中であれば一時停止となります。停止中であればコマ送りを行いGameMain()を1度通過します。

パッドコンフィグ(F4)

コントローラーの設定を行います。システムで使用するパッドと各種ボタンを割り当てます。ライブラリは4方向ハットスイッチ、12ボタン、アナログレバーx2のコントローラーを想定しています(詳細仮想ゲーム機)ゲーム中のコンフィグ(射撃やジャンプボタンなど)は別途ゲーム内にコンフィグを設けてください。DirectX版ではDirectInputに対応。OpenGL版ではXInputに対応させています。

※操作はキーボードのみ受け付けます(コントローラーIDが変わった時に操作不能になるため)キャンセルはBS

デバッグ表示(F8)

画面左上に現在のオブジェクトリクエスト数とサブリクエスト、及び1秒間に行われた描画処理の回数(FPS)を表示します。

全力モード切替(F9)

vSyncを待たずにありったけのCPUパワーで処理します。速いマシンはめちゃくちゃ早くなります。

スクリーンショット(F12)

vSyncを待たずにありったけのCPUパワーで処理します。速いマシンはめちゃくちゃ早くなります。

ゲーム終了(ESC)

フルスクリーン時は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_OPTIONx8632bit版コンパイル
GX_BUILD_OPTIONx8664bit版コンパイル

グラフィック系

テクスチャ付き三角形

  • (x1,y1)-(x2,y2)-(x3,y3)の頂点を持つテクスチャ付き三角形スプライトを描きます
  • ''(u1,v1)-(u2,v2)-(u3,v3)でテクスチャのUVを指定します
    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 )
  • テクスチャ0ページ目の(16,0)-(32,32)-(0,32)のUVでスプライトを描画します
Sint32x1,y11つめの頂点XY時計回りで頂点を策定してください
Sint32x2,y22つめの頂点XY
Sint32x3,y33つめの頂点XY
Sint32u1,v11つめの頂点が参照するテクセル座標XY
Sint32u2,v22つめ
Sint32u3,v33つめ
Sint32tpgテクスチャページ番号
Sint32prioプライオリティ
Uint32atrアトリビュート
Uint32argbアルファ付きRGB値

性質がPutSpriteと大きく異なるところがあり、通常指定された四角形はレンダリング時に拡大率や回転を考慮してその頂点座標を再計算されますが、PutTriangleでは再計算されずに与えられた頂点をそのまま描画します。これは隣接したポリゴン同士で頂点を共有している時に有効です。

たとえば背景用マップチップなど頂点を共有した四角形の集まりなどを描く時にPutSpriteで描くとレンダリング時に再計算された時、隣接した矩形の頂点が「ほぼ一致しているが同じではない」状況が発生し隣接したポリゴンとの間につなぎ目が見え隠れしてしまうことがあります。

PutTriangleでは再計算されないため、レンダリング時にも共有している頂点情報を維持してつなぎ目をなくすことが可能です。

サウンド系

コントローラー系

ファイル入出力

動画

その他

通信 / インターネット関連

現在ベータ運用

補足

※1 Dinput / XInput形式

gxLibでは古い形式の一般コントローラー(dInput)の他、360コントローラー(xInput)専用のソースコードを選んでサポートします。
どちらがサポートされるかはコンパイル時にリンクされたソースにより決定されます。