Balatro — рогалик-колодостроитель на Love2D, написанный одним человеком (LocalThunk). Игра стала хитом, а её исходники после утечки обрели мемный статус: мол, код ужасен. На деле всё интереснее — в нём полно математических трюков и неочевидных инженерных решений, которые держат игру на плаву.
На видео разбирают внутренности Balatro:
— Формула Chips х Mult: как игра распознаёт тип руки, накладывает эффекты джокеров и считает итоговый счёт с учётом модификаторов вроде foil и holo.
— Мышь как генератор случайности: позиция курсора используется как дешёвая энтропия для RNG. Просто и работает.
— Сортировка карт через float: ранг, масть и ID карты упаковываются в отдельные десятичные разряды одного числа с плавающей точкой. Элегантный способ сравнивать карты одним значением.
— Паттерны в коде: Flyweight, вариация Strategy и другие приёмы. Не всегда по учебнику, но прагматично.
— Сборка мусора: кастомный инкрементальный GC: 0,3 мс бюджета на кадр плюс emergency-проход, если память перевалила за 300 МБ. Заимствовано из nuGC Макса Кахилла.
Много технических деталей и объяснений, почему код устроен именно так, прикрепил к посту файлом или вот ютуб кому там удобнее.
@make_game (теперь в VK и Max)
Post #1886
2.54K