Week 22026年1月11日

WebGL2に対応したLove.js

概要

Love2Dおよびlove.jsをカスタムビルドし、WebGL2に対応させるなどしました。

動いているデモ:

やったこと

1. WebGL2対応のloveカスタムビルド

  • Love2DにWebGL2対応に必要なパッチを当てEmscriptenで再ビルド。
  • fontのrenderingについての問題を解決
  • WebGL2に対応したことで色彩表現が大幅に向上しました。

2. 2段階アセットローディング

旧来のlove.jsでは全てのアセットを一つのファイルにまとめてそれを読み込んでから起動していました。

なるべく早く描画を開始できるようにアセットを分割してロードできるようにしました。

またここで必要となるJS ←> Lua間での仕組みを作成しました。(JS/WASMで共有のMEMFSにsignalとなるファイルを書き込んでLuaでポーリングする仕組みを使いました)

preload.data(即時読み込み)
  • 全てのLuaファイル
  • ローディング画面用アセット
  • 軽量Bitmapフォント (ASCIIのみ)
game.data(非同期読み込み)
  • ゲーム本体のアセット
  • 大容量Bitmapフォント(JIS第1水準漢字. JIS第2水準漢字を含む7000文字強くらいのフォント)
  • 音楽・画像

3. テンプレートの作成

自分が好きな昔のゲームのような質感を再現するためのboilerplateのコードを整備。

詳しくはまたおいおい!