FAQ (日本語)

恐らく初心者が LÖVE に関して疑問に思うであろうよく尋ねられる質問

いつから LÖVE はありますか?

rude によれば:

実際に、私はそれがどのように始まったか覚えていません。実のところ、いつ始めたのかはよく覚えていません。もしかすると己への挑戦に過ぎないだけなのかもしれません。しかしながら、それがどういう物語であっただろうかということを私に書くことを誰かが強いたならば:

えーと、その頃の私は簡単に使えて、あまり悩むところがない全ての環境で動作する 2D 中心のゲームフレームワークを探しておりましたが、そのどれもが私の要求を満たすものではありませんでした。多くのエンジンと利用可能なフレームワークが存在しましたが、それらは 2D ゲームで使用するのに API に魅力がなく、あまりにも 3D に傾倒していました。そうして私は自分用の API の開発に取り組み始めました。この上なく幸福な麦芽酒のように、ついに子供たちが笑い、共に自由に遊ぶことができる Z 軸を知らぬ輝かしく自由な世界。 *一粒の涙*

……など。

どうして LÖVE にはベクトル用のライブラリが実装されていないの?

slime によれば:

ベクトルオブジェクトを LÖVE の API で使用すると発生する主な問題は Lua にあり、頻繁に使用すると大量の不要情報を生成してしまう傾向があります。したがって LÖVE の関数で使用することに対して、それらを要求してしまうと最適な実行効率を妨げてしまうことになります。一部のエンジンではベクトルを実装するために過酷な努力をしてしまいます: https://www.youtube.com/watch?v=wTjyM7d7_YA#t=23m6s

そのせいで更に API が面倒かつ美しくないものになりかねないため、ベクトルに依存した関数の異形を製作することは望んでいません。

もっと議論する

アンチエイリアシングを無効にするには (Disable a blurry)

(TODO: 復帰後に追記。)

よくある質問の一つです。これはエミュレーター、レトロPCからの移植、アップスケーリング処理、 8bit ビデオコンソール風の低解像度のドット絵を使用したゲームで問題 (座標ずれ、余計なフィルタがかかってしまう) になることがあります。 解決方法は下記のとおりです。

図形、線描

function love.draw()
	love.graphics.setLineStyle('smooth')		-- 誤: 線描時のアンチエイリアシング有効化 (デフォルト値)
	love.graphics.line(100, 100, 100, 200)

--	love.graphics.setLineWidth(1)			-- 誤: 線の幅を変えてもフィルタは有効なので効果はありません。
	love.graphics.setLineStyle('rough')		-- 正: 線描時のアンチエイリアシング無効化
	love.graphics.line(200, 100, 200, 200)
end


フォント

--
-- 倍角文字とルビの試験実装。あと、フォントのアンチエイリアシング無効化サンプル。
-- 現在では、倍角文字はあまり使用されませんが、ゲーム内で1980年代の日本語ワードプロセッサーやマイコンを
-- 実装したい場合などにいいかもしれません。
--
-- 判明している問題: TrueType フォントではアンチエイリアシングを完全に無効化できないようです (LOVE 0.10.2で確認)
-- これを解決するには、ビットマップフォントを用意して Quad と love.graphics.draw, Canvas を応用した
-- ビットマップフォントレンダリングエンジンを自作する必要があるかもしれません。 
--
-- TODO: 後で コードスニペットへ移動。

function love.load()
	mainFont = love.graphics.newFont("ipaexg.ttf", 32);
	rubiFont = love.graphics.newFont("ipaexg.ttf", 16);
	mainFont:setFilter('nearest', 'nearest', 0)
	love.graphics.setLineStyle('rough')

--	IPAexゴシック体 = love.graphics.newFont("ipaexg.ttf", 32);
--	love.graphics.setFont(IPAexゴシック体);

--	love.graphics.setDefaultFilter('nearest', 'nearest', 0)
end

function love.draw()
--	love.graphics.push()
--	love.graphics.scale(2, 1)
--	love.graphics.print("横倍角", 0, 0)
--	love.graphics.pop()

	love.graphics.setFont(rubiFont);
	love.graphics.print(" よこ  ばい  かく",32, 16)
	love.graphics.setFont(mainFont)
	love.graphics.printf("横倍角", 32, 32, 800, "left", 0, 2.00, 1.00, 0, 0, 0, 0, 0)
	love.graphics.printf("斜体", 256, 32, 800, "left", 0, 2.00, 1.00, 0, 0, -0.25, 0, 0) -- -0.2.5 を -0.50 にしても良い。

	love.graphics.printf("1:2縦倍角", 32, 72, 800, "left", 0, 1.00, 2.00, 0, 0, 0, 0, 0)

--	love.graphics.printf("1:4縦倍角", 32, 148, 800, "left", 0, 1.00, 4.00, 0, 0, 0, 0, 0)

	love.graphics.printf("0.51:02縦倍角", 32, 148, 800, "left", 0, 0.51, 2.00, 0, 0, 0, 0, 0)

end


-- 参考文献
-- FUJITSU OASYS 30 AFⅢ 添付説明書
--

関連