Сообщество Империал: The Great Tribes (Великие племена) - Сообщество Империал

Стратегии, Игровые Миры, История, Total War
Уважаемый Гость, Реклама отключается для зарегистрированных посетителей форума: Регистрация
Imperial Уважаемый Гость, у Вас есть шанс сделать предзаказ анонсируемых игр Imperator: Rome и Total War: Three Kingdoms со значительной скидкой. [ Получить скидку ]
Zemlaynin

The Great Tribes (Великие племена)

Глобально-стратегический симулятор развития цивилизации (в разработке)
Тема создана: 06 Декабрь 2018, 03:46 · Автор: Zemlaynin
 Zemlaynin
  • Imperial
Imperial
Форумчанин
5
1
4
13
0

Дата: 06 Декабрь 2018, 03:46

Imperial


Название игры: The Great Tribes

Пространство: 3D + 2D
Вид: Сверху
Движок\конструктор: Самописный
Предполагаемая дата релиза: 2020+
Платформы: PC (Win, Mac, *nix)

Жанр игры:
Глобально-стратегический симулятор развития цивилизации. В альтернативной классификации относится к классу "игр против поля", где невозможна формальная победа. Игрок может лишь отсрочить свое поражение. Однако, данная игра лишь частично отвечает требованиям данного класса. Потерпев полное поражение, игрок может продолжить игру за победителя.
Сеттинг:
Действие игры и ее хронологические рамки примерно соответствуют периоду с 4-3 тыс. до н.э. по начало 3 тыс. н.э.
Ход игры:
Игра осуществляется в пошаговом режиме. Однако существует два разных хода – Ход и Такт.
Ход обсчитывает глобальные параметры: рост населения и экономики, миграцию страт и изменение их характеристик и т.д.
Такты же происходят лишь при боевых действиях. Всего в рамках хода предусмотрено 4 такта: весенний, летний, осенний и зимний. Так, армия, совершившая длинный марш-бросок и вступившая в сражение на исходе очков действия, будет вести сражение в зимний такт с соответствующими последствиями.
Какие есть похожие игры: Civilization, Crusader Kings, Europa Universalis, Victoria.
Цель игры:
Особенность механики игры не позволяет выделить какую-то одну или несколько целей игры. Игрок сам может выбирать, к какой цели ему стремиться. Однако, дабы облегчить игроку поиск интересных целей, в игре будет реализована система достижений. Например, продержаться одной правящей династией как можно дольше, или построить самую богатую торговую империю, или просто колонизировать Марс. Игрок сможет вбирать среди сотен целей наиболее привлекательную для него.
Отдельно стоит отметить, что достижения будут разделены на 2 вида: индивидуальные и глобальные. Индивидуальные достижения основаны на результатах одного игрока, тогда как глобальные формируют различные рейтинги среди всех игроков.
Гейм-фокус:
Игра со сложной, умеренно детализированной моделью реального исторического процесса, в которой игроку предстоит создать собственную уникальную цивилизацию и испытать свои силы в ее развитии в нелинейном, постоянно меняющемся мире. Изучая игровой мир и совершенствуя свои познания общей механики исторического процесса, игрок сможет достичь или даже превзойти достижения строителей цивилизаций из реальной истории.

Состав команды:
До недавнего времени:
1 программист
1 гейм-дизайнер
1 моделлер

Сейчас:
1 программист
1 гейм-дизайнер
2 моделлера


Кто требуется в команду:
- художник (текстуры для 3D карты, разработать и отрисовать 2D карту, пользовательский интерфейс)
- Java программист
- Звуковорежиссер
- Тестировщики
- Гейм-дизайнер (математик)

- - - Сообщение автоматически склеено - - -

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

Всем привет!

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

Спойлер (раскрыть информацию)


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

Спойлер (раскрыть информацию)


Тем временем, я думаю наши читатели помнят голосовалку в нашей группе ВК Для просмотра ссылки Зарегистрируйтесь, шла работа по подбору цветового оформления террайна:

Спойлер (раскрыть информацию)


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

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

Спойлер (раскрыть информацию)


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

Спойлер (раскрыть информацию)



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

Спойлер (раскрыть информацию)


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

Спойлер (раскрыть информацию)


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

Спойлер (раскрыть информацию)


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

Спойлер (раскрыть информацию)


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

Спойлер (раскрыть информацию)


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

Спойлер (раскрыть информацию)


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

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

Спойлер (раскрыть информацию)


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

