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| 日記

2019年01月08日

クラシック音楽館:アリス・紗良・オットのラヴェル

 NHK の「クラシック音楽館」にピアニストのアリス・紗良・オットさんが出るというので、見てみました。だいぶ以前だけど、この人がインタビューされているのを読んだことがある。楽譜を丹念に読み込んで、そこに示されている作曲者の意図を読み取ろうとする立場に立たれているようなので、関心を持っていた。

 演奏の前に、指揮者のジャナンドレア・ノセダさんのトークがあって、そこでもアリスさんに言及されていた。やはり、「音楽に対して誠実な人だ」という評だった。今回の演目はラヴェルのピアノ協奏曲(ト長調)だが、そのアプローチがどう出るか。

 第一楽章は、こじんまりとまとまってしまった感じ。第二主題のホ長調のところはえらくあっさり過ぎてしまった。下の譜例のあたりとかも、もうちょいオーケストラを強引に引っ張っていくぐらいに突っ走ってもよかったんじゃないのかな。

20190107-1.png

 第二楽章は、うまくオーケストラとピアノが一体化していた。特に、再現部でコーラングレがメロディーをとるところ、ソリストがコーラングレ奏者とアイコンタクトをとりながら弾いていた。下の譜例の赤で囲んだところ、ピアニストとしては粘りたくなるんだけど、ほとんど粘ってなかった。ここで粘られると、コーラングレが困っちゃうんだよな。

20190107-2.png

 第三楽章。出るところは出て、オケに溶け込むところは溶け込んで、というきれいな演奏だったけど、このへんとか、もうちょい暴れてよ!とツッコミたくなった。

20190107-3.png

 演奏終了後、コーラングレ奏者にアリスさんが何度も拍手を送っていたのが印象的だった。自分がイチバン、ってタイプじゃないよなあ。それでいてソリストとして第一線で活躍し続けているのはすごいと思う。

 ところで、この曲はどの演奏を聴いてもいつも思うんだけど、金管の入りが遅れがちだよね。なんでなんだろう。こういうところとか。プロでも難しいんでしょうかね。

20190107-4.png

 もう一つ、上の譜例を出して思い出したんだけど、譜例の最初の小節のトランペットの F# 音、一小節あとが正しいんじゃないかな。今回の演奏はそうしてた気がする。(あの F# 音は耳障りで目立つので、鳴ってたら気がつくと思う。確信は持てないけど。)

posted by toshinagata at 00:33| 日記

2019年01月06日

「子供の科学」Raspbian 用の LÖVE (Love2D) インストーラ

 前回の続き。「子供の科学」バージョンの Raspbian(ジブン専用パソコン2)に LÖVE (Love2D) を入れるインストーラを作りました。

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

 ダウンロードして、ダブルクリックなどで開く(自動的に開くかも)と、下のようになります。"love2dx-install" フォルダを、適当なフォルダ(下の図では Download フォルダ)に移動します。

20190105-1.png

 "love2dx-install" フォルダをダブルクリックして開きます。

20190105-2.png

 "install.sh" ファイルをダブルクリックします。

20190105-3.png

 こういうウィンドウが出てくるので、「端末で実行する」ボタンを押します。(「実行」でもいいのだけど、メッセージが何も出ないので、何が起きているのか全くわからず不安になります。)

20190105-4.png

 ターミナルウィンドウが開いて、処理が始まります。"Update MIME database..." の処理はけっこう時間がかかるので、しばらく待ってください。

20190105-5.png

 ターミナルウィンドウが消えたら、インストール完了です。デスクトップに LÖVE のアイコンができているはずです。(アイコンが LÖVE のものになっていない場合は、フォルダをいくつか開いたり閉じたりしてみてください。)

20190105-6.png

 ダブルクリックすると、"NO GAME" の画面が出ます。

20190105-7.png

 前回にも書きましたが、raspi-config の Advanced Options/GL Driver で、"GL (Fake KMS)" を選ぶ必要があります。LXTerminal を開いて、sudo raspi-config と打ち込み、Advanced Options → GL Driver → GL (Fake KMS) とたどっていってください。設定を変更したあと、再起動が必要です。

 簡単なサンプルゲームを一緒にインストールできるようにしたいな。まだネタがないので、それは今後の課題ということにしておく。

posted by toshinagata at 00:19| 日記

2019年01月03日

