Gamedev suffering
7.22K subscribers
789 photos
62 videos
13 files
2.14K links
Авторский блог Андрея Апанасика о разработке игр и индустрии.

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

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

Реклама: https://t.me/gamedev_suffering/2202
Админ @Suvitruf
Download Telegram
На разработчика и издателя King of Avalon подали коллективный иск за ложную рекламу.

В игровом магазине продаются наборы с перечёркнутой ценой, мол распродажа (4.99$ вместо 120.9$), но по факту цена всегда такая (привет продавцам курсов по разработке). Забавно, что такой же иск они получали в 2022 на их игру State of Survival .

Интересный прецедент. Следим за ситуацией 🌚

#суд
Разработчик Factorio поделился некоторыми подробностями работы внутренних систем, в частности, рассказал про ECS.

Большая часть игры не использует никакого подобия entity component system. ECS отлично подходит, когда нужно применить некоторое преобразование к набору данных независимо от каких-либо других переменных. К примеру, добавить вектор движения к текущей позиции. Но если у вас 5-10 переменных связаны со сменой позиции, то толку от ECS не будет.

Примером этого являются логистические и строительные роботы. У них есть много разных условий:
- Хватит ли энергии у робота, чтобы совершить полное движение?
- Вышла ли цель за пределы зоны логистической сети, и робот должен отменить задание, которое ему было приказано?
- Есть ли вообще у него работа, которую он должен выполнять, или он просто ждёт команды?
Общая проблема такова: все эти проверки используют данные, характерные для логистических роботов. Если бы робот использовал «компонент положения/движения», этот компонент не имел бы понятия ни об одном из этих условий. Можно попытаться включить эти условия в сам компонент, но он вряд ли будет очень читабельным и, вероятно, будет не очень по производительности.

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

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

Основные моменты, благодаря которым в Factorio всё хорошо с производительностью:
- Система быстрого сна/пробуждения, когда сущностям не нужно выполнять работу. Когда объект «засыпает», то он полностью исключается из цикла обновлений, пока что-то внешнее снова его не включит. Время сна/пробуждения O(1). Большинство вещей большую часть времени в ожидании изменения состояния. Например: если в сборочной машине заканчиваются ингредиенты, она просто выключается. Как только что-то добавляет ресурсы, действие помещения предметов в инвентарь уведомляет машину о том, что они были добавлены, что «пробуждает» машину.
- В худшем случае никакая часть логики обновления не может превышать O(N); если обновление 5 000 машин занимает 1 миллисекунду, то 10 000 должно занять максимум 2 миллисекунды. В идеале менее 2 миллисекунд, но это редко возможно.
- Уменьшение работы с кусками оперативки, которые необходимо тыкать каждый тик. Процессоры очень быстрые в наши дни, и основными ограничителями в большинстве игр-симуляторов являются загрузка памяти в CPU и выгрузка обратно в ОЗУ.

https://www.reddit.com/r/factorio/comments/13bsf3s/technical_questions/

#factorio
> Это я, Тим, сейчас 3 часа утра, и я...не могу уснуть
> Такое случается, в такие моменты пытаюсь быть продуктивным

Буквально лицо инди-геймдева 😭

https://www.youtube.com/watch?v=mHMFG8uvOb0
Деволверы на GDC про работу с социалочками для Cult of the Lamb рассказали. Вроде базовые вещи, но многие всё равно как-то забивают на это. Есть и несколько примеров других игр. Может позже краткую выжимку накидаю.

А докладчик энергичный, приятно смотреть и слушать 😳

https://www.youtube.com/watch?v=Bp0-lfjDDFk

#SMM #CultoftheLamb #GDC
Недельный геймдев: #122 — 21 мая, 2023

📜 Обновления/релизы/новости
- На разработчика и издателя King of Avalon подали коллективный иск за ложную рекламу
- Atari приобрела Nightdive, разработчика ремейка System Shock, за 19,5 млн долларов
- Евросоюз и Китай одобрили сделку Microsoft и Activision Blizzard
- Для 3ds max версии 2023-2024 вышел Sculp Tool
- Cascadeur 2023.1
- В Австрии официально признали, что лутбоксы в FIFA Ultimate Team нарушают закон об азартных играх
- Roots of Pacha скрыли из Steam из-за конфликта между издателем и разработчиками
- Будущее отслеживания трафика в Steam
- Пре-альфа версия Смуты (якобы)

🆓 Халява/раздачи/бандлы/курсы
- Polygon Assets от Animpic Creative Studio

