Gamedev suffering
9.39K subscribers
978 photos
89 videos
13 files
2.39K links
Авторский блог Андрея Апанасика о разработке игр и индустрии.

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

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

Реклама: https://t.me/gamedev_suffering/2202
Download Telegram
Планирую оживить в ближайшее время рубрику «Посиделки с инди» с интервью с нашими разработчиками игр.

Пока для теста d-fens помогла с текстовой расшифровкой одного старого выпуска с Алексеем Flazm Давыдовым.

Если всё ок пройдёт, то будем на регулярной основе работать.

#ПосиделкиСИнди
🔥18👍32👎1
На годовщину Ultima Online разработчики рассказали про занятный случай c дюпом предметов. Разобрал кратко в Твиттере. Самая вишенка в истории в том, что вместо какого-то фикса нормального, они помечали такие предметы, а потом после выкатки обновления разом их все удалили 😈

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

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

Каждый игровой сервер фактически был разделён на районы, и был код, который обрабатывал передачу состояния игры, условий объектов и событий с одной стороны границы на другой. Но пересечение этих границ в качестве игрока иногда заметно тормозило.

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

У игры не было привычной БД. Использовали дампы памяти 🤔
1. Каждый шард выполнял отключение/резервное копирование в определённое время.
2. Полное игровое состояние каждого ареасерверы сбрасывалось из памяти в большой двоичный файл.
3. Как только серверы завершали резервное копирование, они отключились, перезапускались и переходили в режим ожидания, в то время как «игровой сервер» делал то же самое.
4. Игровой сервер выключался, перезапускался, а затем инструктировал каждый ареасервер загрузить свою последнюю заведомо исправную резервную копию.
5. Каждый ареасервер загружал бинарную резервную копию и воссоздавал ранее сохранённое состояние игры; он также выполнял любые триггеры/хуки.
6. Куча других вещей, включая появление новых мобов или ежедневных редких предметов.
7. Ареасерверы инорфмировали, что всё в порядке, и сообщали игровому серверу, а он повторно объявлял о себе авторизационным серверам, что он доступен для игры.

П.2 был самой большой проблемой. Найти дубли в дампе нереально.

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

В общем, на ценных предметах висела уникальная метка. Когда по предмету проводилась логика какая-то по копированию, то на копии оставалась метка и можно было свериться с глобальным реестром. Если уже был предмет с такой меткой, то копия потом помечалась тегом «I AM DUPED».

За несколько недель скопилось много таких предметов и стали решать, что же делать.

Но когда начали общаться с директором и QA/КМ'ами, то те сразу дали понять, что дропать все дубли не самая лучшая идея, т. к. вызовет гнев очень большого числа игроков.

В итоге:
1. Нашли багоюзеров и их хранилища
2. Нашли всех причастных в «кольце дублирования»
3. Написал скрипт
4. Служба поддержки массово забанила мошенников
5. Остановили соединение gameserv/loginserv с теми же серверами, к каждому жилищу, прикрепили скрипт

Сам скрипт:
1. Удалить дом и его содержимое. Рекурсивно.
2. Заполнить область чёрным щебнем.
3. Создать кучу вечных огненных полей среди щебня.
4. В центре поставить соломенный манекен с надписью «An Effigy of a Traitor».

Мир игры вспыхнул, как и жопы игроков 😈

Поддержку завалили письмами.

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

#UltimaOnline
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥6
Длинные посты (наподобие последнего про UO) лучше прям так публиковать или ссылкой на пост на другой платформе (DTF, Телеграф и т. п)? Как вам удобней читать?
Anonymous Poll
62%
Пост в Телеге
38%
На другой платформе, а в Телеге ссылку указывать
This media is not supported in your browser
VIEW IN TELEGRAM
UE 5.1 будет иметь на борту фреймворк ML Deformer для создания кастомных моделей и новую модель Neural Morph Model. Инструмент позволяет выполнять высококачественные деформации в режиме реального времени.

Персонаж c видео использует ~1 МБ ML-памяти и занимает менее 100 микросекунд на CPU и 40 микросекунд на GPU.

https://twitter.com/JohnEMotionFX/status/1578520855508058112

#UnrealEngine #UE5 #ML
🔥15❤‍🔥2👍2
Йоханнес Бойвен поделился знаниями о скульптинге человеческих тел в ZBrush и Maya.

https://www.artstation.com/artwork/Je1qY0
👍91
Недельный геймдев: #90 — 9 октября, 2022

📜 Обновления/релизы/новости
- Вышла превью версия Unreal Engine 5.1
- UE 5.1 будет иметь на борту фреймворк ML Deformer для создания кастомных моделей и новую модель Neural Morph Model
- Российский разработчик Сультим Цырендашиев выпустил мод с трассировкой лучей для первой Quake
- Godot 2022 showreels
- Вышел GDevelop 5.1
- Крупное исследование русскоязычного Кипра от App2Top

🆓 Халява/раздачи/бандлы/курсы
- Бесплатные ассеты для UE за октябрь 2022
- Бандл книг для геймдизайнеров

