June 20, 2021

Gloom Robots

Основы игры

2д-подземелье, заполнено блоками, изначально есть пещеры, залежи руды, поселения людей: ядро, люди и армии.
Соседним блоком считается блок рядом по вертикали или горизонтали.
Игра начинается с роботом, имеющим модули: протоДЛАНЬ, фабрика и робостанция.

Размеры: 0xFFF на 0xFFF.

Существующие блоки

Пустота.
Пустой блок.

Камень.
Из него преимущественно состоит подземелье.
Создаётся в: трансмутатор-фабрика.
Добывается: протоДЛАНЬ.

Руда.
Ценный ресурс. Встречается реже, чем камень. Используется во многих рецептах.
Создаётся в: трансмутатор-фабрика.
Добывается: рудоДЛАНЬ.

Начало

Модуль протоДЛАНЬ.
Дистанционно Лимитированный Аппарат Навигации.
С помощью этого модуля робот может считывать данные с соседних блоков, передвигаться по подземелью, добывать соседние блоки в хранилище и доставать их оттуда. Считывает 12 клеток вокруг: все те, до которых может доехать за 2 хода. Доступные блоки: камень, модули, каркас
Действия: втянуть блок (4 стороны), вытянуть блок (4 стороны).
Создаётся из: камень, камень.
Создаётся в: фабрика.
Добывается: протоДЛАНЬ.

Модуль ДЛАНЬ-фабрики.
Этот модуль позволяет создавать улучшенные модули ДЛАНЬ.
Действия: создать блок по рецепту.
Создаётся из: камень, протоДЛАНЬ.
Создаётся в: фабрика.
Добывается: протоДЛАНЬ.

Модуль рудоДЛАНЬ.
Улучшенный модуль ДЛАНЬ, способный добывать руду.
Действия: втянуть руду, достать руду.
Создаётся из: камень, протоДЛАНЬ.
Создаётся в: ДЛАНЬ-фабрика.
Добывается: протоДЛАНЬ.

Каркас.
Сложенная для транспортировки основа будущего робота, состоящая из процессора с регистрами и журналом исполнения команд. Основной ресурс в рецептах робостанции. Может программироваться для автоматического выполнения заданных действий с использованием встроенных модулей.
Создаётся из: камень, руда.
Создаётся в: фабрика.

Модуль фабрики.
С помощью этого модуля робот может создавать блоки из добытых или ранее созданных блоков. Процесс создания: робот по заданному рецепту пытается создать из блока внутри и блока рядом (поиск идёт с верхнего блока по часовой стрелке), если нужные блоки есть, то в блоке извне создаётся новый предмет.
Действия: создать блок по рецепту.
Создаётся из: руда, протоДЛАНЬ.
Создаётся в: фабрика.
Добывается: протоДЛАНЬ.

Модуль робостанции.
С помощью этого модуля робот может создавать и разбирать других роботов. Робот это каркас и один или несколько модулей. Например, фабрика - это робот с модулем фабрики. Процесс создания робота как в модуле фабрики - внутри модуль, снаружи каркас. Разборка аналогично. Программирование: робот выполняет свою программу, загружаемую с сервера; а точнее: конкретную команду в конкретной программе; подробнее в отдельной теме.
Действия: установить модуль в каркас, забрать определённый модуль с каркаса.
Создаётся из: руда, протоДЛАНЬ.
Создаётся в: фабрика.
Добывается: протоДЛАНЬ.

Робот.
Робот это каркас и один или несколько модулей. Простейший робот - это робот с модулем протоДЛАНЬ. Робота можно программировать сообразно доступным действиям его модулей: передвижение, добыча, создание блоков и так далее.
Действия: описаны в теме про программирование.
Создаётся из: модуль, каркас.
Создаётся в: робостанция.
Добывается: через разборку на модули и каркас.

Обитатели подземелья

