Обновить

Геймдев

Сначала показывать
Порог рейтинга

Doom запускался на 486-м процессоре с 4 МБ RAM ещё в 1993 году.

И самое интересное - весь мир игры рендерился через BSP-дерево, binary space partition tree.

Джон Кармак строил это дерево при загрузке уровня, а не на каждом кадре. Карта заранее делилась на области, а порядок отрисовки уже был сохранён внутри структуры.

Во время рендера движку не нужно было каждый раз заново вычислять видимость. Он просто проходил по дереву.

Как это работало:

• BSP-узел делит пространство на переднюю и заднюю часть  

• если игрок спереди - сначала рендерится переднее поддерево  

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

• порядок уже задан самой структурой дерева

Именно поэтому Doom не нуждался в z-buffer.

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

Очень маленький код, но за ним стоит одна из самых красивых инженерных идей в истории игровых движков.

Теги:
Всего голосов 5: ↑4 и ↓1+5
Комментарии1

Представлен открытый проект OpenPixel-RPG, который генерирует игру в стиле RPG Maker прямо из реального города. Можно загрузить практически любое место на планете и получить из него играбельную JRPG-карту. На выходе получается «игра» с квестами, NPC и «живым» окружением. Система работает на нейродвижке WorldX и визуализации через Gemini.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Представлен открытый проект waylandcraft - это полнофункциональный композитор Wayland полностью интегрирован в мод Fabric для Minecraft Java 26.1.2.

«Запускайте приложения и открывайте окна прямо в вашем мире Minecraft. Перетаскивайте данные из одного окна в другое. Закрепите видеоплеер на вашем HUD. Выбор за вами. Важно: этот мод работает только под Linux! MacOS и Windows не поддерживаются», — пояснил автор проекта.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

В Minecraft теперь можно создать идеальный мир — игроки нашли способ создать карту, на который вообще все биомы, ресурсы и ключевые структуры расположены в 1000 блоков от спавна. Магия реализуется с помощью сида — это специальный номер, который всегда будет генерировать один и тот же мир. Идеальную структуру искали почти 15 лет. При создании мира пишем сид: 8500081009970950196.

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

В Steam вышла бесплатная (2 кота без доплаты) игра Sill Cats, которая запускает пиксельных котов прямо у на рабочем столе. Питомцы бегают по окнам и мониторам, прыгают, играются с курсором и периодически устраивают полноценные ночные тыгдыки по экрану. Поведение тоже максимально кошачье: днём спят где-нибудь в углу, а под вечер начинают носиться как ненормальные.

Теги:
Рейтинг0
Комментарии0

Сделал необычную RTS на Ludum Dare 59 за пару дней

Выглядит примерно так
Выглядит примерно так

Игра написана на Go (Ebitengine), исходники на есть гитхабе.

Поиграть можно в браузере, ведь Ebitengine имеет неплохой экспорт в wasm. Она мало весит, быстро работает, и экспорт не требовал лишних усилий - это вам не шуточный игровой движок.

Я накидал небольшой шаблон для игр на стеке своих геймдев-библиотек. Его можно посмотреть тут: https://github.com/quasilyte/gscene-game-template.

С этим шаблоном старт начала работы над игровой логикой и "мясом" игры становится ближе. Это позволяет +/- выйти на удобство какого-нибудь Godot, где не нужно первые несколько часов настраивать как у нас обрабатывается input, звук и сцены. Я этот шаблон буду дорабатывать по мере участия в джемах, за каждую мини-игру у меня копится TODO на то, что еще там можно было бы улучшить.

Если тема разработки игр на Go вам интересна, заходите в наше русскоязычное сообщество в телеграме. Мы там обсуждаем всякие библиотеки для геймдева, свои игры, и всё такое.

Кстати, ребята из чатика тоже сделали свои игры на Ebitengine, вот они:

Теги:
Всего голосов 7: ↑7 и ↓0+8
Комментарии15
Герое-подобная игра в браузере
Герое-подобная игра в браузере

Поскольку в голосовании в предыдущей статье победил вариант с AI, сделал пока простенький его вариант.

Также теперь можно кликать два раза по гексу с противником, чтобы атаковать его (старый способ с выбором позиции атаки остался). Тачи поддерживаются.

На очереди: стрелки, летуны и статичные объекты.

Ссылки, чтоб потыкать: netlify, ITCH.

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии1

Как разработчикам монетизировать свои игры в 2026?

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