📝 Интересные статьи/видео
- Горящие дома и жопы игроков в Ultima Online: как чинили баг с дюпом предметов
- Noclip Podcast 92: будущее Disco Elysium
- Поработал над игрой и не сошёл с ума, читая рецензии
- «Нефелия: Сквозь облака»: полезные ассеты для неба и погоды
- Пикселизирующая пушка как в Ratchet & Clank в Unity
- Введение в инструменты для пиксельарт-художников
- Чеклист, если хотите сделать отличный игровой трейлер
- Создание сцены с уютной таверной в Unreal Engine
- Неформальный Эксель: OpenGL, игры на GDI+ и инфографика теперь и в VBA
- Разработчики саги Remothered обсуждают создание Batora: Lost Haven
- Сочетание милого с оккультным в Cult of the Lamb
- Создание французской косы с помощью Maya XGen
- Практические советы по росту игр на различных рынках
- Стоит ли участвовать в Gamescom
- Скидка на ваши игры: 7 чётких правил
- Сказ о том, как разработчик свой воксельный 3д движок создавал
- Кватернионы: геометрическая интерпретация
- Создание стилизованной кожаной сумки в Maya, ZBrush и Substance 3D Painter
- Босс Ripple Effect: «мы должны принять тот факт, что некоторые люди будут работать полностью удалённо»
- Внедрение отслеживания пути в Justice: интервью с Динггеном Жаном из NetEase
- Дизайн уровней. Обучение игровым механикам
- Список советов и рекомендаций по 3D-скульптингу
- Green Hawk Platoon: переход с UE4 на UE5
- Вот почему вашей игре нужен LiveOps
- Алан Патмор из Humble Bundle рассказывает об издательском деле, разработке игр и инди-играх
- Декали с трипланарной проекцией, учитывающей положение, масштаб и вращение
- Ретаргетинг анимации
- Утраченное искусство портативных демейков

📙 Разное
- Эксперименты с технологией моделирования волос в Unity
- Игра JellyCar Worlds с физикой мягких тел и с использованием DOTS/ECS на Unity
- Объёмные облака в Unity

#дайджест #gamedevnews
🔥4👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Немного Ранмы. Скетчи в Крите, риг и анимация в Блендере.

https://twitter.com/giwono0708/status/1578593014871920641

#anime #blender
❤‍🔥166👍1
Люблю такие обсуждения на Реддите, где люди делятся своими мыслями/идеями по какой-то теме.

В этот раз вопрос о том, не теряют ли люди удовольствия от прохождения игр и не появляются ли сложности при погружении из-за того, что мы сами создаём игры и знаем, как вся эта магия/хакки «дыма и зеркал» работает.

https://www.reddit.com/r/gamedev/comments/xxef9s/do_gamedevs_find_it_hard_to_immerse_themselves/

#reddit
❤‍🔥91👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Nanite в Unreal Engine 5.1 намного лучше справляется с мелкими объектами. Проблема с той же листвой была с момента выхода альфы UE5.

Видно, что команда UE усердно работает в этом направлении, что очень радует.

https://twitter.com/tasaki_yota/status/1578686510919872512

#UE5 #UnrealEngine #Nanite
👍11🔥42
На фоне выхода ремейка The Last of Us Part I сотрудники Naughty Dog поделились материалами по игре.
1. https://artstation.com/artwork/g8l0x8
2. https://artstation.com/artwork/zDL4Om
3. https://artstation.com/artwork/qQGDvy
4. https://artstation.com/artwork/o2wvR4
5. https://artstation.com/artwork/eJwnlY

#TheLastOfUs
❤‍🔥7🔥5
Ребята из 80lv про нас статейку написали, про обновление недавнее, которое мы пилили почти 2 месяца последних. Переделали дизайн (нанимали для этого круто спеца) и базовые вещи заложили для A/B-тестов и собственной аналитики.

Напомню, что сейчас пилю сервис для разработчиков игр для лайвопса, A/B-тестов и анализу этого всего: https://balancy.co
Помимо этого у сервиса в принципе удобная админка для ведения конфигов/баланса. А для Unity есть плагин для автогенерации кода классов и всего кода по закачиванию json'ов с CDN и мапингу на классы.

Раньше для документов шаблонов была одинаковые странички с одинаковой табличкой. Сейчас в зависимости от типа шаблона/структуры сделали отдельные страницы с уникальным дизайном и своими метриками.

И да, мы всё ещё ищем людей на бекенд и фронтенд.
- На фронте Реакт и ts. Нужно как старые окна дорабатывать, так и кучу нового функционала пилить. Опыт с Реактом 3+
- На бэк нужен нодер (3 года+) с опытом хайлода, который умеет в SQL (конкретно сейчас у нас PostgreSQL). Если трогал TimeScale, то будем отличным плюсом.
З/п + опцион, удалённо, нужно физически находиться не в России/Беларуси (а то слишком большие риски 😔).

#Balancy
❤‍🔥114👍4😍2🤯1
Команда Unreal Engine выпустила руководство по Nanite в UE5 для учителей и студентов.

Компактно на 21 страницу расписано про технологию.

https://www.unrealengine.com/en-US/blog/download-the-new-nanite-teacher-s-guide

#unrealengine #nanite #UE5
👍1332🔥2🏆1
20 лет назад #Blender перешёл в опенсорс.
🎉33🍾6
К концу года выйдет DirectStorage 1.1. Появится распаковка на GPU.

В их примере: распаковка текстур заняла 0.8 сек на GPU с помощью GDeflate против 2.36 сек на CPU с помощью Zlib 🤯

https://devblogs.microsoft.com/directx/directstorage-1-1-coming-soon/

Для того, чтобы получить выигрыш от технологии, игра должна быть установлена на NVMe. Работает и в Windows 10, и в Windows 11, но в Windows 11 лучше 🤔

#DirectStorage
🔥7🤯2