Corewar
Corewar играют две программы, написанные на Redcode, низкоуровневом языке, похожем на ассемблер.
Игроки пишут программу для устранения всех противников в памяти (ядре) виртуального компьютера.
Цель "песочницы" Corewar — написать код, который приведет к завершению кода вашего оппонента. Набор задач с возрастающей сложностью (как и во всех Zachlikes) еще предстоит создать.
Каждая ячейка памяти содержит инструкцию и два значения A и B. A и B используются как указатели адресов при выполнении инструкции. A и B также могут использоваться как данные, когда на них ссылается другая инструкция.
Эта игра является частью Zachlike Jam и в настоящее время находится в стадии разработки.
На приведенном выше экране с танцующими буквами показана память на 800 ячеек (ядро) с 1 инструкцией на ячейку памяти. Буквы представляют собой первый символ кода операции, хранящегося в этой ячейке памяти (таким образом, D = DAT, M = MOV, J = JMP и т. д.). Синий/красный цвет показывает, кто "владеет" (записал) эту ячейку памяти, а выделенные области показывают указатели инструкций для всех процессов этого цвета.
Пример кода воинаЭта программа перезапишет каждую четвертую позицию памяти инструкцией DAT, что потенциально может повредить и убить другой процесс:
0000: ADD # 4, $ 3
0001: MOV $ 2, @ 2
0002: JMP $ -2, # 0
0003: DAT # 0, # 0 р>
Изучаем красный код
Прочитайте руководство для начинающих по Redcode – подробное введение в язык Corewar. Далее бНиже вы найдете обзор поддерживаемых кодов операций и режимов адресации в этой версии Corewar.
Пользовательский интерфейс*скриншот главного меню*
При запуске картриджа вы входите в главное меню со следующими опциями:
Симулятор - запустить бой между двумя воинами
Редактор - написать код для кампании воина
Кампания - Завершить список испытаний (еще не реализовано)
Руководство - Внутриигровые подробности в инструкциях .
*скриншот выбора воина*
Выберите, какие два воина (синий и красный) будут сражаться друг с другом. Вы также можете заставить воина сражаться с копией самого себя.
*вступительный скриншот симулятора*
Воины загружаются в ядро на одинаковом расстоянии (но со случайным смещением).
Размер ядра по умолчанию составляет 800 ячеек и будет работать в течение 8000 циклов. В нижней строке вы можете увидеть текущий цикл (белый #0), количество синих процессов (#1) и количество красных процессов (#1).
Когда у воина больше нет процессов (#0), он проигрывает, если оба воина все еще работают после 8000 циклов, игра считается ничьей.
Символы M,J,D,S,A и т. д. являются первыми символами кода операции в памяти, что дает вам представление об "отпечатках пальцев" каждого воина. Выделенный символ — текущая активная инструкция из очереди процесса.
Нажмите ❎, чтобы запустить/приостановить симуляцию. Нажмите 🅾️, чтобыпройти через это один цикл за один раз. Когда моделирование приостановлено, вы можете проверить память, перемещая курсор отладки (желтый квадрат) с помощью клавиш со стрелками.
*скриншот паузы в симуляторе*
В режиме паузы вокруг курсора отладки (выделено желтым) отображается объем памяти. Также показаны синие и красные активные инструкции.
*скриншот паузы в симуляторе*
Поработав некоторое время, вы можете увидеть, что оба воина породили множество процессов и заполнили ядро своими данными/инструкциями.
*скриншот запуска симулятора*
Запускаем ❎ симуляцию на полной скорости.
*скриншот конца симулятора*
Моделирование закончилось на 8000 циклов, оба воина еще живы (синий с 7 процессами и красный с 26), в результате ничья. Вы можете перезапустить ❎ симуляцию или вернуться 🅾️ в главное меню. Если вы хотите выйти из симуляции до ее окончания, одновременно нажмите кнопки ❎ и 🅾️ во время паузы.
редактор*скриншот редактора*
После запуска редактора вы можете просмотреть и изменить инструкции для текущего воина. Редактирование осуществляется с помощью 6 кнопок PICO-8; 4 клавиши со стрелками и кнопки ❎ и 🅾️. В редакторе кнопка ❎ обычно используется для редактирования/подтверждения, а кнопка 🅾️ — для отмены/сохранения и возврата в главное меню.
Вверху экрана отображается имя текущего воина (MICE), стартовая позиция (также обозначается tон -> стрелка в строке 001) и размер (8) кода.
В первом столбце указаны номера строк (000), за которыми следуют инструкция/код операции (DAT), модификатор адреса A (#), номер A (0), модификатор адреса B (#) и Адрес Б (0).
*изменить скриншот линии*
Используйте кнопки вверх/вниз, чтобы изменить текущую строку, вы можете войти в режим редактирования строки, нажав кнопку ❎, которая позволяет добавить новую строку выше/ниже (вверх/вниз) текущей строки, удалить текущую строку (слева) и установите начальную позицию (справа) на текущую строку. Вы можете вносить несколько изменений, находясь в режиме редактирования строки. Нажмите ❎, чтобы подтвердить изменения, или нажмите 🅾️, чтобы отменить их.
Используйте кнопки влево/вправо, чтобы выбрать столбец в текущей строке. Затем вы можете изменить значение столбца, нажав кнопку ❎.
*изменить скриншот кода операции*
При редактировании кода операции вы можете переключаться между кодами операций с помощью кнопки вверх/вниз. Нажмите ❎, чтобы подтвердить изменение, или нажмите 🅾️, чтобы отменить его.
*изменить скриншот режима адреса*
При редактировании кода операции вы можете переключаться между кодами операций с помощью кнопки вверх/вниз. Нажмите ❎, чтобы подтвердить изменение, или нажмите 🅾️, чтобы отменить его.
*изменить снимок экрана с номером*
При редактировании номера A или B вы можете изменить номер с шагом 1 с помощью кнопок вверх/вниз и с шагом 10 с помощью кнопок влево/вправо. Нажмите ❎, чтобы подтвердить изменение, или нажмите 🅾️, чтобы отменить его.
Красный кодЭта версия Corewar пытаетсяследуйте стандарту Redcode ICWS '94,
со следующими ограничениями для простоты и ограничениями PICO-8:
- только режимы #$@<
- без модификаторов кода операции (с использованием ICWS' 88 значений по умолчанию)
- без выражений
- без макросов
- без псевдоинструкций ORG, EQU или END
- без комментариев
Коды операций можно разделить на шесть групп:
Данные:
DAT — сохраняет данные, процесс, выполняющий DAT, завершается
Копирование:
MOV — копирование содержимого A в B
Простая математика:
ADD — добавить содержимое A к содержимому B
SUB — вычесть содержимое A из содержимого B
MUL - умножить содержимое A на содержимое B
DIV - разделить содержимое B на содержимое A
MOD - разделить содержимое B на содержимое A, взяв остаток
Управление потоком:
JMP — передача управления A (содержимое B игнорируется)
JMZ — передача управления A, если содержимое B равно нулю
JMN — передать управление A, если содержимое B не равно нулю
DJN — уменьшить содержимое B, затем передать управление A, если оно не равно нулю
SEQ — пропустить следующую инструкцию, если содержимое A и B равны
SNE — пропустить следующую инструкцию, если содержимое A и B не равно
SLT — пропустить следующую инструкцию, если содержимое A меньше B
Управление процессом:
SPL – создать новый процесс в A (содержимоеB игнорируется)
Разное:
NOP — ничего не делать (в целях отладки)
Каждый адрес имеет режим адресации и указатель. Все указатели относятся к месту хранения адреса. 0 относится к текущему местоположению. 1 относится к следующему местоположению, а -1 к предыдущему. Существует 4 режима адресации:
$ - прямой - адрес представляет собой позицию по указателю
\# - непосредственный - адрес представляет собой текущую инструкцию
@ - B косвенный - значение B позиции по указателю указывает на адрес
< - предварительно уменьшить B косвенно - уменьшить значение B местоположения в указателе, а затем использовать косвенную адресацию B
Все значения берутся по модулю размера памяти (CORESIZE). Диапазон значений от 0 до CORESIZE-1. Например, если CORESIZE равен 800, -3 сохраняется как 797 (CORESIZE-3).
Как скачать Corewar через торрент
Всего несколько простых шагов:
- Устанавливаем программу μTorrent, через которую мы будем скачивать торренты
- Выбираем и скачиваем подходящий торрент-файл репака Corewar
- Двойным кликом открываем скаченный файл, программа μTorrent запустится автоматически и предложит выбрать место для сохранения дистрибутива.
- После того как репак скачается, запускайте его. Начнется установка и... это все, приятной игры!