keystone: call of cats: Nine Patchが動かない問題解決編
前回の問題が解消しましたので、ここに書き留めたいと思います。
まず、問題の原因としては、これまで使っていたphaser3-rex-pluginsのbreaking changes(破壊的変更)が理由でした。
すぐにこの問題にたどり着かなかったのは、ブラウザ上で開発しているのでキャッシュが想定していたより効きすぎていて、数回スーパーリロードしないと、今の環境で、動作しているのか、あるいは動作していないのかという判断ができないことに気づかないことにありました。
通常のブラウザ上のWebサービスなどの開発などであれば一度スーパーリロードすればキャッシュはクリアされるのですが、Shadow CLJS上で開発していると即時キャッシュがクリアされるという事になっていないようで、この挙動が問題解明に時間がかかってしまった理由でした。
元々やろうとしていた対応は、
Node.jsのバージョンアップ
(A)Phaser.js自体のマイナーバージョンアップ
(B)今回問題のあったphaser3-rex-pluginsのマイナーバージョンアップ
今までpackage.jsonでAとBのライブラリの記載をしていたが本来依存すべき一緒に開発中のPhaser.jsのラッパーであるmeowser.cljs内のpackage.jsonでAとBの記載を行い、開発中のゲーム内のpackage.json内にはAとBを省く(pacckage.json内でworkspacesというフィールドの記載を使う)
という内容でした。
一見すぐにチェックしたときには問題なかったのですが、phaser3-rex-pluginsを使っている箇所で問題が起き、また当時分かっていなかったキャッシュが思っている上に効きすぎる問題が重なったこと、npm installした際に無自覚にマイナーバージョンアップが起こっていたこと3点が重なり起こっていたようでした。
また、Node.jsのバージョンアップが理由ではないか、あるいはworkspacesフィールドの書き方の問題ではないか、と違う方向での確認を行っていたことも理由で、あれこれ可能性を考え調査していろんな組み合わせを試してしまったことも原因解明が遅れた理由だと考えます。
といったわけで、書いてみてもコンプリケーテッドですし、読む方にとってもコンプリケーテッドな内容となったので公開すべきかためらいましたが一応ゲーム開発活動としての一環なので備忘録としてまとめ筆を置きたいと思います。
追記: 複雑に絡み合った事例だったことは間違いないのですが、以下のコマンドで想定通りのライブラリが入っているかどうかをルートディレクトリにて確認できていれば問題の解消になったと思いますのでその点は具体的なチェック方法として残しておきたいと思います。
% npm ls
keystone-call-of-cats@0.1.0 meowtaverse-games/keystone-call-of-cats
├── @electron-forge/cli@7.8.1
├── @electron-forge/maker-deb@7.8.1
├── @electron-forge/maker-rpm@7.8.1
├── @electron-forge/maker-squirrel@7.8.1
├── @electron-forge/maker-zip@7.8.1
├── @electron-forge/plugin-auto-unpack-natives@7.8.1
├── @electron-forge/plugin-fuses@7.8.1
├── @electron/fuses@1.8.0
├── electron-squirrel-startup@1.0.1
├── electron@36.4.0
├─┬ meowser.cljs@0.0.1 -> ./lib/meowser.cljs
│ ├── phaser@3.90.0
│ ├── phaser3-rex-plugins@1.80.16
│ └── shadow-cljs@2.28.23 deduped
├── png2icons@2.0.1
└── shadow-cljs@2.28.23
コメント