Думайте

Мы используем файлы cookie, чтобы сайт работал и становился удобнее. Продолжая пользоваться «Думайте», вы соглашаетесь с Политикой конфиденциальности.

показать все результаты

Ничего не найдено

Heroes of Might and Magic III на компьютере размером с банковскую карту

1 день назад авторская 26

Как культовая стратегия 1999 года уместилась в 512 килобайт памяти — и почему эта история не про игру, а про мышление в условиях жёстких ограничений.

Если вы хоть раз ловили себя на «ну ещё один ход» в три часа ночи — вы знаете, о чём речь. «Герои меча и магии III» — одна из тех игр, которые люди запускают спустя двадцать пять лет после выхода. И однажды я задал себе странный вопрос: влезет ли эта легенда в устройство, которое помещается в ладони и весит меньше ста граммов?

Спойлер: влезла. Целиком — с подземельями, осадой замков, тремя армиями противников и охотой за Граалем. Но интереснее не «влезла», а что для этого пришлось понять.

Что это за «компьютер размером с карту»

Речь о M5Stack Cardputer — крошечном компьютере 84 × 54 миллиметра (буквально размер банковской карты, только толще) и весом 93 грамма. У него есть полноценная клавиатура на 56 клавиш, цветной IPS-экранчик чуть больше дюйма, слот для карты памяти и батарея. Внутри — чип ESP32-S3 на 240 мегагерц.

А теперь цифра, ради которой всё затевалось: оперативной памяти у него 512 килобайт. Не гигабайт — килобайт. Одна фотография с вашего телефона занимает в несколько раз больше места, чем вся память, в которую должен поместиться целый игровой мир: карта 120×120 клеток в двух уровнях, сотни существ, армии врагов и картинка на экране. Для такого устройства можно писать собственные прошивки — программы, которые сами управляют железом, от первого пикселя до каждого нажатия клавиши. Этим я и занимаюсь. «Герои» стали самым амбициозным экспериментом.

Сразу честно: это не «та самая» игра

Оговорка, без которой нельзя. Запустить оригинальные «Герои III» на Cardputer невозможно в принципе — другой тип процессора, в тысячи раз меньше памяти. Поэтому я не «перенёс файл игры». Я заново написал её по мотивам — пересобрал механики и перерисовал графику с нуля под крошечный экран.

И тут начинается самое любопытное. Чтобы что-то пересобрать, сначала нужно ответить на вопрос, который мы обычно не задаём: из чего, собственно, состоят «Герои»?

Главный урок: я не упрощал игру — я сжимал её представление

Соблазн очевидный: выкинуть половину, оставить «походить и подраться». Я пошёл другим путём — глубину трогать не стал.

В моей версии есть два уровня карты, поверхность и подземелье, связанные подземными вратами. Есть три фракции — Замок, Инферно и Башня — со своими существами от пехоты до ангелов, дьяволов и титанов. Есть отстройка города с гильдией магов и шестью заклинаниями, развитие героя с выбором умений при каждом новом уровне, артефакты, наёмники, осада замков с катапультой и разрушаемыми стенами. Даже случайные события недели на месте: выпадет «Месяц Чумы» — и армии поредеют, «Неделя Удвоения» — и прирост войск удвоится. И, конечно, фирменная охота за Граалем: обойди обелиски по всей карте, чтобы открыть тайник.

Сжимать пришлось не игру, а то, как она хранится и рисуется. И вот тут — мой любимый трюк. Представьте весь игровой мир как одну огромную таблицу чисел. Число в каждой клетке говорит, что там лежит: 0 — трава, 6 — снег, числа от 20 до 28 — девять кусочков, из которых собран замок. А любое число от 100 и выше означает: «здесь стоит монстр, и само число подсказывает, какой именно». Одна таблица одновременно хранит и рельеф, и города, и положение каждого врага — делает работу пяти. На компьютере с гигабайтами памяти так писать нелепо. В 512 килобайтах — это единственный способ уместиться.

Ограничения, которые пришлось победить

Экран в сто раз меньше. Карта приключений в оригинале — на весь монитор. Здесь — окошко 240 на 135 точек, меньше иконки приложения на вашем телефоне. Поэтому игрок видит не всю карту, а небольшое «окно», которое едет за героем, плюс мини-карту-радар в углу. Вывод: детализация — не то же самое, что суть. Карту можно ужать в сто раз, и игра останется собой.

Нет мыши. «Герои» придумывались под мышь: кликни, перетащи. Мыши тут нет — зато есть 56 физических клавиш. Я переложил всё управление на клавиатуру, и неожиданно стало даже удобнее: ход — буквами, бой — горячими клавишами, ничего не надо «целиться» курсором.

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

А ещё там живёт интеллект

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

Маленькое признание про ностальгию

Игра сама сохраняется на карту памяти каждые десять ходов. И в этот момент на экране на полторы секунды появляется «SAVING… не выключайте питание». Технически эта пауза не нужна — сохранение происходит почти мгновенно. Я добавил её специально. Потому что половина удовольствия от старых игр была именно в этом ожидании, в этой маленькой тревоге «только бы не выключилось». Иногда инженерия — это не про эффективность, а про чувство.

Честно: это только первый ход

Скажу прямо — проект живой и ещё не достроен. Прямо сейчас игра умеет сохраняться, а вот меню загрузки я как раз дописываю. Впереди — звук и музыка, надевание артефактов в слоты на «кукле героя», морские путешествия с кораблями, сюжетная кампания с заранее нарисованными картами. Каждую такую веху я покажу отдельной записью.

Зачем я всё это рассказываю

Когда у тебя гигабайты памяти и мощный процессор, ты не думаешь — ты наваливаешь сверху ещё и ещё. Ограничения работают наоборот: они заставляют искать суть. Чтобы уместить «Героев» в 512 килобайт, мне пришлось понять, что эта игра — вовсе не про красивые замки и трёхмерных драконов. Она про простой и вечный цикл: исследуй → развивайся → принимай решение → побеждай. Всё остальное — обёртка, и её можно ужать.

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

Спасибо, что дочитали. И передавайте привет тем, кто до сих пор шепчет «ну ещё один ход».

Роман Раевский
Полезность 88%
· +2 высоко оценили
Интересность 81%

Комментарии 2

Войдите, чтобы оставить комментарий.

Андрей Миронов уровень 1 в 12 часов
Хорошая статья, если учесть, что она действительно не про программирование. Вообще минус всех современных игр - отсутствие интересного сюжета (внутреннего содержания). В погоне за графикой и спецэффектами пропадает что-то живое, какой-то внутренний мир. P.S. В игры не играю уже лет 10.
полезно
уместно
Роман Раевский уровень 1 в 1 день
Думал написать про создание игры, но неожиданно получилось с каким-то философским оттенком.
полезно
уместно

Оценить запись

Полезность 88%
· +2 высоко оценили
Интересность 81%

Поделиться