Лавка Разработчика
3.32K subscribers
368 photos
42 videos
15 files
623 links
Мы тут игры пилить будем, или как?

YouTube: https://youtube.com/@gamedevlavka

Автор: @vavilichev

Все контакты: https://linktr.ee/vavilichev
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Пока там всем уже начал приходить Nintendo Switch 2, предлагаю ознакомиться с тем, как в современных играх создаются анимации персонажей

Для этого существуют целые студии записи подобного контента, все как в фильмах: черные обтягивающие костюмы, белые шарики - все это нужно для захвата движений. Такой подход значительно ускоряет процесс создания анимаций. Оговорюсь, что ускоряет - не равно удешевляет, скорее наоборот! Но если бы подобной технологии не пользовались, то ААА игры разрабатывались бы намнооого дольше!
This media is not supported in your browser
VIEW IN TELEGRAM
Интересный кейс из опыта в догонку к предыдущему посту

Когда-то участвовал в создании Nevrosa: Escape для VR, и вот там всё по серьезке было, PBR текстуры, реализьм, все дела. Так вот, это вроде как хоррор, и там у нас был карлик уродливый, которого мы анимировали при помощи костыльной системы захвата движений

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

Чистка записанных анимаций, это конечно, адский ад, и вышло у нас - ну так себе (видно по видео), но результат мне нравится!

Бонусный кек: "актёр", который записывался как "карлик", 190см в высоту, а у карлика непропорциональное (укороченное) тело. Так что в камере не видно, но на самом деле карлик ходит на цыпочках)
🔖Интересный кейс о SerializedDictionary<K, V> в Unity

Наткнулся на список "лайфхаков" для Unity внутри которого между делом было указано - SerializedDictionary<K,V> - Inspector Friendly dictionary. Решил проверить.

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

Покопался почему так, и нашел странное: SerializedDictionary<K, V> - лежит в неймспейсе UnityEngine.Rendering (что?), и доступен только в URP (чтоо?), т.к. видимо нужен был для Scriptable Rendering Pipeline. Возникает вопрос: зачем ему приделали нерабочий отрисовщик в редакторе и зачем его вписывают в подобные "лайфхаки" без проверок.

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

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

#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
Скриншот-суббота
Vol. 133


Не очень продуктивная недеља

😐 Выздоравливаю после болезни, поэтому не получилось на этой неделе голосом потрындеть.

😐 Порт ЭкоКликера когда-то выйдет в Яндекс, но не в этот раз. Они перешли к стратегии - один запрос на модерацию - одна выявленная ошибка, так что просто ждём-с

🔠 ProjectLazyDungeon продвинулся немножко. Проектировал UX для отряда, покупки юнитов и их прокачки. Прошел несколько итераций, и вроде нащупал вариант. Кстати, если интересны вопросы UI/UX, поставьте огонь под постом, я эту тему также активно исследую, буду знать, что этим тоже можно делиться. Скотном делиться не буду, там пока ничего не понятно, одни квадратики:)

___
А вот вы делитесь! Результатами, гифками, мыслями, вопросами, всем, что накопилось за неделю!
Please open Telegram to view this post
VIEW IN TELEGRAM
Атрибут [field: SerializeField]

Периодически встречаю людей, которые не знают эту фичу, так что поделюсь ею невзначай

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

Но часто такие поля должны быть доступны для чтения - например, в конфигах в ScriptableObject. Так вот, часто такие поля обрабатывают через пару:
[SerializeField] private MyClass _property;

public MyClass Property => _property;



Защита имеется. Но с относительно недавних версий можно сократить эту запись сразу до публичного свойства с приватным сеттером и для отображения в редакторе. Просто используй аттрибут:
[field: SerializeField] public MyClass Property { get; private set; }


Коротко, лаконично, беозопасно!

#полезное
У наших коллег, случилось событие, и хочется, конечно поддержать их и их проект Pao Pao

Недавно ребята участвовали в крупной скандинавской конференции Nordic Game и заслужили награду People's Choice со своим проектом Pao Pao, демка которого доступна на стиме. Сама игра - это Overcooked на максималках, где нужно не только готовить, но и менеджерить, собирать ресурсы, и обещают еще всякие дикости и по трейлеру их можно заметить. Онлайн коопчик означает, что надо брать!

Игра выйдет в четвертом квартале 2025 года, так что добавляйте в виш листы, я обязательно поиграю, как выйдет!

Трейлер можно посмотреть в стиме, или на YouTube
Новая подборка бесплатных ассетов для Unity от SpeedTutor (май 2025)

