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