Бинарная сериализация данных

хочу рассказать и даже похвастаться своей великолепной системой сохранение в игре. Коротко об игре - это грант стратегия, 2D, пиксель арт, грубо говоря хойка на минималках, но не дешевый-убогий клон(возможно)

Так как в айти меня на работу не возьмут уже явно(спасибо ии и вайбокодерам с нарисованными резюме), из-за того, что у меня нулевой реальный коммерческий опыт, только неплохой фул-стек пет-проект (ASP+React), я буду тут хвастаться

Вообщем, бинарная сериализация - это последовательная запись двоичного кода, одна ошибка и ты трупак. Зачем же мне, какому-то инди-разработчику такая сложная система? вот многомиллионная компания парадокс делает на своем каком-то фрейме(или типа того) сохранения и ничего, миллионы яростный и радостных фанатов, ответ мой не так прост. Выбор мой был не очевиден, ведь можно же в json сохранять, вообще отказоустойчивость максимального уровня, но решил сделать глубокий анализ, ведь нужно смотреть не на сегодняшнюю картину, а вперед, на года 2 в будущее как минимум, а так же не забывать, что мой m1 pro и i5 12600kf и все это на быстрых ссд - это не база, это премиум гейминг (надеюсь тут не найдется школник, который будет доказывать, что я недалекий, ведь этому процессору вот уже пятый год и на нем только в сапера играть можно). Много жителей и нашего СНГ и Азии, Африки и т.д., кто сидит на условным pentium g4560, и у него все современные игры даже в 30 фпс не потянет.

Ближе к сути. Бинарная сериализация имеет доминирующие преимущества: 1. Скорость чтения и записи безумная, ОС живет в среде бинарников, для нее это то, что доктор прописал, в json приходилось бы string переводить в машинный язык, тут нет 2. Вес, тоже самое, это самый минимальный вес, который может только быть. Сегодняшние реали видели? Когда ссд на 1тб стоит 15к и это еще в лучшем случае кингстон уровня А400, не хочется его забивать хрен знает чем. Факты: я еще два года назад, когда игра была вообще неиграбельна сделал сохранения в json, там сохранялось буквально 50 переменных каждого возможного города(пустыря/биома) и 5 глобальный переменных, типа деньги, жители, ресурсы и вес составлял 700кб, вот сейчас, бинарник, если сохранять игру без ботов, без реальных городов, максимально близко к тому сейву, получится 14кб, разница в 20 раз, хотя поверьте, за 2 года там раза в 5 больше стало переменных, которые должны сохраняться. В мид-гейме на обычного размера карты, с 30 ботами и даже с армии ботов и игрока уже 90-120кб, понимаете? Вот хойка, там ботов конечно же больше и переменных больше, но все равно, когда вес в мид-гейме(43-44 год) составляет 3-5 мб, это уже при автосейве имеются подлагивания, а когда сохранений 100? Пол гигабайта только сохранения! 3. Безопасность, json изменить как нефиг делать, если он не зашифрован, конечно же можно и шифронуть и веса добавить, но думаю это легко обходится, а если шифровать слишком круто - то представьте мало того, что сохранение весит более 4096кб, так еще цп его должен зашифровать, прям раздача фризов половине игроков!

Чем же еще меня радует мой скрипт сохранения: это его оптимизация и безопасность от битых файлов и фирменно расширение файла (.deuterium) поподробнее и по порядку: 1. Оптимизация. Каждая клетка, где нет города - сохраняет только необходимую информацию для того, чтобы в будущем построить город(20 переменных где-то), а клетка с городом уже все сохраняет(200 переменных как минимум) и так со всеми 2. Безопасность, у меня стоят два magic number, в начале и в конце если кто-то попытается подкинуть левый файл, игра просто скажет, что это не ее файл, даже если это .deuterium, все равно не получится вызвать краш. Сюда же можно приплести защиту от хитрых ручек, чтобы узнать как прочитать сохранение самому - нужно или взломать саму игру(ии уже с этим справится, к сожалению) или методом тестов, как в детстве с Cheat Engine. Вообщем все на сегодня, есть еще что про это рассказать, вывод будет таким: бинарники - это сложно, но круто. Спасибо)