Русский
Русский
English
Статистика
Реклама

Unrealengine

Недельный геймдев 20 30 мая, 2021

02.06.2021 02:11:21 | Автор: admin

На этой неделе: вышла альфа-версия Unreal Engine 5, а AMD обновили драйвер для работы с UE5, Chaos релизнули V-Ray glTF Viewer, Unity выпустили ArtEngine 2021.5, вышла первая публичная бетка OctaneRender 2021.1, Epic Games новый конкурс организовали: Twinmotion Community Challenge #6.

Из интересностей: Episode 1 : Salad Mug DYNAMO DREAM (видео делалось 3 года), как создать объёмные облака в Unreal Engine 4.26, чуть подробнее про Sua, кратко про VFX в Shadow and Bone, полезная статья о том, как создавать доступные игры для людей с ограниченными возможностями и несколько интересных туториалов по работе с шейдерами в Unity.

Обновления/релизы/новости

Вышел долгожданный Unreal Engine 5

Epic Games провела 26 мая презентацию Unreal Engine 5, на которой показала новые возможности движка, включая системы по работе с ассетами, светом, анимациями и звуком. Старые системы и инструменты тоже получили множество улучшений.

Уже можно скачать альфу UE5 и семпл проект Valley of the Ancient.

Краткий обзор по ходу презентации можно почитать тут.

Chaos выпустили V-Ray glTF Viewer

Бесплатную коллекцию скриптов на Python для рендеринга моделей в glTF формате с использованием своего модуля рендеринга V-Ray.

Легковесный формат файлов для 3D-ресурсов glTF становится всё более популярным в реалтайм приложениях и теперь поддерживается в DCC софте, включая Blender и Nvidias Omniverse.

Инструмент запускается из командной строки, работает с .gltf и .glb, поддерживает ключевые характеристики PBR материалов спецификации glTF 2.0.

Плагин TearKnit FX для Maya для анимации разрыва ткани

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

Стоимость однопользовательской лицензии 30 долларов. Лицензия на несколько юзеров от 45 до 490 долларов за неограниченное число.

Unity выпустили ArtEngine 2021.5

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

Unity также выпустили набор примеров использования тулзы, чтобы помочь новым пользователям изучить возможности. Пользователи Studio-редакции получили новый интерфейс для командной строки, позволяющий запускать задачи ArtEngine в фоновом режиме, не открывая само приложение.

AMD в тесном сотрудничестве с Epic Games выпустила драйвер Radeon Software Adrenalin, настроенный для поддержки разработки Unreal Engine 5

Если хотите опробовать UE5, обязательно загрузите его для обеспечения оптимальной производительности, если в вашей системе используется видеокарта AMD Radeon.

Chaos выпустили Vantage 1.3

Новую версию инструмента для работы с большими сценами V-Ray в реальном времени.

Добавлена поддержка параметров из импортированного .vrscene для VRay2SidedMtl, двустороннего материала V-Ray, а также анимированной камеры. Кроме того, Vantage теперь включает в себя шумоподавитель OptiX, который также интегрирован в сам V-Ray.

Вышла первая публичная бетка OctaneRender 2021.1

В этом выпуске улучшена производительность на текущих графических процессоров Nvidia Ampere, добавлен новый булевый клипинг материал, переработана работа с AOV.

К тому же это первая версия OctaneRender доступная только под Windows и Linux, поддержка macOS теперь полностью перенесена в новую версию Octane X.

Полный список изменений/улучшений лучше на сайте посмотреть.

Вышел ZBrush 2021.6.6

Этот выпуск обеспечивает равенство функций с ZBrushCore и ZBrushCoreMini. Обновление бесплатно для текущих пользователей.

Халява/раздачи/бандлы/курсы/конкурсы

Epic Games новый конкурс организовали: Twinmotion Community Challenge #6

Тема: Смешать старый и новый мир. Хотят увидеть, как участники сочетают современный футуристический архитектурный дизайн с контекстом старого мира. Призом будет $500.