Традиционный подход подразумевает, что разработчик заключает договор с площадкой (Steam, VK Play, Itch и т.д.). Игрок покупает игру, и деньги идут на счёт платформы. После этого в определенные даты происходит выплаты на счета разработчиков за вычетом комиссий. Где-то больше, где-то меньше, где-то по-другому. Но смысл тот же. Этот подход позволяет, во-первых, брать комиссии, во-вторых, легче работать с возвратами и в-третьих, быстрее распознавать отмывание денег и мошенничество.

Мы решили использовать схему маркетплейсов, где каждый разработчик приходит со своим статусом (ООО, ИП, смз). Но приходит он в первую очередь не к нам, а к платёжным агрегаторам типа Юкасса, Робокасса, любая …касса. Одним словом, подключает себе интернет-эквайринг, такое делает любой банк. Банк ему даёт API для подключения, ID магазина, ключи для проведения оплат и всё, действуй.

Где здесь мы? Мы предоставляем бесплатный хостинг для игр. Сама площадка + страница игры + страница разработчика. Всё тоже самое что у itch[.]io. Заодно есть консоль разработчика, в которую добавляется всё больше и больше возможностей. Соответственно, в этой консоли разработчик указывает тот самый идентификатор магазина, суперсекретный ключ и дальше надеется на магию.

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

Опережу (почти) все вопросы и сразу отвечу:

Q: На что вы будете существовать если у вас комиссии 0%?

A: При покупке игры рядом есть еще кнопочка “поддержать платформу”, надеемся, что это сработает

Q: Вы делаете очередного убийцу стима?

A: Нет

Q: Это точно не развод?

A: Точно нет, чесслово

На остальные вопросы обязательно ответим. Так как это не реклама, то прямо указывать название площадки не буду, но подскажу, что наш канал https://t.me/dustore_official

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии6

Переосмысление библиотеки LDL.

Я полностью пересмотрел концепцию библиотеки LDL.

Что такое LDL?
Это графическая библиотека с единым API для всех систем как старых, так и новых.

Раньше я писал её на C++98, что давало хорошую портабельность. Но сейчас я пересмотрел многие тезисы, которые декларировал на GitHub, чтобы наконец добраться до первого релиза.

Новая стратегия

Я решил выпускать релизы без реализации полного функционала (графика, звук, шрифты и т.д.) постепенно, итеративно.

  • Перешёл на C89 для максимальной переносимости. Это не только DOS или Windows 3.x, но и старые системы вроде Solaris, PlayStation 1 и другие.

  • Для первого релиза реализую минимальный базовый функционал: графику (OpenGL, Vulkan), окна и события. По возможностям аналог GLFW.

  • С каждым следующим релизом буду добавлять: 2D-рендер, звук, шрифты и прочее.

Лицензия и целевые платформы

  • Лицензия меняется на LGPLv3.

  • На старте поддерживаются Windows и Linux.

Качество и инструменты

При разработке использую:

  • AddressSanitizer (ASan)

  • UndefinedBehaviorSanitizer (UBSan)

  • Различные анализаторы кода

Я считаю, что такая стратегия полезнее, чем годами доводить библиотеку до версии 1.0 в офлайн-режиме.

Примеры и бэкенды

  • Добавлю десятки примеров с OpenGL 1.x, OpenGL 3.x и Vulkan.

  • Буду добавлять бэкенды для LDL: не только под ОС, но и поверх других графических библиотек — SDL, SFML, GLFW и т.д.

  • API остаётся единым для всех бэкендов.

Это позволит сразу добавить поддержку звука и шрифтов (через бэкенды), а в нативных версиях реализовывать их позже.

 2D-рендер без границ

Одной из главных задач LDL я вижу создание единого 2D-интерфейса, который стирает различия между поколениями графики.

Вам не нужно думать о том, что находится в системе: современная видеокарта с Vulkan, старый ускоритель с OpenGL 1.2 или вообще только центральный процессор (Software Rendering).

  • Единый интерфейс: Вы используете одни и те же команды для рисования пикселей, линий и спрайтов.

  • Адаптивность: LDL сам выберет наиболее эффективный способ вывода изображения. На современной системе это будет аппаратное ускорение, а на «железе» без видеокарты оптимизированный программный растеризатор.

  • Визуальная честность: Ваш визуальный стиль останется неизменным, на чем бы он ни запускался. Это дает возможность делать игры и приложения, которые выглядят и работают одинаково и на ретро-ноутбуке, и на современном мониторе.

Философия: Машина времени в вашем коде