Огромная куча визуальных и интересных ассетов на этот раз. Много чего добавил. Из наиболее прикольного:

- Кастомизация гравитации (для притягивания к стенам, потолкам, кубикам и др.)

- Пакет для прототипирования - там много всякого полезного и красивого

- Смена дня и ночи

___

Обзор от SpeedTutor

Подборка из 122 ассетов

#полезное #ассеты
Еще один пост поддержки!

Михаил, с которым мы когда-то записывали разные видео, участвует в фестивале демок в Steam. Говорит, мол, пробуйте играть, давайте отзывы, закидывайте в вишлисты. Игра чиловая, симпотичная, необычная. Задумка мне нравится!

Если в кратце, то там надо строить всякие домики, строения на островах необычной формы.

Игра Dreamnest
⚡️Новое видео в Лавке Разработчика!
Объекты на карте. Часть 3 - создание объектов в рантайме через читы.
#пилимигру 14

После того, как мы наконец-то восстановили работу строений, но не как строений, а как сущностей - можно переходить к подготовке создания их уже внутри геймплея (aka стройка/размещение). Первый шаг наиболее интересный: так как у нас еще нет подготовленной визуализации и управления - мы сделаем создание сущностей (строений) через чит-консоль. Собственно, в выпуске можно глянуть, как можно быстренько организова чит-консоль для помощи в тестировании всякого на проекте. Смотрим, господа и дамы!

P.S. Не забываем лайки, комменты для поддержки

https://www.youtube.com/watch?v=Ek58v6W2jJI

Полный плейлист "пилимигру"

Версия ВК Видео | Версия RuTube

#видео #видеоизлавки
Please open Telegram to view this post
VIEW IN TELEGRAM
Скриншот-суббота
Vol. 134


Нам некогда ждать

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

🔠 ProjectLazyDungeon продвигается. Продолжаю окно с менеджментом отряда юнитов игрока. Скриншот и описание закинул в комментарии

🔠 #пилимигру очередной вышел, там замутили чит консоль и при помощи нее в реалтайме создавали сущности на карте. Движемся, хоть и медленно, и с минимальными просмотрами :)

___
Напоминаю, что делиться своими результатами в комментариях - это полезно для психического здоровья и для развития собственных проектов, так что не стесняемся и присылаем наработки, господа и дамы!

#скриншотсуббота
Please open Telegram to view this post
VIEW IN TELEGRAM
Еще месяц назад я вообще не понимал, как делаются игры.

А сейчас собираю первый прототип на Unity.
Удивительно, но в индустрии почти половина всех проектов — на нем. Он реально простой, и при этом мощный. Даже Pokémon Go сделали на нем.

Если тоже интересно попробовать — вот ссылка на бесплатную онлайн-конференцию. Там с нуля показывают, как стартовать.

А за раннюю регистрацию дают гайд «Как создать своего Ведьмака».
Я не пропал, я тут потихоньку двигаюсь!

Вот например, на конференции у Гришакова посветился, навалил базы про эффективное изучение Unity

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

Статья

#статьи
Скриншот-суббота
Vol. 135


Интересно, сколько это может продолжаться

🔠 Порт ЭкоКликера продолжает морозиться)) Когда-то я его добью. На этот раз на айос в мобильном браузере игра не грузится. Благо есть iOS девайс. А так по-прежнему: одна модерация - одна выявленная проблема.

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

🔠 На мини-конференции выступил, вещал для начинающих, как можно эффективно погрузиться в геймдев с движком Unity

🔠 А, да, и ВНЖ получил после нескольких месяцев возни с документами. Но, стоило того :)

🔠 Настряпал YouTube Shorts на тему не срабатывания инпута в FixedUpdate, можете заскочить, лайк закинуть

🔠 Борюсь с гуглом за монетизацию, которая отключена уже несколько лет. Сейчас ВНЖ появилось, но всё равно всякие бюрократические сложности с палками в колеса от самого гугла. Да, я делаю видосики практически бесплатно. Так что, если вдруг есть желание - подписуйтесь на Boosty

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

#скриншотсуббота
Please open Telegram to view this post
VIEW IN TELEGRAM
Почитал статью от Deconstruction of Fun про 10 тенденций мобильной игровой индустрии 2025 и немножк.. приуныл?

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

