Хм, решил перезаписать видео. Сейчас пересматривал и в такой подаче есть высокий шанс неправильно уловить суть или же не понять ее вообще. Сделаю несколько примеров, чтобы лучше все понять.
Продолжаю разработку системы атрибутов. Сначала я сделал таймер и возможность модифицировать атрибут. Затем я привязал это к состояниям и для каждого состояния для каждого атрибута своё измерение в зависимости от приоритета. Кажется сложным? Затем я добавил резисты, группы модификаторов, приоритеты применения, ещё типы модификаторов и понял, что создал бесконечно сложную систему, вовремя не остановившись. А очнулся лишь в тот момент, когда все сломалось и провести отладку было крайне сложно. Сейчас я занят полным рефактрингом системы, чтобы максимально упростить ее...
Полный успех! Большая часть функционала системы атрибутов работает, но пока только для одной сущности. Для множества ещё не пробовал. В системе огромное количество массивов (Array, Map) с частым чтением и записью и была проблема, что во время итераций или поиска данные могли модифицироваться другими функциями. И если итератор проводил проверки перед началом работы, то в какой-то момент они становились не актуальными из-за изменённых данных. Решением было добавить блокировки на запись и чтение, пока выполняется операция. Это добавило ещё больше проблем, но в итоге я разобрался и теперь вроде как все работает правильно...
Разработка системы атрибутов сильно затягивается. Стараюсь код делать максимально чистым и оптимизированным, но не везде хватает опыта и знаний. И из-за масштаба отлаживать систему сложнее. Но работа идёт, медленно, но уверенно. Почему я не использую GAS? Система интересная, но я решил сделать что-то более узконаправленное и главной причиной является то, что в GAS надо четко в C++ указывать все возможные атрибуты. А в моей системе их можно создавать динамически когда угодно. Ну и уже встроенные таймеры для создания регенерации чего-либо с пакетным обновлением и LOD системой (3 таймера с разной периодичностью для оптимизации)...
С помощью такого конфига легко делать расы, нации или фракции. Только сейчас дошло. Достаточно создать новый Data asset, в котором настроить классы для другой расы или нации со своими уникальным атрибутами.
Готовлю мощную систему создания классов. Это в каком-то роде будет аналогом GAS, но для стратегии и с уникальными механиками. В этом конфиге мы создаем классы сущностей. Не важно что это будет, юнит или здание. Конфиг один для всех. Для каждого класса мы настраиваем атрибуты (Свойства, качества). Это может быть здоровье, уровень голода, вместимость жилья, количество потребляемой пищи или переносимый вес. В обще все, что только в голову придет. Работает это на GameplayTag, поэтому всем управляют теги...
Готовлю мощную систему создания классов. Это в каком-то роде будет аналогом GAS, но для стратегии и с уникальными механиками. В этом конфиге мы создаем классы сущностей. Не важно что это будет, юнит или здание. Конфиг один для всех. Для каждого класса мы настраиваем атрибуты (Свойства, качества). Это может быть здоровье, уровень голода, вместимость жилья, количество потребляемой пищи или переносимый вес. В обще все, что только в голову придет. Работает это на GameplayTag, поэтому всем управляют теги. Это и классы и атрибуты и состояния и задачи и эффекты. Настраиваем значения, задаем тег, устанавливаем имя...
Сейчас ещё занят системой атрибутов, но уже совсем скоро начну записывать ролик по созданию базового класса для юнитов. Подход к системе строительства тоже может измениться, потому что система атрибутов затрагивает и здания. Затем начну делать ИИ. Хочу сделать принятие решений на основе весов. Если получится, то на блюпринтах. Если слишком заморочено получится, то на плюсах. Вышла превью версия 5.7. Мне и 5.6.1 очень нравилась, но 5.7 прям вообще норм. Когда выйдет, попробую перенести туда проект и накатить всю вкуснятину типа нанитов, мегасканы и метахьюман. Если получится это дело оптимизировать,...
Два страшных видео по 10 минут. Что тут такое? Это моя кастомная система атрибутов, которая базируется на GameplayTags и DataAsset. Вам больше не нужно создавать переменные для атрибутов, типа здоровье, стамина и так далее, не нужно создавать Enum для определения класса, категории или типа сущности, все это можно делать в тегах. Не нужно делать таймеры для регенерации здоровья или уменьшения выносливости. За это отвечают модификаторы атрибутов. 3 группы приоритета для обновления атрибутов, время между тиками накапливается для правильного изменения атрибутов, обновление происходит пакетами для избежания пиковых нагрузок и все на C++, что очень быстро...
Вышло новое видео, в котором я провожу работу над ошибками и в нем я расскажу о большом количестве нюансов. https://youtu.be/1QzXCQwBRBE?si=lk3HtS_15AjtuiWN https://rutube.ru/video/e1110da44da9f177e09346592748e61d/ https://vk.com/wall-166367099_949
Сбилдил проект и заметил проблему. Очень медленная скорость движения камеры и не работает буст при нажатии на шифт. При этом в редакторе все ок. Настройки в компоненте FloatingPawnMovement ни на что не влияют. Сейчас уже все перелопатил и результатов никаких.
Записал для вас крутую работу над ошибками. Огромное количество нюансов в нем будет раскрыто. Будет найдёт 1 баг движка, о котором я уже сообщил немного ранее. Так же отдельно опубликую обновление плагина и в закрытый телеграм канал опубликую файлы проекта. Следующий этап - создание базового класса для юнитов и создание искусственного интеллекта. Крайне интересная тема. Очень тяжёлая и ресурсоемкая...