Зачем тратить силы на поддержку систем, которые многие считают «трупами»?

1. Борьба с цифровым забвением

Современный софт живет 3–5 лет. Мы выбрасываем железо не потому, что оно сломалось, а потому, что софт стал слишком тяжелым и ленивым. LDL — это протест против «запланированного устаревания». Я хочу, чтобы код, написанный сегодня, мог дышать в железе любой эпохи.

2. Инженерный аскетизм

Когда у тебя гигабайты памяти, ты перестаешь ценить каждый байт. Написание библиотеки под C89 для слабого железа — это духовная практика для программиста. Это возвращение к искусству находить изящные решения в условиях жестких ограничений. Каждый сэкономленный такт процессора — это дань уважения инженерам прошлого.

3. Преемственность поколений

Мы стоим на плечах гигантов, но часто забываем их имена. LDL сохраняет возможность для диалога между эпохами. Это инструмент, который позволяет современному разработчику почувствовать «металл» старых машин, не теряя связи с современными технологиями вроде Vulkan.

Итог

LDL — это Little Directmedia Layer. Он маленький не потому, что слабый, а потому, что в нем нет ничего лишнего. Это попытка создать код, который будет принадлежать не конкретной версии ОС, а истории программирования в целом.

Один API. Один код. Тридцать лет компьютерной истории.

Теги:
Всего голосов 9: ↑8 и ↓1+8
Комментарии8

Не раз замечал, что многие люди, даже заставшие эпоху DVD-дисков, до сих пор толком не понимают разницу между DVD+R и DVD-R. Что уж говорить о каких-нибудь сотрудниках больниц, которые требуют «правильные» диски для записи КТ или МРТ. Поэтому предлагаю немного разобраться в этом вопросе и кратко рассказать, как всё было. Да, эпоха DVD уже давно ушла, но разве не любопытно узнать что-то новое о такой, без преувеличения, олдфажной теме?

——————————————————

В конце 90-х и в нулевых, на фоне нового типа дисков случилась маленькая война форматов. Pioneer показала первый DVD-R привод ещё в 1997 году (нашёл для вас первоисточник), а сам формат продвигал DVD Forum — объединение, отвечавшее за «официальные» DVD-стандарты. В него входили такие фирмы как Hitachi, Panasonic, Mitsubishi Electric, Philips, Pioneer, Sony, Toshiba, JVC и еще несколько других компаний.

DVD+R пришёл позже, уже в 2002 году, и его развивала отдельная коалиция компаний, известная как DVD+RW Alliance, в основу ядра которой входили Dell, Hewlett-Packard, Mitsubishi Chemical/Verbatim, Philips, Sony, Thomson Multimedia и Yamaha и некоторые другие.

И если объяснять совсем просто, DVD-R и DVD+R — это одноразовые болванки почти для одних и тех же задач, но с разной логикой записи. У DVD-R используется метод адресации Land Pre-Pit, а у DVD+R — ADIP; второй считался менее чувствительным к помехам и лучше подходил для более скоростной записи. При этом у DVD+R была ещё одна полезная особенность: возможность выставить book type как DVD-ROM, что иногда улучшало совместимость со старыми проигрывателями. Но в эпоху ранних бытовых DVD-плееров именно DVD-R долго воспринимался как более надёжный и безопасный выбор с точки зрения совместимости, потому что этот формат появился раньше и быстрее стал массовым. Именно поэтому во многих государственных учреждениях до сих пор требуют именно DVD-R: их устаревшие приводы нередко банально не читают более поздний и технологически продвинутый формат DVD+R.

Олдфажный факт: если у Mitsubishi участие в обоих альянсах всё же было разведено по разным компаниям внутри большой Mitsubishi Group — речь о Mitsubishi Electric и Mitsubishi Chemical, — то про Sony такого уже не скажешь. Она, по сути, работала сразу на два фронта 😄

Вам может быть интересно:

• «Рождение легенды: Soldier of Fortune»;

• «The Sims: история игры, которую “отменяли” снова и снова»;

• «Игры из эфира: как радио сделало гейминг доступным каждому».

——————————————————

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

Теги:
Всего голосов 7: ↑7 и ↓0+7
Комментарии1

Видеоигры помогают добиться успеха — Павел Дуров и основатель Coinbase рассказали об этом в Х. Предприниматели поделились своим опытом в гейминге: Брайан Армстронг в юности увлекался стратегиями вроде StarCraft и позже заметил, что бизнес во многом работает по тем же принципам. Павел Дуров согласился и добавил, что такие игры развивают планирование, тайминг и управление рисками — навыки, которые напрямую помогают в предпринимательстве.

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии3