Это логическое развитие в условиях ограниченности, но есть тут такое, знаете.. Чувство несправедливости, что-ли. Потому что ресурсов на удержание игроков достаточно у уже устоявшихся гигантов, а вот новичкам с гораздо меньшим количеством контента и удерживающих механик на старте очень сложно прорваться, особенно если попасть в одну категорию с каким-то мастадонтом. Раньше шансов было очень мало, теперь их практически нет.

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

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

#статьи
💸 Зарубежный клиент готов платить — а как деньги получить?

Делаешь концепт-арт, анимацию, левел-дизайн или даже полноценную мини-игру для студии из Европы или США? Клиент спрашивает куда переводить. А ты — завис на этапе оплаты.

PayPal не работает, SWIFT не дойдет, крипта — рискованно.
Что делать?

EasyStaff Invoice — это сервис получения оплат от зарубежных заказчиков, просто, прозрачно и официально.

Выставляешь инвойс клиенту в EUR или USD — получаешь оплату на баланс сервиса и выводишь на карту или счет в любом банке, в удобной валюте. Для продвинутых - можно и на криптокошелек закинуть.

Идеально подходит для:
🎮 фрилансеров в геймдеве
🎨 художников, 3D-дизайнеров, саунд-дизайнеров
👾 небольших студий и инди-команд

Твоему заказчику тоже понравится, ведь EasyStaff Invoice зарегистрирован в Европе, работает с клиентами официально по B2B договору и предоставляет закрывающие документы.

Сомневаешься? Приходи в Telegram-канал и чат — там реальные отзывы от тех, кто уже получает оплату через EasyStaff Invoice.

А если ты только выходишь на международный рынок — попробуй себя на EasyStaff Connect. Это биржа фриланса с бесплатными тасками и комиссией только за вывод средств.

Регистрируйся и выставляй первый инвойс.
Или найди первый проект: https://clck.ru/3MkRDh
Прошел Superliminal - небольшую инди-игрушку, ломающую мозг

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

Как я и сказал, игра построенна на головоломках через проекции (смотри видео на странице в Steam). Механика интересная, но быстро надоедающая. Очень круто, что разработчики наигрались комбинациями головоломок на паре механик с неожиданными переворотами восприятия и вовремя завершили игру. Я прошел за 3 часа и получил удовольствие, а самое главное - приятное послевкусие.

Академический интерес игры как раз и заключается в том, чтобы соблюсти баланс простоты механик с их эксплуатацией, не гриндом, а исследованием, с приправой в виде глубокого сюжета, поданного лишь через немногочисленные реплики из радиоприемника. Глубина которого раскрывается под самый конец. Ну и вишенкой на торте является букет ачивок, из которых я получил только 3, и многие из неполученных направлены на разные подходы к игре: например, несколько для спидраннеров.

Игра однозначно попадает в список рекомендаций

P.S. Если есть интересные небольшие инди-игры, которые вы считаете важными для прохождения - делитесь ими в комментариях!

#надопоиграть
This media is not supported in your browser
VIEW IN TELEGRAM
Затрону тему геймдизайна баланса, или то, чем еще приходится заниматься разработчикам игр

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

Технически - всё просто. Особенно, учитывая, что на результат кроме рандома влияет всего лишь один параметр: сила отряда. Ну, вернее два: сила отряда игрока и сила отряда врагов в комнате. И вот тут возникает вся магия математики в играх: как сделать так, чтобы результаты имитации боя были хотя бы отдаленно похожи на результат настоящего боя?

Ключевой и стратегический момент в игре - игрок может нести потери. Если потерь нет - то это просто айдл механика, если потери есть - начинается стратегия. А стратегию нужно просчитывать, что и является тем лакомым кусочком игр данного жанра.

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

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

Я сделал в итоге 6 отрезков для определения потерь в отряде игрока, в зависимости от соотношения "сила отряда игрока / сила отряда врага". 0-0.5, 0.5-0.75, 0.75-1, 1-1.25, 1.25-1.5, 1.5-2. Минимальное соотношение будет всегда больше 0, т.к. как минимум 1 юнит то в отряде будет, шансы на победу при соотношении сил меньше 0.5 стремятся к 0, потому что потери стремятся к 100% (но никогда не будут 100%, пограничное значение 99.99%). И наоборот, если отряд игрока в 2 и более раз сильнее вражеского, то шансы на победу стремятся к 100%, потому что потери стремятся к 0.

Далее я определяю "корридоры сложности". Например: 0-20% потерь = ваще легко, 20-40% потерь - легко, 40-60% средне и т.д. Это и видит игрок и строит стратегию, готов ли он нести такие потери или нет.

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

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