Дневник разработки №32
Дневник разработки №32
Всем привет!
Прошло полтора месяца с моего последнего дневника, был проделан огромный фронт работ за это время. Вот так выглядел мой таск лист, не учитывая тех задач что я выполняю по внутриигровым механикам:
Все задачи выполняли не в том порядке, в котором они были расположены в списке, да и тут отсутствуют мелкие задачи, которые приходилось решать попутно. Многие задачи не касались моего участия, например Алексей потихоньку текстурил здания:
Тем временем, я думаю наши читатели помнят голосовалку в нашей группе ВК https://vk.com/thegreattribes , шла работа по подбору цветового оформления террайна:
[spoiler]
Вариант который мы выбрали на сегодняшний день покажу немного ниже.
Первым делом у меня стояла задача по реализации теней от объектов на карте и первые попытки реализации через Shadow map дали вот такой результат:
И после недолгих мучений удалось получить вот такой результат:
Далее, стояла задача подправить воду, подобрать к ней хорошие текстуры, коэффициенты и переменные для лучшего отображения, нужно было сделать блики на воде:
В это же время к нашей небольшой команде подключился еще один моделлер который сделал нам нового юнита:
Модель была с картой спекуляра, но поддержки этого материала не было в моем движке. Пришлось потратить время на внедрение поддержи specular map. Поралельно с этой задачей пришлось наконец-то доработать освещение.
Все как говориться, цепляется одно за другое, пришлось вводить поддержку влияния тенейц на спекуляр:
И сделать регулируемый источник света для проверки всего и вся:
Как видно теперь появилась панелька где можно управлять положением источника света. Но и это было не всё, пришлось задать дополнительный источник освещения имитирующий отраженный свет, чтобы получить более реалистичный спекуляр с теневой стороны, он привязан к положению камеры. Как теперь видно броня поблескивает и с теневой стороны:
Ух сколько было убито свободного времени на анимацию этого персонажа, точнее импорта анимации. Но теперь все работает отлично! Скоро запишу видео игрового процесса.
Тем временем Алексей выкатил новую модельку шахты:
Чтобы сделать такой скриншот с приближением шахты пришлось отвязать камеру, что дало возможность насладится открывшимися видами:
В процессе работы над построением городов был реализован механизм расширения административной зоны города, на скриншоте она обозначена белым цветом:
Надеюсь вы читали наш о реализации системы визуализации городских районов:
Как вы могли заметить на последнем скриншоте более качественные тени, чем ранее. Мною была допущена ошибка при расчете теней и по этому тени отставали от маленьких объектов и получалось ощущение что они висят в воздухе, теперь тень падает естественней.
Немного был изменен генератор карты, были подправлены холмы, сделал их более гладкими. Появились ледники на суше, если она находится близко к полюсам:
Была проделана большая работа по оптимизации отображения графики, переписал местами шейдеры устранив слабые места. Оптимизировал механизм хранения и отрисовки видимых тайлов, что дало ощутимый прирост и стабильный FPS на слабых компьютерах. Сделал плавное передвижение и поворот камеры, полностью исключив ранее видимые рывки.
Это не полный список всех решенных задач, я просто не помню все :)
Планы на ближайшее будущее:
- Интерфейс, очень большие у нас с ним проблемы и очень нужна помощь спецов в этом деле.
- Реализация столкновений армий.
- Реализация роста городов, я так и не доделал этот механизм.
- Реализация первых зачатков ИИ, маневрирование армией и принятие решений и реакция на столкновение армий противника.
- Реализация механизма хранения состояний отношения ИИ к противникам, дипломатия.
- ИИ городов.
Спасибо за внимание!
Вступайте в нашу группу в https://vk.com/thegreattribes
Смотрите также:
Комментарии
- 1
- 2 (Текущая страница)
Zemlaynin, не знаю, мне все равно кажется, что этого многовато... хотя может там действительно много данных так необходимо
alexprey, так как карта у меня поддерживает динамическое изменение высот тайлов, приходится держать в памяти высоты тайлов... Но так как изменение высоты происходит очень редко, нужно просто организовать выгрузку/загрузку данных на хард и я сильно высвобожу память.
Zemlaynin, ну в принципе да, это было бы логично, но с другой стороны некоторые операции потом могут просаживаться, когда нужно будет делать какие-нибудь обсчеты на поздних этапах игры, когда используются почти вся территория карты. Мне кажется если и задаваться вопросом оптимизации, то в сторону упаковки данных, чтобы один тайл ел меньше памяти.
alexprey, я не думаю, что изменение карты будет частым и над упаковкой я уже думал, так как сохранить такой объем даже на хард не просто :)
У меня карта 1200х750 отъедает почти 8гигов оперативки. Я считаю что это очень много... а в Юнити я улетал далеко за эти пределы.
Это не нормально. Endless Legend, которая написана на Unity, на больших картах ни в коем случае не будет жрать столько места, хотя визуально деталей на ее карте будет намного больше, чем у тебя на данный момент. Unity тут ни при чем - что там, что тут придется решать эту проблему.
Zemlaynin,
так как карта у меня поддерживает динамическое изменение высот тайлов, приходится держать в памяти высоты тайлов...
Общее количество тайлов умножь на место, занимаемое типом и посчитай, сколько это будет места занимать. По моим подсчетам даже 2 мегабайт не будет.
GenElCon, В Endless Legend карта 180х120 тайлов всего, это в 40 с небольшим раз меньше :)
Вот считай - 900000*субтайлов*49 вершин*тип float(4 байта) = 168 Мб.
Уже что-то, но все равно я что-то упустил :) Слишком большое потребление ОЗУ нужно проверять.
А епрст кажется нашел :)
GenElCon,
alexprey,
Ух! Огромное спасибо ребята, что устроили мне разбор, хранил при проходе все нормали к треугольникам, на основе которых расчитывал нормали вешин. Подумал что после бинда нужно удалять эту инфу, но не тут то было... С наскоку не получилось решить задачу, так как для расчета нормалей вершин использовались значения крайних вершин соседних тайлов. Так что пока не просчитаны нормали для всех соседних тайлов информацию о нормалях вершин и нормалей треугольников удалять нельзя. 3 часа с гаком потратил на решение задачи :)
Итог : минус 2 гига оперативки :) теперь огромная карта занимает 5,2Гб ОЗУ!!! да и скорость загрузки возросла!
Сумбурно получилось : ) Еще раз спасибо, за то что натолкнули на правильную мысль!
- 1
- 2 (Текущая страница)
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]