GameDev: разработка игр
7.63K subscribers
818 photos
196 videos
1 file
1.15K links
Всё про геймдев для девелоперов, художников, левел- и геймдизайнеров, сценаристов

Разместить рекламу: @tproger_sales_bot

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Download Telegram
Разработчик на Reddit поделился болью, с которой рано или поздно сталкивается каждый, кто делает хардкорную игру. Он строил механику перманентной смерти как основу всего геймплея, где каждая смерть это прям событие. Пришли плейтестеры. Начали rage quit'ить и уходить.

Главный инсайт из треда: пермасмерть работает, когда игрок сам выбирает этот уровень риска, а не когда он навязан. Лучшие примеры (Path of Exile Hardcore, Baldur's Gate 3) — это всегда опция, а не единственный режим.

Что реально помогает, если хочется сохранить напряжение без потери аудитории:
Мета-прогрессия. Часть достижений сохраняется между ранами, игрок чувствует рост, даже умирая. Hades как классический пример.
Короткие сессии. Если рана занимает 20 минут, смерть болезненна, но не катастрофична. Если вечер, то теряете игрока навсегда.
Честный онбординг. Игрок должен понимать ставки ещё до того, как инвестировал несколько часов.

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

@make_game (теперь в VK и Max)
👍10🏆3❤‍🔥1🆒1
Как Pizza Tycoon крутила городской трафик на 25 МГц 486-м

Если в вашей симуляции 25 сущностей уже упёрлись в pathfinding и граф сцены — возможно, вы решаете не ту задачу. Автор реимплементации Pizza Tycoon залез в оригинальный ассемблер 1994 года и нашёл три трюка, которые утаскиваются в любой проект хоть сегодня.

Первый: направление зашито прямо в тип тайла дороги. Машинам не нужен поиск пути — они просто читают клетку под собой.

Второй: коллизии — наивный O(n²), 625 пар на 25 машинах, но с ранним выходом по направлению. Восточная и западная не могут оказаться на одной односторонней дороге, пара отваливается за пару инструкций.

Третий: движение — пиксель за такт, тяжёлая тайловая логика срабатывает раз в 16 тактов, причём счётчик у каждой машины стартует со случайного значения — нагрузка размазана. Мораль: ограничения домена дают упрощения, о которых с современным мозгом не подумаешь.

@make_game (теперь в VK и Max)
🔥10👾1
Пропустил вчера пост, прошу прощения, ребят. Сегодня у нас будет воскресный праздничный скриншотник!

Что у вас нового по проектам? Делитесь скриншотами, видео, демками в комментариях. А мы будем смотреть и ставить огонёчки! 🔥
🔥8
Соло-разработчик 10 лет делает ARPG, которая выглядит как 3D, хотя она полностью 2D

Bridgebourn — нарисованная от руки action-RPG в духе Diablo 2. Никаких 3D-моделей, никаких ригов: всё — плоские спрайты, разложенные на десятки параллакс-слоёв. Ближние деревья проматываются быстрее, дальние холмы — еле-еле, и глаз читает сцену как объёмную.

Второй трюк — манипуляция вершинами 2D-спрайтов в шейдере. Дерево остаётся одной текстурой, но его верхушка слегка наклоняется и покачивается — и плоская декорация внезапно читается как объект с геометрией. То же работает с травой, водой, башнями.

Всё это делает один человек под ником 2HeadedHero — около десяти лет, в соло. Разбираем технику подробно: как параллакс и sprite vert складываются в живую боёвку, не разваливаясь при летающей камере.

@make_game (теперь в VK и Max)
1🆒7👍3🔥2
На седьмой день новой недели ваш герой вступает на клетку под названием «Субботний скриншотник».

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

Даже если в армии пока только один юнит по имени «рабочий прототип», это уже достойно хода.
7🔥1
Разработчик поделился историей о том, как стратегия, принёсшая ему 40к долларов и 10 млн просмотров на первой игре, полностью провалилась на второй.

Его первая игра (Spellmasons) была пошаговым рогаликом про крафт заклинаний. Разработчик сделал ставку на TikTok, YouTube Shorts и Reels. Он записывал короткие ролики с процессом создания заклинаний: зритель видел, как собирается магия, а потом смотрел на сочный визуальный результат. Это сработало великолепно.

Когда он начал продвигать вторую игру (Some of You May Die — автобаттлер в том же визуальном стиле), он применил ту же тактику. Но просмотры упали с миллионов до ~20 тысяч на ролик.

В чем оказалась проблема?

Разработчик понял критически важную вещь: у каждой игры есть свой «edge» (уникальная цепляющая фича), и она должна быть визуально читаемой (legible).

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

Как только он сделал ролик про конкретного героя-суммонера, где было чётко видно, как из одного юнита постепенно вырастает огромная армия (понятный визуальный прогресс), ролик сразу собрал в 7 раз больше просмотров.

Главные выводы из его опыта для инди-разработчиков:

— Плохое качество видео с хорошей историей всегда бьёт идеальный продакшен с плохой историей.
— Делайте ставку на количество на старте. Лучше выпустить 8 шортсов и научиться на них, чем 2 месяца пилить один лонгрид.
— Первые 10 секунд шортса решают всё. Тратьте на них непропорционально много времени.
— Создавайте «любопытный зазор» (curiosity gap). Название «Я чуть не удалил этого персонажа из игры» работает лучше любых прямых вопросов, потому что заставляет зрителя самого спросить себя: «А почему?».
— Формула успеха = (Фан от игры) х (Визуал/упаковка) х (Охват). Маркетинг влияет только на последний множитель. Если первые два стремятся к нулю, маркетинг не спасёт.

@make_game (теперь в VK и Max)
👍94
Давным-давно, в одной далеко не завершённой сборке...
Шла очередная неделя разработки. Одни сражались с UI, другие — с физикой, а третьи вели неравный бой с багом, который появляется только после полуночи.

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

@make_game (теперь в VK и Max)
18
Media is too big
VIEW IN TELEGRAM
Raylib — это open-source библиотека для разработки игр и графических приложений на C. Известна тем, что работает без внешних зависимостей, собирается из пары файлов и поддерживает кучу платформ — от Windows и Linux до веба и микроконтроллеров.

Так вот, на днях вышел raylib 6.0 — крупнейший релиз за 12 лет существования библиотеки. 2000 коммитов, 330 закрытых issues, 70 новых примеров и несколько изменений, которые стоит знать.

Главное, что появилось — софтверный рендерер rlsw. Раньше raylib требовал OpenGL и нормальной графики. Теперь он может работать на чистом CPU, без GPU. Это не эмуляция, отдельная библиотека, совместимая с OpenGL 1.1+, и она встраивается в существующий API без изменений в коде проекта. 30-60 FPS на базовых вещах.

Зачем это нужно? Уже работает порт для ESP32, микроконтроллеры без графического ускорителя теперь могут рендерить 2D и простую 3D. И это открывает дверь для RISC-V устройств, которые часто идут без GPU.

Три новых платформенных бэкенда:
— Memory — рендеринг в память без окна. Headless, серверная генерация изображений, экспорт кадров в файлы.
— Win32 — нативный Windows-бекенд без GLFW/SDL. Пока экспериментальный, но шаг к тому, чтобы библиотека была самодостаточной.
— Emscripten — веб без зависимостей. Поддерживает и WebGL, и 2D canvas для софтверного режима.

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

Файловая система и работа с текстом. +40 функций для файлов, +30 для строк — всё собрали в один модуль, убрали старый utils. Полная библиотека теперь собирается из 6-7 исходников.
Система сборки. Новый config.h: отключаете ненужные модули флагом командной строки. И инструмент rexm для управления 200+ примерами.

Релиз набрал 280 реакций на GitHub за сутки. Сообщество активное: 850+ контрибьюторов за всю историю, 210 новых в этом релизе.

Полный ченжлог: https://github.com/raysan5/raylib/releases/tag/6.0

Кто-то уже использовал raylib в своих проектах?

@make_game
7👍4🔥3🤔1
Valve обновила GameNetworkingSockets впервые за 4 года

Библиотека, на которой держатся сети Counter-Strike и Dota 2, получила релиз 1.5 — первый тег с июня 2022. За это время накопилось около 350 коммитов.

GNS — транспортный слой для игр: UDP с надёжной доставкой, шифрованием end-to-end, congestion control и NAT traversal через ICE. По устройству близка к QUIC, но несовместима с RFC 9000 — Valve шла своим путём. С 2018 года библиотека open-source, и инди-разработчики получили боевой сетевой движок бесплатно.

Ключевое в 1.5: изменилась семантика SendMessages — каждое сообщение теперь возвращает собственный результат. Старый код «отправил и забыл» нужно пересмотреть. Добавлены конфиги ECN и jitter-метрики, ETW-диагностика на Windows, исправлены race-условия в P2P через WebRTC ICE, которые приводили к зависаниям. Появились community Rust bindings.

Native ICE-клиент пока в beta, для production P2P Valve рекомендует WebRTC ICE.

читать далее

@make_game (теперь в VK и Max)
6👍2👎1
Разработка должна продолжаться. Скриншоты должны течь рекой.

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

Оседлайте песчаного червя своего игрового движка и приносите в комментарии скриншоты, демки, гифки и ссылки на свои проекты. Помните: страх перед дедлайном убивает разум. Тот, кто контролирует прогресс — контролирует релиз!
4👍2🎉1
Balatro — рогалик-колодостроитель на Love2D, написанный одним человеком (LocalThunk). Игра стала хитом, а её исходники после утечки обрели мемный статус: мол, код ужасен. На деле всё интереснее — в нём полно математических трюков и неочевидных инженерных решений, которые держат игру на плаву.

На видео разбирают внутренности Balatro:

— Формула Chips х Mult: как игра распознаёт тип руки, накладывает эффекты джокеров и считает итоговый счёт с учётом модификаторов вроде foil и holo.

— Мышь как генератор случайности: позиция курсора используется как дешёвая энтропия для RNG. Просто и работает.

— Сортировка карт через float: ранг, масть и ID карты упаковываются в отдельные десятичные разряды одного числа с плавающей точкой. Элегантный способ сравнивать карты одним значением.

— Паттерны в коде: Flyweight, вариация Strategy и другие приёмы. Не всегда по учебнику, но прагматично.

— Сборка мусора: кастомный инкрементальный GC: 0,3 мс бюджета на кадр плюс emergency-проход, если память перевалила за 300 МБ. Заимствовано из nuGC Макса Кахилла.

Много технических деталей и объяснений, почему код устроен именно так, прикрепил к посту файлом или вот ютуб кому там удобнее.

@make_game (теперь в VK и Max)
Media is too big
VIEW IN TELEGRAM
6👍106❤‍🔥2👏1🎉1
😁40💯43🤩2👎1
Видео от инди-разработчика, который выпустил собственную игру и собрал весь практический опыт в один инфо-дамп. Всё, что автор узнал о разработке, маркетинге и релизе, уложенное в полчаса.

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

@make_game (теперь в VK и Max)
Media is too big
VIEW IN TELEGRAM
5🔥4👏1
Скриншотник открыт! Что сделали за неделю по своим играм? Делитесь скринами и демо, посмотрим на ваш прогресс.
6👍2🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Когда сцена должна выглядеть хорошо только с одного ракурса
😁29🗿53
Наткнулся на статью аж 2019 года, но хорошо объясняющую как правильно рисовать линии в браузере. Правильно — это чтобы красиво и быстро.

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

Не очень понятно объяснил, наверное, но вы лучше сами статью гляньте, там интерактивные демо внутри, хорошо сделано: https://wwwtyro.net/2019/11/18/instanced-lines.html

@make_game (теперь в VK и Max)
6👍3
Прошла неделя и скриншотник снова с вами! Что нового? Как продвинулись за неделю в своих играх?
6🔥10👍1
Открытый урок «Zenject в создании игр на Unity»

➡️ 21 мая в 20:00 МСК

Бесплатно. Урок в рамках старта курса «Unity-разработчик. Продвинутый уровень» от Otus.

Сначала всё просто, но со временем связи между объектами усложняются, изменения начинают ломать систему, а поддержка требует всё больше времени. Без управления зависимостями проект становится трудно масштабируемым.

На открытом уроке разберётесь, как использовать Zenject и подход DI, чтобы навести порядок в коде. Увидите, как структурировать проект, правильно связывать объекты и избежать типичных ошибок при работе с зависимостями.

📎 Ссылка на регистрацию: https://otus.ru

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👎21
В 2013 году Disney купил Lucasfilm и прикрыл LucasArts. Разработчики Raven Software поняли, что их код вот-вот закопают навсегда и в панике выложили на GitHub исходники Jedi Outcast и Jedi Academy. Прямо как есть, не успев вычистить комментарии.

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

bg_saber.c — вся система боя на световых мечах это один switch на 5000 строк;
sv_savegame.cpp — пришлось писать фейковый busy-loop, чтобы окно «Saving» висело хотя бы секунду. И комментарий: «Брошусь под автобус, если ещё раз придётся делать такую дичь»;
q_math.cpp — легендарный fast inverse square root из Quake 3, унаследованный от Кармака. Даже сами Raven годы спустя оставили в комментарии только «what the fuck?»;
ModView — функция FuckingWellSetTheDocumentNameAndDontBloodyIgnoreMeYouCunt(), родившаяся в неравной борьбе с Win32 API.

Вот тут более полная подборка интересного из их кода.

@make_game (теперь в VK и Max)
127
Steam пересобрал теги — убрал 28 старых, добавил 17 новых, кое-что переименовал.

Из новых тегов:

Bullet Heaven. Противоположность Bullet Hell: игрок прокачивает героя, а тот сам отстреливает толпы врагов. Жанр Vampire Survivors и её клонов, которые до этого валились в Bullet Hell.
Desktop Companion. Игры, занимающие только часть экрана и работающие параллельно с другими задачами.
Wuxia и Xianxia. Два жанра китайского фэнтези. Wuxia — историческое, про боевые искусства, школы и поединки. Xianxia — про культивацию ци и сверхспособностей.
Falling Blocks. Жанр Тетриса и наследников.
Cleaning, Organizing, Decorating. Уборка, разбор беспорядка, расстановка предметов и мебели. Под это попадают Powerwash Simulator, Unpacking и подобные.
Espionage. Шпионаж как отдельный жанр, отдельно от стелса и триллеров.

Переименовали:

Clicker стал Incremental. Тег теперь шире, про весь жанр игр, где числа растут.
Conversation стал Dialogue Heavy.
Pool стал Billiards. Под Pool разработчики начали постить игры с плавательным бассейном.

Из удалённых заметнее всего:

— Бренды: LEGO, Warhammer 40K, D&D, GameMaker, RPGMaker, Kickstarter.
Masterpiece, который разработчики ставили себе самому.
Mature, NSFW, Drama, Documentary, Foreign.

@make_game (теперь в VK и Max)
1🔥3