Ядро.
Основа поселения людей. Позволяет появляться людям при наличии некоторого их количества рядом.
Создаётся в: трансмутатор-фабрика.

Модуль ядроДЛАНЬ.
Улучшенный модуль ДЛАНЬ, способный добывать Ядро и Искажённое Ядро.
Действия: втянуть Ядро, достать Ядро.
Создаётся из: руда, протоДЛАНЬ.
Создаётся в: ДЛАНЬ-фабрика.
Добывается: протоДЛАНЬ.

Люди.
Мирные единицы. Основной ресурс в рецептах алтарь-фабрики. Если на клетку с людьми заедет робот, то уничтожит их.
Появляются, если есть как минимум две соседние клетки с людьми и одна клетка с Ядром по диагонали, из пустой клетки или клетки с армией.

Модуль слизеДЛАНЬ.
Улучшенный модуль ДЛАНЬ, способный добывать людей в соседних клетках.
Действия: втянуть людей, достать людей.
Создаётся из: руда, протоДЛАНЬ.
Создаётся в: ДЛАНЬ-фабрика.
Добывается: протоДЛАНЬ.

Армия.
Враждебная единица. Если на клетку с армией заедет робот, то армия его уничтожит.
Появляется в пустой соседней клетке с людьми каждый ход.

Модуль огнеДЛАНЬ.
Улучшенный модуль ДЛАНЬ, способный уничтожать соседние армии.
Действия: уничтожить армию.
Создаётся из: руда, протоДЛАНЬ.
Создаётся в: ДЛАНЬ-фабрика.
Добывается: протоДЛАНЬ.

Жертвоприношения

Модуль алтарь-фабрики.
Этот модуль позволяет использовать захваченные мирные единицы.
Действия: создать блок по рецепту.
Создаётся из: руда, слизеДЛАНЬ.
Создаётся в: фабрика.
Добывается: протоДЛАНЬ.

Модуль деконструктора.
Позволяет разбирать блок на составляющие его ресурсы (кроме роботов - они в робостанции).
Действия: разобрать блок внутри (с выбором стороны выходного блока).
Создаётся из: руда, люди.
Создаётся в: алтарь-фабрика.
Добывается: протоДЛАНЬ.

Модуль телепорта.
Позволяет переместить заданный блок из робота в другого робота с модулем телепорта. Телепортация: команда с id принимающего робота. Каждая телепортация потребляет блок людей рядом.
Действия: телепортировать блок заданному роботу.
Создаётся из: руда, люди.
Создаётся в: алтарь-фабрика.
Добывается: протоДЛАНЬ.

Демонология

Искажённое Ядро.
Превращает людей и армии в соседних клетках в демонов.
Создаётся из: руда, Ядро.
Создаётся в: алтарь-фабрика.
Добывается: ядроДЛАНЬ.

Демоны.
Превращает людей и армии в соседних клетках в демонов. Уничтожают роботов рядом.

Модуль святоДЛАНЬ.
Оберегает от демонов. Позволяет добывать демонов в соседних клетках.
Действия: втянуть демонов, достать демонов.
Создаётся из: руда, протоДЛАНЬ.
Создаётся в: ДЛАНЬ-фабрика.
Добывается: протоДЛАНЬ.

Трансмутатор-фабрика.
Позволяет приносить в жертву демонов для создания камня, руды и Ядер, а также использовать Искажённые Ядра.
Действия: создать блок по рецепту.
Создаётся из: руда, святоДЛАНЬ.
Создаётся в: фабрика.
Добывается: протоДЛАНЬ.

Роботы Мрака

Мрак.
Первозданная сущность, управляющая роботами. Основа этого мира.
Создаётся из: руда, демоны.
Создаётся в: трансмутатор-фабрика.
Добывается: протоДЛАНЬ.

Врата Мрака.
Струящийся ужас исходит от них. Через них Мрак возвращается для неведомых целей.
Создаётся из: камень, Мрак.
Создаётся в: трансмутатор-фабрика.
Добывается: протоДЛАНЬ.

