alexandrovis

The Great tribes - Дневники разработки

62 сообщения в этой теме

Рекомендованные сообщения

alexandrovis

The Great Tribes


Сайт: Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.
Сроки разработки: 2017-2020
Жанр игры: глобальная стратегия, симулятор
Сеттинг: действие игры и ее хронологические рамки примерно соответствуют периоду с 4-3 тыс. до н.э. по начало 3 тыс. н.э.
Похожие игры: Civilization, Crusader Kings, Europa Universalis, Victoria.
Описание: The Great Tribes – это пошаговая стратегия, в которой игроку предстоит создать собственную уникальную цивилизацию и испытать свои силы в ее развитии в нелинейном, постоянно меняющемся мире. Возглавьте кочевое племя и держите в страхе весь континент, либо отражайте атаки кочевников, управляя оседлой цивилизацией.

 

Спойлер

 

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

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

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

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

Гибкая система коалиций
Система коалиций позволяет создавать разнообразные формы отношений между административными единицами: административной зоной и регионом, регионом и страной, между несколькими странами (конфедерации, вассальные отношения, союзы и т.д.), между регионом и армией (правительственные армии, феодальные армии и т.п.).

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

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

Многообразие культурных и цивилизационных форм
В отличие от других игр, цивилизации в игре формируются на основе 4-х пар рамочных принципов, которые могут образовать до 16 уникальных цивилизаций, а их сочетание позволяет генерировать до 3520 уникальных культур.

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

 

 

 

 

Спойлер

 

uc?export=view&id=12VaMC8nM8Lon8gMJmCIdY

uc?export=view&id=1o7nir2vTxmvXcNDaOavv6

uc?export=view&id=19afvtv_LAXcOdngl318E-

uc?export=view&id=1FjzdzTRAviY6UYbCDP5eo

 

 

 

 

Спойлер

1 программист
1 гейм-дизайнер
1 моделлер
1 художник

 

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

Изменено пользователем alexandrovis

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Закреплённое сообщение
Zemlaynin

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

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

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

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

screen001.jpg

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

screen003.jpg

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

screen004.jpg



screen005.jpg

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


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

screen006.jpg

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

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

screen007.jpg

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

screen008.jpg

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

screen009.jpg


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

screen025.jpg

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

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

screen026.jpg

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

screen010.jpg

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

screen011.jpg



screen012.jpg

screen013.jpg

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

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

screen014.jpg

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

screen015.jpg



screen016.jpg


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

screen017.jpg


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

screen018.jpg

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

screen019.jpg

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

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

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

screen027.jpg

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

screen020.jpg

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

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

screen021.jpg


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

screen022.jpg

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

screen023.jpg

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

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

screen024.jpg



screen028.jpg

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

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

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

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

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


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

Изменено пользователем Zemlaynin

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Zemlaynin

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

  • Модераторы онлайн

    • Dr. Strangelove