Gamedev suffering
6.8K subscribers
765 photos
60 videos
13 files
2.11K links
Авторский блог Андрея Апанасика о разработке игр и индустрии.

Разрабытываю сервис для оперирования LiveOps: https://balancy.co

Мысли про другие вещи мне интересные: @apanasik_jobless

Реклама: https://t.me/gamedev_suffering/2202
Админ @Suvitruf
Download Telegram
Явно все уже в курсе, что Джон Ричителло покинул пост главы Unity. На фоне скандала вокруг смены лицензирования ожидаемый ход. Но, что удивило, вижу мнение, даже среди людей из индустрии, что это приведёт к каким-то (позитивным) изменениям. Смею вас расстроить — ничего не изменится. Ричителло просто стал козлом отпущения.

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

#unity #скандалы
В курсе, думаю, про Cities: Skylines 2 и печальную производительность. Хорошая статейка с разбором. Основной момент связан с тем, что такие игры обычно сжирают много CPU, но Cities: Skylines 2 почему-то очень грузит GPU.

А причины две:
1. Слишком много ненужной геометрии. Про это уже кучу мемасиков сделали.
2. Использование DOTS+HDRP (да, игра на Юнити, кто не знал).

Многие проблемы бы решили LOD'ы и дефолтная culling система, вот только...Colossal Order запилили собственную не очень оптимальную реализацию кулинга. А это, в свою очередь, было вызвано тем, что им пришлось пилить много чего самим на стороне рендера, т. к, внезапно, у Unity всё ещё не всё гладко с интеграцией DOTS и HDRP (кек).

Как автор статьи заключает: разрабы, скорей всего, начали пилить на экспериментальной версии DOTS, чтоб не упереться в CPU, что в итоге привело к тому, что игра упёрлась в GPU.

Реализация виртуальных текстур в игре тоже своя, кстати, т. к. Юнитишная в бете.

#unity #DOTS
За неделю много всяких новостей по Unity появилось. Поэтому одним постом опубликую.

- Юнитишная команда, занимающаяся Shader Graph, объявила о выпуске новых сэмпловых проектов, доступных для 2021 LTS, 2022 LTS и будущих релизов. В коллекции более 140 Shader Graph.
- Релиз Unity 2023.2 Tech Stream. Улучшения по части графики, Shader Graph для UGUI, поддержка Meta Quest 3, новые AR, VR, MR шаблоны, улучшения по части UI Toolkit и рантайм биндингов, новый модуль Highlights module для профайлинга. И много другого.
- Возврат к корням: следующая версия движка с новыми ИИ-инструментами будет Unity 6. Разработчики получат ранний доступ к инструментам на базе ИИ: Unity Muse и Unity Sentis. Дадут потыкать WebGPU и Unity Cloud для работы в команде.
- Бетка Unity Asset Manager. Все ассеты в одном месте, с просмотрщиком, для удобной работы в команде. Unity Industry subscription включает 120 гиг на место.

#unity
Forwarded from Заметки безработного Апанасика (Andrei Apanasik (Balancy))
Трудовые будни с Unity. В WebGL билде UnityWebRequest посылал порой закарапченный json. Почему? Фиг его знает. Я оборачивал вызов UploadHandlerRaw в using, чтобы у меня не было ошибок к редакторе об утечках памяти (нет, ручной Dispose не помогал).

Но если UploadHandlerRaw создавать ручками и ручками диспоузить, то в WebGL всё норм. Правда, в редакторе ругается на лики. В итоге пришлось в if/else заворачивать и чекать платформу в рантайме 🙈

// for WebGL have to create and clean it manually, 'cause otherwise data will be corrupted
if (Application.platform == RuntimePlatform.WebGLPlayer)
{
uh = new UploadHandlerRaw(body);
request.uploadHandler?.Dispose();
request.uploadHandler = uh;
}
else
{
// looks like Unity internally creates handler,
// so we need to clear this shit to prevent memory leaks 🤦‍♂️
// https://forum.unity.com/threads/a-native-collection-has-not-been-disposed-resulting-in-a-memory-leak.1136068/
using (var uh2 = new UploadHandlerRaw(body))
{
request.uploadHandler?.Dispose();
request.uploadHandler = uh2;
}
}


Обсуждение на форуме.

#unity
Иронично 😂

#unity #WebGPU
Please open Telegram to view this post
VIEW IN TELEGRAM
Не первый такой твит от бывших сотрудников Unity (Майк в Юнити много лет проработал как тех. дир), мол «компания разваливается на части». Кейсы, которые раньше закрывались за дни, сейчас резолвятся за месяцы.

Учитывая слухи про то, что в Q1 2024 будет новая волна увольнений, что-то как-то и правда насторожено отношусь ко всей этой теме вокруг будущего движка.

