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.

Editing User:LordOOTFD

Jump to navigation Jump to search

Warning: You are not logged in.
Your IP address will be recorded in this page's edit history.


The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
please excuse my terrible formatting, I'm still figuring it out as my copious edit count will show.
 
 
==Animal Logic==
 
 
 
Animal logic works as a function of the path finding algorithm in dwarf fortress, as all animals seek to find the lowest cost path to their desired objects (activity zone, parents, dwarfs, valuable objects, etc) this can be used to create very very complex logic gates. Animal logic has three principle advantages, speed, compactness, and simplified functions; however, animal logic is slower than mechanical logic, less reliable than either, and logic is often inverted.
 
Animal logic works as a function of the path finding algorithm in dwarf fortress, as all animals seek to find the lowest cost path to their desired objects (activity zone, parents, dwarfs, valuable objects, etc) this can be used to create very very complex logic gates. Animal logic has three principle advantages, speed, compactness, and simplified functions; however, animal logic is slower than mechanical logic, less reliable than either, and logic is often inverted.
  
 
Throughout this document I will be using a number of terms which may not be immediately obvious so I'll list them here:  
 
Throughout this document I will be using a number of terms which may not be immediately obvious so I'll list them here:  
  
'''Ground''': for simplicity the thing the animal is pathing to is refereed to as ground as that is the ground state which it wishes to reach. Ground is always the left unless otherwise noted.
+
Ground: for simplicity the thing the animal is pathing to is refereed to as ground as that is the ground state which it wishes to reach. Ground is always the left unless otherwise noted.
  
'''Purge''': Path to ground with no inputs
+
Purge: Path to ground with no inputs
  
'''Path cost''': The number of steps the animal must make to reach ground
+
Path cost: The number of steps the animal must make to reach ground
  
'''Fusion Gate''': Simply one or more logic gates built into the same system (this is more than simply stringing gates)
+
Fusion Gate: Simply one or more logic gates built into the same system (this is more than simply stringing gates)
  
'''Compund Gate''': Gate which uses two or more gates set to different path costs.
+
Compund Gate: Gate which uses two or more gates set to different path costs.
  
'''And Gate''': And takes x inputs and output TRUE if ALL are TRUE.
+
And Gate: And takes x inputs and output TRUE if ALL are TRUE.
  
'''NAnd Gate''': NAnd takes x inputs and returns TRUE if ALL are FALSE.  
+
NAnd Gate: NAnd takes x inputs and returns TRUE if ALL are FALSE.  
  
'''AndOr Gate''': AndOr takes x inputs and returns TRUE if X-Y are TRUE. (this gate is exclusive to animal logic, and is a single step fusion of And, and Or)
+
AndOr Gate: AndOr takes x inputs and returns TRUE if X-Y are TRUE. (this gate is exclusive to animal logic, and is a single step fusion of And, and Or)
  
'''Or Gate''': Or takes x input and output TRUE if ANY are true.
+
Or Gate: Or takes x input and output TRUE if ANY are true.
  
'''Not Gate''': Not takes a single input and inverts it to the oposite state TRUE if FALSE.  
+
Not Gate: Not takes a single input and inverts it to the oposite state TRUE if FALSE.  
  
'''XOr Gate''': XOr takes 2 or more inputs and output TRUE if ONLY ONE is TRUE but NOT ALL are TRUE.  
+
XOr Gate: XOr takes 2 or more inputs and output TRUE if ONLY ONE is TRUE but NOT ALL are TRUE.  
  
'''NOr Gate''': NOr takes x input and returns TRUE if ALL inputs are FALSE.  
+
NOr Gate: NOr takes x input and returns TRUE if ALL inputs are FALSE.  
  
'''XNOr Gate''': XNOr takes 2 or more inputs and returns TRUE if ALL are TRUE, OR FALSE.
+
XNOr Gate: XNOr takes 2 or more inputs and returns TRUE if ALL are TRUE, OR FALSE.
  
 
For a better explanation of gates see:http://en.wikipedia.org/wiki/Logic_gate
 
For a better explanation of gates see:http://en.wikipedia.org/wiki/Logic_gate
Line 41: Line 37:
  
  
There are three principle logic gates in any logic system, And, Or, and Not. Animal logic can easily create all logic gates  and is able to handle multi input-output, and fusion gates. The principle reason for this is pathfinding always prefers the shortest path to ground, by controlling this path you can control the animal within the gate. The advantage of animal pathing is that the gate can have multiple states, more than a single on or off signal. For simplicity and streamlining the systems I have designed only use binary outputs, but theoretically they could be made to compute in decimal or some other system; however, this is maddening and all attempts have resulted in abominations which I do not wish to remember.
+
There are three principle logic gates in any logic system, And, Or, and Not. Animal logic can easily create all logic gates  and is able to handle multi input-output, and fusion gates. The principle reason for this is pathfinding always prefers the shortest path to ground, by controlling this path you can control the animal within the gate. The advantage of animal pathing is that the gate can have multiple states, more than a single on or off signal. For simplicity and streamlining the systems I have designed only use binary outputs, but theoretically they could be made to compute natively in decimal; however, this is a bit more complicated than a week of study allows.
  
 
==SIMPLE GATES==
 
