v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Difference between revisions of "v0.34:Repeater"

From Dwarf Fortress Wiki
Jump to navigation Jump to search
(other consistent delays for clock gen)
m
 
(13 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{quality|Exceptional|11:18, 8 March 2011 (UTC)}}{{av}}
+
{{quality|Exceptional|11:18, 8 March 2011 (UTC)}}{{Computing}}
 +
{{av}}
  
A '''repeater''' is a device which creates a never-ending cyclic on/off signal-- more technically known as an oscillator. The simplest repeater design is simply a [[dwarf]] pulling a [[lever]] on [[repeat]]-- [[vampire]]s don't even need to take breaks from such a task. However, several automated designs are possible, and they can be made to operate at varying rates. They (usually) use fluid or creatures to trigger [[pressure plate]]s cyclically.
+
In ''Dwarf Fortress''<sup>1</sup>, a '''repeater''' is a device which creates a cyclic pattern of on and off signals. The simplest repeater design is a [[dwarf]] pulling a [[lever]] on [[repeat]]. However, numerous fully-automated designs are possible which can be made to operate at varying rates and linked to other systems for precise timing. Most repeaters use [[minecart]]s, fluids, or creatures to trigger [[pressure plate]]s cyclically.
  
 
As a general warning, always have a way to turn off the repeater, and/or allow your dwarves later access for repairs or modifications.
 
As a general warning, always have a way to turn off the repeater, and/or allow your dwarves later access for repairs or modifications.
 +
 +
[1] Everywhere else, a "repeater" is a signal retransmitter, and an "oscillator" or "clock generator" is what this article describes.
 +
 +
===Lever repeater===
 +
A lever with a pull job on repeat provides the simplest repeating cycle. After taking the first job, one dwarf will typically continue to pull the lever until becoming [[hungry]], thirsty, tired, or taking a [[on break|break]], at which point another dwarf will take over. A lever repeater is generally fast (less than 100 ticks per cycle), with varying lengths of inactivity as dwarves switch out. Unfortunately, the cycle length cannot be modified, nor can the repeater be synchronized with other systems. The occasional periods of inactivity can also prove problematic in critical applications, though a [[vampire]] can be significantly more reliable than a group of living dwarves.
 +
 +
===Traffic repeater===
 +
For low-priority tasks, a civilian-triggered [[pressure plate]] built in a hallway of the fortress can provide a simple oscillating signal automatically. The signal from such a repeater varies widely, though it can be adjusted somewhat by choosing hallways with more or less traffic. The lack of precision means that traffic repeaters are best utilized where a task needs to occur occasionally, but the timing is unimportant (such as triggering an [[atom smasher]] at the bottom of a garbage chute).
  
 
===Wave repeater===
 
