Yoshiya@kt3k・Aug 28, 2024, 9:08 AM

既に持っているアセットの多重ロードが走らないように、ローディングのプロミスをキャッシュするようにした。

https://github.com/kt3k/bw/commit/d5959e25be58db586b876ff1bd2a7f8a488b4caf

単純にキャッシュしてしまうと、全てメモリ上に乗ってしまって良くない。オープンワールドを想定しているので、フィールドは無限に広くて、すべてのオブジェクトがメモリには乗らない想定なので。

不要なロードは避けつつ今必要なアセット以外は適切に回収されるように、アセットを WeakRef としてキャッシュする仕組みを入れた。これによって「今使われているアセット」は全てキャッシュに乗っていて「誰も使わなくなったアセット」が自然に回収されるようになった。