Для участия нужно отправить изображение. Дедлайн 23 июня.

Интересные статьи/видео

Как создать объёмные облака в Unreal Engine 4.26

Уильям Фаучер поделился подробным видео-туториалом. Дефолтные весьма ограничены, но с помощью блюпринтов можно их неплохо твикнуть.

Чуть подробнее про Sua первого цифрового человечка на Unity

Как оказалось, это теперь лицо Unity Korea. Можно подробнее в блоге почитать.

Episode 1 : Salad Mug DYNAMO DREAM

Можно сказать, что видео создавалось на протяжении 3-х лет. Ян Хьюберт могёт.

Немного про то, как создавались визуальные эффекты в Shadow and Bone

Создания брызг в океане в Houdini

Тянь Цю, работавший над многими сериалами DC в качестве технического директора, рассказал о процессе создания и поделился полезными советами для тех, кто планирует работать с VFX.

Полезная статья о том, как создавать доступные игры для людей с ограниченными возможностями

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

Портрет Носферату

Кестутис Ринкявичюс из Playground Games (Forza, новый Fable) рассказал, как была разработана каждая крошечная деталь портрета Носферату, и поделился своими ссылками, которые помогают с текстурированием.

Шейдер чёрной дыры в Unity 2020.3.1f1 с помощью Universal Render Pipeline (URP)

Саму статью можно почитать в блоге. Исходники можно с Гитхаба скачать.

Создание шейдера карты с 3D-контентом в Unity с помощью URP и Amplify Shader Editor

Можно было бы использовать и Shader Graph, но там сложности с Stencil Buffer и другими вещами. Автор рекомендует использовать Amplify Shader Editor вместо Shader Graph, поскольку он намного быстрее, полнее и с ним приятней работать.

Разное

Как при разработке Senuas Saga: Hellblade II используются карты потоков, чтобы облака формировались и растворялись естественным образом

Это не фото

Можно посмотреть на странице автора на Artstation. Там есть и другие работы.

Подробнее..

Процедурная генерация карты

01.04.2021 16:06:37 | Автор: admin

Процедурная генерация DEV BLOG

Dobr Den, сейчас я Вам покажу пример процедурной генерации карты, наUnreal Engine 4.

Функция расчета рандомных точек на игровом поле:

Функция расчета рандомных точекФункция расчета рандомных точек

Давайте подробнее разберем функциюFor Loop.

ЦиклЦикл

Firs Index отвечает за начальную точку отсчета цикла. For Loop цикл, который будет выполниться от First Index до Last Index каждый кадр. Last Index Грубо говоря сколько раз надо выполнить цикл.

Loop Body Логика, которая будет циклична (в нашем случае 150 раз). Index Сколько шагов выполнено из 150 раз.

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

РандомайзерРандомайзер

Random Float in Range Все просто рандомайзер на максималках. Min Минимальное число Max Максимальное число Return Value Рандомное число в диапазоне который мы задали

Нулевая точка координатНулевая точка координат

Break Transform В моем случае это исходная точка координат спавна объектов.

Объяснять что такое Rotation, Scale. Нет смысла.

Начнем с математической части нам надо добавить к нулевой точке координат рандомное число.

МатематикаМатематика

Make Vector объединяет обычные числа в тип Location.

Make VectorMake Vector

Далее по списку вывод данных из функции:

Вывод данныхВывод данных

На выходе у нас стоит:

True Цикл в нашем случае мы спавним Actor Tree 2 (Дерево).

Return Value Рандомная координата для дерева в цикле.

Completed Выход из цикла.

Теперь можно вместо одно дерева, сразу три вида объекта сгенерировать на карте.

Итог:

Готовлю информацию для статьи про Dedicated server(Удаленный сервер), Мультиплеер, Создание сессий и подключение к ним, система стрельбы и сам процесс разработки игры.

Подробнее..

Боевая система в 9 Monkeys of Shaolin. Как заново изобрести кунг-фу в видеоигре

26.01.2021 08:10:58 | Автор: admin

