В соло пилю олдскульную классическую RTS. Подробнее расскажу позже, а пока видосик того, над чем работаю в текущий момент: физика и vfx'ы
Media is too big
VIEW IN TELEGRAM
🔥3
Добавил первого пехотного юнита. Никогда раньше не любил персонажную анимацию, но сейчас этим заниматься довольно занятно
Media is too big
VIEW IN TELEGRAM
🔥3
Расскажу самую малость об игре.
Если совсем коротко, Final Divide — это RTS, вдохновлённая бессмертной классикой вроде Red Alert 2. Речь не о копировании, а о создании той самой RTS, в которую я сам всегда хотел поиграть.
Человечество подошло к грани самоуничтожения и раскололось на четыре фракции, каждая из которых видит будущее по-своему.
Final Divide — это знакомый и понятный, но в то же время глубокий геймплей, несколько уникальных фракций, кампании с разнообразными миссиями за каждую из них. Немного абсурдный сюжет и клюквенный юмор. Сбор ресурсов, строительство базы, пехота, техника, авиация и флот — всё на месте.
В общем, игра от фаната для фанатов.
Если совсем коротко, Final Divide — это RTS, вдохновлённая бессмертной классикой вроде Red Alert 2. Речь не о копировании, а о создании той самой RTS, в которую я сам всегда хотел поиграть.
Человечество подошло к грани самоуничтожения и раскололось на четыре фракции, каждая из которых видит будущее по-своему.
Final Divide — это знакомый и понятный, но в то же время глубокий геймплей, несколько уникальных фракций, кампании с разнообразными миссиями за каждую из них. Немного абсурдный сюжет и клюквенный юмор. Сбор ресурсов, строительство базы, пехота, техника, авиация и флот — всё на месте.
В общем, игра от фаната для фанатов.
🔥10🥰1
Final Divide | RTS
Сделал свой navigation mesh для Final Divide
Те, кто в теме, знают, что pathfinding в RTS — главная головная боль для разработчиков, а иногда и для игроков.
Изначально всю навигацию в игре я строил на тайловой сетке. Наряду с общеизвестными ускорителями для A*: Weighted A*, HPA*, бинарная куча для open list — я использовал ещё одну идею для поиска по сетке (как оказалась, легко переносящуюся на NavMesh). Идея довольно проста, но почему-то упоминаний о ней я нигде не нашёл (поэтому я пока сохраню её в секрете, как коммерческую тайну), и она делает поиск очень быстрым (быстрее, чем Jump point search).
Это позволило реализовать следующую задумку: использовать тайлы очень маленького размера — гораздо меньше, чем площадь, занимаемая юнитом, и регистрировать каждого юнита как obstacle отдельно для агентов всех размеров. По сути я получил почти то, что многие хотят получить на NavMesh — использование каждого агента как dynamic obstacle. Благодаря чему, каждый юнит честно искал путь вокруг всех других юнитов.
И это, наверно, прекрасно работало бы в какой-нибудь RPG или RTT с не очень большим количеством агентов. Но в динамичной стилизованной RTS с большим количеством юнитов такая сложность и реализм не играют на руку, а скорее только вредят геймплею: при отдаче приказа игрок ожидает, что юниты исполнят его как можно быстрее, а не станут наматывать "честные" неочевидные зигзаги. Поэтому решил перейти к проверенным временем NavMesh с расталкиванием и локальным избеганием.
Пользоваться готовыми решениями я не стал. Во-первых, все они слишком универсальны и делают очень большое количество ненужных конкретно моей игре вычислений, а я стремлюсь к максимальной оптимизации. Во-вторых, готовых NavMesh с нужным для меня функционалом просто-напросто нет. В-третьих, мне по кайфу этим заниматься и иметь максимальный контроль.
🔥7👍4
Media is too big
VIEW IN TELEGRAM
Добавил ещё одного юнита
А также почти довёл поведение юнитов до ума
А также почти довёл поведение юнитов до ума
🔥9⚡1🤝1
Media is too big
VIEW IN TELEGRAM
Я уже упоминал о том, что pathfinding в RTS — одна из самых важных и сложных систем. Я начал разработку Final Divide в начале июля и большую часть времени потратил на движение юнитов.
Переписывал с нуля пару раз, делал сложнее, проще. Но наконец нашёл нужный баланс между качеством, контролем, предсказуемостью и производительностью.
Теперь могу больше сосредоточиться на контенте.
Переписывал с нуля пару раз, делал сложнее, проще. Но наконец нашёл нужный баланс между качеством, контролем, предсказуемостью и производительностью.
Теперь могу больше сосредоточиться на контенте.
🔥12❤2🤔2
Media is too big
VIEW IN TELEGRAM
Изначально я собирался делать игру в максимально ретро-стиле (и геймплейно, и визуально).
Во-первых, это гораздо проще. Но я решил, что никаких ограничений, сделаю RTS с одним из лучших unit movement в жанре.
Во-вторых, это был закос под "олдскул". Но я понял, что ни под что косить не хочу. А под олдскульностью в моей игре я подразумеваю те самые фан, динамику и ощущения, что дарили старые добрые RTS-ки.
_______________
Друзья, какой контент вам интересно видеть в DevLog'ах?
Во-первых, это гораздо проще. Но я решил, что никаких ограничений, сделаю RTS с одним из лучших unit movement в жанре.
Во-вторых, это был закос под "олдскул". Но я понял, что ни под что косить не хочу. А под олдскульностью в моей игре я подразумеваю те самые фан, динамику и ощущения, что дарили старые добрые RTS-ки.
_______________
Друзья, какой контент вам интересно видеть в DevLog'ах?
🔥14👍6❤4
1. Не нужно выполнять всю логику каждый кадр
Большинству систем хватает 5-30 вызовов в секунду. В Final Divide почти всё, кроме движения, имеет tick (это особенно важно для RTS).
2. Пулинг объектов
Создание большого количества объектов и сборка мусора после их удаления в каждом кадре — очень дорогие операции. В Final Divide я использую централизированную коллекцию пулов для пуль, взрывов, эффектов и всего, что постоянно спавнится и деспавнится. Избавиться от лишних аллокаций можно в местах, где часто создаются массивы и иные структуры данных: лучше один раз закэшировать структуру и реюзать её.
3. Ленивые вычисления
Не нужно считать то, что может не понадобиться. Например, я часто вижу, как при pathfinding кто-то сразу сглаживает и оптимизирует весь путь до конечной точки. Но юнит может прервать движение на середине. Путь можно сглаживать по ходу движения.
4. Не использовать физику без необходимости
Простота использования физики в современных движках привела к тому, что её применяют там, где она совсем не нужна. Во многих RTS, как и в Final Divide, юниты вообще не используют физику. Чтобы "поставить" танк на землю, достаточно найти высоту террейна в 4 точках и снепнуть к ним объект. Добавляем сюда первый совет; а если юнит находится не в кадре, то тик можно ещё и увеличить. Получаем вместо постоянной физической симуляции очень легковесные вычисления.
5. Пространственная кластеризация
Действия большинства игр происходят в пространстве, которое можно разбить на сегменты. Так, обычный A* можно превратить в HPA*. Если юнит ищет ближайшую вражескую цель полным перебором — это экспоненциальная сложность; в Final Divide для каждого entity постоянно определяется, какие кластеры он занимает, а поиск целей происходит по кластерам в радиусе обзора. При перестроении NavMesh я обновляю только затронутые изменениями кластеры. Ну а если вы вдруг решили создать свой собственный физический движок, без этого не обойтись.
👍6🔥6❤1
Media is too big
VIEW IN TELEGRAM
Всегда нравилась вертикальная многоуровневость в старых 2D RTS, особенно в Red Alert 2. Но с приходом 3D это куда-то исчезло.
А какой у вас топ-3 RTS и почему?
Мой топ: Age of Empires 3, Command & Conquer 3, Red Alert 2. Все по одним и тем же причинам: шикарная графика, топовый саундтрек, фановый геймплей, атмосфера и сюжет — в этих играх просто приятно находиться.
А какой у вас топ-3 RTS и почему?
Мой топ: Age of Empires 3, Command & Conquer 3, Red Alert 2. Все по одним и тем же причинам: шикарная графика, топовый саундтрек, фановый геймплей, атмосфера и сюжет — в этих играх просто приятно находиться.
🔥9👍2🥰1
Media is too big
VIEW IN TELEGRAM
Командиры, я никуда не пропал! Последние два месяца занимался рефакторингом абсолютно всего кода: сделал массу улучшений, оптимизаций (NavMesh, Terrain, рейкасты, навигацию, все геометрические вычисления), некоторые вещи ускорил в сотни раз, сделал код безопасным и красивым.
Небольшой стресс-тест (запущено на моём средненьком ноуте с i5 процом). Как и планировал с самого начала, в Final Divide будут реальные RTS баттлы 💪
Ещё пара месяцев, и я смогу плотно начать заниматься контентом. А что касается контента: вместе с рефакторингом я активно занимался гейм-дизайн документом, напридумывал столько всего, что не терпится реализовать.
Раньше я утверждал, что Final Divide будет исключительно синглплеерным. Но сейчас я вижу, что моя концепция идеально ложится и на мультиплеер. На старте его 100% не будет, но после выхода игры я буду рассматривать возможность его добавить.
Небольшой стресс-тест (запущено на моём средненьком ноуте с i5 процом). Как и планировал с самого начала, в Final Divide будут реальные RTS баттлы 💪
Ещё пара месяцев, и я смогу плотно начать заниматься контентом. А что касается контента: вместе с рефакторингом я активно занимался гейм-дизайн документом, напридумывал столько всего, что не терпится реализовать.
Раньше я утверждал, что Final Divide будет исключительно синглплеерным. Но сейчас я вижу, что моя концепция идеально ложится и на мультиплеер. На старте его 100% не будет, но после выхода игры я буду рассматривать возможность его добавить.
🔥19👍5🥰3⚡1
Я уже упоминал, что в Final Divide будет четыре фракции — каждая со своими уникальными юнитами и механиками. У каждой фракции также будет свой стиль, характер и идеология.
Человечество почти себя уничтожило. Прежний мировой порядок практически перестал существовать и на осколках старого мира возникли новые силы:
Atlas — современная армия, технологии, разведка и мобильность. Союз государств, привыкших определять мировой порядок и не собирающихся отказываться от этой роли теперь.
Rodina — мощь и тяжесть. Военная машина, готовая продавить всё на своём пути. Хотят построить новый мир на идеях единства и равенства.
Sigma — дроны, ИИ и кибернетика. Глядя на то, к чему человечество привело старый мир, они решили, что пора строить новый, в котором меняться придётся уже самому человеку.
Nomari — импровизация, нестандартные решения, дешёвая, но доступная техника. Те, кто слишком долго жил в чужой тени и был источником ресурсов для других. Но это научило их обходиться малым. Теперь старого порядка больше нет, и у них появился шанс наконец взять своё и самим определять своё место в этом мире.
Человечество почти себя уничтожило. Прежний мировой порядок практически перестал существовать и на осколках старого мира возникли новые силы:
Atlas — современная армия, технологии, разведка и мобильность. Союз государств, привыкших определять мировой порядок и не собирающихся отказываться от этой роли теперь.
Rodina — мощь и тяжесть. Военная машина, готовая продавить всё на своём пути. Хотят построить новый мир на идеях единства и равенства.
Sigma — дроны, ИИ и кибернетика. Глядя на то, к чему человечество привело старый мир, они решили, что пора строить новый, в котором меняться придётся уже самому человеку.
Nomari — импровизация, нестандартные решения, дешёвая, но доступная техника. Те, кто слишком долго жил в чужой тени и был источником ресурсов для других. Но это научило их обходиться малым. Теперь старого порядка больше нет, и у них появился шанс наконец взять своё и самим определять своё место в этом мире.
🔥6👍3🥰1
Media is too big
VIEW IN TELEGRAM
Больше года работал над архитектурой и основными системами, наконец могу сосредоточиться на контенте и геймплейных механиках.
Уверен, здесь немало разработчиков и творческих людей. Показывайте, над чем сейчас работаете.
Уверен, здесь немало разработчиков и творческих людей. Показывайте, над чем сейчас работаете.
❤13🏆3