Creature logic: различия между версиями

Материал из Dwarf Fortress Wiki
Перейти к навигацииПерейти к поиску
(Продолжил перевод)
 
(не показано 8 промежуточных версий 2 участников)
Строка 1: Строка 1:
{{Computing}}
{{Computing}}


Логика существ — форма дварфийских [[computing|вычислений]]. В ней используются особенности [[path|путей движения]] существ, чтобы активировать нажимные пластины. Логика существ является полной — в ней можно строить память, повторители и любые логические схемы.
'''Логика существ''' — форма дварфийских [[computing|вычислений]]. В ней используются особенности [[path|путей движения]] существ, чтобы активировать нажимные пластины. Логика существ является полной — в ней можно строить память, повторители и любые логические схемы.


==Сравнение логики существ с другими видами==
==Сравнение логики существ с другими видами==
Строка 18: Строка 18:
* Схемы на существах требуют много пространства.
* Схемы на существах требуют много пространства.


==Free range or one path==
==Свободное пространство или один путь==
There are two incompatible design philosophies associated with creature logic-- mostly, the creatures you use will determine which is appropriate.
Есть две несовместимые философии в дизайне схем логики существ. Выбор одной из них в основном зависит от используемых в схеме существ.


Free range creature logic generally gives a path to creatures when certain criteria are met, and otherwise, lets them wander (in a constrained space).  This simplifies design and permits constant evaluation of criteria, but any creature that paces in captivity can easily foul up your circuits-- for instance, a pacing creature may prevent a door from closing, causing an AND to evaluate as true even though both operands were never true at the same time. Additionally, it gives no clear indication that an evaluation has been completed-- if you want to evaluate your AND statement, you only ever know that it's been evaluated as true, never as false.
Логика существ со свободным пространством обычно открывает путь существу при определённых условиях, а в остальное время даёт им бродить в ограниченном пространстве. Это упрощает схему и позволяет делать логические проверки постоянно, но существо, гуляющее по схеме, может нарушить её функционал — например, оно может встать на открытой двери, не давая ей закрыться. Кроме того, нет понятных показателей того, что вычисление логического выражения прошло — например, при вычислении выражения AND можно лишь узнать момент, когда схема выдала результат «истина», но не когда она выдаёт «ложь».


One path design constrains creatures to a single tile when they have no path available. Whenever the creature is permitted movement for evaluation of operands, the creature is guaranteed one and only one path. This requires explicit designation of 'else' paths, and requires that operands be evaluated at specific times rather than undergoing constant evaluation, but guarantees complete reliability, and allows the circuit to return both 'true' and 'false' evaluations, meaning that you can know for sure that a signal has been evaluated, rather than guessing if the creature has had sufficient time to path or not path.
Схемы с одним путём ограничивают доступное существу пространство одной клеткой, если нет доступного пути. Когда ему позволяют двигаться, гарантируется, что для него будет существовать только один путь. В схемах с таким дизайном нужно явно указывать путь «else», кроме того, вычисление выражения в таких схемах происходит только в определённые моменты времени, а не постоянно; однако такие схемы гарантируют полную надёжность и позволяют схеме выдавать в качестве результата как «истина», так и «ложь», что значит, что вы можете точно знать, что схема вычислила выражение, а не предполагать, что существу хватило времени пройти по схеме.


==Логика животных==
==Логика животных==
Строка 37: Строка 37:


