GameDevCut: Итоги оптимизации и полугодовой работы
Vložit
- čas přidán 6. 09. 2024
- Подвожу итоги полугодовой работы (оптимизации) над проектом Kindom of Isrion: Efdora.
Прошлое видео по оптимизации от 1 апреля 2024 года: • GameDevCut: Оптимизаци...
Плагин асинхронной и многопоточной загрузки: www.unrealengi...
Видео о применении многопоточного плагина: boosty.to/mmit...
Буду рад поддержке. Каждый рубль оплатит мое время на разработку игры.
Поддержать автора:
DonationAlerts: www.donational...
Таймкоды:
01:00 - по итогу об оптимизации
28:38 - плагин асинхронной загрузки
41:27 - о новых механиках и прогрессе в развитии ИИ
*******************************************
My game Kingdom of Isrion:
Telegram - t.me/Kindom_of...
Reddit: / mmitekkdev
Boosty - boosty.to/mmitekk
Discord - / discord
House of the Dev: thehouseofthed...
*************************************************************
Author: Dmitry Nazarov.
I work on the Internet. Webmaster, Internet marketer, IT specialist of a wide profile.
◆ GameDev: t.me/Kindom_of...
◆ WebDev: getdrupal8.ru
◆ Telegram: @mitishnazarov
◆ E-mail: webmaster@getdrupal8.ru
***************************************************
Contacts:
#VK - id72743020
#Instagram - / mmitekk
#Facebook - / mitish.n
***************************************************
******************
PC Configuration :
Motherboard: MSI X470 Gaming Plus Max.
Processor: Ryzen 7 3700X.
Graphic-card: Intel Arc A770 16 Gb
RAM: 64 Gb, 3600 (OS) MHz, Patriot Viper Steel PC4-28800.
Mouse: A4Bloody V8.
Keyboard: Defender REBORN.
Microphone: F100TL.
Monitor: AOC 23" I2369VM.
Disk: SSD NVMe M.2. for Windows 10 and Unreal project.
Disk: HDD 2 Tb Toshiba for Games.
Есть люди, которые заходят на видео сразу после загрузки чтобы дизлайк поставить. Таковых прошу отписаться и добавить канал в игнор.
А если видео тебе по душе - поставь лайк. Это поможет продвижению канала и мотивирует меня делать больше контента.
P.S. Дорогие зрители. В особенности С++ разработчики. Я крайне ценю комментарии направляющие меня к правильным мыслям о том, что нужно использовать чисты плюсовый код вместо блюпринтов.
И я бы хотел посмотреть, чтобы кто-то взял 60 полноценных НПС, больше 40 из которых Метахьюманы, разместил их на локе, добавил каждому по 4-5 полноценных Behavior Tree по 20-30 задач в каждом; с 7 actor component' ами в каждом character блюпринте, которые отвечают за обработку задач...
Настроил загрузку - выгрузку в локации и показал мне сколько ФПС на medium качестве с включенными Lumen, Nanite и Virtual Shadow Map будет. Вот прям хочется.
Много людей пишут о том, что надо брать С++. Но, кто-нибудь сделайте это. Покажите, как надо. Я бы рассмотрел ваш кейс.
Красава Митяй, пока остальные влажно фантазируют, мы делаем 🤙
От души!!
Понимаю вас, у самого немного другое направление, но видна колоссальная работа
Я бы попробовал сначала оптимизировать симуляцию жителей из статик мешей. Тут основная проблема в одновременном расчете действий npc, их выбора действий, передвижения, навигаци...
Далее при при переводе на скелтал меш использовать Thread Safe Animation (асинхронные анимации)
Thread Safe Animation - вот это интересно. Я как-то видел видео, где автор делал что-то в анимблюпринте асинхронно, но там, как в последствии оказалось метод с root motion не работает.
Но про Thread Safe Animation изучу! Благодарю!!
Всё понятно. Непонятно про что игра. Про менджмент поселения?
Про исследование мира населенного персонажами с высокоразвитым искусственным интеллектом. Игра будет играть в себя параллельно с игроком.
@@DmitryNazarovMmitekk Не думал кстати сделать систему от обратного, типа что бы не персонажи были центром принятия решений а абстрактная сущность, типа поселение. Как буд-то бы тогда систему можно сделать более замкнутой. Кому-то не хватает еды, система направляет чувака готовить и т.д. Типа что бы их БТшкой управляла внешняя сущность. Тогда возможно можно сэкономить на АИ просчетах. Если эта внешняя сущность будет содержать в себе необходимые данные.Типа не каждый персонаж будет знать о всех сущностях и ими апелировать а всего один обьект. Звучит как профит
@@andreyshestakov9609 ребята уже предлагали подобное. Но я слабо представляю, как это будет работать и как это запрограммировать. По сути персонажи будут марионетками которым я выдаю руководства к действию. Они не будут личностями со зрением и слухом. Не будет и случайных событий которые они вызывают из-за своего бесконтрольного поведения.
У меня сейчас огромный пласт в бихейвор зашит и я не представляю, как его можно в actor реализовать через события. Логика посыплется, т.к. придется делать кучу диспатчеров и каким-то образом придумывать свою систему сенсорики для AI.
Так и не смог заставить работать плагин Async Blueprints Extension на версии движка 5.3.2.
Постоянно вылеты и ошибки.
Там нужно настраивать правильно. Подключать Stop Tasks обязательно иначе вылетает и зависает клиент после попытки запустить в редакторе.
Плюс некоторые таски будут вылетать если не правильно их сделать. Например, положить в них ноду которая работает только в Основном потоке, например Get Actor of class или Spawn actor.
Еще могу порекомендовать чекнуть секцию Вопросы и ответы у плагина, т.к. плагин без бутылок реально не настроишь - не очевидно как-то. www.unrealengine.com/marketplace/en-US/product/async-blueprints-extension/questions?sessionInvalidated=true
Могу записать видео, как я пользуюсь им, если нужно.
@@DmitryNazarovMmitekk Нужно
@@DmitryNazarovMmitekk само собой Stop Tasks добавлен в Game Mode и даже персонажу.
Хотел сделать передвижение NPC при помощи этого плагина. Но увы.
А не лучше написать важный участок кода на плюсах? На них же намного быстрее работает код
Он работает ни быстрее ни медленнее. Здесь больше важен сам подход. Можно и на плюсах мракобесие создать, а можно и на бп, но на бп это происходит просто чаще из-за недотуториалов, которые в 95% случаев скорее искажают информацию и вредят профессионально человеку, чем обучают. Ну и нужно понимать какие ноды в какой момент лучше использовать, чтобы всё работало быстро и шустро. БП это и есть по сути С++ и никуда от этого не деться. Тот же код на плюсах когда пишешь - вызываешь его уже нодами. Есть задачи, которые блюпринты просто не умеют выполнять изначально без написания кастомных - к примеру когда нужен тот же обмен с базой данных
Популярный вопрос! Я не владею программированием на С++ и принципиально не стремлюсь изучать программирование ради создания игры.
Хотя бы потому что у меня мышление не подходит для данных задач. Я больше дизайнер и тех-артист, чем прогер. То же самое и в другой моей сфере жизни - в создании сайтов. Как ни пробовал где-то что-то изучать в php и js, так и не понял и даже не проникся этим. Иными словам - это не мое.
Но я хочу делать игры. Хочу создать игру, которую задумал. И поэтому я готов покупать готовые С++ решения от знающих ребят. Чтобы это работало, как должно, на уровне профессионального понимания программирования.
Остальное, что возможно, буду делать на блюпринтах. Если где-то упрусь в угол и пойму что без С++ не обойтись - буду искать умные головы программистов, какие-то плагины и т.п. чтобы так или иначе решить необходимую задачу.
Здорово, что один из подписчиков в телеграм в тематических сообщениях оставил комментарий о том, что следует задуматься о работе с С++. Он указал мне на возможный плюс многопоточности, в частности для AI. И он заметил, что С++ в этом направлении был бы, как нельзя кстати.
И я задумался и начал изучать этот вопрос. Благо решение не заставило себя ждать - нашелся интересный плагин, который позволяет разделять потоки.
И это круто!
@@DmitryNazarovMmitekk bc softworks вот этот чел в своих туториалах говорит о том что касты убивают полиморфизм. Посмотри его может чем нибудь помможет
@@DmitryNazarovMmitekk кстати можно сделать "Native blueprint", это позволяет добиться той же скорости что и на плюсах, при этом все остается на бп(хотя фича популярная, наверное знаете)
Секрет оптимизации в том, что надо писать КОД на плюсах. А не юзать БП
и вы зашли на видео про разработку на блюпринтах, чтобы написать об этом. Поздравляю, цель достигнута.
@@DmitryNazarovMmitekk но ведь ты и в самом деле тратишь своё время впустую. Накидай говна на блюпринтах, они для этого и созданы, если получившееся чудовище будет играться весело - ищи инвестиции и с полученных денег нанимай С++ прогера.
Если играться весело не будет, то и не страшно, обычно оно так и бывает, зато ты не просрал кучу времени на полировку говна.
То что ты делаешь в видео это бессмысленное и безумное шаманство. Моё уважение твоему усердию, таких красивых блюпринтов я не видел, наверное, никогда, но ты не понимаешь как работают штуки в движке, и без понимания пытаешься что-то оптимизировать, получая на полупустой сцене 30фпс.
Ты буквально пытаешься построить самолёт, имея на руках фотографию самолёта и камни.
Да, вы правы. Скорее всего я мало что понимаю в Unreal. Но игру сделать хочется. И я буду стараться. Приобретая плагины и оптимизируя код, как могу.
Пока с 50 ИИ персонажами все более менее работать не будет. Если будет 40 ФПС с 50 персонажами - это будет круто, я считаю. Учитывая что у меня с этими же НИПами на основной карте столько же ФПС. Хотя там и леса, и дома.
Вообще тут видеокарта странно себя видет. Она что с люменом, что без него, что с рейтресингом, что без него, в редакторе один и тот же ФПС выдает. Более того, у меня на прежней видеокарте 1660 ti было почти столько же. Я удивился, когда поставил Arc A770 вместо нее и не заметил прироста ФПС на основной карте. Поэтому... тут большой вопрос... Видимо Интел-таки не смогли...
Я бы хотел посмотреть, чтобы кто-то взял 58 полноценных НПС, больше 40 из которых Метахьюманы, разместил их на локе, добавил каждому по 4-5 полноценных деревьев поведения по 20-30 задач в каждом, с 7 actor component' ами в каждом НПС, которые отвечают за обработку задач... Настроил загрузку - выгрузку и показал мне сколько ФПС на medium качестве с включенными Lumen, Nanite и Virtual Shadow Map будет. Вот прям хочется.
Много людей пишут о том, что надо брать С++. Но, кто-нибудь сделайте это. Покажите, как надо. Я бы рассмотрел ваш кейс.
@@DmitryNazarovMmitekk если от изменения видеокарты или снижения графики не меняется фпс, значит упор в процессор. Надо открывать профайлер и смотреть что так много ест. Код в целом именно так и следует оптимизировать - открываешь профайлер и смотришь что жрёт дохрена и даёт резкие скачки времени кадра.
Без профайлера этим обычно не занимаются, потому что чтобы плюсовый код начал тормозить ты должен конкретно так обосраться, что, впрочем, не так и сложно, если не понимаешь что делаешь. Однако понимание конкретно на плюсах приходит значительно быстрее.
58 активных персонажей с полноценными анимациями это перебор, надо сокращать до одного - двух десятков. Если посмотришь на современные игры, ты редко встретишь ситуацию, где у тебя больше двух десятков АКТИВНЫХ и ПОЛНОЦЕННЫХ персонажей на экране одновременно.
Нужно применять трюки, находить персонажей, которых игрок не видит, и выключать им всё кроме минимально необходимого, и всё такое.
Если сделать один в один то же самое на плюсах, не факт, что это прям радикально улучшит ситуацию, однако на плюсах у тебя околобезграничное количество способов срезать углы и хакать производительность.
Голая производительность это не главная причина почему блюпринты сосут. Главная это то что это просто всратый и ограниченный способ делать вещи.
Ты очень усердный пацан, вложи это усердие в изучение С++, будет больно, но результат будет значительно лучше.