GameDevCut: Создаю свою систему подгрузки уровня в Unreal Engine 5
Вставка
- Опубліковано 7 лют 2025
- Рассказываю чем занимался прошедший месяц.🤓
Поставил систему профессий на паузу.⏳
Самое время испытать их в деле и протестировать открытый мир.
В течение +20 дней изучал стриминг уровня, ближе познакомился с World Partition, Data Layers, Packed Level Actor.
Настрадался с collision и подобрал подходящую для себя комбинацию технологий. 💁🏻♂️
В целом продолжаю двигаться по пути тестирования AI в открытом мире.
Напомню, моя цель сделать так, чтобы мир жил без игрока, но в том же время чтобы в этом мире можно было играть 😁
На очереди оптимизация моих блюпринтов леса, полей, костра, колодца, сада и прочего. Что-то с ними ни так 🤔. Сейчас они почему-то жрут по 25 fps. Надо разобраться
Дальше займусь растительностью. Для нее тоже нужна выгрузка/загрузка путем стриминга.
****************************************************
My game Kingdom of Isrion:
VK - club212...
Telegram - t.me/Kindom_of...
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: / mngames6
◆ 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: iGAME Colorful GTX 1660 Ti, 6Gb.
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.
спасибо за видео, сейчас разбираюсь с этой темой. твоё видео годное!
Благодарю за обратную связь! 🙃
Обычно такие ютуб проекты "игры" ничем не кончаются, надеюсь у тебя все получится и ты не сдашься на пол пути
От души большое спасибо!!❤
А чем они должны кончиться? Человек по кайфу делает во-первых. Остальное мелочь.
@@CountryManOpinion да, верно! Делаю чисто для себя). Такую игру, в которой я бы оставил несколько сотен часов и с друзьями поделился), а потом они оставили не меньше и вместе бы обсуждали, как она у всех по-разному проходится)). Даст Бог со временем постепенно все сложится в играбельный билд)).
@@DmitryNazarovMmitekk на самом деле, такой подход делает меньше шансов выгореть. ну и просто если человек не рвется сделать что то в сроки, и тем более есть мотивация
Нее, настолько я бы не заморачивался. Движок из коробки всё выгружает что не в поле зрения, да и деревья сразу можно спавнить с настройками расстояния отображения.
Если эти заморочки только из-за AI, чтобы для них преграды держать всегда действующими - то-же так себе идея, представь если мир будет очень-очень большой, то всё-равно из-за логики всех AI всё просто умрёт.
Я бы делал AI не только методами движка, а на момент скрытости от глаз игрока бы просто где-то в отдельном логическом блюпринте по очереди обходил бы НПСов, и в зависимости от времени и прочих вводных данных "имитировал" их жизнь "виртуально", заранее определив точки маршрутов и спавня в них НПСа если приближается игрок.
А что касается падения FPS - явно что-то где-то спавнит что-то без конца, глянул бы список акторов на предмет появления чего-то там. Ну или стоит для оптимизации нормальной изучать сразу технологии профилирования из видосов типо "Unreal Engine: Производительность и Профилирование"
Ещё для "виртуального" просчёта AI стоит погуглись ассинхронные функции(async), купить или самому написать для блюпринтов, чтобы игровой процесс не грузили.
Спасибо на добром и полезном слове)
А что касается заморочек... Таков мой выбор. В этом вся суть проекта, суть игры. В искусственном интеллекте. Нет смысла симулировать жизненную деятельность в мире в котором по замыслу все создается для случайных событий и генерирования. Мир должен генерировать события в конкретном месте с конкретными субъектами создавая ситуации, которые не прописаны, а сгенерированы. При чем не просто за занавесом, а в конкретных контактах, на базе реальных взаимодействий в мире. В этом вся соль и я не собираюсь от нее отказываться. Если концепция не сработает, я просто начну другой проект. Но отказываться от ключевой идеи, я не стану.
Обязательно посмотрю про профайлинг и профилирование. Спасибо за рекомендацию.
@@DmitryNazarovMmitekk не об отказе же речь, а скорее в ограничениях движка и немного иных принципах реализации всей логики. Не зря же все игры с открытым миром и путешествиями, всё-же выгружают всё из локации в которой нет игрока, и при этом производят манипуляции в "виртуальном" мире чтобы жизнь в выгруженных локациях продолжалась. Со временем придётся этим заняться, вариантов нет. Но дело твоё, на опытном пути каждый набивает свои шишки. В любом случае желаю всяческих успехов, и радуюсь прогрессу видя сколько труда в работу вложено!
красавчик парень, молодец я бы с радостью и поучился и по работал с тобой
Всё таки добился того, чего хотел, круто! Добивай выгрузку растительности и поехали уже стримы с энвиркой делать. А то с этой АИ-шкой свехнуться можно, если просто смотреть. А делать так тем более. Пора отвлечься на более творческую часть)
от души! Согласен и поддерживаю полностью!
@@DmitryNazarovMmitekk привет! А как вообще убрать эту подгрузку лодов и исчезновение их при отдалении?
ну чтоб при отдалении камеры , ассеты не исчезали.
@@cgshnik 1) Использовать nanite вместо ЛОДов. 2) Использовать 3-5 уровней лодов для плавной смены полигонажа; последний прям крайне низкие полигоны сделать, чуть ли ни спрайт (как например, деревья от Эпиков).
Спасибо за видео. Подскажите пожалуйста что за музыка фоновая играет?
А это из Deus Ex. Кажется, отсюда ua-cam.com/video/7lERcfsqJSk/v-deo.html
Приветствую. Можешь подсказать что читать, чтобы понять как создать игровую локацию для бродилки? От А до Я. Есть такое вообще?
Я читал только одну книгу в этом направлении. И только ее могу рекомендовать. Михаил Кадиков - Проектирование виртуальных миров - level-design.ru/pro-ld-book-index/pro-ld-book-about/
хейтеров не слушай топой своей колеей
Привет ! Коллеге ! ))
Случайно наткнулся на видео. Увидел низкий фпс в сценах, где этого быть не должно...
И подумал. Возможно смогу тебе чем то помочь. (С работаю UE уже 5-6 лет) Не Бог-80lvl конечно, но пройдено многое.
Если есть какие либо вопросы, нужны подсказки, с удовольствием помогу !✊
UPD : RPG - это конечно ты "лихую ношу взвалил" !
спасибо! Буду писать, если будут трудности! 🙂
А куда вам можно написать?
@@sha1bu в описании к видео есть все необходимые контакты для связи. Можете на Сервер в Дискорд написать, можете в Телеграм комментарий оставить к любой публикации. В ВК редко бываю - лучше туда не писать)).
делегируй полномочия и у тебя все получится
Не знаю, как-будто бы спавнеры с выгрузкой были бы все равно более производительными. Типа при приблежении чуваков спавнит из софтрефов ассинхронно, потом обратно выгружает если они из куллинг зоны выходят. Потому что у тебя все равно тикает АИ постоянно, навигационная сетка всегда загружена и т.д. Кароче там кроме визибилити есть еще куча тикающих классов в персонажах они жрут перф
Ребята в комментах уже ни раз предлагали сделать actor в котором будет вся логика и просчет, а AI чисто на стандартной выгрузке/загрузке через Partition.
Но мне такой сценарий пока не подходит. Я думаю что там столько логики будет, что ппц.
Мой текущий уровень познания движка не предлагает даже призрачных вариантов, как это можно запрограммировать. Это ведь надо отказаться от бихейверов и где-то все проверки ваять для каждого НПС отдельно.
Плюс самая главная проблема - это отсутствие персонажа в мире.... У меня по задумке они должны перемещаться по миру, взаимодействовать друг с другом и т.п. В случае с единым эктором это будут просто балванчики которым я буду говорить что делать. Так не пойдет.
Поэтому мудрю и стремлюсь сделать по моей задумке. Важно чтобы AI перемещались по миру, взаимодействовали, получали информацию через зрение и слух... короче, нагрузка сильная. Но посмотрим...
@@DmitryNazarovMmitekk Ну ты можешь сделать иерархию абстрактных сущностей. Например У тебя есть класс поселение там просчитывается логика примитивная. Например кол-во акторов их потребление. Есть вторая сущность отвечающая за наличие посаженых овощей там и т.д. Есть третий тип абстрактной сущности например система управления группами АИ поворами, защитниками и т.д. Эти 3 абстрактные сущности тикают в них записываются данные и они управляют всеми мобами. Мобам не надо трекать в тике обьекты им даже зрение можно вырубить, им в БТ будут приходить данные из этих абстрактных сущностей, и там уже не о 30 ФПС можно говорить а о 60. Если ты еще этих мобов будешь удалять впринципе из памяти как классы когда не надо или когда не видно, и потом загружать асинхронно когда надо, то там можно и 120 ФПС выжимать, потому что лагать там не чему будет.
@@andreyshestakov9609 я понял к чему ты клонишь. Единый мозг который управляем всеми. Через лобные доли в виде отдельных блюпринтов...
Опять же, повторюсь, мне нужны AI сущности перемещающиеся по миру, которые будут случайным образом (это важно), на основе своих потребностей и прочих состояний совершать действия. Важно не контролировать их процесс, как это, например, сделано на Unreal в Manor Lords, а дать им жизнь.
Смысл в том, чтобы игра генерировала события через взаимодействие AI между собой и с игроком. Мир должен существовать отдельно от игрока и важно чтобы он не был запрограммирован. Мне нужные случайные события на основе множества факторов, порождаемых действиями искусственного интеллекта, а не прописанной логикой "если, то". Да, по сути все и сводится к логике "если, то", но я разбавляю события кучей факторов которые могут произойти, а могут и не произойти. Например, НПС будут брать и генерировать квесты исходя из своих потребностей (например, принести ему еды или сложить дрова у поленницы, которые он вчера нарубил), денег и целей.
Грубо говоря игра будет играть сама в себя и постоянно создавать для игрока уникальный опыт. Не будет повторяющихся прохождений... Это, как ММО без игроков, но с проработанным нарративом и вариативным геймплеем.
@@andreyshestakov9609 вообще систему можно запрограммировать. И я сейчас посидел, поразмыслил. В принципе это реально. Но все упирается в perception и постоянную передачу данных на Главный мозг. Через таймеры каждые (условно) 10 секунд отправлять данные мозгу для обработки.
Надо попробовать. Выделить все просчеты на многопоток и настроить обмен между ИИ и Главным мозгом.
@@DmitryNazarovMmitekk Понял ,ну это не отменяет того что сейчас система как буд-то не замкнутая. Типа как повар трекает что людям надо кушать а ему надо готовить, а если у тебя группа поворов, можно просто посчитать кол-во рассчетов которое им надо делать что бы выполнить вполне контролируемое действие. В любом случае все что ты рассказал можно написать с помощью абстрактных классов которые будут их единым мозгом,. если это грамотно написать.
Здравствуйте, откуда такие домики? Сами делали или пак какой то?
Все дома без исключения делал сам в движке с помощью Modelilng Tools. Но не с нуля, а с использованием различных бревен и досок Quixel Megascans.
То есть текстуры не мои, материалы частично мои с фильтрами, частично квикселевские.
Часть забора - готовые, часть (в полях частности) делал сам.
Крыши в виде шифера вытеснены через дисплейсмент. Соломенные крыши вручную мною из травы Megascans собраны.
Грубо говоря есть какой-то набор досок и бревен с определенным количеством текстур, которые я постоянно реюзаю внутри уровня.
P.S. На канале есть стримы, как я делал все домики и весь уровень.
@@DmitryNazarovMmitekk Щас бы юзать ассеты из мегасканс для гейм дева☠