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.

40d Talk:Computing

From Dwarf Fortress Wiki
Revision as of 18:30, 4 January 2008 by SL (talk | contribs)
Jump to navigation Jump to search

I created this page because I think it's a very interesting part of the game for advanced players. I'm not at all familiar with creating wiki pages, so if someone else who was familiar with the concepts could write a section or two themselves, that would be grand. Right now I think it's been proven possible to create logical input and output gates using fluid dynamics, axles and gears, and even the movements of dwarves utilizing pressure plates.

It was on the 4th of Galena 1097 that the Fortress 'The Net of Skies' became self-aware. Panicked mechanics attempted to disengage the mechanisms, but the fortress interpreted this as an attack and designated all Dwarves as hostile... --WyldKarde 13:17, 23 November 2007 (EST)


A suggested component: The one-use lever.
ó _X_ ___ / = ramp X = door
#" ¯ /### " = bridge
#########
The lever has a Pull The Lever repeat job on it. The door only opens when access is required. Upon being pulled, the lever opens the bridge and drops the dwarf that pulled it. -- Zaratustra 14:56, 23 November 2007 (EST)
Problem detected: the lever doesn't obstruct, so the dwarf can be left hanging on the lever's tile.

I think we should strive to include an example of an NAND gate and/or a NOR gate for each style since that's the bare minimum for operation.--AlBorland 22:09, 23 November 2007 (EST)

Machine logic

The machine logic gates as they stand are incomplete. The inputs are levers, but the outputs are machine components. In order to connect a machine logic gate to another gate, the machine signal needs to be converted back into a lever signal. The only way I can see to do that is with a water tank, a pump, and a pressure plate. --Peristarkawan 12:38, 28 November 2007 (EST)

Anthills

Kudos to whoever mods ants to be trainable for borg machines... Hex anyone? :D N35t0r 20:28, 8 December 2007 (EST)

This would make that person my favoritest ever. --Geofferic 01:36, 9 December 2007 (EST)
Agreed. Madmadmadmage 15:13, 9 December 2007 (EST)

Fluid logic gates

I got bored, so here, have some gates. I don't know the offical DF format for fortress snippets, so I've posted them here and hoped someone will be bored enough to format them correctly. I also don't really post on Wikis very much, so if this isn't the kind of thing you're all looking for, delete it. There might also be a few errors; I haven't actually tested any of these, and I'm not exactly sure about the XORs. I know that I could have made a few of these more compact by having the fluid perform the OR themselves, but that would have caused backwash into any dry inputs, possibly corrupting the system. If you have yours set up right, you don't need that.

Edit:Also, you might want to connect your reservoir to the floodgates on the other side with another, lever-controlled, floodgate in between. That way you don't have problems with mechanical delays and fluid getting through where it's not supposed to because a gate hasn't closed yet. Madmadmadmage 18:05, 9 December 2007 (EST)

Notation:

. : channel
+ : ground
# : wall
n : floodgate connected to plate number n
p : pressure plate true when depth 1-3
q : pressure plate true when depth 4-7
I : input channel 1
J : input channel 2
O : output channel
D : to runoff tank, so it doesn’t all jam. I’ve assumed a single level for the basic design,
but a far more efficient model (presented below) assumes that this tank is two levels down,
and that D is a two-z-level pit. H : from full reservoir. Again, basic designs are for a single level, but a far more efficient
model (presented below) assumes that this tank is one level up, and H is a hole in the ceiling. Water == true; no water == false

Pressure plates are numbered top to bottom, and then left to right within rows with multiple plates. For example:

##1####2###
#+++34++++#
#++++++56+#
##7########

Single-level designs:
NOT gate:

######
H....#
#++1+#
Ip+..O
#D##+#

OR gate:

##########
H........#
#++++++12#
D.+...+..#
#q+q+.++.O
#I#J#D####

NOR gate:

##########
H........#
#++++++12#
D.+...+..#
#p+p+.++.O
#I#J#D####

