Computing

Материал из Dwarf Fortress Wiki
Перейти к: навигация, поиск

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

Двоичная информация[править]

Информация, представленная в двоичном виде, может принимать всего два состояния: истину или ложь, что соответствует 1 или 0. В Dwarf Fortress эти состояния можно хранить разными способами:

Это элементарное представление информации лежит в основе всех электронных устройств и компьютеров, поэтому, если вы хотите строить более-менее сложные схемы, с этим нужно ознакомиться:Логика высказываний

Ввод/вывод[править]

Устройством ввода может служить любой механизм, который можно связать с другими устройствами. К такими механизмам относятся рычаги и нажимные плиты. Нажимная плита, при её установке, может быть настроена, на какой вес воды, лавы и существ она должна реагировать. Также её можно настроить так, чтобы она могла реагировать и на ваших дварфов тоже. Указав минимальное и максимальное значение уровня воды и лавы для нажимной плиты, вы всегда будете получать от нее состояние ВКЛ (on) для этого интервала, а для всех остальных значений — состояние ВЫКЛ (off). Независимо от уровня воды, лавы или веса существа, действующих на нажимную плиту, это устройство всегда будет посылать или 1 или 0 на другие "элементы" сети. А это значит, что нажимные плиты могут служить основой для двоичных запоминающих устройств.

Виды ввода[править]

  • Ручное переключение: Рычаг -> двоичный 1 или 0.
  • Автоматическое переключение: Нажимная плита -> двоичный 1 или 0.

В качестве ввода/вывода может служить все что угодно, что умеет реагировать на изменение сигнала. Это могут быть двери, мосты, шлюзы пропускающие или препятствующие течению жидкостей, шестерни связанные с насосами и многое другое. В некоторых случаях — когда используется машинная логика — в качестве вывода требуется не сигнал ВКЛ/ВЫКЛ (on/off), а подключение/отключение механизмов от источника энергии.

Для обратного преобразования состояния подключенности к источнику энергии в сигнал ВКЛ/ВЫКЛ (on/off) известен (на данный момент) только один способ. Этот способ предполагает использование насоса с неограниченным источником воды и неограниченным сливом. Для обнаружения факта, включен ли насос (т.е. подключен ли он к источнику энергии) используется нажимная плита размещенная у слива. Она реагирует на наличие потока перекачиваемой жидкости.

Виды вывода[править]

  • сигнал: нажимная плита -> на выходе сигнал ВКЛ/ВЫКЛ (on/off) -> сигнал может поступать на все объекты обладающие способностью подлючаться к источнику сигнала и реагировать на его изменение
  • энергия: комплекс шестерней -> на выходе энергия или её отсутствие (состояния подключен к источнику энергии / отключен от источника энергии) -> энергия может поступать на механизмы, потребляющие энергию

Бинарная логика[править]

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

  • NOT — принимает на вход один бит и возвращает бит с противоположным значением

вход A NOT
0 1
1 0

все остальные операции получают на вход два бита

  • AND — возвращает true если они оба имеют значение true
  • OR — возвращает true если хотя бы один из них имеет значение true
  • XOR — возвращает true если только один из них имеет значение true
  • NAND — возвращает true если как минимум один из них имеет значение false
  • NOR — возвращает true если они оба имеют значение false
  • NXOR — возвращает true если они оба имеют одинаковые значения

вход A вход B AND OR XOR NAND NOR NXOR
0 0 0 0 0 1 1 1
0 1 0 1 1 1 0 0
1 0 0 1 1 1 0 0
1 1 1 1 0 0 0 1

Логические выражения, которые используют операции НЕ(NOT), И(AND) и ИЛИ(OR) наиболее легки для понимания человеком. Однако, оказывается, что все возможные логические операции можно реализовать используя только NAND или только NOR вентили. Некоторые логические вентили сделать проще и они потребуют меньше компонентов, чем другие, хотя это зависит от того, какой подход вы используете при построении логических схем. В общем случае, самостоятельное проектирование каждого логического вентиля, который вам действительно необходим (или использование уже придуманных схем) предпочтительнее, чем строительство множества NAND вентилей, так как в результате ваш дфарфпутер будет и быстрее работать, и потребует меньше ресурсов на его создание (энергии, воды, котят, строительных материалов и всего остального, что вы задумаете использовать).

Сложные вентили[править]

Принцип работы[править]

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

Три основных принципа:

Жидкостная логика[править]

Жидкостная логика управляет течением жидкости по нажимным плитам. Схема с жидкостной логикой может быть легко построена и все известные элементы в Dwarf Fortress уже построены на этом принципе. С другой стороны, этот принцип зависит от неограниченного источника жидкости, так как приходится бороться с испарением и полным высыханием.

