Навигация
Поддержать материально
Steam Greenlight

Логотипы
Медальки
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Темы форума
WoL
Сегодня, 13:13
 Darthman
185 - RPG
9.02.2024
 Vaskrol
В каком банке открыт…
24.01.2024
 Darthman
185 - ?
30.12.2023
 Mefistofel
TESTAMENT - Тактичес…
15.11.2023
 KregHek
RES - Движок для пик…
27.09.2023
 rimush
177 - One Button Str…
20.09.2023
 VoroneTZ
JS 13k contest
13.09.2023
 Mefistofel
184 - Arcade II
14.08.2023
 tiger1025
184 - ?
14.07.2023
 Kaps
Сейчас на сайте
Гостей: 2
На сайте нет зарегистрированных пользователей

Пользователей: 1,789
новичок: NickName
Обсуждение «The Great tribes - [TBS]»
Страница 2 из 3 < 1 2 3 >
Alexandrovis
Avatar пользователя

Опубликовано 09.06.2018 13:51 (6 лет назад)    #
Дневник разработки № 24

Всем привет! В этом дневнике мы поговорим о религии.

Наряду с культурой, религия в игре является вторым фактором идентичности. Если ценностный аспект религий зависит от места их возникновения, то их организационный тип определяет игрок.

У религий есть 3 параметра:
1. Тип религии:
политеизм
генотеизм
дуализм
монотеизм
этическая система
светская философия
анимизм
2. Организационная структура:
отсутствие
децентрализация
централизация
3. Тип организации:
культ
церковь

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

На сегодня все. В связи с сезоном летних отпусков, дата и тема следующего дневника пока неизвестны. Но до конца лета как минимум один дневник мы опубликуем. Хорошего всем отдыха!
Zemlaynin
Avatar пользователя

Опубликовано 04.08.2018 08:27 (6 лет назад)    #
Дневник разработки №25

Всем привет!

Практически четыре месяца прошло с последнего, опубликованного мной, дневника, те кто давно следит за разработкой нашего проекта должно быть догадались куда я пропал :) Тем читателям кто упустил этот момент напомню — для меня лето это не сезон отпусков, а время когда я зарабатываю деньги, чтобы потом, большую часть нашей сибирской зимы, заниматься проектом. С мая по октябрь я занимаюсь этим делом. Хотя периодически у меня возникает возможность уделить нашему проекту пару часов в день. Да и вообще нынче я планировал, точнее распланировал свой распорядок дня так чтобы как минимум час-два в день посидеть над проектом. Весь месяц май у меня была такая возможность и я работал над проектом вечерами, планировал к концу мая выложить обширный блог с перечнем всех новшеств. Но тут меня ждала огромная неприятность, которая перечеркнула все мои планы...



Один из моих грузовиков два раза кувыркнулся с грузом, слава богу водитель жив и отделался переломом руки и мелкими ссадинами. Ущерб правда значительный для моего бюджета получился... Пришлось три месяца вкалывать по 12-14 часов в день без выходных чтобы хоть как-то нивелировать данный ущерб и потерю производительности (пришлось работу рассчитанную на три машины делать двумя). В общем накрылся мой восьмичасовой график работы и о проекте пришлось забыть совсем.


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

Первым делом скажу что наш игровой мир наполнился новыми заготовками районов и построек:











Как вы могли заметить по скринам, началась прикрутка интерфейса, но об этом позже.

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





или плоскими:



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




Касаемо интерфейса, сложно описать ту проделанную, объемную, нудную работу, по нарезке кнопок и их расположению на экране. Но основные элементы интерфейса теперь присутствуют и функциональны:





В прошлом блоге я писал что хотел закончить работу над моделью торговли и роста городов, но к этим задачам практически не прикоснулся, хотя мы их постоянно обсуждали. Поводом для этого было небольшое недопонимание между членами нашей команды по поводу фазы игры которая происходит между глобальными ходами, т. е. той фазы когда идет передвижение юнитов. У нас передвижение юнитов происходит по четырем тактам, условно — весна, лето, осень, зима. Эти такты отображаются на кнопке конца хода, которая в момент фазы перемещения юнитов вращается и указывает на тот или иной такт. И вот в этом моменте я пошел по пути «наименьшего сопротивления» и сделал так как мне это виделось и был не прав :) Пришлось изрядно откатиться назад и выработать новое компромиссное решение. Но данное решение повлекло за собой некоторые изменения самой механики передвижения юнитов, что в свою очередь притормозила всю остальную работу. Поставленная задача получилась большой и алгоритмически сложной. Где-то в момент её реализации случились выше описанные неприятности и задачу пришлось отложить до того времени когда я смогу освободить свою голову от насущных задач.

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



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