📝 Интересные статьи/видео
- Как Factorio умудряется работать без лагов с таким числом элементов на экране
- 🇺🇸 Cult of the Lamb: взращиваем интернет-культ
- Mundfish о гейм-дизайне Atomic Heart: «Нужно было соблюсти баланс между амбициями, здравым смыслом и датой релиза»
- 🇺🇸 Как сделать убойные креативы для гиперказуальной игры
- 🇺🇸 Do Not Feed the Monkeys 2099: разработка футуристического симулятора вуайериста
- 🇺🇸 Введение пайплайны разработки игр
- 🇺🇸 Почему 1000 тру фанатов на самом деле не работает для игр
- 🇺🇸 Как подготовить игру для инвесторов и издателей
- 🇺🇸 3 вещи, которые следует учитывать при создании нарративных инструментов
- 🇺🇸 Беседа с креативными лидерами The Legend of Zelda: Tears of the Kingdom
- 🇺🇸 Творческое путешествие по разработке игры, которая удовлетворит всех
- Как адаптировать игру к экранам мобильных устройств
- Не нашёл интересующей игры и создал её сам, или как за пару дней сделать игру
- 🇺🇸 Tape To Tape: как спортивная инди-игра получила невероятные продажи
- 🇺🇸 Работа с оружием и гравитацией в Moon Mystery
- 🇺🇸 Настройка фоточной игровой механики в Godot
- 🇺🇸 Как облака работают в видеоиграх
- 🇺🇸 Огромная база издателей игр на PC и консоли
- 🇺🇸 60 маркетинговых ошибок и как их избежать
- 🇺🇸 Какие жанры на ПК лучше всего конвертируют предрелизный интерес
- 🇺🇸 Поговорим про WebGPU
- 🇺🇸 Обновлённый Path Tracing в Cyberpunk 2077

📙 Разное
- Эксперименты с UE5.2 substrate material
- Интересная техника создания нефотореалистичных глаз
- Загрузка Юнитишных .prefab и .unity в Godot Engine
- Google Earth в Unity

#gamedevnews #дайджест
Джейсон Скотт оцифровал более 90 кассет с конференции разработчиков игр 1999 года.

70+ часов презентаций.

https://archive.org/details/1999_Game_Developers_Conference_Audio

#gdc
Марк Дарра поделился некоторыми занимательными аспектами разработки Baldur's Gate.

- Написал скриптовый язык BGScript для диалогов, чтоб определять, какую фразу показывать. Там не было ни for-цикла, ни булевого оператора OR. «Если вы пишете скриптовый язык, то будьте уверены, что его будут использовать под задачи, под которые вы его не затачивали».
Тот же BGScript стали использовать не только для диалогов, но и для ИИ существ. Касательно системы диалогов...в игре есть персонаж Biff the Understudy (который позже и в других играх серии стал использоваться), появляющийся, если NPC отсутствует, когда игра требует от него произнести реплики. Вместо этого персонажа реплику произносит Бифф.
- Работал над основным игровым боевым циклом. BG основана на правилах D&D 2, в которой боевая система использует 6-секундные раунды. В игре был небольшой эксплойт, связанные с тем, что раунды кастов заклинаний и атаки оружием считались отдельно. Как следствие, после каста заклинания можно было использовать очень медленное оружие, атака которого пройдёт в рамках этого же раунда.
- Среди его разработок формат файлов 2DA, который, по сути, являл собой двумерный массив. Позволяло добавлять новые данные в проект. 2DA подразумевался как промежуточный формат, который парсился бы в другой. Не было задумано, чтоб он держался открытым и чтоб на него ссылались. Такой формат хорошо подходил для табличек из D&D. И...позже его начали использовать для совсем разных вещей, в том числе хранили ссылки на другие 2DA, что в итоге приводило к четырёхмерным массивам. Если учесть, что файлы держались открытыми, то производительность была такая себе.
- Во всех их движках была возможность переопределять директории. Файлы в таких папках использовались вместо встроенных в структуры данных. Судя по всему, похоже на то, как работает тот же htaccess в Апаче, когда переопределяет конфиги из директорий выше по иерархии.
- Прям перед релизом у них всё ещё был баг, который приводил к крашу. Проявлялся именно в релизном билде и случайным образом. В итоге они взяли дебажную версия игру, причесали и оптимизировали как могли, а потом именно её и релизнули 😂
- Логика AI прогонялась каждый фрейм. Для Минска была отдельная проверка, чтобы выловить баг, которая на фпс сильно влияла. В BG2 убрали проверку, что добавило 3 фрейма в секунду.
«Иногда тебе просто нужно делать то, что ты должен, чтобы выпустить игру. Нет такой вещи как идеальная игра».
- Работая над дополнением Tales of the Sword Coast уже в роли лида, Марк усвоил важный урок — твои эмоции это тоже инструмент. Если ты на лид позиции, то должен быть осторожен с их проявлением внутри команды.

