見出し画像

MGL週報 #8 テクスチャアトラスツール公開など

このエントリはゲーム開発用フレームワーク「MGL」の開発記録です.MGLの詳細については次のリンク先のドキュメントを参照してください.

記事を開かなくても何となく内容が分かるよう,今週からちょっとタイトルの書式を変えてみます.タイトルを考えるのが面倒になったら戻すかもしれません.

あと,本家サイトとDiscordで通知していた更新や公開のお知らせについても,noteのつぶやきで投稿するようにしました.こちらもしばらく様子見です.

テクスチャのアトラス化ツールを公開

テクスチャをアトラス化して出力する「mgl-texatlas」を公開しました.その出力データをMGLで扱うためのエクステンションも併せて公開しています.

詳細はこちら.

テクスチャのアトラス化は古くから広く使われているテクニックであるため,それを行うツールは特別珍しいものではありません.うろ覚えですが,UnityやSpriteStudioあたりには標準でこの機能が備わっていたような気がします.(どちらも最後に使用したのが何年も前なので勘違いかもしれません)

これを作ったきっかけはというと,「ぺぐそり+」の開発中にMGLで扱いやすい形式でテクスチャを出力したいな,じゃあ作るかという流れだったと思います.目下の需要を満たすことが優先だったが故に作り込まれていない部分もありますが,そこに手を出すとまた公開が来週再来週となってしまいそうなので,一旦は現状を大きく変えずに公開します.

このツールとエクステンションの導入によって,MGLでの画像の扱いはかなり楽になります.例えば,icon/undo.png といった画像を表示させたい場合,ツールとエクステンションを経由すると次のように扱えます.

const TexturePiece icon("icon/undo");
if (icon)
{
    renderer.DrawSprite(MGL::Vector2(100.0f, 100.0f), icon);
}

もちろんこれはメモリ上のテクスチャへのアクセスになるため,読み込み等は発生しません.また,引数の文字列はコンパイラの最適化により32-bitの定数に置き換わるようになっているため,文字列を扱うことによるオーバーヘッドも避けられます.TexturePiece をローカル変数ではなくクラスのメンバ変数に持たせるように実装すれば,より効率的に扱えるようになるでしょう.

どちらかというと,この「扱いやすくする」事が本ツールの導入の主目的と言えるかもしれません.釘を打つ作業が楽しいか否かは,トンカチの握り心地次第ですからね.

次の作業

……は,どうしようかな.ゲーム開発に使っているツールは他にもあるのですが,少々ニッチなものなので(MGL自体がニッチなのは置いといて)整備して公開するのは後回しにします.

今後の予定の中からどれかを崩そうかと思いましたが,それより先に別のことに着手するかもしれません.新たに不具合を発見している他,今のうちに変更しておかないと後々面倒な事になりそうな部分もいくつか見つかっています.今なら破壊的変更のリスクも低いので,やるなら今のうちです.

先日の週報に書いたメッセージコンバータの問題点も,解決策が脳内で固まりつつあります.こちらもタイミングを見て頭の外に出したいところです.

あと,そろそろ真面目にゲームそのものを作る事も考えないとかもしれません.前にも述べた通り,この手のライブラリは使わなければ育たず,育ってなければ使われません.使ってみて初めて気付く不具合や使い勝手の悪さは決して珍しくないため,MGLでゲームを作ることはMGL本体の更新と同じくらい重要なのです.

本来ならばゲームの開発とライブラリの開発は並行して行うべきなのですが……うん,まあ,売上がね.あれでね.

その他

MGL以外の内容も何か書こうかなと,ふと考えたり.


いいなと思ったら応援しよう!