mieki256's diary



2021/01/28(木) [n年前の日記]

#1 [love2d] love.jsをnpm経由でインストールしてみた

love2d をWebブラウザ上で動かせるように、HTML + JavaScript へと変換してくれる love.js を、npm (Node.js) 経由でインストールしてみた。

環境は Windows10 x64 20H2 と以下のWebブラウザ。 IEでは動作確認していない。たぶん動かない…。

以下のページが参考になった。

_Building love2d games for the web with love.js and Docker

ただ、結論を先に書くと、Webサービスの LOVE Web Builder (love2d 0.11.1 に対応)を利用させてもらって、そちらで変換したほうが楽だと思う。

_LoVE Web Builder - Home

というのも、ローカルにインストールした love.js も love2d 0.11.0 までしか対応してなかったので…。どちらも現行最新版の love2d 11.3 に対応してないなら、ローカルにわざわざインストールするメリットはほとんど無いなと。

でもまあ、一応、npm でインストールする手順もメモしておく。

npm のインストール。 :

公式サイトから npm のインストーラを入手。

_ダウンロード | Node.js

今回は、LTS版 14.15.4 (同梱 npm 6.14.10)、node-v14.15.4-x64.msi をDL。実行するとインストールできる。

デフォルトでは C:\Program Files\nodejs\ にインストールされるが、自分の環境では、D:\Dev\nodejs\ 以下にインストールしてみた。

環境変数 PATH に、フォルダの場所が追加された。
  • システム環境変数 PATH に D:\Dev\nodejs\ が追加された。
  • ユーザ側環境変数 PATH に C:\Users\(アカウント名)\AppData\Roaming\npm が追加された。

DOS窓を開いて、npm がインストールされたか確認。
> npm --version
6.14.10

love.jsをインストール。 :

npm で love.js をインストールする。
npm install -g love.js

以下の場所にインストールされたっぽい。
> where love.js
C:\Users\(アカウント名)\AppData\Roaming\npm\love.js
C:\Users\(アカウント名)\AppData\Roaming\npm\love.js.cmd

.loveファイルを変換。 :

.love ファイルを変換してみる。

利用時のオプション指定は以下。
# Windows
love.js.cmd <.loveファイル名> <出力ディレクトリ> --title <タイトル文字列> --memory <最大メモリサイズ>

# Linux, Mac
love.js <.loveファイル名> <出力ディレクトリ> --title <タイトル文字列> --memory <最大メモリサイズ>

今回は、以下のような指定で変換してみた。
love.js.cmd snake.love ./dist --title "snake" --memory 67108864

Windowsの場合の注意点。love.js と打ってしまうと、拡張子が .js なのでWSH (JScript) が使われてしまってエラーが出てしまう。love.js.cmd を呼び出せば正常に動作する。おそらく、Linux や Mac なら、love.js と打っても問題無いのではないか、と…。

  • メモリサイズは標準で 16MB (16777216 byte) が確保されるらしい。
  • 32MB にしたいなら 33554432 byte を指定。
  • 64MB なら、67108864 byte を指定。

変換後のファイル構成。 :

変換後のファイル構成は以下。
.
|-- game.data
|-- game.js
|-- index.html
|-- love.js
|-- love.js.mem
|-- pthread-main.js
`-- theme
    |-- bg.png
    `-- love.css

.data や .mem というファイルが存在するあたりが気になる…。Webサーバ側で設定をしておく必要があったりしないか…? もしかすると Apache なら .htaccess に以下を書いておいて「この拡張子のファイルはバイナリデータだよ」と設定しておいたほうがいいのだろうか。
AddType application/octet-stream data
AddType application/octet-stream mem

変換結果。 :

とりあえず、変換結果は以下。

_snake demo

しかし、Firefox なら動いたけれど、Google Chrome、Vivaldi、Microsoft Edge では動かなかった。うーん。

どうやら、LOVE Web Builder を利用して変換したほうがヨサゲだなと。以下は LOVE Web Builder で出力したページだけど、どのブラウザでも動いてくれた。

_snake_lovewebbuilder.html

github版と全然違う。 :

githubで公開されてる love.js と、npmでインストールされた love.js を比較してみたけれど、ファイル構成からして違うというか…。github版は .wasm があったりするなあ…。

_Davidobot/love.js: LOVE ported to the web using Emscripten, updated to the latest Emscripten and LOVE (v11.3)

github版をインストールして使うにはどうしたらいいのん? npm ってよく知らないから何が何だか。

Ubuntu Linux上で実験。 :

とりあえず、VMware Player + Ubuntu Linux 20.04 LTS 上で実験してみる。

Node.js と npm をインストール。
sudo apt install nodejs npm
$ npm --version
6.14.4

$ node --version
v10.19.0

$ nodejs --version
v10.19.0

github から love.js を git で clone して、npm でインストール。
git clone https://github.com/Davidobot/love.js.git
cd love.js
sudo npm install
sudo npm link
ググったところ、package.json というファイルがあるフォルダで npm install をすればローカルに置いてあるパッケージをインストールできるらしい。github から clone した love.js にも package.json が入っているので、これだけでインストールできるのだろう。たぶん。よく分かってないけど。

ちなみに、sudo をつけないで npm link と打ったらエラーが出てしまったので、一応 sudo をつけて作業してみたけど、これで問題無いのかどうかはよく分からない。

どこにインストールされたか調べてみる。
$ which love-js
/usr/local/bin/love-js
/usr/local/bin/ 以下に、love-js というコマンド(?)としてインストールされたらしい。

love.js じゃなくて love-js になってることに注意、だろうか。

.love ファイルを変換してみる。
love-js -c -t "Snake" snake.love ./dist/snake
  • snake.love というファイルを変換して、./dist/snake/ ディレクトリに出力した。
  • -c をつけると、どのWebブラウザでも動作する版が作れるらしい。その代わり、サウンドの再生が怪しくなるのだとか。
  • -t "タイトル文字列" でタイトルを指定できる。

./dist/snake/ に移動して、Python 3.x で簡易Webサーバを立てる。
cd dist/snake
python3 -m http.server 8000

Ubuntu 20.04 LTS 上の Firefox や Chromium で、http://localhost:8000/ にアクセス。…どちらでも動いてくれた。

試しに置いてみる。動くだろうか。

_Snake (github版 love.js で生成)

一応、Windows10 x64 20H2 + 各ブラウザ上で動いているように見える。

ということは、github版の love.js のほうが色々新しくなっていて、Chromium系でも動くファイル群を生成してくれるようだなと…。

Windows上でもgithub版をインストール。 :

Windows10 x64 20H2上でも、github版 love.js のインストールを試してみた。
git clone https://github.com/Davidobot/love.js.git
cd love.js
npm install
npm link

インストール場所を確認。
> where love-js
C:\Users\(アカウント名)\AppData\Roaming\npm\love-js
C:\Users\(アカウント名)\AppData\Roaming\npm\love-js.cmd

変換してみる。
love-js -c -t "Snake" snake.love ./dist/snake_new2

変換もできたし、生成されたファイル群は各ブラウザ上で動いてくれた。

#2 [nitijyou] 日記をアップロード

2020/11/23を最後に日記をアップロードしてなかったのでアップロード。

以上、1 日分です。

過去ログ表示

Prev - 2021/01 - 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