Вся сложность реализации адекватных гор в малой сетке... Может кто нормальную гору накидать на сете 21х21?



Надеюсь выпустить еще один дневник до того как смогу более плотно заняться проектом.
Всем удачи и добра!

P.S. Два дня писал этот не многословный пост :)
Присоединяйтесь к Discord каналу: https://discord.gg/tCzHVsW

редакция от Zemlaynin, 04.08.2018 08:29

Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 04.08.2018 18:12 (6 лет назад)    #
Насчет гор.
Возможно ты заходишь не с той стороны.
Я понимаю, процедурная генерация и все дела, но чтобы построить красивые горы в лоу поли, нужна нессиметричная сетка.
Я бы предложил сгенерировать горы хорошим перлином или ворлей нойзом в высокой детализации, а потом оптимизировать сетку.
Задача оптимизации непроста, но ее решали много раз.
так сетка будет лучше подходить под силуэты гор и будет приемлимый полигонаж.
+ равнины и плоскости будут оптимизированы хорошо.
Shirson
Avatar пользователя

Опубликовано 05.08.2018 03:45 (6 лет назад)    #
Тема решается и регулярной сеткой - просто генерацию можно подправить. И вариантов много.
Например, брать несколько точек и вытягивать их в высоту - это будут ключевые вершины. Затем, на некотором удалении от каждой (в зависимости от коэффициента крутизны гор), брать другие вершины, задирать их на половину высоты основных вершин и добавлять шум. Потом повторить для всех вершин вокруг. Получаются вполне годные массивы.
Можно взять алгоритм наброса полусфер, с последующим сглаживанием. Тоже неплохо получается.
Да дофига вариантов - вплоть до честного варианта по вытягиванию массива с последующей эррозией. Но это для более "тонких" сеток.
Zemlaynin
Avatar пользователя

Опубликовано 25.08.2018 13:51 (6 лет назад)    #
Mefistofel написал:
Насчет гор.
Возможно ты заходишь не с той стороны.
Я понимаю, процедурная генерация и все дела, но чтобы построить красивые горы в лоу поли, нужна нессиметричная сетка.
Я бы предложил сгенерировать горы хорошим перлином или ворлей нойзом в высокой детализации, а потом оптимизировать сетку.
Задача оптимизации непроста, но ее решали много раз.
так сетка будет лучше подходить под силуэты гор и будет приемлимый полигонаж.
+ равнины и плоскости будут оптимизированы хорошо.


Я не могу сделать в своем проекте не нессиметричную сетку, это связаано как раз с оптимизацией под огромные миры.
Zemlaynin
Avatar пользователя

Опубликовано 25.08.2018 13:52 (6 лет назад)    #
Shirson написал:
Тема решается и регулярной сеткой - просто генерацию можно подправить. И вариантов много.
Например, брать несколько точек и вытягивать их в высоту - это будут ключевые вершины. Затем, на некотором удалении от каждой (в зависимости от коэффициента крутизны гор), брать другие вершины, задирать их на половину высоты основных вершин и добавлять шум. Потом повторить для всех вершин вокруг. Получаются вполне годные массивы.
Можно взять алгоритм наброса полусфер, с последующим сглаживанием. Тоже неплохо получается.
Да дофига вариантов - вплоть до честного варианта по вытягиванию массива с последующей эррозией. Но это для более "тонких" сеток.

Спасибо, натолкнули на пару мыслей.
Zemlaynin
Avatar пользователя

Опубликовано 25.08.2018 14:15 (6 лет назад)    #
Дневник разработки №26

Всем привет!

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

В порядке улучшения вида гор:

















Спасибо за внимание!

Вступайте в нашу группу в ВК: https://vk.com/thegreattribes
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 25.08.2018 19:53 (6 лет назад)    #
Стало лучше, но стоит поискать более качественный шум) Либо ты его неправильно используешь)
Предположу, что ты используешь базу поверхзности в виде пирамиды, а сверху шумом добавляешь неровности. Тогда скорее всего пирамиды в таком виде не пойдут:)
Zemlaynin
Avatar пользователя