Всем привет. Публикую статью от именно своего коллеги Дмитрия Качкова - основателя Sobaka Studio.

Дмитрий КачковДмитрий Качков

Наша небольшая команда уже больше пяти лет занимается разработкой инди-игр в жанре beat em up, где весь игровой процесс жестко завязан на боевую систему. Наверное, многие замечали, что в самых успешных играх жанра beatem up игрока увлекает не столько сюжет или оформление окружения, а сам бой интересный, разнообразный, стремительный. Именно за приятную боевку критики хвалят обе наших игры. Redeemer: Enhanced Edition, где игровой персонаж мощный монах Василий зачастую должен раскидывать своих врагов подальше от себя кулаками (и не только). И 9 Monkeys of Shaolin, в которой персонаж сражается посохом против множества противников и в ходе игры должен улучшать свои боевые приемы с помощью системы прокачки навыков.

Ощущения насыщенности и сочности боя в обоих проектах достигается нами с помощью комбо-атак. Тому, из чего они состоят на движке Unreal Engine, и будет посвящена данная статья.

Конфигурация Комбо-атаки

Изначально компонент Комбо-атака - это проигрывание анимации удара. Но сразу после того как анимация начинает проигрываться, появляется огромное количество дополнительных условий, эвентов и триггеров, которые и придают (при должной настройке) весь необходимый сок. Этот компонент развивался последовательно, довольно долгое время, и вырос в большой компонент, работающий с огромным количеством дополнительных настроек. Сейчас, просто покрутив одно или другое свойство можно превратить обычное проигрывание анимации в сложносочиненную последовательность действий.

Прежде чем рассказать о внутренней функциональности, давайте посмотрим как настраивается каждая комбо-атака в uobject сабклассах.

 Пример настроек одной комбо-атаки Пример настроек одной комбо-атаки

Параметры, которыми можно настраивать комбо-атаку, состоят из нескольких категорий:

  1. Анимация. Сюда входит указания анимации как для героя, так и для его оружия.

  2. Дизайн. Сюда входит группа параметров по балансировке геймплея. Урон (damage), шанс нанесения критического удара (critical hit), урон от кровотечения (bleeding damage), возможность блокировки удара противником и т.д. Плюс здесь же находится список модификаторов, получаемых игроком по мере прокачки персонажа, которые изменяют параметры удара.

  3. Атака. Сюда входят параметры, которые сопровождают анимацию: радиус поражения атаки, название кости, отвечающей за трассировку ударов (hit trace), дистанция до противника - насколько игрок должен подъехать к врагу, прежде чем начинать атаку, и т.д. Их настройкой, что неудивительно, занимается в основном аниматор.

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

  5. Комбо. Здесь хранятся атаки, которые могут продолжить текущую в комбо, если игрок будет нажимать кнопки во время удара.

  6. Попадание. Здесь собраны параметры, относящиеся к тому, какой урон получит враг при успешно проведенной атаке, и как будет выглядеть нанесение удара. То есть здесь хранятся настройки эффектов, для которых используются частицы дым, огонь и т.п. (particle effect), звуки, мерцание врага, сотрясение камеры (camera shake), застывание (freeze), а также ссылка на блюпринт (blueprint), описывающий реакцию противника после попадания удара (анимацию, время недееспособности в нашем случае, время того, сколько враг лежит на земле, дистанция полета до стены и прочее).

Анимации атаки

Мы активно используем Animation Notifications (далее по тексту - нотификаторы) для настройки и балансировки геймплея, а также декоративных визуальных и звуковых изменений.

Давайте рассмотрим сперва основные геймплейные нотикаторы с помощью которых геймдизайнер вместе с аниматором могут вытачивать тонкости великолепного геймплея.

Настройка анимации атакиНастройка анимации атаки

Нотификатор Рывка (DASH)

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

Сам процесс dasha происходит внутри компонента простым кратным увеличением максимальной скорости и форсированного толкания персонажа в сторону точки назначения рывка (авто наведенный враг).