Если выложить Мрак на Врата, то они поглотят его. И это будет только началом.

Механика

При исполнении команды, если её невозможно выполнить, то она пропускается.

Робот каждый такт выполняет команду по адресам из регистров номера программы и номера команды - одну и ту же программу могут исполнять несколько роботов. Также роботы, меняя значения этих регистров, могут менять как и номер текущей команды, так и программы - можно сделать аналог call из ассемблера. При этом для реализации ret нужно сохранять предыдущие значения номеров программы и команды, потом восстанавливая их.

В любой момент времени игрок может посмотреть состояние процессора любого робота, выполняющуюся им программу и журнал исполнения программ, в котором будет список выполненных команд и бит успешности. Также игрок может в любой момент времени изменить любую программу и подсветить роботов, выполняющих её.

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

Если на одну и ту же клетку едут несколько роботов, то приоритет имеет верхний и далее по часовой стрелке.

Программирование

Процессор состоит из: регистры: номер программы (0-0хFFF), номер команды (0-0хFFF), номер регистра (0-0хFFF), регистры сенсоров (12); журнал исполнения команд.
Для любого регистра можно глобально задать его имя до 3 символов.

Программа состоит из действий модулей, условий и служебных действий. Действия модуля выполняются 1 такт. Условия позволяют программе ветвиться, с их помощью можно организовать циклы. Служебные действия выполняются 1 такт.

Служебные действия.

Загрузить значение из регистра: по адресу из регистра загрузить значение в регистр.
Переместить значение: заданное в программе, из регистра в: регистр, по адресу из регистра.
Прибавить значение: заданное в программе, из регистра к: регистру, по адресу из регистра. Переполнение не отслеживается, лишний бит отбрасывается.
Сравнить значения: заданное в программе, регистр, по адресу из регистра и регистр, по адресу из регистра. Если равны, то флаг сравнения устанавливается в 1, иначе в 0.

Инвертировать значение в: регистре, по адресу из регистра.
Логически сложить значения: заданное в программе, регистр, по адресу из регистра и регистр, по адресу из регистра.
Эти операции образуют логический базис.

Условия

Если флаг сравнения 1, то перейти на заданный номер команды.

Обдумать дополнительные команды.

Цели

Набрать какое-то количество отправленного Мрака.
Добиться какой-то средней скорости отправки Мрака.
Отправить за 1 такт какое-то количество Мрака.

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

15.08.2021

Основы игры

2д-подземелье, заполнено блоками, изначально есть пещеры, залежи руды, поселения людей: ядро, люди и армии.
Соседним блоком считается блок рядом по вертикали или горизонтали.
Игра начинается с роботом, имеющим модули: протоДЛАНЬ, фабрика и робостанция.

Существующие блоки

Пустота.
Пустой блок.

Камень.
Из него преимущественно состоит подземелье.
Создаётся в: трансмутатор-фабрика.
Добывается: протоДЛАНЬ.

Руда.
Ценный ресурс. Встречается реже, чем камень. Используется во многих рецептах.
Создаётся в: трансмутатор-фабрика.
Добывается: рудоДЛАНЬ.


Начало

Модуль протоДЛАНЬ.
Дистанционно Лимитированный Аппарат Навигации.
С помощью этого модуля робот может считывать данные с какого-либо соседнего блока сенсором, передвигаться по подземелью, добывать соседние блоки в хранилище и доставать их оттуда.
Действия: вытянуть сенсор; переместиться в сторону вытянутого сенсора, втягивая его; добыть блок; достать блок.
Создаётся из: камень.
Создаётся в: фабрика.
Добывается: протоДЛАНЬ.

Модуль ДЛАНЬ-фабрики.
Этот модуль позволяет создавать улучшенные модули ДЛАНЬ.
Действия: втянуть блок, создать блок по текущему рецепту; достать блок; задать текущий рецепт.
Создаётся из: камень, протоДЛАНЬ.
Создаётся в: фабрика.
Добывается: протоДЛАНЬ.