#unity
Интересная ретроспектива от Араса, который в Unity проработал 16 лет. Моментики:
- В 2005 не смог пройти в NVIDIA, Lionhead, DICE, Rockstar, Epic Games. Чуть позже с ним связалась «неизвестная компания» для работы над новым движком.
- Первые порт на другую платформу был на Nintendo Wii в 2007.
- В 2008 начали порт редактора на Винду, до этого работало только на Маках.
- Весной 2009 выпустили Unity 2.5 с Windows Editor.
- В 2011 в Flash добавили 3d. В Unity на этой теме решили добавить Флеш как платформу, что означало конвертацию C# в ActionScript.
- Позже опыт C# -> ActionScript помог в работе над IL2CPP: C# -> C++.
- В 2019 создали небольшую Quality of Life команду, которая целыми днями занималась улучшением небольших аспектов движка.

#unity
Памятка на будущее при работе с Unity/C#: самому всегда явно приводить enum'ы к нужному типу при отправке запросов, да и в целом.

Столкнулся с тем, что у меня на машине всё работает, а у другого человека в другом проекте нет.

Оказалось, что в том проекте переопределены глобально настройки JsonNET, и оно enum'ы как строки сериализует, а бекенд принимает enum'ы как числа.

Что-то типа:
settings.Converters.Add(new StringEnumConverter { CamelCaseText = true });


Лучше перебдеть и везде типизировать всё по максимуму и приводить к нужным типам.

#unity
Unity опенсорснула Unity Blackmagic package. Либа позволяет использовать карты видеозахвата от Blackmagic Design для ввода и вывода профессионального видео и аудио в редакторе Unity и в рантайме. Само репо.

А чуть ранее опенсорснула Unity Virtual Production tools.

#unity
Хорошие телодвижения у Unity в сторону доступности игр для людей с ограниченными возможностями.

Начиная с Unity 2023.2 Tech Stream и 2023.3 Tech Stream (теперь известной как Unity 6 Beta), разработчики могут преобразовывать свой GUI в данные, которые скрин ридер на мобильных устройствах сможет использовать для навигации и взаимодействия с игрой.

#unity
Forwarded from Заметки безработного Апанасика (Andrei Apanasik (Balancy))
This media is not supported in your browser
VIEW IN TELEGRAM
Дописал наконец-то заметку по итогу многих лет работы с Unity с упоминанием смежных новостей и инфоповодов.

Это не пост с целью показать какой Unity плохой движок. Если бы я столько времени проработал с тем же UE, то, думаю, моментиков было бы не меньше. Просто делюсь опытом и интересными (надеюсь) историями из личной практики. А если я сейчас буду опять делать небольшую инди-игру, то, скорей всего, всё ещё выберу Unity.

Если кому-то удобней читать на Хабре, то там тоже опубликовал пост.

#unity #ретроспектива
Unity: мы разорвали соглашение с Ветой и уволили несколько сотен сотрудников. За счёт этого доход компании вырос.

No shit, Sherlock.

#unity
Интересный диалог наблюдал между двумя бывшими сотрудниками Unity, которые хорошо известны в узких кругах.

Unity в какой-то момент своей истории всё больше и больше в опенсорс выкладывала куски движка. А потом:
1. По версии Себастьяна эта идея заглохла при выходе на IPO.
2. По версии Араса всё заглохло с началом активной работы над DOTS.

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

#unity
Помните попытки Unity поменять прайсинг и модель лицензирования? Тогда многие, в том числе и Mega Crit, написали, что все следующие игры будут делать на другом движке.

Что ж. Анонсирована Slay the Spire 2. И игра создана с помощью Godot 😎

P.S. про смену лицензии было видео.

#unity #godot #slaythespire
Оставил Unity включённым на ночь. Сожрало всю память.

Даже Фаерфокс себе такого не позволяет 😡

#unity
Так-так-так, вот и превью Unity 6 стало доступно.
- Бустанули перфоманс URP и HDRP. В зависимости от контента нагрузка на CPU «может снизиться на 30–50%».
- GPU Resident Drawer может «оптимизировать CPU frame-time до 50% для GameObjects», когда рендерятся крупные сцены.
- GPU Occlusion Culling улучшили, меньше оверхеда. Spatial-Temporal Post-Processing (STP) в этом плане ещё помочь может.
- Улучшили глобальное освещение и скайбокс за счёт Adaptive Probe Volumes.
- UI Shader Graph'а прокачали.
- Build Profiles завезли. Можно теперь сколько угодно профилей под различные платформы задавать с различными дефайнами и прочим.
- Пишут, что появилась поддержка мобильных Android и iOS браузеров. Используют Emscripten 3.1.38 toolchain с поддержкой WebAssembly 2023 и её плюшками (WASM SIMD, 4GB хипа и другое).
- Экспериментальная поддержка WebGPU.
- По ECS изменения. Поменяли то, как хранятся Entities, их ID теперь глобально уникальны.
- Memory Profiler прокачали. Теперь вместо uncategorized нормальная разбивка по категориям: render textures, compute shaders, и т. д.
- По части сетевых штук много всяких изменений.

#unity