===Тождество и отрицание===
===Тождество и отрицание===
{{diagram|spaces=yes|\
<diagram>
  ╔══╗  
  ╔══╗  
═╝[#0F0]┼[#F0F]^╚═
═╝[#0F0]┼[#F0F]^╚═
[#0FF]s+OO+[#F00]p
[#0FF]s+OO+[#F00]p
═╗[#0F0]¢+╔═
═╗[#0F0]¢+╔═
  ╚══╝ }}
  ╚══╝  
</diagram>


Это функция одного операнда. Если он истинен, существо пройдёт по верхнему пути (тождество), иначе по нижнему (отрицание). Нажимная пластина выдаёт сигнал, когда операнд истинен. Этот элемент — основа всего, что будет показано дальше.
Это функция одного операнда. Если он истинен, существо пройдёт по верхнему пути (тождество), иначе по нижнему (отрицание). Нажимная пластина выдаёт сигнал, когда операнд истинен. Этот элемент — основа всего, что будет показано дальше.
Строка 49: Строка 50:


===И и НЕ-И===
===И и НЕ-И===
{{diagram|spaces=yes|\
<diagram>
  ╔═══╗  
  ╔═══╗  
═╝[#0F0]┼[#FF0]┼[#F0F]^╚═
═╝[#0F0]┼[#FF0]┼[#F0F]^╚═
Строка 55: Строка 56:
═╗+[#0F0]¢+╔═
═╗+[#0F0]¢+╔═
  ╚╗[#FF0]¢╔╝  
  ╚╗[#FF0]¢╔╝  
   ╚═╝  }}
   ╚═╝   
</diagram>


Обе двери сверху будут открыты, если оба операнда истинны. Люки внизу пропустят существо, если хотя бы один операнд ложен. Нажимная пластина сработает, когда оба операнд истинны.
Обе двери сверху будут открыты, если оба операнда истинны. Люки внизу пропустят существо, если хотя бы один операнд ложен. Нажимная пластина сработает, когда оба операнд истинны.


===НЕ-ИЛИ и ИЛИ===
===НЕ-ИЛИ и ИЛИ===
{{diagram|spaces=yes|\
<diagram>
  ╔═══╗  
  ╔═══╗  
═╝[#0F0]¢[#FF0]¢[#F0F]^╚═
═╝[#0F0]¢[#FF0]¢[#F0F]^╚═
Строка 66: Строка 68:
═╗+[#0F0]┼+╔═
═╗+[#0F0]┼+╔═
  ╚╗[#FF0]┼╔╝  
  ╚╗[#FF0]┼╔╝  
   ╚═╝  }}
   ╚═╝   
</diagram>


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


===XOR и расширенный XNOR===
===XOR и расширенный XNOR===
{{diagram|spaces=yes|\
<diagram>
   ╔═╦═╗   
   ╔═╦═╗   
  ╔╝[#0F0]┼O[#0F0]¢╚╗  
  ╔╝[#0F0]┼O[#0F0]¢╚╗  
Строка 79: Строка 82:
  ║+OO+╔╝  
  ║+OO+╔╝  
  ╚╗[#0F0]¢[#FF0]¢╔╝   
  ╚╗[#0F0]¢[#FF0]¢╔╝   
   ╚══╝  }}
   ╚══╝   
</diagram>


XOR здесь — просто ИЛИ с идущим затем НЕ-И. XNOR, как объединение И и НЕ-ИЛИ, требует два пути. Каждый операнд подключен к одной двери и одному люку в пути XOR и одной двери и люку в пути XNOR. Нажимная пластина будет выдавать сигнал, когда ровно один операнд истинен. При модификации XOR под несколько операндов не забудьте оставить пространство между дверьми и люками, как на картинке; для двух операндов это необязательно. Аналогично можно расширить XNOR, или, если нужно лишь два операнда, сделать схему более компактной.
XOR здесь — просто ИЛИ с идущим затем НЕ-И. XNOR, как объединение И и НЕ-ИЛИ, требует два пути. Каждый операнд подключен к одной двери и одному люку в пути XOR и одной двери и люку в пути XNOR. Нажимная пластина будет выдавать сигнал, когда ровно один операнд истинен. При модификации XOR под несколько операндов не забудьте оставить пространство между дверьми и люками, как на картинке; для двух операндов это необязательно. Аналогично можно расширить XNOR, или, если нужно лишь два операнда, сделать схему более компактной.
Строка 85: Строка 89:
===Многоразовые схемы===
===Многоразовые схемы===
Описанные выше элементы одноразовые: существа убегут после прохождения по всем элементам. Можно вернуть существо обратно в начало пути, изменяя маршрут существа в процессе передвижения:
Описанные выше элементы одноразовые: существа убегут после прохождения по всем элементам. Можно вернуть существо обратно в начало пути, изменяя маршрут существа в процессе передвижения:
{{diagram|spaces=yes|\
<diagram>
   ║[#F00]p║
   ║[#F00]p║
══╝[#0F0]¢║
══╝[#0F0]¢║
[#0FF]s[#0F0]¢[#0F0]^O╣
[#0FF]s[#0F0]¢[#0F0]^O╣
══╗[#0F0]┼║
══╗[#0F0]┼║
   ║[#F00]p║}}
   ║[#F00]p║
</diagram>


Это одно из устройств для изменения маршрута. При нажатии на нажимную пластину существо открывает два люка, блокируя обратное движение и доступ к своей цели, и открывает дверь к новой цели. Эта цель может вести обратно к началу схемы. Этот принцип продемонстрирован в последующих схемах. Существо запирается на нажимной пластине, так что можно открывать дверь механизмами снаружи, а не пластиной; так можно контролировать движение существа по одной или нескольким ветвям схемы.
Это одно из устройств для изменения маршрута. При нажатии на нажимную пластину существо открывает два люка, блокируя обратное движение и доступ к своей цели, и открывает дверь к новой цели. Эта цель может вести обратно к началу схемы. Этот принцип продемонстрирован в последующих схемах. Существо запирается на нажимной пластине, так что можно открывать дверь механизмами снаружи, а не пластиной; так можно контролировать движение существа по одной или нескольким ветвям схемы.
Строка 97: Строка 102:
Читатель мог заметить почти полную симметрию в предыдущих логических элементах. Выходная пластина работает, даже если поместить её до ограничителей движения, а не после. Хотя указанные выше схемы проще понимаются, обычно более эффективно использовать такой обратный дизайн; но если одно существо используется для того, чтобы пройти по большой составной схеме, обратный дизайн может привести к большим задержкам. Умный логик может спросить: «Если существо может выдавать сигнал до того, как проходить по пути, зачем вообще по нему идти?». Эти идеи (расположение пластины до ограничителей и повторное использование) использованы в следующем вентиле XOR/XNOR:
Читатель мог заметить почти полную симметрию в предыдущих логических элементах. Выходная пластина работает, даже если поместить её до ограничителей движения, а не после. Хотя указанные выше схемы проще понимаются, обычно более эффективно использовать такой обратный дизайн; но если одно существо используется для того, чтобы пройти по большой составной схеме, обратный дизайн может привести к большим задержкам. Умный логик может спросить: «Если существо может выдавать сигнал до того, как проходить по пути, зачем вообще по нему идти?». Эти идеи (расположение пластины до ограничителей и повторное использование) использованы в следующем вентиле XOR/XNOR:


{{diagram|spaces=yes|\
<diagram>
     ╔═╦═╗   
     ╔═╦═╗   
     ╔╝[#0F0][#F0F]¢O[#0F0]┼╚╗  
     ╔╝[#0F0][#F0F]¢O[#0F0]┼╚╗  
Строка 105: Строка 110:
     ║[#00F]¢OO+╔╝  
     ║[#00F]¢OO+╔╝  
     ╚╗[#0F0]┼[#FF0]┼╔╝   
     ╚╗[#0F0]┼[#FF0]┼╔╝   
     ╚══╝  }}
     ╚══╝   
</diagram>
Существо ждёт на начальной точке на голубом люке, пока не начнётся вычисление (при выключающем сигнале на голубых люках, который обычно идёт сразу после ненужного включающего). После этого существо, которому внезапно дали пути к его цели, шагает к XOR или XNOR, но вывод сигнала происходит раньше, чем в прошлых схемах. После вывода сигнала изначальный путь блокируется, и существо перенаправляется обратно на начальную точку (обратите внимание, что в изначальное состояние возвращается само существо, но сама схема — необязательно; для этого могут понадобиться дополнительные приспособления, или можно сделать схему возвращения, не трогающую состояние элементов)
Существо ждёт на начальной точке на голубом люке, пока не начнётся вычисление (при выключающем сигнале на голубых люках, который обычно идёт сразу после ненужного включающего). После этого существо, которому внезапно дали пути к его цели, шагает к XOR или XNOR, но вывод сигнала происходит раньше, чем в прошлых схемах. После вывода сигнала изначальный путь блокируется, и существо перенаправляется обратно на начальную точку (обратите внимание, что в изначальное состояние возвращается само существо, но сама схема — необязательно; для этого могут понадобиться дополнительные приспособления, или можно сделать схему возвращения, не трогающую состояние элементов)


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


==Creature memory==
==Память==
{{diagram|spaces=yes|\
<diagram>
   ╔═╗   
   ╔═╗   
═══╝[#0F0]┼╚══
═══╝[#0F0]┼╚══
[#F00]p[#FF0]¢[#FF0]^[#FF0]¢[#00F]¢[#F0F][#00F]^[#00F]¢[#F00]p
[#F00]p[#FF0]¢[#FF0]^[#FF0]¢[#00F]¢[#F0F][#00F]^[#00F]¢[#F00]p
══╗[#0FF]┼╔═══
══╗[#0FF]┼╔═══
   ╚═╝  }}
   ╚═╝   
</diagram>
 
Это версия с малой задержкой (не самая простая, не самая многофункциональная) памяти на существах. Каждая нажимная плита привязана к соседнему люку. Запись в память происходит с помощью открывающего сигнала (после которого быстро следует закрывающий) к одной из дверей.


This is a low latency version (not the simplest version, not the most full-featured) of creature-based memory.  Each pressure plate is linked to each adjacent hatch.  Memory is set by sending an open (followed closely by a close) to either door.
В этой диаграмме оба пути ведут к цели существа. Существо может войти с любой стороны, но при нормальном функционировании будет находиться на одной из нажимных пластин.


Note that in this diagram, both ends need to lead to the pathing goal. The creature can enter by either side, but will be constrained to either pressure plate during normal operation.
==Генератор тактового сигнала, повторители, задержка==
Высокочастотный генератор тактового сигнала или задержки может быть построен на основе известной скорости падения существ. Более простую и медленную версия можно построить, используя [[scheduling|расписания]] военных или маршруты [[minecart|вагонеток]].


==Clock generation, repeaters, and delay==
Предыдущую схему после легкой модификации можно использовать как неплохой, но не идеально регулярный повторитель.
A high resolution borg-logic clock or delay can be designed around the rate with which creatures fall.  A simpler, low resolution clock can be designed based around the military [[scheduling]] menu or [[minecart]] routes.


The memory design above, slightly modified, can make a decent (not perfectly regular) repeater.
<diagram>
{{diagram|spaces=yes|\
   ╔═╗   
   ╔═╗   
═══╝[#FF0]¢╚══
═══╝[#FF0]¢╚══
[#F00]p[#FF0]¢[#FF0]^[#FF0]¢[#00F]¢[#F0F][#00F]^[#00F]¢[#F00]p
[#F00]p[#FF0]¢[#FF0]^[#FF0]¢[#00F]¢[#F0F][#00F]^[#00F]¢[#F00]p
══╗[#00F]¢╔═══
══╗[#00F]¢╔═══
   ╚═╝  }}
   ╚═╝   
</diagram>


Here, each pressure plate is linked to the two orthogonally adjacent hatches. The southern hatch is linked to the eastern pressure plate, while the northern hatch is linked to western pressure plate. This repeater tends to fire about every 250 ticks, with open and close signals offset by about 125 ticks, when built as shown.  It's very effective at rapidly triggering any device with a refractory period of 100. Similar, non-repeating systems can be used to institute delay.
На этой схеме каждая нажимная пластина привязан к двум соседним по диагонали люкам. Южный люк привязан к восточной плите, северный — к западной. Этот повторитель срабатывает каждый 250 тиков; открывающие сигналы смещены друг относительно друга на примерно 125 тиков, поэтому этот повторитель очень эффективен для активации любого устройства, срабатывающего раз в 100 тиков. Также в системах без повторителей можно устанавливать задержку.


Linking both pressure plates to output doubles its rate, turning it into very effective spike repeater. The period can be increased by introducing floor space into the center of the design.
Если использовать каждую из нажимных плит как выходную, то схема будет выдавать сигнал в два раза чаще, что идеально подходит для активации [[Trap|подъёмных копий]]. Частоту выходного сигнала можно уменьшить, добавив пустого пространства в центр схемы.


==Edge Detection==
==Детектор фронта==
{{diagram|spaces=yes|\
<diagram>
║[#F00]p║  ║[#F00]p║
║[#F00]p║  ║[#F00]p║
║[#0F0]¢╚═══╝[#FF0]¢║
║[#0F0]¢╚═══╝[#FF0]¢║
Строка 144: Строка 153:
║[#0F0]¢O═══O[#0FF]¢║
║[#0F0]¢O═══O[#0FF]¢║
╚╗++[#F0F]^++╔╝
╚╗++[#F0F]^++╔╝
  ╚═════╝ }}
  ╚═════╝  
</diagram>


North of the circuit is the pathing goal. The eastern and western pressure plates are linked to adjacent hatches. Input is linked to the hatch southeast of the eastern pressure plate and to the door. The central and southern pressure plates are linked to output. This circuit generates both an open and a close every time it is sent an open or a close signal from input -- that is, it generates two properly-ordered signals for every properly-ordered signal it is sent, allowing for ''edge triggered'' logic. Either output pressure plate can be removed to send an open and a close only upon receiving one kind of signal or the other kind of signal. Output can linked to the same device or to two different devices.
Цель существа находится на севере схемы. Плиты на западе и востоке привязаны к соответствующим люкам. Вход привязывается к люку на юго-востоке от восточной плиты и к двери. Центральная и южная нажимные пластины привязываются к выходу. Эта схема генерирует открывающий и закрывающий сигналы каждый раз, когда ей посылают открывающий или закрывающий сигнал на входе — т.е. генерирует два сигнала в правильном порядке на каждый поданный в правильном порядке сигнал, давая возможность работать с фронтом сигнала. Одну из выходных нажимных плит можно убрать, чтобы посылать открывающий и закрывающий сигнал только после получения одного из видов сигнала. Выходные плиты можно привязать к одному устройству или к разным.


Note that the memory design forms a sort of inverse of this circuit, in that a single open-close cycle is translated into a single on or off signal.
Обратите внимание, что схемы памяти по сути работают противоположным образом: превращают один цикл открытия-закрытия в один сигнал открытия или закрытия.


==Alternative design==
==Альтернативные схемы==
Multiple choices of furniture are available for the doors or hatches in the above diagrams. Various reasons exist for substitution.
Вместо дверей или люков можно использовать другие механизмы. Иногда это даёт какое-то преимущество перед обычными схемами.


====Doorless design====
====Схемы без дверей====
Of all alternative designs, doorless design is the most practical.  All doors are replaced with hatches over [[stair]]s or [[ramp]]s, and the path continues one z-level down or up. This makes it more difficult to visualize the circuit, and some very efficient designs may require more significant changes, but every circuit possible can be created without doors.  Use of hatches instead of doors protects against the effects of doors being blocked open by unexpected creatures or objects-- the original bug, after all, took the form of [[vermin]] remains. Retracting [[bridge]]s can be used the same way, but lead to problematic delays.
Из всех альтернативных дизайн без дверей является наиболее практичным. Двери можно заменить люками, расположенными на [[stair|ступеньках]] или [[ramp|рампах]], и путь продолжается z-уровнем выше или ниже. Такую схему становится труднее понимать, а некоторые высокоэффективные схемы будут требовать более серьёзной модификации, но любую схему, которую можно создать с дверьми, можно создать и без них. Использование люков вместо дверей защищает от блокировки двери существами или объектами (теперь вашу схему не заклинит от трупа [[vermin|мухи]]). Подобным образом можно использовать выдвижные [[bridge|мосты]], но они могут приводить к проблемным задержкам.


====Hatchless design====
====Схемы без люков====
Hatchless design is much more difficult and of very limited use. Signal inversion can make a door act like a hatch; a raising bridge acts like a hatch. Both of these institute delays in processing that require large expansion of logic circuits and limit the effectiveness of memory, but they may be necessary when using submerged logic or flyers-- bragging rights for a logic system submerged in [[magma]] that processes via [[fire imp]]s may be worth the headache.
Схемы без люков намного труднее построить и они менее полезны. С помощью инверсии сигнала можно заставить дверь работать как люк; поднимающийся мост работает как люк. Оба варианта вносят задержки в схему, что требует значительного увеличения схем и ограничивает эффективность памяти. Такие схемы понадобятся, если нужно использовать логику на летающих существах или схему, погружённую в жидкость — возможность похвастаться логической системой, погружённой в [[magma|магму]] и работающей на [[fire imp|огненных бесах]] стоит того.


====Bridge design====
====Схемы на мостах====
Bridge design uses bridges instead of both doors and hatches. Doors are replaced with retracting bridges over ramps or staircases; hatches are replaced with raising bridges, or with retracting bridges over channels. Bridge design causes frustrating delays, but it is the only way to use [[building destroyer]]s in a logic circuit. The irony of making your [[minotaur]] run an impossible labyrinth may be worth the design headache. As an added bonus, bridges are nearly unobstructable-- offensive vermin remains in your logic circuits will be smashed from this plane.
Вместо люков и дверей можно использовать мосты. Двери можно заменить выдвижными мостами над рампами или ступеньками; люки можно заменить поднимающимися мостами или выдвижными мостами над каналом. Мост вносит раздражающие задержки, но это единственный способ использовать [[building destroyer|разрушителей строений]] в логической схеме. Ирония того, что [[minotaur|минотавра]] заставляют бегать по лабиринту без выхода может стоить сложностей при построении. Дополнительный бонус — мосты не получится заклинить, как двери — труп мухи в вашей логической схеме будет стёрт из этой грани бытия.


==Creature choice==
==Выбор существа==
Multiple choices exist for creatures to run logic circuits.  Each has its own advantages and disadvantages.
Есть разные варианты существ, на которых будет работать схема, каждый со своими достоинствами и недостатками.


====Domestic animals====
====Домашние животные====
[[Domestic animal]]s are valid choices for creature logic, but come with a host of disadvantages. Many females are capable of giving birth inside of your logic gates; their [[child|children]] can block the closing of doors or set off pressure plates. [[pasture|Grazers]], of course, will starve inside most logic circuits, although some special designs may be capable of supporting a grazer. Some domestics are too small to set off pressure plates; some are capable of flight, requiring hatchless design. All unmodded domestic animals will die of old age, requiring periodic replacement. Most domestic animals have relatively short lifespans. Logic involving domestic animals must be built with pressure plates that can be triggered by citizens, and building these circuits may turn into a nightmare of job cancellations and stranded, starving dwarves. Domestic animals have one huge advantage, however: the location of their pathing goal can be altered with direct, unmediated action of the player, by placement of a meeting zone.
[[Domestic animal|Домашних животных]] можно использовать для логики существ, но у них есть масса недостатков. Самки могут давать потомство внутри вашей схемы; их [[child|выводок]] может блокировать двери и нажимать на нажимные пластины. [[pasture|Травоядные животные]], конечно, умрут от голода внутри схемы, если только специально не позаботиться о них. Некоторые домашние животные слишком малы, чтобы на них срабатывали нажимные пластины; некоторые умеют летать, требуя схемы без люков. Все немодифицированные домашние животные будут умирать от возраста, требуя периодической замены. У большинства домашних животных сравнительно малая продолжительность жизни. Логику с использованием домашних животных нужно строить на нажимных пластинах, которые срабатывают на жителей, и их строительство может превратиться в кошмарное количество отмен работ и застрявших и умирающих от голода дварфов. Тем не менее у домашних животных есть одно большое преимущество: они движутся к зоне сбора, поэтому их движением можно управлять прямым действием игрока.


====Invaders====
====Захватчики====
[[Invader]]s are readily available on most maps, rarely or never give birth, and require no sustenance. Pressure plates don't need to be built triggerable by citizens. [[elf|Elves]] and [[goblin]]s will never die of old age. However, invaders cause their own problems. Invaders can cause job cancellations, and in some circuits may escape, wreaking havoc deep in your fortress. Dwarves armed with bolts and crossbows will take potshots at your computers periodically. Finally, invader-based logic must have a path to the map edge for predictable pathing. If your logic circuit is inside of your fortress, walling off, even through something as simple as raising a bridge at your entrance, will lead to unpredictable pathing.
[[Invader|Захватчиков]] обычно полно на большинстве карт, они редко дают потомство, не требуют поддержки. Нажимные плиты необязательно строить срабатывающими на жителей. [[elf|Эльфы]] и [[goblin|гоблины]] никогда не умирают от старости. Однако захватчики могут привнести свои проблемы. Они могут вызвать отмену работы, в некоторых схемах они могут сбежать, наводя хаос глубоко внутри крепости. Дварфы с арбалетами и болтами иногда будут стрелять в ваших вычислителей. Наконец, для предсказуемых вычислений логика на захватчиках требует путь к краю карты. Если ваша логическая схема находится внутри крепости, огороженной стеной, даже поднятие моста на входе может привести к непредсказуемому маршруту.


====Dwarves====
====Дварфы====
Dwarves themselves can be used to run logic circuits, and are perhaps the most interesting choice; logic designs involving dwarves are generally referred to as borg logic. While longer-lived than most domestics, dwarves [[food|starve]] and [[alcohol|dehydrate]] easily, requiring frequent, careful maintenance. Idle dwarves path unpredictably, and dwarves are vulnerable to [[sleep|drowsiness]], leading to very high latency. Married female dwarves are fecund. At the same time, dwarves are excellent choices for logic circuits because of their varied pathing goals that can be altered through direct interaction by the player.  Dwarves can trigger events both through the use of pressure plates and through the use of [[lever]]s, while their pathing goals can be controlled by many means-- most easily and predictably, by military scheduling or minecart routes. In fact, one can see the entire game of Dwarf Fortress as one big logic circuit with dwarves as the driving creature.  The more philosophically oriented overseer may wonder what cyclopean, ineffable circuit he or she is traversing through the act of playing Dwarf Fortress....
Для работы схемы можно использовать и самих дварфов, и это, возможно, самый интересный выбор. Схемы на дварфах обычно называют {{bn-en|борг-логикой|borg logic}}. Хотя они живут дольше большинства домашних животных, дварфы быстро умирают от [[food|голода]] и [[alcohol|жажды]], требуя частого и бережного обслуживания. Дварфы без работы идут по непредсказуемым маршрутам. Они требуют [[sleep|сна]], что может привести к очень большим задержкам. Замужние дварфийки могут давать потомство. В то же время дварфы — отличный выбор для схем. Дварфы могут активировать как нажимные пластины, так и [[lever|рычаги]]. Цель их пути можно изменять непосредственными действиями игрока многими способами — наиболее просто и предсказуемо через военные расписания и маршруты вагонеток. Можно представить, что вся Dwarf Fortres — это одна большая логическая схема, работающая на дварфах. Более философски настроенный наблюдатель может подивиться, сквозь сколь колоссальную, неописуемую логическую схему он проходит, пока играет в Dwarf Fortress…


===Undead===
===Нежить===
[[Undead]] are an intriguing choice for creature logic choices. The absence of attribute rust opens up the possibility for a more consistent repeater. They can be used in fully submerged circuits-- even in magma-submerged systems. In some [[biome]]s, they are self-repairing. However, undead path like wildlife, which can make it difficult to set up a circuit for them. Without a clear target, they may not behave predictably.  One way to work around this is to build a visible target to which the undead path, by walling the circuit with [[channel]]s instead of walls, and placing a captured invader in clear line-of-sight of the undead logician.
[[Undead|Нежить]] — интересный выбор. Отсутствие ухудшения атрибутов позволяет строить более точные повторители. Их можно использовать в полностью погруженных схемах — даже погруженных в магму. В некоторых [[biome|биомах]] они исцеляются. Тем не менее нежить ведёт себя как дикие животные, что затрудняет их использование в схемах. Без ясной цели они не действуют предсказуемо. Один из возможных вариантов решения этого — поставить им видимую цель, к которой бы направлялась нежить, окружив схему [[channel|каналами]] вместо стен и поместив пленного захватчика в прямой видимости зомби-логика. (прим. переводчика — скорее всего, статья писалась во времена, когда прыжки и лазание по стенам не были введены; они были введены в [[0.40.01]] и в новейших версиях этот вариант, скорее всего, работать не будет).


===Other choices===
===Другие варианты===
There are a few things to stay away from, but in general, any sufficiently understood creature can be used for creature logic. Building destroyers are problematic, but full-bridge design is possible. Likewise, flyers and swimmers cause difficulty, but nothing that can't be worked around.  Creatures with trapavoid are nearly useless, though [[gremlin]]s might be able to output via levers; stun-able creatures like [[kobold]]s can trigger pressure plates when dropped/stunned; and non-web-immune creatures trigger pressure plates that have been [[web]]bed. Creatures with a [[size]] less than 10000 are too small to set off pressure plates, thus requiring additional "hardware" (such as a tame creature that "flees" or "charges" over a pressure plate). The essence of creature logic, however, is predictable pathing. This may or may not exclude the use of certain types of wildlife.
Других вариантов не так много, но в целом любое достаточно изученное существо можно использовать для построения схем. Можно использовать разрушителей строений, но для них требуются схемы только на мостах. Аналогично, летающие и плавающие существа могут создать трудности, но они решаемы. Существа, избегающие ловушек, почти бесполезны, хотя [[gremlin|гремлинов]] могут выдавать сигнал через рычаги; оглушаемые существа, как [[kobold|кобольды]], могут активировать нажимные пластины, если их оглушить; существа, не иммунные к паутине, могут активировать пластины, если их запутать в паутине. Существа размером меньше 10 000 не могут активировать нажимные пластины, но их можно использовать с помощью дополнительных существ, которые убегают от них или атакуют их, наступая на нажимную пластину. Тем не менее, основа логики существ — предсказуемый путь существа. Из-за этого диких животных сложно использовать для схем.


[[Категория:Логика]]
[[Категория:Логика]]
[[en:Creature_logic]]
[[en:Creature_logic]]

Текущая версия от 18:10, 21 января 2023

Логика существ — форма дварфийских вычислений. В ней используются особенности путей движения существ, чтобы активировать нажимные пластины. Логика существ является полной — в ней можно строить память, повторители и любые логические схемы.

Сравнение логики существ с другими видами

Плюсы:

  • Не требует воды или ветра. В сухих безветренных средах возможные виды логики ограничиваются логиками существ и вагонеток;
  • Аналогично, схемы на существах не требуют инфраструктуры — их можно построить где угодно, не заботясь о том, как доставить воду или энергию на другой конец карты;
  • Все схемы на существах можно построить только из камня — хотя, при желании, можно строить из дерева или металла;
  • Нет нужды в преобразовании сигналов, как в механической логике;
  • Логика существ интуитивна. Наблюдая за тем, как существа проходят по схеме, легче найти ошибки;
  • Наблюдать за тем, как бегают существа — весело!

Минусы:

  • Надёжная логика на существах требует абсурдного количества люков, дверей и механизмов — не говоря о связывании нажимных пластин;
  • Для логики, работающей на существах, нужны существа — иногда в больших количествах. Иногда они умирают или рождают детей. Иногда они пугают ваших дварфов. Иногда ваши дварфы убивают их;
  • Логика существ довольно чувствительна к (сюрприз) попаданию лишних существ в схему. Это вероятнее, чем кажется, ибо схемы логики на существах в большинстве случаев требуют путь либо к краю карты, либо к общественной зоне.
  • Схемы на существах требуют много пространства.

Свободное пространство или один путь

Есть две несовместимые философии в дизайне схем логики существ. Выбор одной из них в основном зависит от используемых в схеме существ.

Логика существ со свободным пространством обычно открывает путь существу при определённых условиях, а в остальное время даёт им бродить в ограниченном пространстве. Это упрощает схему и позволяет делать логические проверки постоянно, но существо, гуляющее по схеме, может нарушить её функционал — например, оно может встать на открытой двери, не давая ей закрыться. Кроме того, нет понятных показателей того, что вычисление логического выражения прошло — например, при вычислении выражения AND можно лишь узнать момент, когда схема выдала результат «истина», но не когда она выдаёт «ложь».

Схемы с одним путём ограничивают доступное существу пространство одной клеткой, если нет доступного пути. Когда ему позволяют двигаться, гарантируется, что для него будет существовать только один путь. В схемах с таким дизайном нужно явно указывать путь «else», кроме того, вычисление выражения в таких схемах происходит только в определённые моменты времени, а не постоянно; однако такие схемы гарантируют полную надёжность и позволяют схеме выдавать в качестве результата как «истина», так и «ложь», что значит, что вы можете точно знать, что схема вычислила выражение, а не предполагать, что существу хватило времени пройти по схеме.

Логика животных

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

Логические вентили

Логика существ полагается на способность или неспособность существа пройти через определённую область. Дизайн «Один путь» требует явно выраженной ветки «else». Следующие логические элементы показаны в дополняющих друг друга парах, чтобы гарантировать, что у существа будет путь.

Все эти элементы можно легко изменить под больше чем два операнда.

Обозначения

В следующих диаграммах предполагается, что существо начинает путь с s (если дана). p — клетка, от которой можно дойти до цели существа. Двери и люки ¢ окрашены в те же цвета, что и привязанные к ним нажимные плиты ^. Если плиты такого цвета в схеме нет, значит, дверь или люк открывается сигналом снаружи схемы. Если несколько дверей или люков имеют один и тот же цвет, значит, они привязаны к одному и тому же источнику сигнала. Нажимные плиты, выдающие выходной сигнал, обозначены пурпурным ^. Двери и люки, привязанные к выходной плите, также окрашены в пурпурный. В том редком случае, когда элемент схемы связан с несколькими другими, это будет показано основным и фоновым цветами и дополнительно объяснено в тексте. Например, ^ привязано одновременно к голубым элементам и выходу.

Тождество и отрицание

  
^
s+OO+p
¢+
  

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

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

И и НЕ-И

  
^
s+OO+p
+¢+
 ¢ 
    

Обе двери сверху будут открыты, если оба операнда истинны. Люки внизу пропустят существо, если хотя бы один операнд ложен. Нажимная пластина сработает, когда оба операнд истинны.

НЕ-ИЛИ и ИЛИ

  
¢¢^
s+OO+p
++
  
    

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

XOR и расширенный XNOR

    
 O¢ 
++¢^
s+OO+p
+++
 +OO+ 
 ¢¢  
     

XOR здесь — просто ИЛИ с идущим затем НЕ-И. XNOR, как объединение И и НЕ-ИЛИ, требует два пути. Каждый операнд подключен к одной двери и одному люку в пути XOR и одной двери и люку в пути XNOR. Нажимная пластина будет выдавать сигнал, когда ровно один операнд истинен. При модификации XOR под несколько операндов не забудьте оставить пространство между дверьми и люками, как на картинке; для двух операндов это необязательно. Аналогично можно расширить XNOR, или, если нужно лишь два операнда, сделать схему более компактной.

Многоразовые схемы

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

  p
¢
s¢^O
  p

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

Обратимость

Читатель мог заметить почти полную симметрию в предыдущих логических элементах. Выходная пластина работает, даже если поместить её до ограничителей движения, а не после. Хотя указанные выше схемы проще понимаются, обычно более эффективно использовать такой обратный дизайн; но если одно существо используется для того, чтобы пройти по большой составной схеме, обратный дизайн может привести к большим задержкам. Умный логик может спросить: «Если существо может выдавать сигнал до того, как проходить по пути, зачем вообще по нему идти?». Эти идеи (расположение пластины до ограничителей и повторное использование) использованы в следующем вентиле XOR/XNOR:

       
    ¢O 
^¢++
p¢^¢OO+p
^¢¢++
    ¢OO+ 
      
        

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

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

Память

     
p¢^¢¢^¢p
     

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

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

Генератор тактового сигнала, повторители, задержка

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

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

     
¢
p¢^¢¢^¢p
¢
     

На этой схеме каждая нажимная пластина привязан к двум соседним по диагонали люкам. Южный люк привязан к восточной плите, северный — к западной. Этот повторитель срабатывает каждый 250 тиков; открывающие сигналы смещены друг относительно друга на примерно 125 тиков, поэтому этот повторитель очень эффективен для активации любого устройства, срабатывающего раз в 100 тиков. Также в системах без повторителей можно устанавливать задержку.

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

Детектор фронта

p   p
¢¢
O^^¢^O
¢OO¢
++^++
  

Цель существа находится на севере схемы. Плиты на западе и востоке привязаны к соответствующим люкам. Вход привязывается к люку на юго-востоке от восточной плиты и к двери. Центральная и южная нажимные пластины привязываются к выходу. Эта схема генерирует открывающий и закрывающий сигналы каждый раз, когда ей посылают открывающий или закрывающий сигнал на входе — т.е. генерирует два сигнала в правильном порядке на каждый поданный в правильном порядке сигнал, давая возможность работать с фронтом сигнала. Одну из выходных нажимных плит можно убрать, чтобы посылать открывающий и закрывающий сигнал только после получения одного из видов сигнала. Выходные плиты можно привязать к одному устройству или к разным.

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

Альтернативные схемы

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

Схемы без дверей

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

Схемы без люков

Схемы без люков намного труднее построить и они менее полезны. С помощью инверсии сигнала можно заставить дверь работать как люк; поднимающийся мост работает как люк. Оба варианта вносят задержки в схему, что требует значительного увеличения схем и ограничивает эффективность памяти. Такие схемы понадобятся, если нужно использовать логику на летающих существах или схему, погружённую в жидкость — возможность похвастаться логической системой, погружённой в магму и работающей на огненных бесах стоит того.

Схемы на мостах

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

Выбор существа

Есть разные варианты существ, на которых будет работать схема, каждый со своими достоинствами и недостатками.

Домашние животные

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

Захватчики

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

Дварфы

Для работы схемы можно использовать и самих дварфов, и это, возможно, самый интересный выбор. Схемы на дварфах обычно называют борг-логикой en. Хотя они живут дольше большинства домашних животных, дварфы быстро умирают от голода и жажды, требуя частого и бережного обслуживания. Дварфы без работы идут по непредсказуемым маршрутам. Они требуют сна, что может привести к очень большим задержкам. Замужние дварфийки могут давать потомство. В то же время дварфы — отличный выбор для схем. Дварфы могут активировать как нажимные пластины, так и рычаги. Цель их пути можно изменять непосредственными действиями игрока многими способами — наиболее просто и предсказуемо через военные расписания и маршруты вагонеток. Можно представить, что вся Dwarf Fortres — это одна большая логическая схема, работающая на дварфах. Более философски настроенный наблюдатель может подивиться, сквозь сколь колоссальную, неописуемую логическую схему он проходит, пока играет в Dwarf Fortress…

Нежить

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

Другие варианты

Других вариантов не так много, но в целом любое достаточно изученное существо можно использовать для построения схем. Можно использовать разрушителей строений, но для них требуются схемы только на мостах. Аналогично, летающие и плавающие существа могут создать трудности, но они решаемы. Существа, избегающие ловушек, почти бесполезны, хотя гремлинов могут выдавать сигнал через рычаги; оглушаемые существа, как кобольды, могут активировать нажимные пластины, если их оглушить; существа, не иммунные к паутине, могут активировать пластины, если их запутать в паутине. Существа размером меньше 10 000 не могут активировать нажимные пластины, но их можно использовать с помощью дополнительных существ, которые убегают от них или атакуют их, наступая на нажимную пластину. Тем не менее, основа логики существ — предсказуемый путь существа. Из-за этого диких животных сложно использовать для схем.