Модуль рудоДЛАНЬ.
Улучшенный модуль ДЛАНЬ, способный добывать руду.
Действия: втянуть руду, достать руду.
Создаётся из: камень, протоДЛАНЬ.
Создаётся в: ДЛАНЬ-фабрика.
Добывается: протоДЛАНЬ.

Каркас.
Сложенная для транспортировки основа будущего робота, состоящая из процессора с регистрами и журналом исполнения команд, небольшого хранилища и узла связи. Основной ресурс в рецептах робостанции. Может программироваться для автоматического выполнения заданных действий с использованием встроенных модулей.
Создаётся из: камень, руда.
Создаётся в: фабрика.

Модуль фабрики.
С помощью этого модуля робот может создавать блоки из добытых или ранее созданных блоков. Процесс создания: робот втягивает в своё хранилище нужные блоки, затем пытается создать блок по рецепту, если в хранилище хватает ресурсов, то блок создаётся и помещается в хранилище.
Действия: втянуть блок, создать блок по текущему рецепту; достать блок; задать текущий рецепт.
Создаётся из: камень, руда, протоДЛАНЬ.
Создаётся в: фабрика.
Добывается: протоДЛАНЬ.

Модуль робостанции.
С помощью этого модуля робот может создавать, разбирать и программировать других роботов. Робот это каркас и один или несколько модулей. Например, фабрика - это робот с модулем фабрики. Процесс создания робота как в модуле фабрики. Разборка аналогично. Программирование: робот выполняет свою программу, загружаемую с сервера; а точнее: конкретную команду в конкрентной программе; подробнее в отдельной теме.
Действия: втянуть блок, создать робота по текущему рецепту; достать блок; задать текущий рецепт.
Создаётся из: камень, руда, протоДЛАНЬ.
Создаётся в: фабрика.
Добывается: протоДЛАНЬ.

Робот.
Робот это каркас и один или несколько модулей. Простейший робот - это робот с модулем протоДЛАНЬ. Робота можно программировать сообразно доступным действиям его модулей: передвижение, добыча, создание блоков и так далее.
Действия: описаны в теме про программирование.
Создаётся из: каркас, один или несколько модулей.
Создаётся в: робостанция.
Добывается: обдумать, можно ли добывать робота для его переноски. Как минимум, можно его разобрать робостанцией на каркас и модули и переносить их. Если можно добывать, то тогда сделать вес у каждого блока, и вес робота будет равен его весу и блоков в его хранилище. Само хранилище робота должно вмещать только пустого другого робота.


Обитатели подземелья

Ядро.
Основа поселения людей. Позволяет появляться людям при наличии некоторого их количества рядом. Генерируется с людьми в каждой соседней клетке.
Создаётся в: трансмутатор-фабрика.

Модуль ядроДЛАНЬ.
Улучшенный модуль ДЛАНЬ, способный добывать Ядро.
Действия: втянуть Ядро, достать Ядро.
Создаётся из: камень, руда, протоДЛАНЬ.
Создаётся в: ДЛАНЬ-фабрика.
Добывается: протоДЛАНЬ.

Люди.
Мирные единицы. Основной ресурс в рецептах алтарь-фабрики. Если на клетку с людьми заедет робот, то уничтожит их.
Появляются, если есть как минимум две соседние клетки с людьми и одна клетка с Ядром по диагонали, в пустой клетке или клетке с армией.

Модуль слизеДЛАНЬ.
Улучшенный модуль ДЛАНЬ, способный добывать людей в соседних клетках.
Действия: втянуть людей, достать людей.
Создаётся из: камень, руда, протоДЛАНЬ.
Создаётся в: ДЛАНЬ-фабрика.
Добывается: протоДЛАНЬ.