AND gate:

#########
H.......#
#++++++1#
D.+...+2#
#q+q+.+.O
#I#J#D###

NAND gate:

#########
H.......#
#++++++1#
D.+...+2#
#p+p+.+.O
#I#J#D###

XOR gate:

###############
H.............#
#++++++++13+++#
#+++++++++..24O
J.p.q+pq.+++++#
####D#I#D######

Alternative XOR gate:

#############
H...........#
#++++++12+++#
#+++++++..12O
J.p+p..+++++#
##D#I#D######

The pair of floodgates closest to the output (the ones in series) are open when they’re connected to the plates, and the pair of floodgates closest to the reservoir are closed when they’re connected to the plates. Additionally, if the two in series are connected to a lever, this setup can be turned into an AND gate simply by pulling the lever.

Multi-level designs:
NOT gate:

###H##
#++1+#
Ip+..O
#D####

OR gate:

#######
IqD+H.#
#+++12#
JqD+..O
#######

NOR gate:

#######
IpD+H.#
#+++12#
JpD+..O
#######

AND gate:

#######
IqD+H+#
#+++1+#
JqD+2.O
#######

NAND gate:

#######
IpD+H+#
#+++1+#
JpD+2.O
#######

XOR gate:

###########
IpqD+H.+++#
#++++13+++#
JpqD+...24O
###########

Alternative XOR gate:

##########
IpD+H.+++#
#+++12+++#
JpD+...12O
##########

The pair of floodgates closest to the output (the ones in series) are open when they’re connected to the plates, and the pair of floodgates closest to the reservoir are closed when they’re connected to the plates. Additionally, if the two in series are connected to a lever, this setup can be turned into an AND gate by pulling the lever.

Madmadmadmage 16:53, 9 December 2007 (EST)


Have you tested these at all? I translated your multi-level NOT gate into a form I could understand better after designing some gates myself, and looked at it. It doesn't look to me like it would work at all - First, water flows diagonally, so the water would just flow around the floodgate. Second, if water didn't flow diagonally, and you opened the floodgate because of an input signal, water from the reservoir would then hold the floodgate open by covering the pressure plate even if you shut off the input signal. You'd also need to do something other than just have the drain always open or you might not even trigger the pressure plate because it's draining too fast. --SL 19:17, 23 December 2007 (EST)

No, I did not test any of these. I forgot that water flows around corners; I usually work with straight passages and put my gates in places where it doesn't matter. I'll fix that. As for draining water, you're correct on one point: the water would drain off too fast to trigger the plates. It would drain out to one, so the part about it not draining out isn't a problem. The draining-too-fast problem can also be solved: set the plate to activate on any depth-two water. That would mean it would take a tiny bit longer to drain (although not much), but it would also make it open if any water at all were coming to the input. Additionally, minimizing delays would be very, very useful. Remember, these don't have to be all separated like I have them. You could design these with everything compressed into three-long channels (the minimum length of a NAND gate plus an input), which would greatly optimize performance. Maybe using something like an aquifer for the water source would also help. I'll have to build a fortress specifically to test fluid gates (translate as: dig through aquifer). Give me a few weeks. Madmadmadmage 02:14, 27 December 2007 (EST)

I've finished my own logic gates now - designed, built, and tested them all. They transfer signals between gates using mechanisms rather than water flow, but which use water internally for processing logic. In addition to the standard gates (NOT, AND, OR, XOR, NAND, NOR), I've also made repeaters (repeatedly toggle two output signals) and memory gates (one input signal sets the gate's output to ON, the other input signal resets it to OFF - this is useful to replace one-use pressure plates with resettable versions). They only need to be built on top of a murky pool (with water in it), or an aquifer, brook, stream, river, dwarf-made cistern, whatever. I've posted them here User:SL/Logic_Gates for now, with all the information needed to build and use them, and advice on doing so. --SL 13:30, 4 January 2008 (EST)