Balatro — рогалик-колодостроитель на Love2D, написанный одним человеком (LocalThunk). Игра стала хитом, а её исходники после утечки обрели мемный статус: мол, код ужасен. На деле всё интереснее — в нём полно математических трюков и неочевидных инженерных решений, которые держат игру на плаву.
На видео разбирают внутренности Balatro:
— Формула Chips х Mult: как игра распознаёт тип руки, накладывает эффекты джокеров и считает итоговый счёт с учётом модификаторов вроде foil и holo.
— Мышь как генератор случайности: позиция курсора используется как дешёвая энтропия для RNG. Просто и работает.
— Сортировка карт через float: ранг, масть и ID карты упаковываются в отдельные десятичные разряды одного числа с плавающей точкой. Элегантный способ сравнивать карты одним значением.
— Паттерны в коде: Flyweight, вариация Strategy и другие приёмы. Не всегда по учебнику, но прагматично.
— Сборка мусора: кастомный инкрементальный GC: 0,3 мс бюджета на кадр плюс emergency-проход, если память перевалила за 300 МБ. Заимствовано из nuGC Макса Кахилла.
Много технических деталей и объяснений, почему код устроен именно так, прикрепил к посту файлом или вот ютуб кому там удобнее.
@make_game (теперь в VK и Max)
На видео разбирают внутренности 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👍10❤6❤🔥2👏1🎉1
Видео от инди-разработчика, который выпустил собственную игру и собрал весь практический опыт в один инфо-дамп. Всё, что автор узнал о разработке, маркетинге и релизе, уложенное в полчаса.
Если планируете свой релиз или просто хотите понять, как устроена внутренняя кухня инди-разработки, то можно глянуть на ютубе или в этом посте.
@make_game (теперь в VK и Max)
Если планируете свой релиз или просто хотите понять, как устроена внутренняя кухня инди-разработки, то можно глянуть на ютубе или в этом посте.
@make_game (теперь в VK и Max)
Media is too big
VIEW IN TELEGRAM
❤5🔥4👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Когда сцена должна выглядеть хорошо только с одного ракурса
😁29🗿5✍3
Наткнулся на статью аж 2019 года, но хорошо объясняющую как правильно рисовать линии в браузере. Правильно — это чтобы красиво и быстро.
Стандартный способ плох: толщину нормально не задашь, стыки между линиями и концы не оформишь. Автор предлагает вместо этого отправить в видеокарту одну простую заготовку и сказать: «размножь её для каждого участка линии, сам растяни и поверни, как нужно». Видеокарта делает это быстро, а программист получает полный контроль над толщиной, стыками и концами.
Не очень понятно объяснил, наверное, но вы лучше сами статью гляньте, там интерактивные демо внутри, хорошо сделано: https://wwwtyro.net/2019/11/18/instanced-lines.html
@make_game (теперь в VK и Max)
Стандартный способ плох: толщину нормально не задашь, стыки между линиями и концы не оформишь. Автор предлагает вместо этого отправить в видеокарту одну простую заготовку и сказать: «размножь её для каждого участка линии, сам растяни и поверни, как нужно». Видеокарта делает это быстро, а программист получает полный контроль над толщиной, стыками и концами.
Не очень понятно объяснил, наверное, но вы лучше сами статью гляньте, там интерактивные демо внутри, хорошо сделано: https://wwwtyro.net/2019/11/18/instanced-lines.html
@make_game (теперь в VK и Max)
❤6👍3
Открытый урок «Zenject в создании игр на Unity»
➡️ 21 мая в 20:00 МСК
Бесплатно. Урок в рамках старта курса «Unity-разработчик. Продвинутый уровень» от Otus.
Сначала всё просто, но со временем связи между объектами усложняются, изменения начинают ломать систему, а поддержка требует всё больше времени. Без управления зависимостями проект становится трудно масштабируемым.
На открытом уроке разберётесь, как использовать Zenject и подход DI, чтобы навести порядок в коде. Увидите, как структурировать проект, правильно связывать объекты и избежать типичных ошибок при работе с зависимостями.
📎 Ссылка на регистрацию: https://otus.ru
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Бесплатно. Урок в рамках старта курса «Unity-разработчик. Продвинутый уровень» от Otus.
Сначала всё просто, но со временем связи между объектами усложняются, изменения начинают ломать систему, а поддержка требует всё больше времени. Без управления зависимостями проект становится трудно масштабируемым.
На открытом уроке разберётесь, как использовать Zenject и подход DI, чтобы навести порядок в коде. Увидите, как структурировать проект, правильно связывать объекты и избежать типичных ошибок при работе с зависимостями.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👎2❤1
В 2013 году Disney купил Lucasfilm и прикрыл LucasArts. Разработчики Raven Software поняли, что их код вот-вот закопают навсегда и в панике выложили на GitHub исходники Jedi Outcast и Jedi Academy. Прямо как есть, не успев вычистить комментарии.
Получился редкой красоты музей переработок и отчаяния. Несколько находок:
—
—
—
—
Вот тут более полная подборка интересного из их кода.
@make_game (теперь в VK и Max)
Получился редкой красоты музей переработок и отчаяния. Несколько находок:
—
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)
1❤27
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)
Из новых тегов:
— 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
Если вы устали от бесконечных тасок и созвонов, то мы приготовили для вас игру, которая поможет отдохнуть
А заодно проверить вашу способность быстро запоминать новую инфу. Переходите по ссылке и играйте в нашу «Меморину». И делитесь результатами в комментариях!
Играть тут: https://tprg.ru/S1G2
@make_game (теперь в VK и Max)
А заодно проверить вашу способность быстро запоминать новую инфу. Переходите по ссылке и играйте в нашу «Меморину». И делитесь результатами в комментариях!
Играть тут: https://tprg.ru/S1G2
@make_game (теперь в VK и Max)
👍1
HDR output в Godot 4.7
Команда Godot подтвердила: в 4.7 движок получит нативный HDR-output на Windows, macOS, iOS, visionOS и Linux. Сейчас бета, релиз — летом.
Что даёт HDR. Монитор показывает одновременно очень тёмные и очень яркие участки кадра — солнечный блик на металле рядом с глубокой тенью. На SDR всё сжимается в 8 бит и теряет контраст. Движок отдаёт картинку в линейном пространстве, не клампя яркость.
Технические нюансы:
- scRGB и HDR10. Windows — через DXGI, Apple — через EDR.
- Pipeline остаётся прежним, переключение делается флагом в Project Settings — никакого rework шейдеров.
- Linux — через wlroots (Hyprland, KDE 6 уже умеют). X11 — нет.
RC 4.7 beta 2 доступен для тестов.
@make_game (теперь в VK и Max)
Команда Godot подтвердила: в 4.7 движок получит нативный HDR-output на Windows, macOS, iOS, visionOS и Linux. Сейчас бета, релиз — летом.
Что даёт HDR. Монитор показывает одновременно очень тёмные и очень яркие участки кадра — солнечный блик на металле рядом с глубокой тенью. На SDR всё сжимается в 8 бит и теряет контраст. Движок отдаёт картинку в линейном пространстве, не клампя яркость.
Технические нюансы:
- scRGB и HDR10. Windows — через DXGI, Apple — через EDR.
- Pipeline остаётся прежним, переключение делается флагом в Project Settings — никакого rework шейдеров.
- Linux — через wlroots (Hyprland, KDE 6 уже умеют). X11 — нет.
RC 4.7 beta 2 доступен для тестов.
@make_game (теперь в VK и Max)
🔥8
Джон Кармак ответил человеку, который собрался открывать игровую студию. Если коротко — не ждать благодарности от рынка:
Распределение возможных наград от старта игровой студии сегодня так себе. Рынок насыщен, ниша берётся только при сильном исполнении и в продукте, и в бизнесе — плюс изрядная удача. Готовьтесь сжечь семизначную сумму с не очень хорошими шансами её отбить.
Если всё-таки идти, то совет сводится к трём пунктам:
— Точно определить аудиторию. Конкретные люди, которых держишь в голове при каждом продуктовом решении. Никаких «инди-сообществ» и других абстракций.
— Сначала собрать самую маленькую игру, за которую кто-то готов заплатить. Даже она займёт сильно больше времени, чем кажется.
— Hill-climb the value: найти куски, где у игроков загораются глаза, и усилить их. Параллельно чинить то, что бесит или путает.
Звучит как стандартный стартап-совет. Только вот про семизначную сумму пугает, что сразу так жёстко то :)
@make_game (теперь в VK и Max)
Распределение возможных наград от старта игровой студии сегодня так себе. Рынок насыщен, ниша берётся только при сильном исполнении и в продукте, и в бизнесе — плюс изрядная удача. Готовьтесь сжечь семизначную сумму с не очень хорошими шансами её отбить.
Если всё-таки идти, то совет сводится к трём пунктам:
— Точно определить аудиторию. Конкретные люди, которых держишь в голове при каждом продуктовом решении. Никаких «инди-сообществ» и других абстракций.
— Сначала собрать самую маленькую игру, за которую кто-то готов заплатить. Даже она займёт сильно больше времени, чем кажется.
— Hill-climb the value: найти куски, где у игроков загораются глаза, и усилить их. Параллельно чинить то, что бесит или путает.
Звучит как стандартный стартап-совет. Только вот про семизначную сумму пугает, что сразу так жёстко то :)
@make_game (теперь в VK и Max)
😁7👍2
После почти годовой задержки наконец вышел новый LTS GameMaker. Это финальная стабильная версия текущего рантайма движка — дальше разработка движется в сторону нового рантайма GMRT.
Если вы уже сидели на свежих бетах 2024.14, то это по сути они же, только в релизном виде. А вот тем, кто переезжает со старой версии, стоит заранее заглянуть в release notes — там есть изменения, о которых лучше знать до обновления.
Все подробности расписаны в блоге GameMaker, а скачать сборку можно со страницы загрузки.
@make_game (теперь в VK и Max)
Если вы уже сидели на свежих бетах 2024.14, то это по сути они же, только в релизном виде. А вот тем, кто переезжает со старой версии, стоит заранее заглянуть в release notes — там есть изменения, о которых лучше знать до обновления.
Все подробности расписаны в блоге GameMaker, а скачать сборку можно со страницы загрузки.
@make_game (теперь в VK и Max)
❤1👍1
Ещё одна неделя позади! Что у вас нового в проектах? Делитесь демками и скриншотами своих игр в комментариях. Покажите сообществу над чем работаете!
Ссылки на свои каналы разрешены.
@make_game (теперь в VK и Max)
Ссылки на свои каналы разрешены.
@make_game (теперь в VK и Max)
1❤5👍2🔥2