Армия.
Враждебная единица. Если на клетку с армией заедет робот, то армия его уничтожит.
Появляется в пустой соседней клетке с людьми каждый ход.

Модуль огнеДЛАНЬ.
Улучшенный модуль ДЛАНЬ, способный уничтожать соседние армии.
Действия: уничтожить армию.
Создаётся из: камень, руда, протоДЛАНЬ.
Создаётся в: ДЛАНЬ-фабрика.
Добывается: протоДЛАНЬ.


Жертвоприношения

Модуль алтарь-фабрики.
Этот модуль позволяет использовать захваченные мирные единицы.
Действия: втянуть блок, создать блок по текущему рецепту; достать блок; задать текущий рецепт.
Создаётся из: камень, руда, слизеДЛАНЬ.
Создаётся в: фабрика.
Добывается: протоДЛАНЬ.

Психотронное оружие --------????

Модуль хранилища.
Значительно увеличивает размер хранилища. Этот модуль позволяет использовать захваченные мирные единицы.
Создаётся из: камень, руда, люди.
Создаётся в: алтарь-фабрика.
Добывается: протоДЛАНЬ.

Модуль деконструктора.
Позволяет разбирать блок на составляющие его ресурсы (кроме роботов - они в робостанции).
Действия: втянуть блок, разобрать заданный блок; достать блок; задать текущий блок на разбор.
Создаётся из: камень, руда, люди.
Создаётся в: алтарь-фабрика.
Добывается: протоДЛАНЬ.

Модуль телепорта.
Позволяет переместить заданный блок из хранилища в роботе в другого робота с модулем телепорта по имени этого робота. Каждая телепортация потребляет людей.
Действия: телепортировать блок; задать блок; задать имя принимающего робота.
Создаётся из: камень, руда, люди.
Создаётся в: алтарь-фабрика.
Добывается: протоДЛАНЬ.


Демонология

Искажённое Ядро.
Превращает людей и армии в соседних клетках в демонов.
Создаётся из: камень, руда, люди, Ядро.
Создаётся в: алтарь-фабрика.
Добывается: ядроДЛАНЬ.

Демоны.
Превращает людей и армии в соседних клетках в демонов. Уничтожают роботов рядом.

Модуль святоДЛАНЬ.
Оберегает от демонов. Позволяет добывать демонов в соседних клетках.
Действия: втянуть демонов, достать демонов.
Создаётся из: камень, руда, протоДЛАНЬ.
Создаётся в: ДЛАНЬ-фабрика.
Добывается: протоДЛАНЬ.

Трансмутатор-фабрика.
Позволяет приносить в жертву демонов для создания камня, руды и Ядер, а также использовать Искажённые Ядра.
Действия: втянуть блок, создать блок по текущему рецепту; достать блок; задать текущий рецепт.
Создаётся из: камень, руда, святоДЛАНЬ.
Создаётся в: фабрика.
Добывается: протоДЛАНЬ.

Роботы Мрака

Мрак.
Первозданная сущность, управляющая роботами. Основа этого мира.
Создаётся из: демоны.
Создаётся в: трансмутатор-фабрика.
Добывается: протоДЛАНЬ.

Врата Мрака.
Струящийся ужас исходит от них. Через них Мрак возвращается для неведомых целей.
Создаётся из: Мрак.
Создаётся в: трансмутатор-фабрика.
Добывается: протоДЛАНЬ.


Если выложить Мрак на Врата, то они поглотят его. И это будет только началом.


Механика

У блоков камня есть цвет - для контрольных точек автоматически движущихся роботов, которые встречая цвет могут поворачивать в стороны или делать другие действия.

При исполнении команды, если её невозможно выполнить, то она пропускается.

Робот каждый такт выполняет команду по адресам из регистров номера программы и номера команды - одну и ту же программу могут исполнять несколько роботов. Также роботы, меняя значения этих регистров, могут менять как и номер текущей команды, так и программы - можно сделать аналог call из ассемблера. При этом для реализации ret нужно сохранять предыдущие значения номеров программы и команды, потом восстанавливая их.

