2019年01月22日

Love2D サンプルプログラム集

 「LÖVE サンプルプログラム集」のページを作りました。といっても、まだ3つしかないけど。

20190122-1.png

 こうやって「配布用のパッケージ」にしてみると、毎回日本語のフォントを同梱しないといけないのがけっこうつらい。日本語フォントって大きいからね。フォントの見かけにこだわらないのであれば、システムフォントの所在を特定して、love.system.getOS() の値で振り分ける、というのもありそうだが、Linux では何がインストールされているかわからんから、選びようがないな。

 上の「さめがめ」では、JF-Dot-jiskan16s-1990.ttf を同梱した。ファイルサイズが 1.9 MB だから、日本語の TrueType フォントとしては破格にコンパクトと言える。文字が美しいか、と言われると、苦笑いするしかないけど…

20190122-2.png

 まあ、このファイルサイズで、日本語で使う文字がほぼフルセット揃っているんだから、そこは良しとしましょうや。

posted by toshinagata at 23:52| 日記

2019年01月19日

「子供の科学」Raspbian 用の LÖVE (Love2D) 改良

 前回の続き。「子供の科学」バージョンの Raspbian(ジブン専用パソコン2)に LÖVE (Love2D) を入れてはみたが、キー入力に不具合があった。1回押したキーが、2度ずつ認識されてしまう。

20190119-1.png

 これは SDL2 に原因があって、既知の問題らしい。いくつか関連しそうな記事が見つかった。

 SDL2 の changeset で取り上げられている、ということは、もう修正されているのか? Raspbian の SDL2 は 2.0.5 なので、SDL2.0.8 をダウンロードしてビルドしてみた。けど、症状は治らない。

 きっとインプットメソッド絡みだろう、と当たりをつけて、調べてみる。「子供の科学」Raspbian では、日本語入力メソッドとして fcitx-mozc を使っている。SDL2.0.8 の configure ログを見てみると、fcitx が有効になってない。

$ ../configure
...
Using libudev       : YES
Using dbus          : YES
Using ime           : YES
Using ibus          : YES
Using fcitx         : NO    #  これだ!

 もう少し configure ログを詳しく見てみると、fcitx/frontend.h が見つからないのが原因らしい。

$ ../configure
...
checking for pkg-config... (cached) /usr/bin/pkg-config
checking fcitx/frontend.h usability... no
...

 これはアレだな、dev 系パッケージが入ってないやつだな。というわけで、fcitx-libs-dev パッケージをインストールする。

$ sudo apt-get install fcitx-libs-dev
...
$ ../configure
...
checking for pkg-config... (cached) /usr/bin/pkg-config
checking fcitx/frontend.h usability... yes
checking fcitx/frontend.h presence... yes
checking for fcitx/frontend.h... yes
...
Using libudev       : YES
Using dbus          : YES
Using ime           : YES
Using ibus          : YES
Using fcitx         : YES    #  よっしゃ。

 この SDL-2.0.8 と love-11.2 をまとめて、/usr/local/games/love 以下に置く。実行するには、下のスクリプトを /usr/bin/love として置いておく。

#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/games/love/lib
/usr/local/games/love/bin/love "$@"

 アプリケーションやドキュメントアイコンを認識させるのにちょっと手こずったが、なんとかインストーラを作成できた。下に置いておきます。使い方は前回と同じ。

[love2dx-install.tgz (18.1 MB)] (2019/1/19 バージョン)

posted by toshinagata at 17:27| 日記

2019年01月13日

Love2D で「さめがめ」:アニメーションをつける

 LÖVE (Love2D) ページ「実践編『さめがめ』:アニメーションをつける」を公開しました。消えるコマの位置が一瞬光って、その後コマが移動していきます。下の図は GIF アニメーションなので、あまりなめらかではありませんが、本当はもう少しなめらかに移動します。

20190113-1.gif

 この機能は、実装の仕方を考えるまでが大変だった。「今、どのアニメーションを実行しているか」を表すフラグを導入して、それに応じて画面描画を変えることで、アニメーションを実現している。このやり方がいいのか、それとも「画面を描く」→「一定時間待つ」→「画面を再度描く」→「一定時間待つ」…の繰り返しがいいのか、まだよくわからない。それとも、コルーチンを使うのがいいのだろうか? このあたりは、もう少し Lua の経験を積まないと、何とも言えないな。

posted by toshinagata at 23:05| 日記
email.png
Powered by さくらのブログ