「子供の科学」Raspbian に LÖVE (Love2D) をインストールする

 前回の続き。「子供の科学」Raspbian(ジブン専用パソコン2)に LÖVE (Love2D) をインストールする。Raspbian Stretch の apt-get でインストールされる Love2D はバージョンが古いので、現時点での最新バージョン (11.2) をインストールしてみる。

 まずはビルドしないといけない。Love2D Wiki の Building ページを元に進める。Raspbian 上でターミナルを開いて、次のように順に打ち込む。

1. 必要なパッケージをインストールする。たくさんありますよ。

sudo apt-get install autotools-dev automake libtool libdevil-dev libluajit-5.1-dev libphysfs-dev libsdl2-dev libopenal-dev libogg-dev libvorbis-dev libflac-dev libflac++-dev libmodplug-dev libmpg123-dev libmng-dev libturbojpeg libtheora-dev

3. Love2D のソースを取ってくる。ダウンロード ページからもらってきてもよいし、ターミナルで下のように打ち込んでもよい。

curl -L https://bitbucket.org/rude/love/downloads/love-11.2-linux-src.tar.gz >love-11.2-linux-src.tar.gz

4. 展開して、新しくできた love-11.2 ディレクトリに移動する。

tar xvfz love-11.2-linux-src.tar.gz
cd love-11.2

5. ビルドする。"| tee xxxx.log" の部分は、ターミナルに表示されるメッセージを保存しておくためだけのものなので、省略してもよい。


./configure | tee configure.log
make -j 2 | tee make.log
sudo make install

はじめ make -j 4 でビルドしていたが、成功することもあるのだけど、途中でフリーズしたり変なエラーが出たりして、イマイチ不安定。あまり負荷をかけないように、make -j 2 に変えた。

 /usr/binlove が、/usr/libliblove-11.2.so がインストールされる。

 love で実行すると、"NO GAME" の画面が出るはずなのだけど、こうなってしまった。表示がなんかおかしい。これはドライバ絡みだな。

20190103-1.png

 sudo raspi-config の Advanced Options/GL Driver で、"GL (Fake KMS)" を選ぶと、正しく表示された。

20190103-2.png

 なお、"GL (Full KMS)" を選ぶと、Love2D の画面がフルスクリーンになってしまう。下の通り。VNC viewer の画面いっぱいに Love2D の画面が広がっているのがおわかりでしょうか。これ、Love2D の画面がフルスクリーンで表示されているということです。今回は X window の中で Love2D を動かしたいので、これではうまくない。何か回避する設定があるのかも知れないけど、まだ見つけられていません。

20190103-3.png

 "GL (Fake KMS)" の設定で、「さかなは踊る」を動かしてみた。ちゃんと動いた。音も出てます。

20190103-4.png

 ビルドできることはわかった。あとは、簡便にインストールできる方法を確立することだな。deb パッケージを作るのはハードルが高すぎるので、インストーラスクリプトを書くのが手っ取り早い。(2019/1/6 追記:書きました。記事はこちら。)

posted by toshinagata at 15:51| 日記

2019年01月01日

「子供の科学」バージョンの Raspbian を試してみる

 年が明けました。旧年中は各方面にお世話になりました。今年もよろしくお願いします。

 この正月休みは、ラズパイネタを仕込もうと思っている。しばらく離れていたけど、今年はぼちぼち進めていきたい。今日は、「子供の科学」の「ジブン専用パソコン2」の OS イメージを使って起動してみた。

20190101-1.png

 「KoKa」こと「子供の科学」のロゴがデスクトップピクチャになっている。なお、この画面は VNC viewer を使って Mac からリモート接続してスクリーンショットを撮っているので、メニューバーに VNC 接続のアイコンが出ている。素の状態だとこのアイコンは出ないので、念のため。

20190101-2.png

 このシステムで、Love2D を使ってみたい。ラズパイに Love2D をインストールする話は以前に取り上げたけど、X11 でなくフレームバッファに直書きする設定で進めていた。この設定は、ラズパイ 1/Zero のように非力なマシンでも実用的な速度で動作するというメリットがある一方、ラズパイ単体でプログラミングをするには向いていない。「ジブン専用パソコン」のユーザー層には、「普通の」(= X11 の)デスクトップの中で Love2D のウィンドウが開いて、その中でプログラムが動作する方が、はるかに使いやすいはず。

 実は Raspbian Stretch にも Love2D のパッケージがある。sudo apt-get install love でインストールできる。これは、X11 に対応しているので、ちゃんと Love2D のウィンドウが開く。ただし、0.9.1 とバージョンが古い。なんとか 11.x 系列にできないものかな?(2019/1/3 追記:できました。記事はこちら。)

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