bmstu-iu9 / utp2019-2-2d-game

2D-игра Terracraft, команда Алексея Костюченко
https://bmstu-iu9.github.io/utp2019-2-2d-game/
MIT License
2 stars 4 forks source link

Поддержка 3 версии движка #91

Open Mitbus opened 5 years ago

Mitbus commented 5 years ago
Mitbus commented 5 years ago

В ветке Graphical-Engine добавил массив chankDifferList, который хранит объекты вида {chunkX, chunkY, layout, list:[{x, y, value} ... { }] }. Теперь можно проверять наличие чанка в нем(если чанк существует, то его отредактировали). В gameArea при каждом изменении нужно добавить в этот объект. ВАЖНО: после каждой перерисовки необходимо полностью занулить этот объект (тогда при полной отрисовке чанка надо смотреть в gameArea.map)

Mazdaywik commented 5 years ago

В ветке Graphical-Engine добавил массив chankDifferList, который хранит объекты вида {chankX, chankY, layout, list:[{x, y, value} ... { }] }

Вы, это, внимательнее с английским языком:

Mitbus commented 5 years ago

Уже исправил)

Mazdaywik commented 5 years ago

Однажды я принимал программу, в которой переменная вместо flag называлась flug. Заинтересовался, посмотрел в словарь. Оказалось, что это слово тоже переводится 🙂.

Mitbus commented 5 years ago

Решили сделать как написано выше, но передавать на отрисовку можно чанк целиком, поэтому, возможно, целесообразно хранить 2-мерный массив флагов (изменялся ли чанк после отрисовки?)

Mitbus commented 5 years ago

engine.js 326 строка (this.gl.viewport(0, 0, w, h);), константы больше не передаются в функцию. Возможно, такое есть и в других местах

whitequartz commented 5 years ago

engine.js 326 строка (this.gl.viewport(0, 0, w, h);), константы больше не передаются в функцию. Возможно, такое есть и в других местах

Исправлено последним коммитом

Mitbus commented 5 years ago

@whitequartz , у меня теперь летит ошибка: engine.js:365 Uncaught TypeError: Cannot set property '198x121' of undefined

whitequartz commented 5 years ago

Ошибка с переменными: this.arrayOfChunks вместо this.arrayOfChunk нужно использовать Исправлено в последнем коммите

Mitbus commented 5 years ago

Оптимизировал отрисовку фреймбуферов, ждем, пока Влад добавит трек изменений. У нас он уже учитывается. Оптимальное значение чанка изменено на 16х16. ps. Теперь даже на лагающем ноуте +- 55 фпс

Mitbus commented 5 years ago

После отрисовки фреймбуферов перестали нормально рисоваться сохранения (см. develop) Снимок Причем, судя по деревьям, само сохранение отрабатывает, но по каким-то причинам не может нормально отображаться

Mitbus commented 5 years ago

исправил

Mitbus commented 5 years ago

Насчет освещения, я предлагаю при расчете искусственного света вообще не учитывать факт того, что блок находится сзади (т.е. его свет - 0.5). А когда свет будет посчитан, то мы на весь задний искусственный фон, который темнее, чем его освещает естественно, положим максимум. Проще говоря, Искусственный и естественный свет считаются отдельно, а потом выбирается максимум.

Mitbus commented 5 years ago

Починил свет при смене суток и добавил авторасчет времени обновления света. При времени суток от 300 сек фпс сильно не падают (не более 10%). Лежит в Player

Mitbus commented 5 years ago

Решили передавать свет в 1-мерной марной матрицей, на 1 со всех сторон больше, чем чанк. Изменения появятся в тестовой ветке унаследованной от Player

Mitbus commented 5 years ago

Добавил передачу текстуры с анимациями в виде: { 'id', 'head': [ [нач х, нач у], [кон х. кон у] ], 'body': [ [нач х, нач у], [кон х. кон у] ], 'legs': [ [нач х, нач у], [кон х. кон у] ] } и вызов этой анимации для разных частей тела по id

Mitbus commented 5 years ago

Добивил учет высоты экрана (cameraScale). Теперь при слишком узком экране видно значительно больше, чем на квадратном. Предлагаю ограничить отношение длины к ширине каким-то значением (Например, длинна / ширину <= 2.5)

Mitbus commented 5 years ago

Также из-за этого зум больше не является хаком, но появляются артефакты при отрисовке

Mitbus commented 5 years ago

По идее нововведение полезно, но вносит ряд проблем. Возможно, стоит по-другому фиксировать количество блоков по высоте. Например, мы можем каждый кадр передавать разный размер пикселей в блоке исходя из разрешения экрана.

Mitbus commented 5 years ago

Выяснилось, что еще ломание и установка блоков не учитывают cameraScale

Mitbus commented 5 years ago

Подготовил логику игры для запрета зума со стороны engine.js, лежит в develop

whitequartz commented 5 years ago

Заблокировал зум. Теперь примерно одинаково всё выглядит на разном зуме и исправлены все баги с зумом связанные с графическим движком.