TLfres (日本語)

TLfres について

TLfres の目的は任意のゲームを任意の画面解像度で実行できるように作成することを非常に容易にすることです。これを使用してもグラフィックスのコード書き直しは要求されません!

このライブラリの使用条件は ZLIB ライセンスです。

ダウンロード

Dropbox から直接入手

連絡先

準備

モジュールにある全ての関数は TLfres 名前空間に存在しており、従ってグローバル変数への干渉を心配する必要はありません。ゲームでは LÖVE 標準解像度である 800x600 を使用して構築されている仮定します:

  1. あなたのゲームのフォルダへ TLfres.lua を配置します。
  2. main.lua の先頭へ、 require"TLfres" の行を追加します。
  3. love.draw() の始行へ、 TLfres.transform() の行を追加します。
  4. love.draw() の終行へ、 TLfres.letterbox(4,3) の行を追加します。

よくある質問と回答

Q) 何故、これを love.graphics.scale の代わりに使用する必要があるのですか?
A) 与えられた解像度にて画面を等しく伸張するには技巧的な算術を要求されますが、 TLfres ではそれを処理することができるからです。さらに、ほとんどの人々は伸張されたグラフィックスを嫌います。 ― そのため、 TLfresの letterboxing (レターボックス化) オプションを使用するべきです。画面を伸張する代わりに、正確な比率で大きさを変更し、必要であれば上部&下部へ暗幕帯を描画します。
Q) どの解像度 / アスペクト比率に対応していますか?
A) 理論上は、全てです。しかしながら、幅より高さのある画面を使用する場合はレターボックスに作用します。
Q) 非標準の解像度を使用してゲームを作成しました。それを TLfres にて動作させるために全部変更する必要がありますか?
A) いいえ! ゲーム構築時の解像度にて単に TLfres.setScreen() を呼び出してください(後述を参照)。

関数

TLfres.setScreen

TLfres.setScreen(mode, extent, centered, stretch)

これを love.graphics.setMode の代わりに呼び出してください! これは TLfres の構成および解像度の変更の両方を行います。 LÖVE の標準画面である 800x600 を使用してゲームを作成した場合は、一切の引数を使用する必要はありません。

table mode
このテーブルは画面形状を指定します。それは次のデータを内包しています: w (ピクセル単位での画面の幅), h (ピクセル単位での画面の高さ), full (全画面表示を使用するか否か), vsync (垂直同期を使用するか否か), aa (アンチエイリアシング・サンプルの使用量)。標準では {w=800, h=600, full=false, vsync=false, aa=0} です。
number extent (800)
元々ゲームが使用するプログラムされた画面の幅です。また、 TLfres を使用して新しいゲームを制作していれば、この数値はコードにおいて希望する画面幅を表現することができます。例えば、私が数値の 1 を使用するのを好むのであれば、従って全座標の規格化は十進数になります(これはほぼ私のセンスです)。百分率など…を好むのであれば、考慮することで 100 を使用することもできます(この場合は画面中央の x=50 へ何かを描画することです)。
boolean centered (false)
false であれば、 LOVE の標準と同じく座標 0, 0 は画面の左上に位置します。 true であれば座標 0, 0 は画面中央になります。既存のゲームへ TLfres を追加するならば false にすべきですが、新しいゲームを制作時にはお好みで設定ができる場合があります。
boolean stretch (false)
true であれば、いかなる解像度であろうと全画面表示で補填するために伸張されます。ゲームで使用するためにプログラムされたアスペクト比率が画面のアスペクト比率と異なる場合は、伸張が発生します。一部の人々はレターボックス化よりこれを好みますが、従って、それは個人の趣味の問題です。伸張されない場合は love.draw() の終行に TLfres.letterbox() が呼ばれているかどうか確認してください。

TLfres.transform

TLfres.letterbox(w, h, c)

何かを描画する前に、これを love.draw() の一番最初の行で呼び出してください。現在の画面解像度により必要とする画面座標を拡大・縮小および並進移動をします。絶対的な画面座標で何かを描画したい場合は、 TLfres.transform() を呼び出す前に love.graphics.push() を使用したいと思うかもしれません。

TLfres.letterbox

TLfres.letterbox(w, h, c)

グラフィックスの伸張を行わない場合は ( TLfres.setScreen() を参照)、全描画後に、これを love.draw() の終行にて呼び出してください。これは画面外にある余白のグラフィックスを整えるためにレターボックスを描画します。それは標準でアスペクト比率 4:3 の黒色のレターボックスになります。

number w (4)
ゲームでの幅に対するアスペクト比率を意味します。
number h (3)
ゲームでの高さに対するアスペクト比率を意味します。
table c {0,0,0, 255}
レターボックスの配色であり、 RGBA (love.graphics.setColor と同様) にて指定します。標準では黒色です。

そのほかの言語