現在、公開にあたって汎用的に使えるように修正を加えています。
その中でいくつか思うところがあったため、今回質問させていただきました。
つきましては、以下の質問に対してご意見を伺えればと考えています。
全ての項目に答えていただかなくても結構です。
この時点で要望などありましたら、できる限り対応したいと思います。
1.現在、個人またはグループでのゲーム制作に使っているライブラリ
例)DXライブラリ Selene
2.新しいライブラリを使おうと思ったとき、最初に確認するところ
例)サンプルプログラム
3.ライブラリを選ぶにあたって重要視する部分
例)軽さ 機能の豊富さ リファレンスの見やすさ
4.他人の作ったクラスを使うときに注意すること
5.ゲーム開発に必要、またはあれば便利と思う機能
6.その他、意見など
また、他のライブラリ制作者やプロの方の注意や指摘が伺えれば
積極的に考えていきたいと思います。
一応、ライブラリの仕様について簡単に説明します。
使用にあたって必要なスキルはC++のクラスを扱えることです。
導入の方法はDXライブラリと同じです。
以下は画像を表示するための基本的なコードです。
#include <lnote.h>
// ライブラリが初期化を行う時に自動的に呼び出される関数です。
// この関数は必ず定義する必要があります。
// 特に設定したい項目が無い場合は空の実装でOKです。
void LConfig( ConfigData config )
{
// 例
config.setFrameRate( 30 ); // フレームレートを 30 にする
}
// ライブラリ用のエントリーポイントです。
// このライブラリは main() でも WinMain() でもなく、この関数から始まります。
// 始まった時点でライブラリの初期化は完了してウィンドウがひとつ出ており、
// すぐに描画等の処理を行うことができます。
void LMain()
{
// 表示する画像を読み込んでテクスチャを作成する
LTexture texture = LTexture::create( "画像ファイル名" );
// スプライト(透明な板みたいなもの)を作成してテクスチャを張り付ける
LSprite sprite = LSprite::create( texture );
// スプライトの座標を設定する。左から順にX, Y, Z座標。Z座標は前後関係です。
sprite.setPosition( 100, 200, 10 );
// メインループ
do
{
// Framework.update() はDXライブラリの ProcessMessage に当たる関数です。
// 作成されているスプライト等を全て自動で描画し、
// メッセージと待ち時間の処理を行います。
} while ( Framework.update() );
}
平山さんのライブラリにあった参照カウント+ダミークラスという方法を使わせていただいています。
テクスチャ等は必要が無くなった時点で全て自動的に解放されます。
そんなの知らないよ!っていう方に、参考として少し説明します。
void func()
{
// 中身は空っぽ
LTexture tex1;
// "chara.png" を読み込んで作成
LTexture tex2 = LTexture::create( "chara.png" );
// tex1 は tex2 と同じものを指す
tex1 = tex2;
} // ここで tex1 tex2 のデストラクタが呼ばれ、テクスチャは自動的に解放される
関数の引数・戻り値としても使うことができます。
他にも、
・用途に応じた音声の再生(playBGMでループ再生、playSEで重ね合わせ可能な単発再生等)
・キーボードとゲームパッドの差を吸収した入力(キーコンフィグ付き)
・Luaによるスクリプティング
・ファイルカーカイブと非同期のファイル読み込み
・エフェクトエディタを使ったゲームエフェクトの作成支援
…等、グラフィック関係以外でもゲームの質を上げられるような機能を実装しています。
また、汎用DLLとしても作成し、C++以外の言語でも使えるようにする予定です。
(この場合は関数ライブラリになると思います。C#では動作確認済み)
以上です。よろしくお願いします。
(仲間内では結構人気だったけど、他の人から見たらどう感じるのかな…。