Я работаю над изометрическим движком игры для своей собственной игры. В настоящее время это большой открытый мир, в котором данные карты извлекаются динамически с сервера Node.js.Как оптимизировать рендеринг холста для динамической загрузки игрового мира HTML5?
Чтобы понять, что я делаю ... по большей части это мир, основанный на плитки. Таким образом, каждая карта имеет максимальное количество столбцов, строк (19), и каждый мир имеет максимальное количество карт по col, row (6). Таким образом, это карта мира 6x6, состоящая из 19x19 плиток на карту. Всякий раз, когда игроки перемещаются на новую карту/регион, клиент запрашивает матрицу 3x3 окружающих карт, а карта центра - это карта, на которой в данный момент находится игрок. Эта часть довольно хорошо оптимизирована.
Моя проблема, однако, находит отличный способ оптимизировать рисунок на холсте. В настоящее время у меня не так много лагений, но у меня также есть быстрый компьютер, но я беспокоюсь, что временами это может привести к тому, что другие будут отставать/отвлекаться на рендеринг другой графики.
В основном, как я работаю прямо сейчас, когда данные отправляются с сервера, он добавляет каждую карту и все изображения плитки для каждого столбца/строки, которую он должен отображать в буфер. Каждый цикл игрового цикла будет в основном отображать небольшую часть из 25 фрагментов на скрытом холсте конкретной карты. Когда все запрошенные карты сделаны рендерингом (после нескольких игровых циклов), камера будет двигаться вперед и объединить эти скрытые карты в один большой холст карты матрицы 3x3 (путем нарезки частей из скрытых холстов и слияния их с новыми холст).
В идеале я бы хотел, чтобы весь этот процесс был асинхронным. но я искал веб-работников и, видимо, они не поддерживают холст. Кто-нибудь придумал процесс сделать что-то подобное и сохранить его хорошо оптимизированным?
Спасибо!
Лучший "оптимизации" это сделать, как несколько вызовов отрисовки, насколько это возможно. Просто потому, что у вас есть данные с сервера, это не значит, что вам нужно рисовать его, когда он выключен. – user2867288
Насколько велики плитки (в пикселях) ??? – Blindman67
@ Blindman67 128x64 изображение для каждой плитки – Ryan