==SIMPLE GATES==
  
there are two primary ways to make a gate, single path and dual path, the single path gate only allows the animal a single exit and this forces it into a non pathing state until there is input, at which point it will "wake up" and move; however, this kind of gate is slow and unreliable. Dual path gates always have an open path keeping the animal constantly pathing out of it's enclosure this allows the gate to respond faster and retain higher reliability; however, the constant pathing may cause noticeable frame rate drops with large logic sets. I will only be discussing the dual path gates, as I find them to be better in general use.
+
there are two primary ways to make a gate, single path and dual path, the single path gate only allows the animal a single exit and this forces it into a non pathing state until there is input, at which point it will "wake up" and move; however, this kind of gate is slow and unreliable. Dual path gates always have an open path, keeping the animal constantly pathing out of it's enclosure, this allows the gate to respond faster and retain higher reliability; however, the constant pathing may cause noticeable frame rate drops with large logic sets. I will only be discussing the dual path gates, as I find them to be better in general use.
 
 
  
'''And'''
 
  
 +
And
 
This simple gate is made by confining the animal into a straight coridor; the ground path will have two or more doors which are connected to the input, while the second longer path remains clear. the gate can be configured as an NAnd gate by simply moving the pressure plate. if the plate is by the ground path it functions as an And gate returning TRUE if the ground path is open, and if the plate is by the purge path it will return FALSE when the inputs are TRUE
 
This simple gate is made by confining the animal into a straight coridor; the ground path will have two or more doors which are connected to the input, while the second longer path remains clear. the gate can be configured as an NAnd gate by simply moving the pressure plate. if the plate is by the ground path it functions as an And gate returning TRUE if the ground path is open, and if the plate is by the purge path it will return FALSE when the inputs are TRUE
 
  #########
 
  #########
Line 56: Line 51:
  
  
'''Multi And'''
+
Multi And
 
 
 
  ############
 
  ############
 
   ANYNUMD^ D
 
   ANYNUMD^ D
Line 63: Line 57:
  
  
'''NAnd'''
+
NAnd
 
 
 
Reconfigured And gate, see And.
 
Reconfigured And gate, see And.
 
  #########
 
  #########
Line 71: Line 64:
  
  
'''Or'''
+
Or
 
 
 
Basic gate
 
Basic gate
 
  #####
 
  #####
Line 80: Line 72:
  
  
'''Multi Or'''
+
Multi Or
 
 
 
  #######
 
  #######
 
  A #####
 
  A #####
Line 91: Line 82:
  
  
'''NOr'''
+
NOr
 
 
 
Basically a reconfigured Or gate
 
Basically a reconfigured Or gate
 
  #####
 
  #####
Line 100: Line 90:
  
  
'''Not'''
+
Not
 
 
 
The simplest gate, It only takes a single imput.
 
The simplest gate, It only takes a single imput.
 
  #######
 
  #######
Line 110: Line 99:
 
==Compound Gates==
 
==Compound Gates==
  
Basically two or more gates arranged with different path costs to ground. These gates can be configured in a number of different ways, these being the simplest. It may be possible to make these gates as single gates but that would require inverting some of the input. Simple compound gates use two simple gates and handle two inputs, complex compund gates have more then two simple gates and need more than two inputs. a Complex compound gate might be used to convert decimal numbers into binary using And gates
+
Basically two or more gates arranged with different path costs to ground. These gates can be configured in a number of different ways, these being the simplest. It may be possible to make these gates as single gates but that would require inverting some of the input. Simple compund gates use two simple gates and handle two inputs, complex compund gates have more then two simple gates and need more than two inputs. a Complex compund gate might be used to convert decimal numbers into binary using And gates
 
 
'''XOr'''
 
  
 +
XOr
 
Compound of And and Or, when ONLY ONE is TRUE returns TRUE
 
Compound of And and Or, when ONLY ONE is TRUE returns TRUE
If A and B are false the animal moves to the FALSE position by Purge, if A or B is true, the animal moves to the TRUE position at the Or gate, if both A and B are true the animal moves to the FALSE position by the And gate.
+
If A and B are false the animal moves to the FALSE position by Purge, if A or B is true, the animal moves to the TRUE position at the Or gate, if both A and B are true the animal moves to the FALSE postion by the And gate.
  
 
  #g########
 
  #g########
