UNPKG

jsge

Version:

Javascript Game Engine

44 lines (38 loc) 2.56 kB
Date: July 18 2024 Optimize and make render faster / Сделать оптимизацию и увеличить быстродействие отрисовки Status: Done Context: It seems that the performance in terms of memory consumption is a little slow in Firefox@129.0b6, wasm version is a little faster, but js is slower, the problem is using arrays for intermediate results and storing objects for collision calculations. Похоже, что производительность в части потребления памяти немного хромает в Firefox@129.0b6, wasm версия работает чуть быстрее,но js - медленнее, проблема заключается в использовании массивов для промежуточных результатов и хранения объектов для расчета столкновений. Decision: Optimize the engine to use ArrayBuffer instead of an Array. 1. Rewrite methods in WebGlEngine 2. Rewrite methods and data structures in GameStageData * array boundaries Array<Array>> -> Float32Array * ellipse boundaries Array<Array>> -> Float32Array * point boundaries Array<Array>> -> Float32Array * add boundaries bPointer, which will points to the last empty cell * add ePointer * add pPointer 3. Max bufferArray sizes should be precalculated as (layer non empty cells * 12) 4. Rewrite the collision detector to work with Float32Array Оптимизировать движок и писать данные в буфер, вместо массива. 1. Переписать методы в WebGlEngine 2. Переписать методы и структуры данных в GameStageData * массив boundaries -> Float32Array * добавить указатель boundaries bPointer, он должен указывать на последний пустой слот в буфере * ellipse boundaries Array<Array>> -> Float32Array * point boundaries Array<Array>> -> Float32Array * добавить ePointer * добавить bPointer 3. Максимальный размер буферов должны высчитываться по формуле (количество непустых ячеек * 12) 4. Переделать работу детектора коллизий для работы с Float32Array Impact: No impact.