Механическая логика[править]

Механическая логика использует системы осей и шестерёнок для постройки логических схем. Механическая логика реагирует очень быстро и может быть легко построена. Так как каждый редуктор сам по себе может быть связан с триггером (или несколькими триггерами) и автоматически подключаться к соседним редукторам для питания или передачи сигнала, механическая логика являются очень гибкой и не требуют большого числа различных устройств, которые, как правило, используются в жидкостной логике. С другой стороны, этот принцип использует ОГРОМНОЕ количество механической энергии; кроме того, простейшие механические схемы будут выдавать не сигнал, а энергию, поэтому, если вам нужен сигнал, например, для открытия мостов или дверей, нужна схема, переводящая энергию в сигнал. Впрочем, существуют полностью рабочие схемы перевода энергии в сигнал на основе жидкостей; после введения в игру вагонеток такие схемы стало возможным делать более компактными. К механической логике можно также причислить вагонеточную логику, которая является отличным способом создания логических схем, основанных на движении вагонеток. Логика на основе вагонеток, хоть и более медленная, чем механическая, компактней, требует меньше энергии и может быть проще для понимания и более интуитивной для некоторых.

Животная логика[править]

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

Логика на основе животных занимает много места и не очень надёжна, но не требует энергии, жидкостей или редких материалов.

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

Примеры схем, которые вы могли бы создать, используя логические элементы[править]

  • Repeater (Генератор импульсов): многократно переключается. Можно использоваться для открытия и закрытия люков или движения шипов вверх-вниз.
  • Latch (Триггер): запоминает своё состояние, имеет два входа, каждый переключающий на своё состояние. Можно делать, например, одноразовые нажимные пластины, сбрасываемые рычагом.
  • элемент NOT (НЕ): изменяет сигнал от переключателей или нажимных пластин на противоположный. Обычно привязывается к триггерам.
  • элемент AND (И): выдаёт сигнал тогда и только тогда, когда подаётся сигнал на все входы. Можно, например, присоединить выход со схемы к одному входу AND и рычаг для управления схемой к другому, и если рычаг будет выключен, то выход AND всегда будет выключен вне зависимости от состояния схемы.
  • элемент OR (ИЛИ): выдаёт сигнал тогда, когда хотя бы на одном входе есть сигнал. Можно, например, присоединить несколько сенсоров воды (настроенных на 1-7) к входу OR и присоединить его выход к NOT, к которому подключены экстренные шлюзы или двери, которые бы закрывались, когда обнаружена вода.
  • элемент XOR (исключающее ИЛИ): включается, если ровно один из двух входов включен. Можно использовать нажимные пластины с триггерами в разных частях крепости для обнаружения противника. Связав их с XOR, можно закрыть входы в крепость, если обнаружен враг, и открыть их, если враг обнаружен внутри.
  • элемент NOR (НЕ-ИЛИ): отключается только если включается хотя бы один вход. Его можно, например, использовать в примере с элементом OR вместо OR и NOT.
  • элемент NAND (НЕ-И): отключается только если включены оба входа. Можно использовать в примере с OR вместо OR и NOT, если настроить пластины на 0-0, а не на 1-7.

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

Примеры[править]

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

Полезное[править]

  • Магменная ловушка
    • Пример рабочего дварфопьютера управляющего магменной ловушкой. Она автоматически наводняет местность лавой, а через некоторое время избавляется от неё. Таймер специально рассчитан так, чтобы жертва после себя оставляла только ценные металлы.
      видео: http://mkv25.net/dfma/movie-1808-perfectmagmatrap
      устройство: http://i576.photobucket.com/albums/ss208/kanddak/magmatrap.png

Идеи[править]

Раз плюнуть[править]

Страницы по теме[править]

  • User:BaronW — The Almighty Dwarven Calculator
  • User:Jong — The first fully programmable digital Dwarven Computer
  • Gates User:SL/Logic Gates — These use mechanisms for connecting gates and devices and so forth, but fluid for logic. They’re built on top of a body of water, and require power (for a pump or two per gate).
  • User:Kyace/Adder — A full adder built using fluid logic, with a video of a rough prototype. Trivial to combine 8 of these to make a fluid device capable of adding two 8 bit numbers together.
  • User:Soundandfury#Logic_Gates — These have a water supply reservoir above and a drain below. The drained water can be pumped back to the supply reservoir.
  • User:Bidok — Animal logic with all gates, memory, repeater and counter. All powered by kittens.
  • User:LordOOTFD#Animal_Logic — Animal logic with fast complex gates, building upon Bidok’s kitten powered systems.
  • User:Hussell#Assorted_Devices — Fluid logic
  • User:Gammon — Fluid logic. Very detailed CMOS gates.