Разработка и ромхакинг > Редакторы для консольных игр
[NES] Battle City - создаём и делимся своими картами 🎨
(1/1)
MRGYV:
Привет, друзья!
Наверное, нет среди нас человека, который хотя бы раз не залипал у экрана телевизора, гоняя танки в легендарную Battle City на NES. Эта игра — классика, которая объединяет поколения.
Помните те самые серые кирпичи, неуязвимый бетон, хитрые кусты и, конечно же, нашу драгоценную базу в виде орла? 🦅
А теперь вопрос к вам: Вы когда-нибудь пробовали создавать свои собственные уровни? Или мечтали воплотить в жизнь то, что не поддерживает стандартный редактор?
Я думаю, у многих в голове годами хранятся гениальные идеи карт, которые было бы круто воплотить в жизнь.
Я подготовил удобный редактор карт, который позволяет рисовать уровни для Battle City буквально за пару минут.
Давайте устроим настоящий обмен идеями. Любой может создать свой уникальный уровень (сумасшедший, сложный, красивый или смешной) и выложить его сюда.
🎯
Веб-редактор карт для Battle City Map Editor Pro. Это веб-страница (файл .html), которую ты открываешь в браузере. Она позволяет:
- 🎨 Рисовать карты для игры мышкой.
- 🎲 Генерировать карты автоматически — нажал кнопку, получил случайную карту нужного типа.
- 💾 Сохранять карты в текстовые файлы .txt и загружать их обратно.
- ⚙️ Сохранять настройки генерации в .json, чтобы потом повторить такую же генерацию.
Карта — это поле из клеток. Каждая клетка имеет число от 0 до 11 — что там стоит (пусто, стена, вода, орёл, танк и т.д.). Слева — сама карта, справа — панели управления.
Как открыть:
Скачай файл map_editor.html.
Двойной клик по файлу — он откроется в браузере.
Ничего устанавливать не нужно, всё работает локально.
🖌️ Рисование карты:
Выбор кисти
Смотри на правую панель — блок 🎨 Легенда и проценты.
ЛКМ по элементу легенды — выбрать кисть рисования (появится синяя обводка).
ПКМ по элементу легенды — выбрать кисть стирания (появится красная обводка).
Список всех тайлов с цифрами:
0 – пустота
1 – кирпич
2 – бетон
3 – вода
4 – лес
5 – лёд
6 – орёл
7 – спавн команды 1 / врагов
8 – спавн команды 2 / игрока 1
9 – спавн игрока 2 (для классики)
10 – ящик
11 – бочка
Рисование на карте:
ЛКМ — нарисовать текущей кистью.
ПКМ — стереть текущей кистью стирания.
Зажать и вести — рисуешь линию.
Зум
Кнопки 🔍 + и 🔍 − увеличивают/уменьшают карту. Полезно, если клетки слишком мелкие или наоборот.
Вы можете создать карту в БЛОКНОТЕ. И посмотреть с помощью этого редактора как она ы выглядела в игре.
Редактор формирует карты в формате:
--- Код: ---text
7 0 0 0 0 0 7 0 0 0 7 0 0 0 0 0 7
0 1 0 2 0 1 0 1 0 1 0 1 4 4 0 1 0
0 1 0 2 0 1 0 3 4 4 4 4 4 4 0 1 0
0 1 0 2 0 1 0 4 4 4 4 4 4 4 0 1 0
0 0 0 0 4 4 4 0 4 4 4 4 4 4 4 0 0
2 0 0 4 4 4 4 4 4 4 4 4 4 4 4 0 2
0 1 0 4 4 4 4 4 4 4 4 4 4 4 4 1 0
0 1 0 1 4 4 4 4 4 4 0 4 0 1 0 1 0
0 1 0 4 4 4 4 4 4 4 4 4 0 1 0 1 0
8 0 0 0 0 0 4 4 4 1 0 0 0 0 0 0 9
0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0
0 1 0 1 0 1 0 6 0 6 0 1 0 1 0 1 0
0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
--- Конец кода ---
Вставка цифрами:
Под картой есть зелёное текстовое поле
Можно вставить карту числами через пробел — карта перерисуется автоматически через 0.3 сек.
И наоборот: нарисовал → поле обновилось.
Что это даёт:
- Скопировать карту целиком в блокнот или Discord, отправить другу.
- Вставить карту из чужого файла — просто скопируй текст в это поле, и карта появится на экране.
- Поправить руками — вписал другое число в нужную клетку → карта перерисовалась через долю секунды.
- Увидеть карту без картинок, одними числами.
Связь двусторонняя:
Нарисовал кистью → числа в поле обновились.
Вписал числа → клетки на карте перерисовались.
⚙️ Режимы генерации
В верхней панели — выпадающий список 🎮 Режим игры. После выбора режима справа появляются его настройки.
- Классический:
Случайный фон + расставленные вручную орлы/игроки/враги/блоки.
- 🪞 Зеркальный
Случайный фон генерится в одной половине, затем зеркалится. Орлы, игроки, враги, блоки ставятся как указано — без отражения. Ориентация: горизонтальная или вертикальная.
- Тропа смерти
Коридор из воды и препятствий, орёл внизу/вверху, игрок рядом, враги сверху/снизу.
- 🔄 Трансформация
Применяет правила замены к уже существующей карте (нарисованной или сгенерированной). До 5 правил одновременно, каждое со своей галочкой.
📋 Работа со списками спавнов
В настройках каждого режима есть списки:
🦅 Орлы, 🟢 Игроки, 👾 Враги, 🧱 Блоки (в Classic / Зеркальном).
📍 Спавны врагов (в Defense).
В каждой строке списка:
X, Y — координаты (можно вбить руками).
🎯 — выбрать координаты кликом по карте.
✖ — удалить строку.
+ Добавить — добавить новую строку.
У Блоков ещё селект Тайл (0–5, 10, 11).
🎯 Кнопка «Распознавать»
Рядом с каждой группой есть 🎯 Распознавать:
Выключена (синяя) — рисование кистью не добавляет координату в список.
Включена (красная) — рисуешь соответствующим тайлом → координата автоматически попадает в список.
Можно включать для нескольких групп сразу.
📍 Точечный выбор координат
Кнопка 🎯 Включить выбор координат в верхней панели:
Включаешь → кликаешь по клетке → в статусе внизу видишь X, Y и тайл.
Используй, когда надо узнать координаты клетки.
Кнопка 🎯 в строке списка:
Включает прицел именно для этой строки → кликаешь по карте → X/Y строки обновляются.
💾 Сохранение
Карта → .txt
💾 Имя — имя файла (по умолчанию battle_city_map).
💾 Сохранить TXT — скачает <имя>.txt в папку загрузок.
📁 Сохранить как… — открывает диалог, где можно выбрать папку (Chrome / Edge).
📋 Копировать — копирует карту в буфер обмена.
Карта ← .txt
Выбрать файл → Загрузить TXT — загружает карту в редактор.
Настройки → .json
В настройках каждого режима:
💾 Сохранить настройки — сохраняет .json со всеми списками и параметрами.
📂 Загрузить настройки — восстанавливает всё из .json.
🎲 Генерация
Кнопка 🎲 Сгенерировать/Применить в верхней панели:
В режиме Трансформация — применяет правила замены к текущей карте.
💡 Типовой сценарий
Выбрал режим Классический.
Задал размер карты 17 x 13.
Включил 🎯 Распознавать у Орлы и Игроки.
Кистью 6 ткнул в клетку орла → координата попала в список.
Кистью 8 ткнул в 2 клетки игроков → 2 координаты в списке.
Включил 🎯 Распознавать у Враги, поставил 4 клетки кистью 7.
Выбрал Защита орлов = Бетон.
Нажал 🎲 Сгенерировать/Применить → карта с бетонной защитой вокруг орла.
Сохранил 💾 Сохранить TXT.
Сохранил настройки 💾 Сохранить настройки — на случай, если захочется повторить генерацию.
Если что-то не получается — смотри в статусную строку внизу (📐 17x13 | 🧱 245 и жёлтую подсказку под ней).
Примеры использования:
1. Ввести координаты руками.
В строке есть поля X и Y. Просто впиши числа.
2. Кликнуть по карте.
В строке есть кнопка 🎯 — нажми её, потом кликни по нужной клетке карты. Координаты подставятся сами.
3. Нарисовать кистью.
Включи у нужной группы кнопку 🎯 Распознавать (она станет красной). Теперь когда ты рисуешь кистью нужный тайл, координата автоматически добавляется в список.
Например: включил Распознавать у Орлов → рисуешь кистью 6 → в списке Орлов появилась новая строка с координатами.
Что делать со строками
+ Добавить — добавить пустую строку в список (для ручного ввода).
✖ — удалить строку из списка.
📍 Панель «Координаты»
Вверху под файлами есть 🎯 Включить выбор координат. Если её нажать:
Курсор станет прицелом.
Кликаешь по любой клетке карты.
Внизу в подсказке появится X: ..., Y: ... и какой там тайл.
Это просто справочная функция — узнать координаты клетки.
🎲 Кнопка «Сгенерировать/Применить»
Большая кнопка вверху. Что делает:
В Классическом, Зеркальном, Тропе смерти — генерирует новую карту по настройкам справа.
В Трансформации — применяет правила замены к текущей карте.
Если не нравится результат — жми ещё раз, будет другой случайный вариант.
💾 Сохранение и загрузка
Карта в файл .txt
В панели 📂 Файл:
💾 Имя — сюда вводишь название файла (по умолчанию battle_city_map).
💾 Сохранить TXT — скачивает <имя>.txt в папку загрузок браузера.
📁 Сохранить как… — откроет окно, где можно выбрать любую папку (работает в Chrome и Edge).
📋 Копировать — копирует карту в буфер обмена (чтобы вставить куда-то ещё).
Загрузка карты из .txt
Выбрать файл (кнопка рядом с «📂 Файл:») → Загрузить TXT.
Настройки в файл .json
В каждой панели режима справа внизу есть:
💾 Сохранить настройки — сохраняет все списки и параметры в .json.
📂 Загрузить настройки — восстанавливает их из .json.
Это удобно: настроил один раз генерацию — сохранил, потом всегда можешь загрузить и повторить.
💡 Типичные сценарии
Нарисовать карту руками
Открой редактор.
Возьми в легенде кисть 1 (кирпич) — ЛКМ по «кирпичу».
Рисуй стены ЛКМ по карте.
Возьми кисть 3 (вода), нарисуй речку.
Возьми 6 (орёл), поставь в центр.
Сохрани 💾 Сохранить TXT.
Выбери режим Классический.
Задай размер, нажми 🎲 Сгенерировать/Применить.
Не понравилось — жми ещё, будет новый вариант.
Хороший вариант — 💾 Сохранить TXT.
Сгенерировать карту с точными позициями
Выбери режим Классический.
Включи 🎯 Распознавать у Орлов и Игроков.
Поставь кистью 6 орла, кистью 8 — игроков.
Выключи «Распознавать».
Нажми 🎲 Сгенерировать — фон случайный, но орёл и игроки там, где ты поставил.
Хороший вариант — 💾 Сохранить TXT.
Изменить уже готовую карту
Загрузи .txt или нарисуй.
Выбери режим Трансформация.
Поставь галочку на правило, например «Заменить 1 - кирпич на 2 - бетон».
Нажми 🎲 Сгенерировать/Применить — все кирпичи стали бетоном.
🆘 Если что-то не так:
- Не вижу картинок тайлов — не страшно, редактор нарисует их сам (пиксельные квадратики). Файлы tiles/*.png опциональны.
- Кнопка 📁 Сохранить как… работает не во всех браузерах — если она не открывает окно выбора папки, используй 💾 Сохранить TXT (скачает в загрузки).
- Случайно нажал не туда — вверху есть 🗑️ Очистить, обнулит всю карту.
- Также всегда можно скопировать сгенерированные числа в блокнот.
🎓 Кратко самое главное
ЛКМ по легенде = кисть рисования, ПКМ по легенде = кисть стирания.
ЛКМ / ПКМ по карте = рисовать / стирать.
🎲 Сгенерировать/Применить = построить карту по настройкам.
💾 Сохранить TXT = сохранить карту.
🎯 Распознавать у списка = автоматически добавлять координаты при рисовании.
Зелёное поле под картой = карта цифрами, можно править руками.
Всё остальное — доп. возможности. Начни с рисования кистью, потом попробуй генерацию.
SeregaZ:
шо, опять?!?! была же уже тема... старую бы апнул.
MRGYV:
--- Цитата: SeregaZ от 26 Марта 2026, 17:43:13 ---шо, опять?!?! была же уже тема... старую бы апнул.
--- Конец цитаты ---
Что за тема? Есть тема где кто-то также создал редактор в котором люди делились картами и обсуждали их?
Добавлено позже:
Здесь можно нарисовать любую карту. Которую при желании разработчики с разрешения автора смогут использовать хоть для хака, хоть для мода. Хоть для nes, хоть ПК сеги или чего угодно. При желании можно даже для Tanktiks: The Impact или taan hak fung wan king tank.
А многие на бумаге рисовали для себя. Может кому-то интересно поделиться в удобном и наглядном формате.
Что-то я не помню тему где предлагали подобный редактор и схожие возможности.
Добавлено 27 марта 2026 года:
Давайте я что ли скину, раз все молчат:
--- Код: ---7 0 0 0 0 5 0 0 5 0 0 5 0 0 0 0 8
4 5 0 0 0 0 5 5 0 5 5 0 0 0 0 5 4
7 10 2 3 10 11 5 10 1 10 5 11 10 3 2 10 8
0 10 1 10 11 10 10 2 11 2 10 10 11 10 1 10 0
0 0 0 0 0 4 0 0 4 0 0 4 0 0 0 0 0
7 2 2 0 0 3 0 4 10 4 0 3 0 0 2 2 8
0 6 2 0 0 0 5 0 11 0 5 0 0 0 2 6 0
0 2 2 5 4 2 0 0 11 0 0 2 4 5 2 2 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7 4 10 1 10 4 10 10 2 10 10 4 10 1 10 4 8
0 4 10 3 4 2 1 11 10 11 1 2 4 3 10 4 0
0 0 0 5 0 4 5 5 0 5 5 4 0 5 0 0 0
7 4 0 0 0 5 0 5 0 5 0 5 0 0 0 4 8
--- Конец кода ---
ndivision:
MRGYV, Привет!
Благодарю! Шикарная тема.
Я сам планировал в мае (чуть посвободнее будет) -заняться подобным. Есть уже нработки которые нужно довести до ума и выложить куда нить на github.
Как я себе это представлял сделать:
1. Найти (сделать) дизсам нормальный танков (а их куча версий - я про хаки), сделать условно гибрид: classic edition (это battle tank (J) ) - и extended - это с плюшками от хаков где есть корабли, звезды и пр.
2. Новые уровни. Как показала практика - тот же DeepSeek генерит замечательные карты - если их грамотно описать.
Дополнения которые были бы интересны:
1. Возможность выбора сложности. Условно делаем 3 уровня: easy, normal, hard.
2. При наличии художника или самому - чуть перисовать спрайты, и сделать красивую заставку, и красивое завершение.
3. На музыку в танках покушаться - это святое, но по наличию музыканта - и главное знания (там нужно будет порядочно писать на ассемблере) как интегрировать движек новый в игровой процесс - можно было бы сделать и что то крутое.
Но начнем с малого - спасибо за реадктор карт.
p.s. Я уже создавал тему с подобным предложением - но тогда она как то не нашла понимания. Сейчас возможно будет иначе.
https://www.emu-land.net/forum/index.php/topic,90566.msg1630696.html#msg1630696
Добавлено позже:
MRGYV, По желанию: можешь в личку мне закинуть свой акк в телеграмме, там бы списались.
MRGYV:
--- Цитата: ndivision от 28 Марта 2026, 20:01:58 ---Благодарю! Шикарная тема.
--- Конец цитаты ---
Здорово что понравилось. Телегу скину. Но я, в ней, не сижу :)
Есть возможность описать ТЗ для deep seek?
Я писал такое ТЗ:
Создай 10 разных карт для Battle City. Для каждой карты строго соблюдай следующие правила:
1. Размер карты может быть любым от 15x15 до 25x25, но все строки должны иметь одинаковое количество колонок.
2. Легенда:
0 – пустота
1 – кирпичная стена
2 – бетонная стена
3 – вода
4 – лес
5 – лёд
6 – орёл (база)
7 – спавн врага
8 – спавн игрока 1
9 – спавн игрока 2
3. Размести 4-8 спавнов врагов (7) в разных местах. Не все наверху — распредели по карте.
4. Каждый орёл должен быть защищён, но не полностью. Используй разные типы защиты: кирпич, бетон, воду, лес.
5. Спавны игроков (8 и 9) размести в разных местах: не обязательно рядом с орлом, но так, чтобы у игроков был интересный старт.
6. Обязательно используй все типы ландшафта (3,4,5,2) в разных комбинациях. Не экономь.
7. Количество орлов: 1 или 2. Если 2 орла — расположи их в разных частях карты.
8. Карты должны быть разными:
- Карта 1: акцент на воде и узкие проходы
- Карта 2: акцент на лесе и зонах видимости
- Карта 3: акцент на льде и скользких участках
- Карта 4: акцент на бетонных укреплениях
- Карта 5: смешанный ландшафт с лабиринтом
- Карта 6: открытое пространство с точечными укрытиями
- Карта 7: два орла, разделённые рекой
- Карта 8: круговые стены и центральная битва
- Карта 9: асимметричная карта с перепадами высот (визуально)
- Карта 10: экспериментальная — придумай что-то нестандартное
9. Для каждой карты используй кодовый блок с тройными кавычками. Внутри — только цифры, разделённые пробелами.
10. Не обрамляй карты стенами по периметру.
11. Перед каждой картой напиши короткое описание (1-2 предложения), что в ней особенного.
Выдай карты одну за другой. Карта 1, описание, код. Карта 2, описание, код. И т.д.
Если честно, генератор на которым работаю в редакторе может выдавать гораздо интереснее карты. Может ИЗ не умею писать :biggrin: :biggrin: :biggrin:
Добавлено позже:
--- Цитата: ndivision от 28 Марта 2026, 20:01:58 ---easy, normal, hard.
--- Конец цитаты ---
А чем сложность отличаться будет?
Добавлено позже:
--- Цитата: ndivision от 28 Марта 2026, 20:01:58 ---сделать условно гибрид: classic edition (это battle tank (J) ) - и extended
--- Конец цитаты ---
Что за extended?
Добавлено позже:
--- Цитата: ndivision от 28 Марта 2026, 20:01:58 ---перисовать спрайты,
--- Конец цитаты ---
Занимался этим... Честно? Смысла нет. Проще использовать старые. Это ностальгия. Потом можно и поменять, если будет смысл...
Добавлено позже:
--- Цитата: ndivision от 28 Марта 2026, 20:01:58 ---Я уже создавал тему с подобным предложением - но тогда она как то не нашла понимания.
--- Конец цитаты ---
Я читал эту тему. Идей много классных. Я, кстати, для себя пишу. Не на NES. Так как его вообще не знаю. Готов поделиться идеями и наработками. Может выстрелит. Также могу подсказать пару отличных проектов, которые уже работают. Можно от них взять идеи или связаться с авторами и придумать совместно что-нибудь интересное 😉
MRGYV:
Новая версия:
-Поправлены баги;
- Можно указывать тайлы на ЛКМ и ПКМ;
- Добавлены алгоритмы для генерации разных типов карты;
- Добавлена возможность сохранять настройки для генерации с интересующими настройками генератора.
Я так понимаю посоревноваться и обсудить не выйдет? Кто лучше рисует? У кого интереснее идеи по картостроению? Узнать и сравнить насколько человек интереснее ИИ рисует? Жалко. Была бы интересная дискуссия.
В любом случае поделюсь генератором. Может кому пригодится.
Предложения для доработки тоже приветствуются. Возможно кто-то видит идеи для генерации более интересные.
Я на сегодня результатом доволен. Карты можно получить интересные. Примеры оставил. Есть ещё идея. Подумаю над ней позже. Хочется чтобы была возможность нарисовать карту самому и загрузить её как шаблон. И в пару кликов поменять кирпичи на бетон, лес на лед и т.д. Это интересно было бы для карт по типу Tower defender. Нарисовать лабиринт самому и менять его с помощью настроек.
MRGYV:
Обновленная версия (v3). Поправил в шапке
MRGYV:
Решил поделиться версией 5:
Что нового сразу для 4 и 5 версии:
В качестве примера перенесены 53 карты из battle city
Оставлены режимы генерации:
-Классический
- Зеркальный
- Тропа смерти
- Трансформация
Зеркальный - бывший переработанный team vs team. Смысл в том, что мы рисуем блоки и при генерации они отзеркаливаются вертикально или горизонтально.
Тропа смерти - без изменений.
Трансформация - улучшен алгоритм, добавлены дополнительные опции. Режим позволяет нарисовать карту(или загрузить) и в пару кликов заменить одна тайлы на другие. Воду на Лес. Бетон на кирпич и т.д.
Добавлено возможность добивать любое количество игроков и орлов на картах
Добавлено возможность рисовать добавить блоки, которые не будут удаляться при генерации карты
Добавлена возможность а с помощью кнопки распознать установить орлов, игроков и блоки.
Добавлена возможность исправление цифр под картой и мгновенное отображения изменений на карте
Обновлю в шапке, а также добавлю новую инструкцию.
Agent Smith:
--- Цитата: MRGYV от 26 Марта 2026, 17:28:27 ---Вы когда-нибудь пробовали создавать свои собственные уровни?
--- Конец цитаты ---
MRGYV, редактор карт прилагался к игре. Все создавали
MRGYV:
--- Цитата: Agent Smith от 13 Сентября 2026, 13:43:21 ---MRGYV, редактор карт прилагался к игре. Все создавали
--- Конец цитаты ---
Как выяснилось не все. Мой друг, например, никогда не делал уровни. Потому что знал, что редактор не позволяет сохранить уровни в игре. Поэтом считал, что тратить время и рисовать что-то временно нет смысла. Более того в игре и так было много уровней. А ещё были хаки. По факту ни я ни он во все уровни в детстве не играли. Я не уверен, что и сегодня играл во все уровни в танках. А вот рисовал я уровни части. И сыну рисовать больше нравится чем играть в сами танки.
Agent Smith:
MRGYV, :thumbup:
Навигация
Перейти к полной версии