mieki256's diary



2018/05/03(木) [n年前の日記]

#1 [love2d][raspberrypi] Raspbian Stretch上でlove2dを動かせないか試行錯誤

Raspberry Pi Zero W + Raspbian jessie 上なら、SDL2 と love2d 11.1 をビルドすることで love2d が動かせることを確認できたのだけど。

Raspberry Pi Zero W + Raspbian stretch 上では、同じ手順でビルドしても、love2d で音を鳴らそうとした瞬間に変なエラーを出して落ちてしまうのでアレだったわけで。

試行錯誤その1。 :

以下のページで、Raspbian Stretch Lite 上で SDL2 と love2d をビルドして動かしてる事例が紹介されていたので、試してみたり。

_LOVE on Raspbian Stretch lite (without X)

ダメだった。やはり妙なエラーを出して落ちてしまう。

上記は、Raspbian Stretch Lite、つまり、 _X Window を動かしてない環境での事例なので、X Window を動かしてる Raspbian Stretch では、状況が違ってくるのかもしれない。

試行錯誤その2。 :

その後もググってたら、どうして love2d がエラーを出して落ちるのか、原因を突き止めた記事に遭遇。素晴らしい。

_LOVE (Love2D) を Raspbian Stretch で動かす: Digitalians' Alchemy

そうか…OpenAL が犯人だったのか…。

しかも、ありがたいことに、SDL2 や love2d をビルドするためのスクリプトまで公開されているようで。これは助かる。マジで助かる…。

_Digitalians' Alchemy | LOVE (Love2D) プログラミング | インストール

ビルドするための love2d-build.sh をDLして、love2d のバージョンを、0.10.2 から 11.1 に変更して、手元の環境でビルドしてみたり。4〜5時間ぐらいかかるけど…。
curl -L http://d-alchemy.xyz/software/love/love2d-build.sh >love2d-build.sh
vi love2d-build.sh
LOVE_VERSION=love-0.10.2
↓
LOVE_VERSION=love-11.1
./love2d-build.sh

ビルドが終わると、/usr/local/games/love/ 以下に、一式がインストールされる模様。

/usr/local/games/love/run_love.sh を使って、例のシューティングゲームもどきサンプルを動かしてみた。

_mieki256/love2d_stg_sample02: love2d sample. top view scroll shooting game.

動いた。今度は落ちなかった。ありがたい。

つまり、SDL2 を OpenGL無効、OpenGLES有効でビルドして、OpenALもビルドし直して、love2d 11.1 もビルドすれば、Raspberry Pi Zero W + Raspbian stretch 上でも love2d は動く、ということが分かった。

Xの端末上でキー入力が再生されてしまう問題。 :

上記の版を使って love2d を動かしたけれど、Xの端末(ターミナル)上で、キー入力が再生されてしまうことに気づいた。

例えば love2d を動かして、キー入力でアレコレ動かした後、ESCキーで終了すると、戻ってきた際に打ったキーがターミナル上でダーッと入力されて非常に危ないわけで。

なので、もしかすると shut-term-keys を通して love2d を動かしたほうがいいのかもしれず。

_mieki256's diary - 端末へのキー入力を無視してくれる shut-term-keys をRaspberry Pi Zero Wにインストールしてみたり
_inoremap/shut-term-keys: Workaround for keystrokes leaking into terminal on Raspbian

上記の版の love2d なら、run_love.sh の中で、以下のような指定をすればいい。
#!/bin/sh
export SDL_VIDEO_GL_DRIVER=/opt/vc/lib/libbrcmGLESv2.so
export SDL_VIDEO_EGL_DRIVER=/opt/vc/lib/libbrcmEGL.so
stty -echo
LD_LIBRARY_PATH=/usr/local/games/love/lib:$LD_LIBRARY_PATH shut-term-keys /usr/local/games/love/bin/love "$@"
stty echo
/usr/local/games/love/bin/love の前に、shut-term-keys を追加してる。

これで、love2d上でキー入力をしても、X + 端末に戻ってきた際にキー入力が再生されずに済んだ。

以上、1 日分です。

過去ログ表示

Prev - 2018/05 - Next
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project