Игра Resident Evil 9: Requiem перезагружает OLED-телевизоры — баг заметил один из игроков с LG C1. Оказалось, вспышка револьвера в игре настолько яркая, что дисплей умного ТВ просто не успевает обработать изображение. В итоге телевизор уходит в рестарт.

Теги:
Всего голосов 3: ↑2 и ↓1+4
Комментарии0

ASCII Sandbox для красивого рассыпания в игре // Как сделано

Для того чтобы спрайты, боссы и другие объекты в игре красиво рассыпались, я сделал простой ASCII Sandbox движок. В отличие от самой игры, где символы могут рисоваться в произвольных координатах, ячейки в sandbox‑е строго выровнены по сетке. Это дает прикольный визуальный эффект. Алгоритм очень простой — вот схема:

─┼─┼─┼─┼─┼─┼─┼─┼─
│ │ │ │@│ │ │ │
─┼─┼─┼─┼─┼─┼─┼─┼─
│ │4│2│1│3│5│ │
─┼─┼─┼─┼─┼─┼─┼─┼─

А. Обходим все ячейки сетки снизу вверх (если гравитация направлена вниз).

Б. Если в ячейке есть символ, и он не в полете, то пытаемся его уронить.

В. Сначала проверяем ячейку снизу (1), если пустая — запускаем символ в полет в нее.

Г. Если снизу занято, то проверяем диагональные ячейки (2) и (3). Если обе пустые, то выбираем случайно. Запускаем символ в полет.

Д. Sandbox у меня скользкий, т.ч. символы могут скатиться и под большим углом. Поэтому проверяем еще и соседние к диагональным ячейки (4) и (5). Если там пусто, то запускаем символ в полет, как в предыдущем пункте.

Этого достаточно — символы сыпяться. Для красоты я добавил еще две штуки: ускорение и саморазрушение.

Если символ без задержек летит по ячейкам сетки вниз, то было бы красиво сделать движение с ускорением. Сделать это просто — нужно только накапливать для каждого символа время непрерывного полета. Наткнулся на другой символ — обнуляем время и ускоряемся заново.

Еще одна штука — саморазрушение. Когда спрайт помещается в sandbox, то в случае, если снизу пустые ячейки, он летит целиком. Это иногда не так эффектно. Поэтому я сделал параметр саморазрушения. Даже если снизу пустота, то отдельные частички‑символы спрайта все равно начинают взаимодействовать друг с другом. На видео я показал сравнение разных степеней саморазрушения.

Как вам эффект? Буду рад, если вам понравился стиль и вы решите поддержите мой проект на Steam страничке игры.

Теги:
Всего голосов 5: ↑3 и ↓2+5
Комментарии0

Ближайшие события

Инструменты для разработчиков игр и не только

Недавно провели крутой вебинар про GameDev вместе с экспертами из Forgotten Empires и Playrix. Мы разобрали, какие инструменты входят в арсенал GameDev-команд, зачем они нужны и почему профилировщики играют ключевую роль в разработке. А бонусом — показали, как превратить ваш код в настоящий город.

Кстати, мы PVS-Studio уже в город превращали. Почитать про это можно по ссылке!

Теги:
Рейтинг0
Комментарии0

В США преподаватель в школе показал ученикам игровой процесс в Assassin's Creed на PlayStation 5, чтобы объяснить промышленную революцию. События этой части франшизы разворачиваются в Лондоне 1868 года — в самый разгар промышленной революции. В игре Ubisoft воссоздали не только обычные здания, но и интерьер фабрики. Учитель смог наглядно показать устройство предприятия, а также особенности организации работы. В те годы широко использовался детский труд.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии1

