Я работаю над игрой с использованием Three.js (https://voxelplace.com/)
В настоящее время все выполняется в одном потоке, и я просто делю работу на небольшие пакеты, чтобы пользовательский интерфейс мог обновляться между функциями. Использование цикла while и setTimeout.
Производительность на Chrome довольно хорошая, но на Firefox она очень низкая. Функции (то есть создание освещения для блока) занимают более 16 мс, поэтому пользовательский интерфейс не может обновляться вовремя. И это на высоком конце ПК.
Я бы хотел улучшить производительность Firefox и, в конечном итоге, сделать это на мобильных устройствах.
Насколько я знаю, у меня есть 2 варианта:
разделен на веб-работников
разделение функций на более мелкие пакеты, чтобы пользовательский интерфейс мог обновляться медленнее
машины / браузеры. То есть используйте цикл while и setTimeout, чтобы разрешить обновления пользовательского интерфейса между построением освещения одного блока
Полагаю, я мог бы также уменьшить размер чанка, но я уже на 16x16x16.
Может быть, я также просто использую неэффективный код, и если я исправлю это, производительность будет лучше?
Я играл с веб-работниками, но я немного озадачен тем, как справляться с определенными вещами. Например, если я хочу построить освещение для 1 фрагмента, мне нужна информация об освещении и воксели из этого фрагмента и всех соседних фрагментов. Должен ли я копировать все это веб-работнику для каждого куска каждый раз, когда я хочу создать освещение? Это не похоже на отличное решение.
У меня нет кода для обмена, но карта исходного кода включена, поэтому вы можете прочитать весь код, если кому-то интересно.
Буду признателен за любые идеи.