Нотификатор Определения области поражения (HIT ZONE)

Далее в каком-то моменте анимации атаки включается состояние AOEAttackState. Аббревиатура AOE расшифровывается как Area of Effect область действия. Это состояние активирует вычисление трассировки луча удара примерно в области оружия (иногда с сильно увеличенными размерами), чтобы определить, есть ли попадание по врагу.

Для регистрации попаданий по врагу используется не только AOEAttackState, но и специальный отдельный анимационный нотификатор StrikeHit. В момент активации нотификатора врагу, стоящему перед персонажем игрока в пределах определенного радиуса, принудительно наносится урон. Все настройки попадания (и трассировки в состоянии AOE и зоны попадания во время действия strikeHit) хранятся в блюпринте (blueprint) текущей комбо-атаки. Именно в нем дизайнеры могут детально настраивать попадания разных ударов.

Нотификатор Перехода в следующую атаку (SHORT TICK)

Дальше по ходу анимации удара может встретиться анимационный нотификатор ShortTick (моментальный удар). При срабатывании нотификатора ShortTick система проверяет, была ли нажата кнопка атаки после начала текущей. И если это произошло, значит атаку нужно продолжить следующей, которая настроена также в блюпринте комбо-атаки.

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

Нотификатор Отмены (CANCEL)

Замыкает настройку одной анимации атаки. Это группа нотификаторов, которые задают места, в которых можно прервать проигрывание анимации каким-то новым событием. Такими событиями могут быть нажатие игроком кнопки движения или получение им урона. Например, суперудары в игре в активной фазе не должны прерываться атаками слабых врагов. Но если активная фаза суперудара закончилась, и модель героя завершает воспроизведение красивой анимации, в этот момент нанесение урона уже должно прервать анимацию атаки и проиграть анимацию попадания.

Нотификатор Заряжаемых атак

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

Другие нотификаторы

SFX/VFX нотификаторыSFX/VFX нотификаторы

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

Одна только атака состоит из ряда нескольких звуковых эффектов, это: взмах оружия, шаги игрока, крик при взмахе, звук возврата игрока на землю из атаки и другие.

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

Реакция на удар (Hit reaction)

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

В каждой комбо-атаке есть ссылка на блюпринт описывающий как будет реагировать тот, в кого эта комбо-атака прилетит:

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

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

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

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

Легкий, средний и тяжелый врагиЛегкий, средний и тяжелый враги

Эффектность и обратная связь

Есть несколько вспомогательных эффектов с помощью которых можно вызвать у игрока более яркие впечатления. К ним относятся:

  1. Тряска камеры. Как на удары по врагам, так и на удары по игроку мы можем назначать настройки тряска камеры (конечно в основном это еле заметная тряска, но всё же). В момент особо мощных ударов по персонажу игрока эта тряска может быть сильнее, чтобы передать ощущение боли.

  1. Эффекты частиц. Мы придаем большое значение разного рода эффектам (в данном случае речь о эффектах частиц) и помимо эффектов самого удара (взмах палкой, порыв ветра, энергия Ци) мы настроили множество эффектов для попаданий по врагам. Особенно важным в нашем случае стоило назначать разные типы попадания когда враг просто получил урон, или когда он от удара умер. Зачастую мы сознательно преувеличиваем некоторые параметры, чтобы придать зрелищности. Вся наша работа нацелена на зрелищность в той или иной степени.

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

Новшества для 9 Monkeys of Shaolin

Чтобы подчеркнуть особенности дизайна 9 Monkeys of Shaolin, мы внесли несколько новшеств в систему.

  1. Анимация оружия. Аниматор делает анимации оружия синхронные с анимацией удара персонажа.

  1. Трассировка попаданий, обсчитывающая траекторию оружия. Зачастую удары в нашей игре очень быстрые и могут длиться всего пару кадров, в том же время оружие может пройти длинный путь и даже успеть пройти сквозь врага. Чтобы это предотвратить, мы рассчитываем пройденный оружием путь и делим его на отрезки, на каждом из которых проверяем пересечение оружия с врагом.

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

    Удар ногой в базовой комплектацииУдар ногой в базовой комплектации
