Добро пожаловать в мир, где выживают сильнейшие! В этой игре юниты — это автономные существа, которые борются за существование, исследуют окружающий мир, ищут пропитание и развиваются, чтобы обеспечить будущее своего рода. Каждый юнит обладает собственным кодом поведения, который определяет его действия и стратегию выживания.
Игровой мир представляет собой глобальную карту, населенную юнитами и точками пропитания. Основная задача юнитов — находить эти точки, чтобы пополнять свою энергию. Энергия является жизненно важным ресурсом, необходимым для выполнения любых действий и операций. Отсутствие энергии приводит к гибели юнита.
Каждый юнит — это уникальное существо со своей родословной, которая определяется уникальным ID. Этот ID передается всем потомкам, позволяя отслеживать генеалогию. В начале игры каждый новый юнит стартует с 200 единицами энергии.
Энергия расходуется на:
Важно: Если энергия юнита опускается до нуля или выполнение команды приводит к ошибке, юнит погибает.
Юниты выполняют заранее заданный код, состоящий из последовательности команд. Команды делятся на два типа: действия и операции.
Эти команды определяют физическое взаимодействие юнита с миром. За один игровой ход юнит может выполнить только одно действие.
MOVE [направление]
UP (вверх), DOWN (вниз), LEFT (влево), RIGHT (вправо).MOVE UP (двигаться вверх)WAIT
WAIT (ждать)REPRODUCE [кол-во энергии]
REPRODUCE 100 (размножиться, передав потомку 100 энергии)Эти команды выполняются до тех пор, пока не будет встречена команда действия (MOVE, WAIT, REPRODUCE). Они позволяют юниту обрабатывать информацию и принимать решения.
SCAN [адрес памяти], [тип объекта]
[адрес памяти]) будет содержать количество найденных объектов.UNIT: Сканирует других юнитов.FOOD: Сканирует точки пропитания.ALL: Сканирует все объекты (юниты и пропитание).SCAN A1, FOOD находит 2 точки пропитания с относительными координатами (-1, 0) и (2, 2), то память будет выглядеть так:
A1 = 2
A2 = -1
A3 = 0
A4 = 2
A5 = 2
ADD [адрес памяти], [адрес памяти/число]
ADD A1, A2 (A1 = A1 + A2); ADD A3, 5 (A3 = A3 + 5)SUB [адрес памяти], [адрес памяти/число]
SUB A1, A2 (A1 = A1 - A2); SUB A3, 10 (A3 = A3 - 10)RAND [адрес памяти], [максимальное значение]
RAND A1, 100 (A1 = случайное число от 0 до 100)GOTO [метка/номер строки]
GOTO LOOPSTART; GOTO 15[метка]:
GOTO или IF. Каждая программа юнита должна содержать хотя бы одну метку START:.START: (начало программы); SEARCHFOOD: (метка для поиска еды)IF [выражение] GOTO [метка/номер строки]
< (меньше)> (больше)= (равно)IF A1 > 0 GOTO FOUNDFOOD (если в A1 больше нуля, перейти к метке FOUNDFOOD)Юниты используют простую систему памяти для хранения числовых значений. Доступ к ячейкам памяти осуществляется по адресу памяти (например, A1, A10 и т.д.). Доступно 30 ячеек памяти A0-A29
Юнит погибает в двух случаях:
Желаю удачи в создании вашей игры! Если у вас возникнут дополнительные вопросы или потребуется дальнейшая доработка документации, обращайтесь!