2017/12/09(土) [n年前の日記]
#1 [love2d][lua] love2dを使って縦スクロールシューティングゲームっぽいサンプルを書いてみたり
love2dの使い方を色々調べてたけど、それっぽい形にまとまってきたのでアップロード。
以下の環境で動作確認したけれど、どちらもそこそこの速度で動いてくれた。
ちなみに、ボスを倒すと最初に戻ります。
以下の環境で動作確認したけれど、どちらもそこそこの速度で動いてくれた。
- Windows10 x64 + love2d 0.10.2
- Raspberry Pi Zero W + raspbian jessie + SDL2 2.0.5(OpenGL ESを有効にした版) + love2d 0.10.2
◎ ソース。 :
ソースは以下。
_mieki256/love2d_stg_sample02: love2d sample. top view scroll shooting game.
main.lua や画像ファイル(.png)、サウンドファイル(.ogg)は License : CC0 / Public Domain にしておくので自由に使ってください。
ただし、main.lua から呼び出して使ってる/同梱してある _stiライブラリ は、他の人が作ったライブラリでライセンスも違うので、そこは注意を。自分(mieki256)が書いた main.lua は好きにしていいよ、ということで。
_mieki256/love2d_stg_sample02: love2d sample. top view scroll shooting game.
main.lua や画像ファイル(.png)、サウンドファイル(.ogg)は License : CC0 / Public Domain にしておくので自由に使ってください。
ただし、main.lua から呼び出して使ってる/同梱してある _stiライブラリ は、他の人が作ったライブラリでライセンスも違うので、そこは注意を。自分(mieki256)が書いた main.lua は好きにしていいよ、ということで。
◎ 実行の仕方。 :
実行の仕方は、
_love2d_stg_sample02.love
をダウンロードして、love2d がインストールされてる環境で、
git がインストールしてある環境なら、github からソースや画像をまるっと git clone して動かしてもOK。
あるいは、Windows、かつ、love2d 未インストール環境なら、 _love2d_stg_sample02_pack.zip をダウンロード・解凍して、love2d_stg_sample02.exe を実行しても動かせる…はず。たぶん。
love love2d_stg_sample02.loveと打てば実行できる…はず。たぶん。
git がインストールしてある環境なら、github からソースや画像をまるっと git clone して動かしてもOK。
git clone https://github.com/mieki256/love2d_stg_sample02.git love love2d_stg_sample02
あるいは、Windows、かつ、love2d 未インストール環境なら、 _love2d_stg_sample02_pack.zip をダウンロード・解凍して、love2d_stg_sample02.exe を実行しても動かせる…はず。たぶん。
◎ 操作方法。 :
- カーソルキー or WASD : 自機移動
- Zキー : 弾の発射方向の変更/固定の切り替え
- F11キー : フルスクリーンモードの切り替え
- ESCキー : アプリの終了
ちなみに、ボスを倒すと最初に戻ります。
◎ love2dについて補足。 :
動作には love2d が必要。
_LOVE - Free 2D Game Engine
love2d(LOVE)というのは、Luaというプログラミング言語から、SDL2という画像描画ライブラリを制御して、2Dゲームを作ることができる、ライブラリだかフレームワークだかそんな感じのもの。Windows、Mac、Linux、Android上で動かせるらしい。
ちなみに、正式名称は「LOVE」なのだけど、あまりにも一般的な単語過ぎるので、「love2d」と呼んで扱う場合が多いという…。なんでこんなググりにくい名前つけたんや。
_LOVE - Free 2D Game Engine
love2d(LOVE)というのは、Luaというプログラミング言語から、SDL2という画像描画ライブラリを制御して、2Dゲームを作ることができる、ライブラリだかフレームワークだかそんな感じのもの。Windows、Mac、Linux、Android上で動かせるらしい。
ちなみに、正式名称は「LOVE」なのだけど、あまりにも一般的な単語過ぎるので、「love2d」と呼んで扱う場合が多いという…。なんでこんなググりにくい名前つけたんや。
◎ Raspberry Pi Zero W で love2d を動かす場合の注意点。 :
Windows上で love2d を動かす場合は、
_love2d の公式サイト
からインストーラをダウンロードして実行するだけで、love2d の動作に必要なファイルが一通り入ってくれるのだけど…。
Raspberry Pi Zero W で love2d を動かすのは、ちょっと面倒臭くて。
まず、Raspberry Pi Zero W + raspbian stretch は、love2d でサウンドを鳴らすと love2d が落ちるので使えない。 _raspbian jessie ならサウンドを鳴らしても落ちないので、現状では「Raspberry Pi Zero W 上でlove2dを使ってみたい」→「raspbian jessie を使う」しかなさそうで。
更に、raspbian の公式リポジトリに入ってる SDL2 は、「OpenGL有効 / OpenGL ES無効」版なので、「OpenGL無効 / OpenGL ES有効」版を自分でビルドしないといけない。1時間半ぐらいかかります。
そしてlove2dも、公式リポジトリに入ってる版はバージョンが 0.9.x と古いので、現行版 0.10.2 のソースをダウンロードしてビルドしないといけない。これも1時間半ぐらいかかります。
てな感じで、結構面倒臭い…。
ビルド手順については以下にメモしてあるので参照してもらえればと。
_Raspberry Pi Zero W + raspbian jessie でlove2dを使えるようにする手順をメモ
もっとも、このあたり、おそらくは Raspberry Pi1 / Zero W だけの問題で。
Pi1 / Zero W ではなく、例えば Raspberry Pi3 + raspbian stretch を使えば、サウンドがちゃんと鳴るし、GL driver を有効にすれば公式リポジトリ版の SDL2 も動くので、Pi3 を使ってる人は、現行版の love2d をビルドするだけで済むのではないか…と。
SDL2 にしても love2d にしても、raspbian用のdebパッケージを作って配布したら楽になりそうだけど。作り方なんて分からん…。
Raspberry Pi Zero W で love2d を動かすのは、ちょっと面倒臭くて。
まず、Raspberry Pi Zero W + raspbian stretch は、love2d でサウンドを鳴らすと love2d が落ちるので使えない。 _raspbian jessie ならサウンドを鳴らしても落ちないので、現状では「Raspberry Pi Zero W 上でlove2dを使ってみたい」→「raspbian jessie を使う」しかなさそうで。
更に、raspbian の公式リポジトリに入ってる SDL2 は、「OpenGL有効 / OpenGL ES無効」版なので、「OpenGL無効 / OpenGL ES有効」版を自分でビルドしないといけない。1時間半ぐらいかかります。
そしてlove2dも、公式リポジトリに入ってる版はバージョンが 0.9.x と古いので、現行版 0.10.2 のソースをダウンロードしてビルドしないといけない。これも1時間半ぐらいかかります。
てな感じで、結構面倒臭い…。
ビルド手順については以下にメモしてあるので参照してもらえればと。
_Raspberry Pi Zero W + raspbian jessie でlove2dを使えるようにする手順をメモ
もっとも、このあたり、おそらくは Raspberry Pi1 / Zero W だけの問題で。
Pi1 / Zero W ではなく、例えば Raspberry Pi3 + raspbian stretch を使えば、サウンドがちゃんと鳴るし、GL driver を有効にすれば公式リポジトリ版の SDL2 も動くので、Pi3 を使ってる人は、現行版の love2d をビルドするだけで済むのではないか…と。
SDL2 にしても love2d にしても、raspbian用のdebパッケージを作って配布したら楽になりそうだけど。作り方なんて分からん…。
◎ 余談。 :
初めて Lua を触ってみたけど、イイ感じですな…。「えっ」と思う言語仕様はほとんど無いし。クラスの作り方がちょっとアレだけど、慣れればそれほどでも。
[ ツッコむ ]
#2 [love2d] love2dを使ったソースをまとめる方法についてメモ
love2dを使ってゲームっぽいものを作ったとして、それを1つのファイルにまとめたり、exe化できたらヨサゲだなと。てなわけでググってみたら、そもそも公式wikiに方法が書いてあった。ありがたや。
_Game Distribution (日本語) - LOVE
とりあえず、.loveファイルを作れば、1つのファイルを配布するだけで済むから楽になるようで。
.loveファイルの作り方は、main.lua や conf.lua、使用画像や使用サウンドファイルを1つのzipにまとめて、.zip を .love にリネームするだけ、らしい。
zipにする際、フォルダ構成に気をつけろ、と書いてあるな…。以下ではダメで…。
.loveファイルができたら、love.exe の尻に .loveファイルをくっつけることで exe化できるらしい。
_Game Distribution (日本語) - LOVE
とりあえず、.loveファイルを作れば、1つのファイルを配布するだけで済むから楽になるようで。
.loveファイルの作り方は、main.lua や conf.lua、使用画像や使用サウンドファイルを1つのzipにまとめて、.zip を .love にリネームするだけ、らしい。
zipにする際、フォルダ構成に気をつけろ、と書いてあるな…。以下ではダメで…。
hoge/main.lua hoge/conf.lua hoge/images/fuga.png以下の状態でzipにしろ、と…。
main.lua conf.lua images/fuga.png
.loveファイルができたら、love.exe の尻に .loveファイルをくっつけることで exe化できるらしい。
copy /b love.exe+hoge.love hoge.exeただ、.dll等も動作には必要になるので同梱すること、とも書いてある。
[ ツッコむ ]
#3 [love2d] love2dのParticleSystemの位置の指定について
love2dのパーティクル機能(ParticleSystem)で、発生位置を指定する方法について調べてたのだけど、与えるべき値がちと変わってるようなので一応メモ。
位置の指定は、 _ParticleSystem:moveTo(x, y) でできるけど、どうも画面の真ん中が (0,0) になってる模様。
つまり…。例えば640x480の画面であれば…。
以下のような指定になるのかなと。
位置の指定は、 _ParticleSystem:moveTo(x, y) でできるけど、どうも画面の真ん中が (0,0) になってる模様。
つまり…。例えば640x480の画面であれば…。
- moveTo(-320, -240) で左上の位置から発生。
- moveTo(320, 240) で右下の位置から発生。
- moveTo(0, 0) で真ん中の位置で発生。
以下のような指定になるのかなと。
moveTo( x - (画面横幅 / 2), y - (画面縦幅 / 2) )
[ ツッコむ ]
以上、1 日分です。