Опубликовано 26.08.2018 04:06 (6 лет назад)    #
Mefistofel написал:
Стало лучше, но стоит поискать более качественный шум) Либо ты его неправильно используешь)
Предположу, что ты используешь базу поверхзности в виде пирамиды, а сверху шумом добавляешь неровности. Тогда скорее всего пирамиды в таком виде не пойдут:)


Да все верно, за основу берется пирамида. Тут есть пару мыслей как уйти от пирамид.
Zemlaynin
Avatar пользователя

Опубликовано 29.08.2018 13:28 (6 лет назад)    #
Последние горы:

Убрал пирамидность
Kiriyama
Avatar пользователя

Опубликовано 31.08.2018 06:35 (6 лет назад)    #
Лампово. Напомнило populous на sega.
Zemlaynin
Avatar пользователя

Опубликовано 01.09.2018 08:39 (6 лет назад)    #
Kiriyama написал:
Лампово. Напомнило populous на sega.

На сеге не играл, а вот на компе в populous не припомню таких гор :)
Или вообще общей атмосферой ?
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 01.09.2018 13:02 (6 лет назад)    #
В populous 1 и 2 были сплошные горы. Там базовый геймплей был в выравнивании земли для своих последователей.
Но похоже слабо, все таки аналогии с цивилизацией более вызывающие.
Разве что там горы были тоже пирамидальные
Alexandrovis
Avatar пользователя

Опубликовано 24.09.2018 20:26 (6 лет назад)    #
Дневник разработки № 27

Всем привет! Сегодняшний дневник будет посвящен армиям.

Реализация армий в игре похожа на ту, что используется в Europa Universalis и подобных ей играх. Т. е. армия — это объединение одного или нескольких видов войск с практически неограниченным лимитом по численности, обладающая определенными параметрами и находящаяся под командованием той или иной фракции. На этом сходство заканчивается:)

Кроме перечисленных особенностей, в нашей игре армии обладают зоной контроля, размер которой можно увеличивать с ростом технологий. Зона контроля отвечает за реагирование армии на соприкосновение с зоной контроля врага, а также за вступление в битву. Для этого зона контроля делится на 2 зоны: зона боя и зона контроля. При соприкосновении зон контроля 2-х армий у каждой инициируется определенный сценарий, заданный для таких случаев игроком или компьютерным противником. Например, при соприкосновении с вражеской зоной контроля армия может автоматически начать отступать, пока у нее не закончатся очки действия. Если же зоны атаки двух армий соприкоснутся, начнется битва.

Битва в первых версиях игры будет представлять собой пофазовое сравнение силы юнитов двух армий. В первой фазе (дальнего боя) атакуют только отряды дальнего боя. Количество атак зависит от дальнобойности оружия. Так, например, отряд снайперов может атаковать примерно 20 раз на каждый выстрел лучника при условии битвы на открытой местности. Во второй фазе (ближнего боя) сталкиваются все отряды в ближнем бою.

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

На сегодня все. Надеюсь, я смог ответить на все вопросы по данной теме, задаваемые в комментариях.
Zemlaynin
Avatar пользователя

Опубликовано 22.10.2018 07:43 (5 лет назад)    #
Дневник разработки №28

Всем привет!

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

Первым делом я продолжил эксперименты с текстурами террайна, вот приличное количество скриншотов процесса подбора:


































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

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





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




На ваш взгляд, не сильно рваные берега получаются?

К нашему проекту присоединился еще один моделлер, который сделал нам новый юнит армии. Юнит анимирован, имеет 3 варианта анимации в состоянии покоя и одну анимацию ходьбы.




Ближайшие планы:

- Допилить текстуры для террайна.
- Доработать систему роста населения в населенных пунктах.
- Создать систему расширения городов при росте населения.
- Создать юнит кочевья.
- Доработать систему ресурсов.
- Реализовать систему производства ресурсов.
- Основные механизмы торговли и экономической системы в целом.

редакция от Zemlaynin, 22.10.2018 07:46

Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 22.10.2018 11:50 (5 лет назад)    #
Стало безусловно лучше, но вообще проблем с виду очень много.
Посмотри на Civilization IV V VI
Прежде всего, квадратно гнездовые горы.
Модели лесов слишком детальные для такого масштаба. Многие текстуры слишком контрастные.
И главное - возможно ты делаешь слишком много предварительной работы, которую придется выкинуть.
Нужно понять, как будут отображаться флажки юнитов/жизни, модели городов, модели сторон.
Ведь это такие же важные данные, как и тип поверхности клетки. А иногда и важнее, потому что раненый юнит и здоровый могут визуально не отличаться, только по жизням.
Интерфейс вроде стилизован, но смотрится очень плохо. Если это близкий к желаемому, то это плохая новость - с виду он очень низкого качества.
Если он будет стилизованный - его еще пилить и пилить, хотя опять же, пока нет всей информации об игре (всех типов ресурсов, информации о городах, типовых экранов), уделять этому много времени нет смысла.
Не то что бы это были решающие штуки, пока игра не играет, но все же.
Zemlaynin
Avatar пользователя