Оформил в виде статейки, если кому-то так удобней: https://dtf.ru/u/1922-andrei-apanasik/1845023-net-takoy-veshchi-kak-idealnaya-igra-mark-darra-o-razrabotke-baldur-s-gate
Интересны ли вам подобные ретроспективы от Тима Кейна, Марка Дарра или других разработчиков? Продолжать?
Anonymous Poll
88%
Да
12%
Нет
Олег Чумаков написал статью, как с командой в рамках Ludum Dare 53 сделал игру с помощью chatGPT и Midjourney.

Арт, история, диалоги, персонажи, локации сгенерированы. Пытались и код на Lua для Defold'а сгенерировать, но ничего путёвого не вышло.

Примеры промптов в статье присутствуют.

https://blog.luden.io/generated-adventure-the-postmortem-of-a-game-made-with-chatgpt-and-midjourney-prompts-included-f87e7e615204

#AI
В последней статье DeconstructorOfFun разобрали Marvel Snap. Рассматриваются механики, игровой цикл, экономика игры и т. д.

Всё по полочкам разложили.
Недельный геймдев: #123 — 28 мая, 2023

📜 Обновления/релизы/новости
- Microsoft подала апелляцию на запрет сделки с Activision Blizzard в Великобритании
- Мобильная Honkai: Star Rail заработала $132 млн за первый месяц
- Unity 2022 LTS выходит уже в июне
- Джейсон Скотт оцифровал более 90 кассет с конференции разработчиков игр 1999 года
- Аналитика AppsFlyer теперь на ПК и консолях
- 15 прибыльных игр и 6 провалов: статистика Paradox Interactive за 10 лет

🆓 Халява/раздачи/бандлы/курсы
- Новый демо-проект на Godot 4
- Epic Games представила руководство по работе с виртуальными пространствами

📝 Интересные статьи/видео
- Урезанная премия, кранчи и конфликт с руководством Interplay: Тим Кейн об уходе из команды Fallout 2
- 🇺🇸 Игра с помощью chatGPT и Midjourney для геймджема
- «Нет такой вещи как идеальная игра»: Марк Дарра о разработке Baldur’s Gate
- 🇺🇸 Эффективный доступ к данным текстуры
- 🇺🇸 10 советов Рами Исмаила по выживанию в инди-апокалипсисе
- Ludum Dare 53: как прийти в геймдев и попасть в топ-0.5% по «инновации» на своём первом геймджеме
- Атомарный подход в Unity
- Как соединить саундтрек и геймплей — рассказывают композиторы и геймдизайнеры
- 🇺🇸 «Секретное оружие» Valve
- Гайд по созданию процедурной текстуры в Substance Designer и Unreal Engine 5
- Графические эффекты в четырёх стихиях
- 🇺🇸 Туториал по работе с UI в Unreal Engine 5
- 🇺🇸 Marvel Snap — полная деконструкция
- 🇺🇸 Художница Blizzard о своём творческом пути и получении работы в AAA-студии
- Как делалась графика для «Джона Уика 4»
- taichi.js: Программируем на WebGPU без боли
- 🇺🇸 Распродажи издателей в Steam
- Игра «Wake Up»: история создания, первый тизер
- 🇺🇸 Как Unexplored 2 создаёт целые фантастические миры с нуля
- 🇺🇸 Создание игрового арта Call of Duty и Dead Space изнутри
- 🇺🇸 Как проводить непрерывные эксперименты на мобильных устройствах
- 🇺🇸 Мир снов Святой Трины из Elden Ring, созданный в Unreal Engine 5
- 🇺🇸 Как работает фотонное картирование

📙 Разное
- Роботизированная рука из кабелей, созданная с помощью геометрических нод в Blender
- Занимательный шейдер в Unity, имитирующий рисовку от руки

#gamedevnews #дайджест
Хоть видео и с прошлой недели, но рекомендую к просмотру.

Unexplored 2 — это как первая часть, но на максималках. В новой игре не просто случайная генерация комнат, но и всего мира, события регенерации участков после смерти.

Логика создания мира базируется на декларативных правилах и графах. Но ключевое во всём этом цикличность генерации.

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

Автор даже полноценную текстовую версию написал: https://aiandgames.substack.com/p/unexplored2
NoClip поговорили с Гэвином Эйзенбайсом о том, как он превратил десятилетний детский опыт придумывания игр в хит. Хоть документалка про создание Choo Choo Charles, но там в целом про его путь рассказывается и про отношение семьи.

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

#ChooChooCharles #NoClip