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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Инди-разработчик выложил в открытый доступ полезную систему поиска пути (Pathfinding), которую он написал для своей 2D-игры про автоматизацию (где вместо конвейеров ресурсы таскают маленькие дроны).

Главная проблема, с которой он столкнулся — это конфликт двух разных типов движения. Нужно было объединить жёсткую логистику по сетке с плавным перемещением толпы (как в классических RTS).

В итоге получилась гибридная система, которая умеет работать в двух режимах:

RTS Mode: Вы можете выделить сразу толпу агентов и отправить их в одну точку. Они плавно огибают препятствия с помощью стандартного mp_grid, но в движении отвязываются от сетки. Чтобы толпа не слипалась в одну точку по прибытии, автор прикрутил алгоритм Бойдсов (Boids) для отталкивания и спираль Улама для поиска свободных парковочных мест вокруг цели.

Strict Route: Режим для фабричной логистики. Агенты идут по жёстко заданным направляющим на карте. Они заранее резервируют за собой клетки в матрице по пути следования, чтобы умно регулировать трафик и избегать столкновений на перекрёстках.

Исходный код полностью открыт на GitHub, можно свободно забирать в свои проекты или дорабатывать математику векторов: https://github.com/T-Toni/AGENT_SYSTEM

@make_game
10❤‍🔥3👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Релиз, который я пропустил на прошлой неделе, но вот исправляюсь — picoCAD 2. Это небольшая программа для создания низкополигональных 3D моделей. Первая часть была написана на PICO-8 и стала довольно популярной, но упёрлась в ограничения платформы. Сиквел перевели на фреймворк LÖVE, поэтому редактор теперь работает намного плавнее.

Инструмент создавался как простая альтернатива большим 3D редакторам вроде Blender. Если вы работаете с пиксельной графикой и хотите без лишних сложностей добавить элементы 3D в свой проект, это отличный вариант.

Программа доступна на Steam и Itch.io. Обе версии продаются без DRM и работают полностью оффлайн.

@make_game
8👍3😍1
Министерство геймдева уведомляет:
сегодня открывается Субботний скриншотник, и всем ученикам факультетов Программирования, Арта, Дизайна и Вечного Переписывания Туториалов надлежит явиться в комментарии.

Разрешается приносить скриншоты, демки, ролики, гифки и ссылки на собственные проекты. Даже если ваш проект пока похож не на магию, а на заклинание, произнесённое с ошибкой, — всё равно показывайте. Лучшие работы получают уважение, реакции и плюс к навыку «довести до релиза».

@make_game (теперь в VK и Max)
6👍1
Сервер Quake 3, который работает прямо в браузере. Проект доступен по адресу https://q3.pieter.com/. Вы можете просто перейти по ссылке и сразу начать играть вместе с другими людьми, устанавливать локальный клиент не нужно.

Технически все это работает на базе Q3JS. Это открытый порт оригинального движка на JavaScript. Разработчик взял готовый репозиторий, интегрировал в него свежие исправления для повышения стабильности и развернул игру на своих серверах. Оригинальные текстуры и карты подтягиваются из официальной демоверсии.

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

@make_game (теперь в VK и Max)
👍82🔥1
Разработчик Нильс Линхир портировал Doom в браузер с 3D рендерингом на чистом CSS. Игровая логика написана на JavaScript, но для вывода графики автор принципиально отказался от Canvas и WebGL. Вся визуализация переложена на браузерный движок стилей.

Детали реализации:
— каждый объект и текстура представлены обычным тегом div;
— позиционирование в пространстве работает через CSS-трансформации;
— геометрия вычисляется нативными CSS-функциями hypot и atan2;
— сложная архитектура уровней вырезается свойством clip-path.

Технический разбор архитектуры и нюансов производительности: https://tprg.ru/yGpg

@make_game (теперь в VK и Max)
🔥16🤪5🥱1🤣1
Разработчик-плейтестер поиграл в 22+ инди-игры от разных авторов и выкатил базу — список самых частых ошибок, которые кочуют из проекта в проект.

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

Динамическое управление. Если игра поддерживает и клавиатуру, и геймпад, кнопки в интерфейсе должны переключаться на лету. Нет ничего хуже, чем видеть в туториале Press X, сидя за клавиатурой.

Короткое демо без багов лучше длинного сломанного. Оставили забагованный уровень в публичной демке «просто чтобы показать масштаб»? Игроки запомнят только баги. Если уровень сырой — безжалостно вырезайте.

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

Туториалы — боль. То, что кажется вам очевидным спустя год разработки, абсолютно непонятно новичку. Но «стены текста» не работают: если на объяснение уходит абзац, его просто скипнут. Вводите механики постепенно через геймплей (show, don't tell).

Весело на бумаге, скучно в билде. Механика может звучать гениально в диздоке, но если вам самому скучно тестировать её дольше 20 минут — смело переделывайте. Игрокам она тоже не зайдет.

Оригинальный тред на английском.

@make_game (теперь в VK и Max)
👍159👎2
Прямо в браузере: разработчик написал софтверный 3D-рендер в стиле Commodore 64 на чистом C и скомпилировал его в WebAssembly. Проект называется Pommidore64.

Никакого WebGL или аппаратного ускорения, всё рисуется исключительно силами процессора. Движок умеет парсить стандартные .OBJ модели и рендерить их в эстетике ретро-машин: поддерживается отрисовка сплошными полигонами (solid), wireframe-каркасы и несколько алгоритмов дизеринга для имитации ограниченной цветовой палитры C64.

Самое приятное, что из-за WebAssembly всё это работает полностью в оффлайне на стороне клиента. Можно закинуть свою модельку и посмотреть, как бы она выглядела на железе из 80-х.

Пример того, как сегодня можно использовать Wasm для переноса низкоуровневого графического кода прямо в веб.

Пощупать движок:
https://kureca8.github.io/Pommidore64/

@make_game (теперь в VK и Max)
13😁4👍2😍1
Итак, что мы имеем?
Следы ночной сборки, отпечатки дедлайна на календаре, подозрительно молчащий трекер задач и папку, полную скриншотов, которые явно кто-то собирался показать ещё вчера.

Вывод очевиден: настало время Субботнего скриншотника.
Публикуйте в комментариях свои демки, гифки, видео, скриншоты и ссылки на проекты.
Никакая улика не будет проигнорирована, особенно если она работает в 60 FPS.

@make_game (теперь в VK и Max)
7🔥62
Разработчик на 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