0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Love2DのHTML5出力

Posted at

Love2DのHTML5出力

環境はManjaroLinuxです。
Love(11.5)、nodeを使います。

Love2Dのゲームの準備

  1. 公式サイトからzipを持ってきて展開する。
  2. そのフォルダ内にmain.luaというファイルを作りlove.updatelove.drawを書く。
  3. ターミナルを開き、そのフォルダでlove .とするとゲームを実行できる。

lume.lua(高階関数やユーティリティ関数)、maid64(Canvasのサイズを固定にする為使う)、tween.lua(アニメーション。補間)、bump.lua(AABB当たり判定)などのライブラリを使う。

PROJECTNAME.loveファイルを作る

ソースコードとアセットをzipファイルに固めて拡張子を.loveにする
このファイルを配るだけで、『各プラットフォームにlove2dをインストールしてもらえば』ゲームを動かせる
自分はソースコードからアセットのファイル名を集めるようにした。

zip -q -9 -u PROJECTNAME.love main.lua ...

HTML5出力する

npmでlove.jsをインストールしておく
下のコマンドでPROJECTNAMEフォルダが作られ、そこにいくつかのファイルができる。

  1. npx love.js #{PROJECTNAME}.love html\_#{PROJECTNAME} -c -t \"#{PROJECTNAME..' -v '..VERSION}\"
  2. 適当なweb サーバーを起動 python -m http.server 8000
  3. ブラウザで localhost:8000 を開く

さらに
cd #{PROJECTNAME} && node ../globalizeFS.js すると、love.filesystemが使える。(=ゲームでsave loadができる)

出力されたフォルダごとgithubにアップロードするだけで、ゲームを公開することができる

2048

smario

各プラットフォームでの差異

Windows

  • love.exeにcat でPROJECTNAME.loveをくっつけると実行ファイルができる!
    dllをまとめることはできないようだ

Android

  • quit イベントが来ない?
  • 画面を消してもゲームは止まらない(バッテリー消費し続ける)?

HTML5

  • jit ではない
  • getOS は'Web'と設定される
  • DLL/soファイルがloveファイル内にあっても良いが、呼び出さないように場合分けしておく
  • 文字列でユニコードリテラルが認識されない
  • 座標がずれる(maid64を改造して対応した)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?