Опубликовано 22.10.2018 12:03 (5 лет назад)    #
Это конечно не финальный вариант, просто попытался своими силами добить более менее презентабельного вида. Вроде на сегодня сделал все визуальные исправления которые хотел, теперь только механика игры :), а там глядишь и подключится кто сведущий в построении общей визуальной составляющей.
По интерфейсу так и есть, это тоже промежуточный вариант для отображения необходимой на этом этапе разработки информациии.
Zemlaynin
Avatar пользователя

Опубликовано 27.11.2018 09:17 (5 лет назад)    #
Дневник разработки №29

Всем привет!

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



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

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

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



Теперь стартовый вариант города выглядит так:



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

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

Начальный вариант жилого района:



Чтобы сгладить его квадратный вид, к нему добавляются дополнительные элементы. Эти элементы, как выше уже было отмечено, не являются самостоятельными районам, а служат лишь графическим оформлением:



Город может расширяться в любом направлении. Для примера предположим, что следующий городской район появляется справа от уже имеющегося. Текущая правая пристройка пропадет, а на ее месте появится район следующего типа:



Если район появляется внизу слева по диагонали, то он будет иметь квадратную форму, а его дополнительные пристройки следующий вид:



Если район строится сверху от изначального, город принимает следующую форму:



Строится внизу справа по диагонали от стартового. Второй построенный район заменяется другой своей модификацией, а дополнительный район снизу на П-образный:



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

Резюмируя, можно посмотреть скриншот крупного города, выстроенного в игре таким образом:




В качестве дополнительного бонуса скриншот Аванпоста:



Спасибо всем за внимание и до новых встреч!
Zemlaynin
Avatar пользователя

Опубликовано 05.12.2018 03:52 (5 лет назад)    #
Дневник разработки №32

Всем привет!

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



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









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





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

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



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






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













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



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







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





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



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



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

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





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





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



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









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

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





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

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

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

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

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

редакция от Zemlaynin, 05.12.2018 03:54

Zemlaynin
Avatar пользователя

Опубликовано 11.01.2019 07:37 (5 лет назад)    #
Дневник разработки №33

Всем привет! И с прошедшими новогодними праздниками!

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

Согласно плану разработки был реализован первый контакт с ИИ:



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



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





Далее были реализованы первые маневры ИИ. ИИ ходит по карте и пытается определить границы своего материка. В видео у Дуката https://youtu.be/69G51u_Mq3g?t=693 ,есть момент где он бегает за армией противника, который не обращает на него внимания, так как занят исследованием карты :)


И вот где-то в этом месте и в это время, я столкнулся с проблемой, проблемой производительности. У нашего моделлера достаточно мощный современный компьютер красной сборки. Но у него игра жутко тормозила грузя одно ядро процессора. Причина проста — в новых процессорах много ядер, но по факту они менее производительны в однопоточных приложениях. А тот момент у меня был рендер в один поток. Но на самом деле причины была не столько в этом. И в процессе поиска проблемы я решил посчитать сколько полигонов у нас присутствует в сцене:



На средней карте при максимальном отдалении и большом скоплении пальм - это просто жуть! 15 824 756 треугольников! Почти 16 миллионов!!!

Немного погенерировав карты я нашел место с 16,75 миллионами :)



Хотя вот подобное место с елками давало всего 8,5 миллионов треугольников:



А в среднем сцена состояло из примерно 4 миллионов:




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



На 40% снизился полигонаж елок! Отличий практически не видно.

Следом мы переделали и пальмы - полигонаж на пальмах был снижен в 10 раз. 600 - 700 против шести тысяч полигонов в одном паке.



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



И после первых шагов:







Но это было все сделано простым методом — все ровные тайлы были заменены двумя треугольниками вместо 882.

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