В любой момент времени игрок может посмотреть состояние процессора любого робота, выполняющуюся им программу и журнал исполнения программ, в котором будет список выполненных команд и бит успешности. Также игрок может в любой момент времени изменить любую программу и подсветить роботов, выполняющих её.

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

Программирование

Процессор состоит из: регистры: номер программы, номер команды, номер сектора данных, номер ячейки данных, сенсор (данные из модуля ДЛАНЬ); регистровый файл, к которому можно обратиться по номеру сектора и ячейки; журнал исполнения команд.
Для любого регистра можно глобально задать его имя до 3 символов.

Программа состоит из действий модулей, условий и служебных действий. Действия модуля выполняются 1 такт. Условия позволяют программе ветвиться, с их помощью можно организовать циклы. Служебные действия выполняются мгновенно (может тоже 1 такт? или как-то отслеживать бесконечные циклы?).

Служебные действия.

Загрузить значение из регистра: по адресу из регистра загрузить значение в регистр.
Переместить значение: заданное в программе, из регистра в: регистр, по адресу из регистра.
Прибавить значение: заданное в программе, из регистра к: регистру, по адресу из регистра. Переполнение не отслеживается, лишний бит отбрасывается.
Сравнить значения: заданное в программе, регистр, по адресу из регистра и регистр, по адресу из регистра. Если равны, то флаг сравнения устанавливается в 1, иначе в 0.

Инвертировать значение в: регистре, по адресу из регистра.
Логически сложить значения: заданное в программе, регистр, по адресу из регистра и регистр, по адресу из регистра.
Эти операции образуют логический базис.

Условия

Если флаг сравнения 1, то перейти на заданный номер команды.

Обдумать дополнительные команды.

Цели

Набрать какое-то количество отправленного Мрака.
Добиться какой-то средней скорости отправки Мрака.
Отправить за 1 такт какое-то количество Мрака.

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

24.06.2021

Цепочка ресурсов

Изначальный робот имеет: каркас(двигатель с сенсором), резак(может резать камень), фабрику и модификатор.

Ресурс (наиболее сложный на текущий момент, помимо него могут быть ещё и проще) - фабрика какого типа - продукт.

Камень - 1 - фабрика 1 типа.
Камень - 1 - рудорезак (может резать руду).

Руда - 1 - модификатор роботов.
Руда - 1 - улучшение фабрики до 2 типа.

Руда - 2 - огнерезак, улучшение резака, может уничтожать враждебные единицы (армию: если на клетку с армией заезжает робот, то армия его уничтожает) .
Руда - 2 - клеткорезак, улучшение резака, может складывать мирные единицы (людей) в клетки.
Руда - 2 - ядрорезак, улучшение резака, может транспортировать ядро.

Вокруг ядра при наличии N людей спавнятся люди. При наличии K людей спавнятся армии. Люди и армии спавнятся, пока не достигнут в сумме M.

Ядро - 2 - фабрика 3 типа.

Люди - 3 - психотронное оружие.
Люди - 3 - бездонный контейнер (туда можно помещать очень-очень много ресурсов, можно комбинировать с фабрикой)
Люди - 3 - деконструктор (позволяет разбирать любой продукт обратно до ресурсов)
Люди - 3 - телепорт (позволяет переместить блок в роботе в другого робота с телепортом по имени этого робота)
Ядро (несколько) - 3 - событие Искажения.
Люди - 3 - святорезак (может захватывать демонов).
Искаженное ядро - 3 - фабрика 4 типа.

Искажение: одно случайное ядро искажается, и превращает всех людей вокруг в демонов. Количество демонов вокруг ядра становится больше, чем было людей до этого.
Демоны: уничтожают роботов рядом.