Прокаченный удар ногойПрокаченный удар ногой

Заключение

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

Надеюсь наш опыт оказался вам полезен. И вы сможете проверить, как он реализован в наших играх, переосмыслить и применить в своих прекрасных проектах. Большое спасибо, что дочитали до конца ;)

Подробнее..

Unreal Engine 4. Новая сетевая модель PushModel

28.01.2021 00:21:03 | Автор: admin

В стандартной сетевой архитектуре Unreal Engine, сервер проверяет, изменение значения у реплицированной переменной Actor класса, и в случае отличия, значение синхронизируется между сервером и клиентом. Когда объем данных для синхронизации не больших размеров, особых проблем с производительностью нет.

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

UE уже предоставляет такие функции как: NetUpdateFrequency, NetCullDistanceSquared и т.д. Основная задача которых состоит в том, что бы устранить из общей картины репликации, как можно больше актеров не нуждающихся в постоянно синхронизации данных.

PushModel, пока что экспериментальная фича, которая может позволить разработчикам активно отмечать необходимость синхронизации свойства, для этого предоставляется несколько макросов:

#define MARK_PROPERTY_DIRTY(Object, Property) #define MARK_PROPERTY_DIRTY_STATIC_ARRAY_INDEX(Object, RepIndex, ArrayIndex) #define MARK_PROPERTY_DIRTY_STATIC_ARRAY(Object, RepIndex, ArrayIndex) #define MARK_PROPERTY_DIRTY_FROM_NAME(ClassName, PropertyName, Object) #define MARK_PROPERTY_DIRTY_FROM_NAME_STATIC_ARRAY_INDEX(ClassName, PropertyName, ArrayIndex, Object) #define MARK_PROPERTY_DIRTY_FROM_NAME_STATIC_ARRAY(ClassName, PropertyName, ArrayIndex, Object) 

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

Как настроить PushModel. В первую очередь в Build.cs, необходимо добавить, что б исключить проблемы компиляции

PublicDependencyModuleNames.AddRange(new string[]  {"NetCore"});

Во-вторых отметить необходимые перменные UPROPERTY(Replicated) или (ReplicatedUsing)

В третьих, в функции GetLifetimeReplicatedProps, нам необходимо использовать DOREPLIFETIME_WITH_PARAMS или DOREPLIFETIME_WITH_PARAMS_FAST, вместо DOREPLIFETIME или DOREPLIFETIME_CONDITION, что бы отметить переменную для репликации. Пример:

void ASomeActor::GetLifetimeReplicatedProps(TArray< class FLifetimeProperty > & OutLifetimeProps) const{  Super::GetLifetimeReplicatedProps(OutLifetimeProps);FDoRepLifetimeParams SharedParams;SharedParams.bIsPushBased = true;SharedParams.Condition = COND_OwnerOnly;DOREPLIFETIME_WITH_PARAMS_FAST(ASomeActor, SomeVar, SharedParams);}

FDoRepLifetimeParams имеет в себе 3 прекрасный параметра:

struct ENGINE_API FDoRepLifetimeParams{/** Replication Condition. The property will only be replicated to connections where this condition is met. */ELifetimeCondition Condition = COND_None;/**  * RepNotify Condition. The property will only trigger a RepNotify if this condition is met, and has been  * properly set up to handle RepNotifies.  */ELifetimeRepNotifyCondition RepNotifyCondition = REPNOTIFY_OnChanged;/** Whether or not this property uses Push Model. See PushModel.h */bool bIsPushBased = false;};

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

MARK_PROPERTY_DIRTY_FROM_NAME(ASomeActor, SomeVar, this);SomeVar = SomeValue;

Тем самым, сервер синхронизирует значение переменной.

Заключение

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

Подробные примеры использования можно посмотреть в классе APlayerState в движке.

Всем спасибо за внимание и хорошего времяпровождения.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru