mieki256's diary



2017/12/09() [n年前の日記]

#1 [love2d][lua] love2dを使って縦スクロールシューティングゲームっぽいサンプルを書いてみたり

love2dの使い方を色々調べてたけど、それっぽい形にまとまってきたのでアップロード。





以下の環境で動作確認したけれど、どちらもそこそこの速度で動いてくれた。

ソース。 :

ソースは以下。

_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 がインストールされてる環境で、
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」と呼んで扱う場合が多いという…。なんでこんなググりにくい名前つけたんや。

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パッケージを作って配布したら楽になりそうだけど。作り方なんて分からん…。

余談。 :

初めて Lua を触ってみたけど、イイ感じですな…。「えっ」と思う言語仕様はほとんど無いし。クラスの作り方がちょっとアレだけど、慣れればそれほどでも。

#2 [love2d] love2dを使ったソースをまとめる方法についてメモ

love2dを使ってゲームっぽいものを作ったとして、それを1つのファイルにまとめたり、exe化できたらヨサゲだなと。てなわけでググってみたら、そもそも公式wikiに方法が書いてあった。ありがたや。

_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の画面であれば…。
以下のような指定になるのかなと。
moveTo( x - (画面横幅 / 2), y - (画面縦幅 / 2) )

以上、1 日分です。

過去ログ表示

Prev - 2017/12 - 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