Line 129: Line 117:
  
  
'''XNor'''
+
XNor
 
 
 
Inverse of XOr: Return TRUE if BOTH are TRUE OR FALSE
 
Inverse of XOr: Return TRUE if BOTH are TRUE OR FALSE
 
If A and B are false the animal move to the TRUE position by Purge, if A or B is true, the animal moves to the FALSE position at the Or gate, if both A and B are true the animal moves to the TRUE postion by the And gate.
 
If A and B are false the animal move to the TRUE position by Purge, if A or B is true, the animal moves to the FALSE position at the Or gate, if both A and B are true the animal moves to the TRUE postion by the And gate.
Line 148: Line 135:
  
  
'''Complex Compound gate, Octal display ALU'''
+
Complex Compound gate, Octal display ALU
 
 
 
Inputs are 1,2,4 these correspond to the binary values of the inputs, outputs are A,B,C,D,E,F,G,H being 0,1,2,3,4,5,6,7 respectively in the output display. I used octal for sanity, but this could be easily scaled to work for decimal (up to 10, beyond that you need a converter not an if switch) or hexadecimal(hex will be easy to handle, and probably easier to convert down to decimal)
 
Inputs are 1,2,4 these correspond to the binary values of the inputs, outputs are A,B,C,D,E,F,G,H being 0,1,2,3,4,5,6,7 respectively in the output display. I used octal for sanity, but this could be easily scaled to work for decimal (up to 10, beyond that you need a converter not an if switch) or hexadecimal(hex will be easy to handle, and probably easier to convert down to decimal)
  
Line 185: Line 171:
  
  
'''AndOr'''
+
AndOr
 
 
 
This gate will evaluate if either of x And statements are TRUE. This gate is built as a straight line similar to the And gate
 
This gate will evaluate if either of x And statements are TRUE. This gate is built as a straight line similar to the And gate
 
  ######
 
  ######
Line 195: Line 180:
  
  
'''NAndOr'''
+
NAndOr
 
 
 
Reconfigured AndOr gate, see AndOr
 
Reconfigured AndOr gate, see AndOr
 
  ######
 
  ######
Line 205: Line 189:
  
  
'''OrandOr'''
+
OrandOr
 
 
 
This gate returns true if either A or B and either C or D is true.
 
This gate returns true if either A or B and either C or D is true.
  
Line 215: Line 198:
  
  
'''OrandAnd'''
+
OrandAnd
 
 
 
This gate returns true if either A or B is true, and E and C are true.
 
This gate returns true if either A or B is true, and E and C are true.
  
Line 232: Line 214:
  
  
'''Binary Adder'''
+
Binary Adder
 
 
 
The first binary adder I attempted was structured like an electronic adder using an array of simple gates. It contained five animals and used grates to control the logic, based off of bidok's logic gates. This adder functioned correctly but it was very inefficient with space, and highly unreliable often taking ten plus minutes to properly align. I refined this design by lining the gates up into a linear arrangement, but this failed to solve the efficiency problems.
 
The first binary adder I attempted was structured like an electronic adder using an array of simple gates. It contained five animals and used grates to control the logic, based off of bidok's logic gates. This adder functioned correctly but it was very inefficient with space, and highly unreliable often taking ten plus minutes to properly align. I refined this design by lining the gates up into a linear arrangement, but this failed to solve the efficiency problems.
  
Line 250: Line 231:
  
 
Reference pictures
 
Reference pictures
 
+
[[Image:Xnor,Xor,Nand,Or prototype adder STATE 1.PNG|frame|Prototype digital adder]]
<gallery>
+
Add pictures of the states here
Image:Xnor,Xor,Nand,Or prototype adder STATE 1.PNG|Prototype digital adder
 
Image:And,Or,AndOr, Prototype adder STATE 3.PNG|sum 11
 
Image:And,Or,AndOr, Prototype adder STATE 2.PNG|sum 10
 
Image:And,Or,AndOr, Prototype adder STATE 1.PNG|sum 01
 
Image:And,Or,AndOr, Prototype adder STATE 0.PNG|sum 00
 
Image:9bit adder prototype interface pannel.PNG|9bit adder interface
 
Image:9bit adder prototype.PNG|9bit adder
 
Image:9bit adder prototype 10100010notes.PNG|9bit adder, notes show the decimal value of each adder's bit
 
</gallery>
 
  
  
Line 270: Line 242:
  
  
'''Decimal Adder'''
+
Decimal Adder
 
 
 
While it can be done, It's massively more complex than simply making a set of decimal converters working with numbers over 10,
 
