Логотип проекта The Great Tribes

Дневник разработки №32

Дневник разработки №32

Дневник разработки №32

Всем привет!

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

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

Все задачи выполняли не в том порядке, в котором они были расположены в списке, да и тут отсутствуют мелкие задачи, которые приходилось решать попутно. Многие задачи не касались моего участия, например Алексей потихоньку текстурил здания:

Тем временем, я думаю наши читатели помнят голосовалку в нашей группе ВК https://vk.com/thegreattribes , шла работа по подбору цветового оформления террайна:
[spoiler]

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

Вариант который мы выбрали на сегодняшний день покажу немного ниже.

Первым делом у меня стояла задача по реализации теней от объектов на карте и первые попытки реализации через Shadow map дали вот такой результат:

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

И после недолгих мучений удалось получить вот такой результат:

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

Далее, стояла задача подправить воду, подобрать к ней хорошие текстуры, коэффициенты и переменные для лучшего отображения, нужно было сделать блики на воде:

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

В это же время к нашей небольшой команде подключился еще один моделлер который сделал нам нового юнита:

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

Модель была с картой спекуляра, но поддержки этого материала не было в моем движке. Пришлось потратить время на внедрение поддержи specular map. Поралельно с этой задачей пришлось наконец-то доработать освещение.

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

Все как говориться, цепляется одно за другое, пришлось вводить поддержку влияния тенейц на спекуляр:

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

И сделать регулируемый источник света для проверки всего и вся:

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

Как видно теперь появилась панелька где можно управлять положением источника света. Но и это было не всё, пришлось задать дополнительный источник освещения имитирующий отраженный свет, чтобы получить более реалистичный спекуляр с теневой стороны, он привязан к положению камеры. Как теперь видно броня поблескивает и с теневой стороны:

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

Ух сколько было убито свободного времени на анимацию этого персонажа, точнее импорта анимации. Но теперь все работает отлично! Скоро запишу видео игрового процесса.

Тем временем Алексей выкатил новую модельку шахты:

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

Чтобы сделать такой скриншот с приближением шахты пришлось отвязать камеру, что дало возможность насладится открывшимися видами:

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

В процессе работы над построением городов был реализован механизм расширения административной зоны города, на скриншоте она обозначена белым цветом:

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

Надеюсь вы читали наш о реализации системы визуализации городских районов:

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

Как вы могли заметить на последнем скриншоте более качественные тени, чем ранее. Мною была допущена ошибка при расчете теней и по этому тени отставали от маленьких объектов и получалось ощущение что они висят в воздухе, теперь тень падает естественней.

Немного был изменен генератор карты, были подправлены холмы, сделал их более гладкими. Появились ледники на суше, если она находится близко к полюсам:

Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)
Дневник разработки №32 — The Great Tribes — DevTribe: Разработка игр (Java, Opengl, пошаговая стратегия)

Была проделана большая работа по оптимизации отображения графики, переписал местами шейдеры устранив слабые места. Оптимизировал механизм хранения и отрисовки видимых тайлов, что дало ощутимый прирост и стабильный FPS на слабых компьютерах. Сделал плавное передвижение и поворот камеры, полностью исключив ранее видимые рывки.

Это не полный список всех решенных задач, я просто не помню все :)

Планы на ближайшее будущее:

  • Интерфейс, очень большие у нас с ним проблемы и очень нужна помощь спецов в этом деле.
  • Реализация столкновений армий.
  • Реализация роста городов, я так и не доделал этот механизм.
  • Реализация первых зачатков ИИ, маневрирование армией и принятие решений и реакция на столкновение армий противника.
  • Реализация механизма хранения состояний отношения ИИ к противникам, дипломатия.
  • ИИ городов.

Спасибо за внимание!
Вступайте в нашу группу в https://vk.com/thegreattribes



  • 1
  • 2 (Текущая страница)

alexprey,

Zemlaynin, ого, вот это жестокая нагрузочка О_О

Ну это огромная карта :) Средняя карта 576х360 тайлов - 1,8 гигов потребялет.

Zemlaynin, не знаю, мне все равно кажется, что этого многовато... хотя может там действительно много данных так необходимо

alexprey, так как карта у меня поддерживает динамическое изменение высот тайлов, приходится держать в памяти высоты тайлов... Но так как изменение высоты происходит очень редко, нужно просто организовать выгрузку/загрузку данных на хард и я сильно высвобожу память.

Zemlaynin, ну в принципе да, это было бы логично, но с другой стороны некоторые операции потом могут просаживаться, когда нужно будет делать какие-нибудь обсчеты на поздних этапах игры, когда используются почти вся территория карты. Мне кажется если и задаваться вопросом оптимизации, то в сторону упаковки данных, чтобы один тайл ел меньше памяти.

alexprey, я не думаю, что изменение карты будет частым и над упаковкой я уже думал, так как сохранить такой объем даже на хард не просто :)

Zemlaynin,

У меня карта 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 (Текущая страница)