Спойлер (раскрыть информацию)


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

Спойлер (раскрыть информацию)


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

Спойлер (раскрыть информацию)


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

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

Спойлер (раскрыть информацию)


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

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

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

Спасибо за внимание!
Вступайте в нашу группу в ВК: Для просмотра ссылки Зарегистрируйтесь
     Honda Tadahacu
    • Imperial
    Imperial
    Форумчанин
    5 295
    171
    675
    6 521
    47

    Дата: 06 Декабрь 2018, 07:25

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

    В любом случае разрабам удачи и прироста.
       Zemlaynin
      • Imperial
      Imperial
      Форумчанин
      5
      1
      4
      13
      0

      Дата: 06 Декабрь 2018, 08:26

      Honda Tadahacu (06 Декабрь 2018, 07:25):

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

      В любом случае разрабам удачи и прироста.


      Над графической частью постоянно идет работа. Можете у нас в группе в ВК посмотреть, в прошлых дневниках, как было в самом начале :)
      Команда это костяк, постоянно кто-то присоединяется и отваливается :)
         Zemlaynin
        • Imperial
        Imperial
        Форумчанин
        5
        1
        4
        13
        0

        Дата: 11 Январь 2019, 10:46

        Сообщение не могу написать говорит много ссылок :)

        - - - Сообщение автоматически склеено - - -

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

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

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

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

        Спойлер (раскрыть информацию)


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

        Спойлер (раскрыть информацию)


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

        Спойлер (раскрыть информацию)


        Далее были реализованы первые маневры ИИ. ИИ ходит по карте и пытается определить границы своего материка. В видео у Дуката ,есть момент где он бегает за армией противника, который не обращает на него внимания, так как занят исследованием карты :)


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

        Спойлер (раскрыть информацию)


        На средней карте при максимальном отдалении и большом скоплении пальм - это просто жуть! 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.
        - Устранил ошибки в расчетах нормалей.
        - Подправил холмы.
        - Новые горы.
        - Ввели нормалмапу для террайна.
        - Новое выделение юнитов.
        - Новая анимация юнитов.
        - Окно дипламатии.
        - Действия ИИ. Исследование карты.
        - Действия ИИ. Дипломатический контакт.
        - Действия ИИ. Заключение мира, дружбы или объявление войны.
        - Действия ИИ. Действие юнитов при столкновении.

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


        Спасибо за внимание!
        Вступайте в нашу группу в ВК: Для просмотра ссылки Зарегистрируйтесь
           Zemlaynin
          • Imperial
          Imperial
          Форумчанин
          5
          1
          4
          13
          0

          Дата: 15 Январь 2019, 05:08

          Вышла статья на Хабре Для просмотра ссылки Зарегистрируйтесь
            Дата: 17 Декабрь 2018, 02:26
            Дата: 06 Декабрь 2018, 23:42
            Дата: 06 Декабрь 2018, 19:45
            Дата: 02 Декабрь 2018, 19:45
            Дата: 09 Август 2018, 17:32
            Дата: 25 Июль 2018, 01:32
            Дата: 12 Июль 2018, 21:31
            Дата: 30 Май 2018, 20:36
            Дата: 22 Май 2018, 20:16
            Дата: 24 Апрель 2018, 19:45
            Дата: 26 Март 2018, 16:29
            Дата: 15 Март 2018, 20:21
            Дата: 21 Февраль 2018, 20:56
            Дата: 11 Январь 2018, 20:38
            Дата: 30 Ноябрь 2017, 20:16
            Дата: 28 Ноябрь 2017, 21:49
            Дата: 14 Ноябрь 2017, 19:08
            Дата: 26 Октябрь 2017, 20:23
            Дата: 12 Октябрь 2017, 15:04
            Дата: 10 Октябрь 2017, 04:11
            Дата: 28 Сентябрь 2017, 15:04
            Дата: 19 Сентябрь 2017, 15:50
            Дата: 25 Август 2017, 03:15
            Дата: 24 Август 2017, 10:32
            Дата: 24 Август 2017, 10:27
            Введите Ваше имя  
            [Регистрация нового аккаунта]
            Введите Ваш пароль 
            [Восстановить пароль]
            Воспользуйтесь одной из соц-сетей для входа на форум:
            Сообщество ИмпериалВселенная Стратегий Пошаговые Стратегии
            Обратная Связь
            © 2019 «Империал» · Условия использования · Ответственность · Визитка Сообщества · 17 Фев 2019, 16:58 · Счётчики