===Wave repeater===
The simplest (non-borg) repeater is simply a wave traveling through a channel, as described in this [http://www.bay12forums.com/smf/index.php?topic=68659.0 forum] post.
+
A wave repeater is simply a wave traveling through a channel containing a pressure plate, as described in this [http://www.bay12forums.com/smf/index.php?topic=68659.0 forum post].
 
{{diagram|spaces=yes|\
 
{{diagram|spaces=yes|\
 
╔══════╗  ╔══════╗
 
╔══════╗  ╔══════╗
Line 15: Line 24:
 
A single 6/7 water tile flows through the channel, occasionally triggering a pressure plate set to trigger on 0-6/7 water.  To get the right amount of water in it, it's simplest to fill it all the way, then designate it as a [[Activity_zone#Water_source|water source]] (and perhaps another location as a [[Activity_zone#Pit/pond|pond]]) until a dwarf takes away a single [[bucket]] full of water.
 
A single 6/7 water tile flows through the channel, occasionally triggering a pressure plate set to trigger on 0-6/7 water.  To get the right amount of water in it, it's simplest to fill it all the way, then designate it as a [[Activity_zone#Water_source|water source]] (and perhaps another location as a [[Activity_zone#Pit/pond|pond]]) until a dwarf takes away a single [[bucket]] full of water.
  
As designed (5 tiles of non-triggering water, 1 tile of triggering water), this setup triggers rapidly, on par with the repeaters described below.  Counter-intuitively, making it smaller, or removing more water, slows the action of the repeater.  This is because the pressure plate never gets a chance to recover from its triggering, for which it needs 100 ticks.
+
As designed (5 tiles of non-triggering water, 1 tile of triggering water), this setup triggers rapidly, on par with the repeaters described below.  Counter-intuitively, making it smaller or removing more water slows the action of the repeater because the pressure plate never gets a chance to recover from triggering, which takes 100 ticks. Unfortunately, liquids behave semi-randomly, which means the period of this repeater can vary, making it unsuitable for fine timing applications.
  
 
It's possible to make a design that can be easily started and stopped, even one that conserves water, but such systems are complex, when the beauty of this design is its simplicity.  If it needs to be stopped for maintenance, one is probably best off simply dropping another bucket of water in it.
 
It's possible to make a design that can be easily started and stopped, even one that conserves water, but such systems are complex, when the beauty of this design is its simplicity.  If it needs to be stopped for maintenance, one is probably best off simply dropping another bucket of water in it.
Line 22: Line 31:
 
The traditional repeater design is probably this [[fluid logic|fluid]]-based one, described on the [http://www.bay12games.com/forum/index.php?topic=33563.msg495183#msg495183 forum] by [http://www.bay12games.com/forum/index.php?action=profile;u=16168 AncientEnemy]):
 
The traditional repeater design is probably this [[fluid logic|fluid]]-based one, described on the [http://www.bay12games.com/forum/index.php?topic=33563.msg495183#msg495183 forum] by [http://www.bay12games.com/forum/index.php?action=profile;u=16168 AncientEnemy]):
  
  ≈≈≈≈≈ - infinite source of water
+
<diagram> [#1:1]≈≈≈≈≈[#] - infinite source of water
  ═╗≈╔═ - wall to channel out after construction
+
  ═╗[#1:1]≈[#]╔═  - wall to channel out after construction
   ╠F╣  - shutoff floodgate ''(linked to exterior lever)''
+
   ╠[#7:0][@7:1]X[@#]╣  - shutoff floodgate (linked to exterior lever)
   ║#║ - 1-tile drawbridge (linked to pressure plate)
+
   ║#║   - 1-tile drawbridge (linked to pressure plate)
   ║p┼  - pressure plate (set to 7-7 water), and access door
+
   ║[#5:1]^[#]┼  - pressure plate (set to 7-7 water), and access door  
   ╠F╣  - floodgate (linked to pressure plate)
+
   ╠[#7:0][@7:1]X[@#]╣  - floodgate (linked to pressure plate)
 
   ╚═╝
 
   ╚═╝
 +
</diagram>
  
 
So long as the shutoff [[floodgate]] isn't closed, [[water]] from an infinite source flows on to the pressure plate, causing the raising [[bridge]] to block access to the water source and destroy water in the circuit, while the opening of the southern floodgate compensates for the space taken up by this bridge.  This water destruction mechanic means that, unlike many fluid logic circuits, this repeater needs no drainage.  The single pressure plate works both to regulate the repeater, and as output.
 
So long as the shutoff [[floodgate]] isn't closed, [[water]] from an infinite source flows on to the pressure plate, causing the raising [[bridge]] to block access to the water source and destroy water in the circuit, while the opening of the southern floodgate compensates for the space taken up by this bridge.  This water destruction mechanic means that, unlike many fluid logic circuits, this repeater needs no drainage.  The single pressure plate works both to regulate the repeater, and as output.
Line 39: Line 49:
 
Designs based on [[creature logic]] are also possible.  The following example is compact, reliable, and fairly predictable.
 
Designs based on [[creature logic]] are also possible.  The following example is compact, reliable, and fairly predictable.
  
{{diagram|spaces=yes|\
+
<diagram>
 
   ╔═╗   
 
   ╔═╗   
═══╝[#FF0]¢╚══
+
═══╝[#FF0]¢[#]╚══
[#F00]p[#FF0]¢[#FF0]^[#FF0]¢[#00F]¢[#F0F][#00F]^[#00F]¢[#F00]p
+
[#F00]p[#FF0]¢^¢[#00F]¢[#F0F][@00F]^[#00F][@]¢[#F00]p[#]
══╗[#00F]¢╔═══
+
══╗[#00F]¢[#]╔═══
   ╚═╝   }}
+
   ╚═╝
 +
</diagram>
  
 
A captured goblin placed between the two pressure plates drives this system in his attempts to reach map edge through paths {{Raw Tile|¢p|#F00|#000}}.  {{Raw Tile|^|#FF0|#000}} is linked to all {{Raw Tile|¢|#FF0|#000}}, and {{Raw Tile|^|#F0F|#00F}} is linked to all {{Raw Tile|¢|#00F|#000}}, as well as to output.  This gives the goblin a path away from his constrained tile every 100 ticks.  Delays in picking up path tend to make it run a cycle every 250 ticks. with on and off signals separated by about 120 ticks.  Its rate of repetition can be doubled by hooking both {{Raw Tile|^|#FFF|#000}} to output, although this leads to close placement of on and off signals.
 
A captured goblin placed between the two pressure plates drives this system in his attempts to reach map edge through paths {{Raw Tile|¢p|#F00|#000}}.  {{Raw Tile|^|#FF0|#000}} is linked to all {{Raw Tile|¢|#FF0|#000}}, and {{Raw Tile|^|#F0F|#00F}} is linked to all {{Raw Tile|¢|#00F|#000}}, as well as to output.  This gives the goblin a path away from his constrained tile every 100 ticks.  Delays in picking up path tend to make it run a cycle every 250 ticks. with on and off signals separated by about 120 ticks.  Its rate of repetition can be doubled by hooking both {{Raw Tile|^|#FFF|#000}} to output, although this leads to close placement of on and off signals.
 +
 +
===Minecart repeater===
 +
 +
In the simplest application, a [[Minecart#Roller|roller]] can move a [[minecart]] around a circular track. Due to the fixed speed provided by rollers and the deterministic behaviour of minecarts, a minecart repeater provides a cycle with an absolutely constant repeat time. The exact period of such a powered repeater is relatively easy to regulate by choosing the operation speed of the roller, by adjusting the length of the track and by adding medium- and low-friction [[Minecart#Track stop|track stops]] to reduce movement speed.
 +
 +
The [[Minecart#Impulse ramps|impulse ramp]] <s>bug</s> feature allows the design of completely autonomous minecart-based repeaters. Changing the length and friction of the route provides the ability to fine-tune the period of the repeater.
 +
 +
See [http://www.bay12forums.com/smf/index.php?topic=114695.0 this forum thread] for designs tuned for bridge and upright spike traps, though the images no longer exist.
 +
 +
See [http://www.bay12forums.com/smf/index.php?topic=126154.0 this forum thread] for a super-compact design.
 +
 +
Minecart repeaters can be calibrated to periods usable in the construction of clocks, like 200, 300 or 400 steps. Powered repeaters of this type will require nothing but a single roller and the power to run it, one pressure plate and a bit of space for the track. Repeaters using ramps to create perpetual motion don't need the roller or power but tend to be a bit more difficult to calibrate to useful periods and need additional infrastructure to stop their operation.
 +
 +
Minecart repeaters can also be synchronized with other systems. Adding additional pressure plates to the tracks can allow a single repeater to provide multiple offset signals. Alternatively, a pressure plate can trigger another independently-timed system.
  
 
==Clock Generation==
 
==Clock Generation==
Although the law of big numbers means that, over large enough intervals, the preceding irregular repeaters can be used to run a clock, designs that generate perfect clock signals are also possible.
+
Although the law of big numbers means that, over large enough intervals, the abovementioned irregular repeaters (the fluid and goblin logic ones) can be used to run a clock, designs that generate perfect clock signals have been known for a while.
  
This [[mechanical logic|mechanical]]-fluid hybrid repeater will send regular signals at a frequency determined by the speed of pressure plate recovery. The basic design consists of 4 [[screw pump]]s and 4 pressure plates but other versions are possible, depending on the number of separate steps you need.
+
This [[mechanical logic|mechanical]]-fluid hybrid repeater was the first proposed device to produce completely regular signals, at a frequency determined by the speed of pressure plate recovery. The basic design consists of 4 [[screw pump]]s and 4 pressure plates but other versions are possible, depending on the number of separate steps you need.
  
  
Line 96: Line 121:
  
 
===Delay===
 
===Delay===
Clock generation is closely related to the concept of delay: making a signal reach a target a certain amount of time after it is created.  Any non-mechanical circuit introduces delay in a signal-- the simplest form of delay is an identity gate.  The clock signal generator described above is unique in that it introduces a consistent delay.  Any consistent delay can be used for clock generation.  There are three known consistent intervals in Dwarf Fortress with which to fashion a clock signal generator: the reset delay associated with a pressure plate sending a ''close'' signal; the rate with which a creature [[gravity|falls]]; and the amount of time that a screw pump will continue to pump after losing power.  Any (or all) of these delays can be involved in a clock signal generator.
+
Clock generation is closely related to the concept of delay: making a signal reach a target a certain amount of time after it is created.  Any non-mechanical circuit introduces delay in a signal-- the simplest form of delay is an identity gate.  The clock signal generator described above is remarkable for introducing a consistent delay.  Any consistent delay can be used for clock generation.  Before the introduction of minecarts, there were three known consistent intervals in Dwarf Fortress with which to fashion a clock signal generator: the reset delay associated with a pressure plate sending a ''close'' signal; the rate with which a creature [[gravity|falls]]; and the amount of time that a screw pump will continue to pump after losing power.   
  
  
 
{{Category|Constructions}}
 
{{Category|Constructions}}
 
{{Category|Computing}}
 
{{Category|Computing}}

Latest revision as of 14:29, 5 April 2020

This article is about an older version of DF.

In Dwarf Fortress1, a repeater is a device which creates a cyclic pattern of on and off signals. The simplest repeater design is a dwarf pulling a lever on repeat. However, numerous fully-automated designs are possible which can be made to operate at varying rates and linked to other systems for precise timing. Most repeaters use minecarts, fluids, or creatures to trigger pressure plates cyclically.

As a general warning, always have a way to turn off the repeater, and/or allow your dwarves later access for repairs or modifications.

[1] Everywhere else, a "repeater" is a signal retransmitter, and an "oscillator" or "clock generator" is what this article describes.

Lever repeater[edit]

A lever with a pull job on repeat provides the simplest repeating cycle. After taking the first job, one dwarf will typically continue to pull the lever until becoming hungry, thirsty, tired, or taking a break, at which point another dwarf will take over. A lever repeater is generally fast (less than 100 ticks per cycle), with varying lengths of inactivity as dwarves switch out. Unfortunately, the cycle length cannot be modified, nor can the repeater be synchronized with other systems. The occasional periods of inactivity can also prove problematic in critical applications, though a vampire can be significantly more reliable than a group of living dwarves.

Traffic repeater[edit]

For low-priority tasks, a civilian-triggered pressure plate built in a hallway of the fortress can provide a simple oscillating signal automatically. The signal from such a repeater varies widely, though it can be adjusted somewhat by choosing hallways with more or less traffic. The lack of precision means that traffic repeaters are best utilized where a task needs to occur occasionally, but the timing is unimportant (such as triggering an atom smasher at the bottom of a garbage chute).

Wave repeater[edit]

A wave repeater is simply a wave traveling through a channel containing a pressure plate, as described in this forum post.

^ . . . . . - - > 7 7 7 7 7 6

A single 6/7 water tile flows through the channel, occasionally triggering a pressure plate set to trigger on 0-6/7 water. To get the right amount of water in it, it's simplest to fill it all the way, then designate it as a water source (and perhaps another location as a pond) until a dwarf takes away a single bucket full of water.

As designed (5 tiles of non-triggering water, 1 tile of triggering water), this setup triggers rapidly, on par with the repeaters described below. Counter-intuitively, making it smaller or removing more water slows the action of the repeater because the pressure plate never gets a chance to recover from triggering, which takes 100 ticks. Unfortunately, liquids behave semi-randomly, which means the period of this repeater can vary, making it unsuitable for fine timing applications.

It's possible to make a design that can be easily started and stopped, even one that conserves water, but such systems are complex, when the beauty of this design is its simplicity. If it needs to be stopped for maintenance, one is probably best off simply dropping another bucket of water in it.

Fluid logic repeater[edit]

The traditional repeater design is probably this fluid-based one, described on the forum by AncientEnemy):

   - infinite source of water                           
   - wall to channel out after construction             
  X   - shutoff floodgate (linked to exterior lever)       
  #   - 1-tile drawbridge (linked to pressure plate)       
  ^   - pressure plate (set to 7-7 water), and access door 
  X   - floodgate (linked to pressure plate)               
                                                          

So long as the shutoff floodgate isn't closed, water from an infinite source flows on to the pressure plate, causing the raising bridge to block access to the water source and destroy water in the circuit, while the opening of the southern floodgate compensates for the space taken up by this bridge. This water destruction mechanic means that, unlike many fluid logic circuits, this repeater needs no drainage. The single pressure plate works both to regulate the repeater, and as output.

This repeater toggles fairly slowly, about once every 300 steps, making it suitable for operating repeating bridges, floodgates, and upright spikes. Off signals tend to follow on signals about 200 ticks later. As an added bonus, the southern wall can be removed and connected to a cistern whose water level will be automatically maintained at a level between 3 and 4 deep-- perfect for swimming!

For an alternate water-based repeater, consider the design at User:SL/Logic_Gates#Repeater which demonstrates a two level, hybrid repeater.

Goblin repeater[edit]

Designs based on creature logic are also possible. The following example is compact, reliable, and fairly predictable.

     
¢
p¢^¢¢^¢p
¢
     

A captured goblin placed between the two pressure plates drives this system in his attempts to reach map edge through paths ¢p. ^ is linked to all ¢, and ^ is linked to all ¢, as well as to output. This gives the goblin a path away from his constrained tile every 100 ticks. Delays in picking up path tend to make it run a cycle every 250 ticks. with on and off signals separated by about 120 ticks. Its rate of repetition can be doubled by hooking both ^ to output, although this leads to close placement of on and off signals.

Minecart repeater[edit]

In the simplest application, a roller can move a minecart around a circular track. Due to the fixed speed provided by rollers and the deterministic behaviour of minecarts, a minecart repeater provides a cycle with an absolutely constant repeat time. The exact period of such a powered repeater is relatively easy to regulate by choosing the operation speed of the roller, by adjusting the length of the track and by adding medium- and low-friction track stops to reduce movement speed.

The impulse ramp bug feature allows the design of completely autonomous minecart-based repeaters. Changing the length and friction of the route provides the ability to fine-tune the period of the repeater.

See this forum thread for designs tuned for bridge and upright spike traps, though the images no longer exist.

See this forum thread for a super-compact design.

Minecart repeaters can be calibrated to periods usable in the construction of clocks, like 200, 300 or 400 steps. Powered repeaters of this type will require nothing but a single roller and the power to run it, one pressure plate and a bit of space for the track. Repeaters using ramps to create perpetual motion don't need the roller or power but tend to be a bit more difficult to calibrate to useful periods and need additional infrastructure to stop their operation.

Minecart repeaters can also be synchronized with other systems. Adding additional pressure plates to the tracks can allow a single repeater to provide multiple offset signals. Alternatively, a pressure plate can trigger another independently-timed system.

Clock Generation[edit]

Although the law of big numbers means that, over large enough intervals, the abovementioned irregular repeaters (the fluid and goblin logic ones) can be used to run a clock, designs that generate perfect clock signals have been known for a while.

This mechanical-fluid hybrid repeater was the first proposed device to produce completely regular signals, at a frequency determined by the speed of pressure plate recovery. The basic design consists of 4 screw pumps and 4 pressure plates but other versions are possible, depending on the number of separate steps you need.


Level 0 Level -1 Level -2
÷ ÷
÷ ÷
÷ ÷
÷ ÷
^ ^
^ ^

÷÷ is a screw pump which pumps from the light side to the dark side. ^ is a pressure plate which disengages gear when water of depth 1-7 lands on it. The red, green, blue, and yellow pressure plates and gears are color coded only to show which is linked to which. In the game they'll all look like ^ and . Building a pump after the gear which powers it or a gear after the pressure plate which disengages it will introduce a 1-step delay; so, depending on build order, the repeater might have a period between 400 and 408 steps. If the pumps, gears, and pressure plates are built in that order, then this system will repeat every 400 steps, exactly. Start the repeater by using a pond zone to dump 2 buckets of water onto any one of the plates.

The device as depicted uses 47-62 power during operation, and requires 62 power for startup. Drive train to power may, of course, lead to higher requirements. Once the two units of water are introduced to the system, water is conserved perfectly.

See User:MrFake/NStepCyclicRepeater for generalizable n-step clock generator instructions.

User:Hash/SelfPoweredHaltableRepeater demonstrates clock generation with integrated water reactor.

Forum thread has more description and explanations.

DFMA movie shows the action of pump-based clock generation.

Delay[edit]

Clock generation is closely related to the concept of delay: making a signal reach a target a certain amount of time after it is created. Any non-mechanical circuit introduces delay in a signal-- the simplest form of delay is an identity gate. The clock signal generator described above is remarkable for introducing a consistent delay. Any consistent delay can be used for clock generation. Before the introduction of minecarts, there were three known consistent intervals in Dwarf Fortress with which to fashion a clock signal generator: the reset delay associated with a pressure plate sending a close signal; the rate with which a creature falls; and the amount of time that a screw pump will continue to pump after losing power.