While it can be done, It's massively more complex than simply making a set of decimal converters working with numbers over 10,
  
'''hexadecimal adder'''
+
hexadecimal adder
 
 
 
The hex adder makes use of 32 sum gates per side of a single adder, making it geometrically more complex than the binary adder, however it does make animal management more streamlined. more information to come.
 
The hex adder makes use of 32 sum gates per side of a single adder, making it geometrically more complex than the binary adder, however it does make animal management more streamlined. more information to come.
  
Line 284: Line 254:
 
finished dorfputer      pending
 
finished dorfputer      pending
  
'''Subtractors'''
+
Subtractors
 
 
 
inverse adder, simple but not yet tested.
 
inverse adder, simple but not yet tested.
  
Line 295: Line 264:
  
  
'''Kittens'''
+
Kittens
 
 
 
Put those worthless cats to work, load them into your fortress's logic core and make them work for their keep. while kittens are the most reliable cores for logic gates with their 3 pathing goals they're also problematic as they grow into cats which only have two, and may cause catsplosions inside your logical cores. Ideally kittens should be replaced yearly or biyearly as their growth defines.
 
Put those worthless cats to work, load them into your fortress's logic core and make them work for their keep. while kittens are the most reliable cores for logic gates with their 3 pathing goals they're also problematic as they grow into cats which only have two, and may cause catsplosions inside your logical cores. Ideally kittens should be replaced yearly or biyearly as their growth defines.
 
Kittens path to the activity zone, their parents, and vermin.
 
Kittens path to the activity zone, their parents, and vermin.
  
  
'''Puppies'''
+
Puppies
 
 
 
Why should your fortresses working animals only work once they grow up? throw the puppies into the logic core and have them work from the day of their birth. Puppies are quite reliable with their two pathing goals, but retain the problem of maturation.
 
Why should your fortresses working animals only work once they grow up? throw the puppies into the logic core and have them work from the day of their birth. Puppies are quite reliable with their two pathing goals, but retain the problem of maturation.
 
Puppies path to the activity zone, and their parents.
 
Puppies path to the activity zone, and their parents.
  
'''Animal Children'''
 
  
 +
Animal Children
 
Using the non matured animals for something useful before butchering may be quite effective, however they still must be flushed when they mature.
 
Using the non matured animals for something useful before butchering may be quite effective, however they still must be flushed when they mature.
 
Animal children path to the activity zone, and their parents.
 
Animal children path to the activity zone, and their parents.
  
  
'''Cats'''
+
Cats
 
 
 
Aggravating animals, throw them into the computer and get some worth out of them. Otherwise useless cats become useful when used for logic, with two pathing goals they're responsive, and multiply quickly. watch out for catsplosions while using these critters
 
Aggravating animals, throw them into the computer and get some worth out of them. Otherwise useless cats become useful when used for logic, with two pathing goals they're responsive, and multiply quickly. watch out for catsplosions while using these critters
 
Cats path to the activity zone, and Vermin.
 
Cats path to the activity zone, and Vermin.
  
'''Dogs'''
 
  
 +
Dogs
 
The workhorse of your fortress, because horses can't do anything useful. I'd recommend not using dogs as they're put to better use as wardogs to protect your dorfs.
 
The workhorse of your fortress, because horses can't do anything useful. I'd recommend not using dogs as they're put to better use as wardogs to protect your dorfs.
 
Dogs path to the activity zone.
 
Dogs path to the activity zone.
  
'''Cattle'''
 
  
 +
Cattle
 
Large lumbering bovines, the advantage of Cattle is you can tell the sexes apart, they also make the pressure plates continue to work if you forget to reassign the trigger weight.
 
Large lumbering bovines, the advantage of Cattle is you can tell the sexes apart, they also make the pressure plates continue to work if you forget to reassign the trigger weight.
 
Cattle path to the activity zone.
 
Cattle path to the activity zone.
  
  
'''Other animals'''
+
Other animals
 
 
 
Any animals work, but the above are probably your best choice, excluding any modded animals. however if you have a GCS handy a GCS powered computer would be awesome, so take this as you will.
 
Any animals work, but the above are probably your best choice, excluding any modded animals. however if you have a GCS handy a GCS powered computer would be awesome, so take this as you will.
 
Other animals have different pathing goals, but most only path to the activity zone.
 
Other animals have different pathing goals, but most only path to the activity zone.
  
  
'''Goblins'''
+
Goblins
 
 
 
I'm working on an incremental goblin powered system, results pending.
 
I'm working on an incremental goblin powered system, results pending.
  

Please note that all contributions to Dwarf Fortress Wiki are considered to be released under the GFDL & MIT (see Dwarf Fortress Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel Editing help (opens in new window)