Демоны - 4 - блок на выбор: камень, руда, ядро.
Искаженное ядро - 4 - ????

Описание фабрик.
1 - начальная фабрика.
2 - фабрика резаков.
3 - фабрика-алтарь.
4 - фабрика-трансмутатор.

21.06.2021

Основы игры

2д подземелье, заполнено блоками камня, есть пещеры, также есть залежи ресурсов. Начальная точка - единый управляющий блок, состоящий одновременно из: фабрики, модификатора и узла связи. В нём же игрок получает первого робота. Существующие блоки: пустота, камень, робот, фабрика, модификатор, узел связи, единый блок.

Роботом можно управлять вручную. Робот может: переехать на соседний пустой блок рядом, взять в себя блок; выложить блок из себя.

Передвижение. Робот может выдвигать сенсор на 1 блок в одном из 4 направлений, и считывать значение этого блока - пустота или какой-то блок. Робот может передвинуться на 1 блок в направлении выдвинутого сенсора, при этом сенсор задвигается обратно. Если на этом месте стоит другой робот, то текущий стоит. Если там может появиться другой робот (едет на этот же блок) - то они оба будут стоять на своих местах. Для предотвращения таких столкновений можно использовать сенсор - если он показывает, что впереди какой-то другой сенсор, то скорее всего на этот же блок едет другой робот и следует применить какую-то стратегию разъезда. Если сенсор был на каком-то другом статичном блоке, то робот может заехать на него. Находясь на этом блоке, робот может взять в себя этот блок. Со статичного блока робот может передвинуться только на пустой блок.

Блок фабрики. В него можно положить блок. В фабрике можно выбрать какой-то рецепт, и если стоящий на фабрике ресурс подходит для этого рецепта, то он следующим ходом пропадёт и окажется в фабрике, иначе останется на месте. Продукт фабрики выталкивается в сторону. Примеры рецептов: какие-то составные блоки для функциональных блоков, робот, фабрика, модификатор, узел связи, единый блок.

Блок модификатора. В нём роботов можно программировать, если он туда заедет. У минимального робота есть: блок памяти с программой, регистры (2 байта): выдвижной сенсор; сенсор находящегося в роботе блока; номер текущей исполняемой команды. Также можно модифицировать робота, добавляя в него регистры-аккумуляторы для хранения значений и дополнительные блоки памяти. Программа может состоять из: действий (выдвинуть сенсор, передвинуться в сторону сенсора, забрать блок; освободить блок); условий (если рядом блок такой-то или в роботе такой-то блок); вызовы процедур (повторяемых сложных действий). Что-то типа ассемблера.

Блок узла связи. Роботы передвигаются по подземелью без прямой мгновенной выдачи своего текущего состояния, записывая в свой чёрный ящик последовательно все показания сенсора. Когда робот останавливается на блоке узла связи, то только тогда передаёт информацию о своём движении и всех блоках, которые сканировал сенсором, в управляющий центр (игроку), в котором автоматически строится карта подземелья.

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

Робот высунул сенсор вправо. На блок ниже сенсора лежит ресурс.

Идеи на развитие

Некоторые ресурсы (в том числе производимые) могут иметь одну или несколько особенностей: высокая твёрдость: робот затупит свой резак об этот блок (требуется робот с плазменным резаком); повышенная нестабильность: если робот такой возьмёт, то будет уничтожен (требуется робот, имеющий бронированные пластины для транспортировки); высокая хрупкость: если обычный робот такой возьмёт, то блок разрушится (требуется робот с вибрационными держателями); какие-то ещё.

Цель игры - ?

Дополнительные блоки: телепорт.

Враждебная среда: какие-то динамические блоки, которые могут нанести вред роботам, уничтожение которых даст какие-то уникальные ресурсы.

Реализация

Rust + miniquad

https://github.com/not-fl3/miniquad - miniquad

https://github.com/ozkriff/awesome-quads список проектов на квадах

20.06.2021