Энтузиаст для проекта портативной консоли Sony Playstation Portable представил систему достижений PSP Achievements System. Это специальный плагин устанавливающийся прямо на PSP. Он переносит доступ к RetroAchievements на реальное, физическое оборудование и работает полностью в автономном режиме. В качестве эксперимента и начала полномасштабной разработки пока что доступны только ачивки для игры Silent Hill: Origins. В будущем планируется добавление всей библиотеки доступных достижений с RetroAchivements.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Представлен открытый проект Claude Code Game Studios. Это игровая ИИ-студия на базе нейросетей, которые умеет создавать различные проекты от простых бродилок до прорывного экшена:

  • 48 нейросетей, которые могут работать без остановки. Это не устающий отдел геймдева прямо на локальном ПК;

  • среди ИИ есть: креативный директор, технический директор, продюсер, QA, нарративный директор, левел-дизайнер и другие ИИ-системы;

  • нейросети до мельчайших деталей знают актуальные движки: Godot 4, Unity и Unreal Engine 5. Они напишут на них игру и запустят с тестами;

  • ИИ-системы сами проверяют работу: коммиты, комментарии, задачи и итоги спринтов, а также все важные нововведения и ревью;

  • все действия нейросети согласовывают с пользователем как с гендиректором: с полным отчётом, предложениями и планом. Да, команда автономна, но задаёт вектор именно пользователь;

  • авторы проекта также добавили 28 шаблонов документов: по геймдизайну, архитектуре проекта, экономике, фракциям, UX и так далее.

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии1

Команда проекта ReactOS сообщила о значительном прогрессе в обеспечении совместимости с проприетарными видеодрайверами. Благодаря серии исправлений и внедрению подсистем KMDF (Kernel‑Mode Driver Framework) и WDDM (Windows Display Driver Model) удалось реализовать поддержку примерно 90% драйверов GPU для Windows XP и Windows Server 2003. До внесения изменений запуск многих фирменных драйверов либо заканчивался сбоем, либо работал нестабильно. Теперь же в свежих ночных сборках ветки 0.4.16 наблюдается устойчивая работа драйверов от различных производителей, включая Intel, NVIDIA и AMD.

Среди прочего, продемонстрирована работа ReactOS на реальном оборудовании и загрузка с установленными драйверами для видеокарт уровня Intel GMA 945, Nvidia GeForce 8800 GTS и GTX 750 Ti и AMD Radeon HD 7530G. Отдельно отмечается успешный запуск на мобильной графике, например Nvidia Quadro 1000M, где помимо 2D/3D‑ускорения также функционируют звук и сетевые подключения. В дополнительных тестах также подтверждена работа на более редких и устаревших конфигурациях, включая ноутбук с Radeon Xpress 1100, а также на высокопроизводительных видеокартах, таких как Nvidia GTX Titan X.

Особую роль сыграл принятый в основную ветку проекта патч для подсистемы управления памятью, который повысил стабильность работы драйверов и снизил количество сбоев при инициализации графических адаптеров.

Теги:
Всего голосов 11: ↑11 и ↓0+14
Комментарии11

Сделал процедурное сердечко на движке игры - получилось прикольно!

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

Базовый код очень простой:

    public void GenerateHeart(int n, string str, Color color, float minDistance = 1.01f) {
        float r, y, theta;
        float goldenRatio = (1f + Mathf.Sqrt(5f)) / 2f;
        float offset = 2f / n;

        for (int i = 0; i < n; i++) {
            y = (i * offset - 1) + (offset / 2);
            r = Mathf.Sqrt(1 - y * y);
            theta = 2 * Mathf.PI * i / goldenRatio;
            PutCharToHeart(theta, Mathf.Acos(y), str[i % str.Length], color, minDistance);
        }
    }
    
    public void PutCharToHeart(float u, float v, char ch, Color clr, float minDistance, float scale = 1f, CharAnim chanim = null) {
        float sinV = Mathf.Sin(v);
        float cosV = Mathf.Cos(v);
        float sinU = Mathf.Sin(u);
        float cosU = Mathf.Cos(u);
        float x = sinV * (15 * sinU - 4 * Mathf.Sin(3 * u));
        float z = sinV * (13 * cosU - 5 * Mathf.Cos(2 * u) - 2 * Mathf.Cos(3 * u) - Mathf.Cos(4 * u));
        float heartY = 8 * cosV;
        Vector3 point = new Vector3(x, heartY, z) * scale;
        bool tooClose = false;

        foreach (var existing in points)
            if (Vector3.Distance(point, existing) < minDistance) {tooClose = true; break;}

        // Add
        if (!tooClose) {
            points.Add(point);
            pointsView.Add(point);
            codes.Add(ch);
            colors.Add(clr);

            if (chanim == null) {
                flags.Add(0);
                anims.Add(null);
            } else {
                flags.Add(FLAG_ANIM);
                anims.Add(chanim);
            }
        }
    }

Получилось вроде симпатично! Думаю добавить в игру. Не забудьте поиграть в текущую версию игры на Steam.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

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

Теги:
Всего голосов 4: ↑4 и ↓0+7
Комментарии0