Open Mitbus opened 5 years ago
В ветке Graphical-Engine добавил массив chankDifferList
, который хранит объекты вида {chunkX, chunkY, layout, list:[{x, y, value} ... { }] }
. Теперь можно проверять наличие чанка в нем(если чанк существует, то его отредактировали). В gameArea
при каждом изменении нужно добавить в этот объект. ВАЖНО: после каждой перерисовки необходимо полностью занулить этот объект (тогда при полной отрисовке чанка надо смотреть в gameArea.map
)
В ветке Graphical-Engine добавил массив
chankDifferList
, который хранит объекты вида{chankX, chankY, layout, list:[{x, y, value} ... { }] }
…
Вы, это, внимательнее с английским языком:
Уже исправил)
Однажды я принимал программу, в которой переменная вместо flag
называлась flug
. Заинтересовался, посмотрел в словарь. Оказалось, что это слово тоже переводится 🙂.
Решили сделать как написано выше, но передавать на отрисовку можно чанк целиком, поэтому, возможно, целесообразно хранить 2-мерный массив флагов (изменялся ли чанк после отрисовки?)
engine.js
326 строка (this.gl.viewport(0, 0, w, h);
), константы больше не передаются в функцию. Возможно, такое есть и в других местах
engine.js
326 строка (this.gl.viewport(0, 0, w, h);
), константы больше не передаются в функцию. Возможно, такое есть и в других местах
Исправлено последним коммитом
@whitequartz , у меня теперь летит ошибка: engine.js:365 Uncaught TypeError: Cannot set property '198x121' of undefined
Ошибка с переменными: this.arrayOfChunks вместо this.arrayOfChunk нужно использовать Исправлено в последнем коммите
Оптимизировал отрисовку фреймбуферов, ждем, пока Влад добавит трек изменений. У нас он уже учитывается. Оптимальное значение чанка изменено на 16х16. ps. Теперь даже на лагающем ноуте +- 55 фпс
После отрисовки фреймбуферов перестали нормально рисоваться сохранения (см. develop) Причем, судя по деревьям, само сохранение отрабатывает, но по каким-то причинам не может нормально отображаться
исправил
Насчет освещения, я предлагаю при расчете искусственного света вообще не учитывать факт того, что блок находится сзади (т.е. его свет - 0.5). А когда свет будет посчитан, то мы на весь задний искусственный фон, который темнее, чем его освещает естественно, положим максимум. Проще говоря, Искусственный и естественный свет считаются отдельно, а потом выбирается максимум.
Починил свет при смене суток и добавил авторасчет времени обновления света. При времени суток от 300 сек фпс сильно не падают (не более 10%). Лежит в Player
Решили передавать свет в 1-мерной марной матрицей, на 1 со всех сторон больше, чем чанк. Изменения появятся в тестовой ветке унаследованной от Player
Добавил передачу текстуры с анимациями в виде: { 'id', 'head': [ [нач х, нач у], [кон х. кон у] ], 'body': [ [нач х, нач у], [кон х. кон у] ], 'legs': [ [нач х, нач у], [кон х. кон у] ] }
и вызов этой анимации для разных частей тела по id
Добивил учет высоты экрана (cameraScale
). Теперь при слишком узком экране видно значительно больше, чем на квадратном. Предлагаю ограничить отношение длины к ширине каким-то значением (Например, длинна / ширину <= 2.5)
Также из-за этого зум больше не является хаком, но появляются артефакты при отрисовке
По идее нововведение полезно, но вносит ряд проблем. Возможно, стоит по-другому фиксировать количество блоков по высоте. Например, мы можем каждый кадр передавать разный размер пикселей в блоке исходя из разрешения экрана.
Выяснилось, что еще ломание и установка блоков не учитывают cameraScale
Подготовил логику игры для запрета зума со стороны engine.js
, лежит в develop
Заблокировал зум. Теперь примерно одинаково всё выглядит на разном зуме и исправлены все баги с зумом связанные с графическим движком.