Строить по ним выпукло-вогнутый контур (Concave Hull). С Convex Hull`ом проблем не было, я уже использовал алгоритм Грэхема (Graham scan). А вот построением Concave Hull появилась проблема... Информации на эту тему тему в интернете найти оказалось достаточно сложно. Пришлось писать реализацию алгоритмов с нуля. Не совру, если я скажу что прочитал с десяток разных диссертаций на эту тему. Но все предложенные алгоритмы давали приближенный результат с некоторой погрешностью. После недели мучений и боли мне пришла идея своего алгоритма, возможно я его когда-нибудь опишу :)
В результате уже двух недельного мучения я получил искомый результат и смог строить Concave Hull практически любой сложности, обходя стороной множества с дырками, просто разделяя их на 2 половины по дырке. Получал контур и триангулировал его:





Получая на выходе такой результат:




Также подвергся упрощению туман войны:


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


Но в итоге я был расстроен результатом и расскажу что эти две недели я потратил в пустую... Разработанный мной алгоритм давал ощутимую прибавку в производительности при отрисовке, так как количество полигонов в среднем сокращалось на 60 — 70%. Но генерация карты стала происходить раз в 10 медленнее.... алгоритм был тяжелый по временным затратам.

3 дня я проиграл в ATOM RPG снимая стресс :) Даже на работу не ходил. Слава богу у нас в это время термометр зашкаливал на границе -44 - -46 градусов по Цельсию. И свою хандру я выдал за отмазку о не заводившейся машине.

И вот перед новогодними праздниками, вдоволь наигравшись, но правда не пройдя игру, я выдал новую облегченную версию алгоритма, который подходил только под мои условия тайлов. Вычисления данных для оптимизации были не заметны на фоне генерации карты и количество полигонов снижалось в среднем на 40-50%.
Но появились артефакты при отрисовке воды, пришлось переписать все алгоритмы связанные с водой.
Вот результат:



Анатолий тем временем сделал юнит кочевья:



Пока он лежит отдыхает :)

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




Горы стали более рельефными, это заметно без текстуры, так как текстура теперь к ним не подходит:



По сетке так вообще отличия очевидны:



Осталось дело за малым — нужна новая текстура гор.

Следующим этапом пришлось переписать загрузчик ресурсов и генератор карты. Попутно переделав стартовое меню под эти все дела:





Теперь загрузка ресурсов идет параллельно и после чего начинается генерация карты.

Огромную работу проделал по разделению рендера на 3 потока. Вся сложность была в синхронизации. Теперь у нас один поток отвечает только за отрисовку, второй поток за перерасчет видимого пространства при передвижении камеры и прочих с взаимодействий с пространством карты, и третий поток отвечает за анимацию и связь с серверной частью.

И да, у нас теперь есть серверная часть отвечающая за все события в игре и за ИИ. В свою очередь каждый ИИ игрок это отдельный процесс.

Подведем итоги проделанной работы:
- Оптимизация графики с программной стороны.
- Оптимизация графики — модели.
- Серверная часть.
- Разбитие рендера на 3 потока.
- Предзагрузка ресурсов (текстур и моделей).
- Переписал шейдеры тумана войны, воды и террайна.
- Сократил потребление оперативной памяти на 20-30%
- Реализован ряд элементов UI
- Переделано стартовое окно с новым UI.
- Устранил ошибки в расчетах нормалей.
- Подправил холмы.
- Новые горы.
- Ввели нормалмапу для террайна.
- Новое выделение юнитов.
- Новая анимация юнитов.
- Окно дипламатии.
- Действия ИИ. Исследование карты.
- Действия ИИ. Дипломатический контакт.
- Действия ИИ. Заключение мира, дружбы или объявление войны.
- Действия ИИ. Действие юнитов при столкновении.

В общем была проделана огромная работа по оптимизации и не много по игровым механикам. Надеюсь в этом месяце в се пойдет по плану и я наконец-то допишу города :)


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

редакция от Zemlaynin, 11.01.2019 07:38

Страница 2 из 3 < 1 2 3 >
Перейти на форум:
Конкурсы
Открытые конкурсы:
Активных нет
Недавние конкурсы:
 185 - RPG XII
 184 - Arcade II
 183 - Novel
 182 - RPG XI
 181 - Pixel Craft 128
 Все конкурсы
Случайная игра
Мини-чат
Вам необходимо залогиниться.

Архив чата

25,355,196 уникальных посетителей

Создано на базе русской версии PHP-Fusion copyright © 2003-2006 by Nick Jones.
Released as free software under the terms of the GNU/GPL license.