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: | ||
− | |||
− | |||
− | |||
− | |||
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. | |
− | + | Purge: Path to ground with no inputs | |
− | + | 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) | |
− | + | 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. | |
− | + | 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) | |
− | + | 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. | |
− | + | 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. | |
− | + | 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 | + | 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 | ||
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 | |
− | |||
############ | ############ | ||
ANYNUMD^ D | ANYNUMD^ D | ||
Line 63: | Line 57: | ||
− | + | NAnd | |
− | |||
Reconfigured And gate, see And. | Reconfigured And gate, see And. | ||
######### | ######### | ||
Line 71: | Line 64: | ||
− | + | Or | |
− | |||
Basic gate | Basic gate | ||
##### | ##### | ||
Line 80: | Line 72: | ||
− | + | Multi Or | |
− | |||
####### | ####### | ||
A ##### | A ##### | ||
Line 91: | Line 82: | ||
− | + | NOr | |
− | |||
Basically a reconfigured Or gate | Basically a reconfigured Or gate | ||
##### | ##### | ||
Line 100: | Line 90: | ||
− | + | 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 | + | 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 | ||
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 | + | 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 | |
− | |||
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 | |
− | |||
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 | |
− | |||
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 | |
− | |||
Reconfigured AndOr gate, see AndOr | Reconfigured AndOr gate, see AndOr | ||
###### | ###### | ||
Line 205: | Line 189: | ||
− | + | 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 | |
− | |||
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 | |
− | |||
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 252: | Line 233: | ||
<gallery> | <gallery> | ||
− | Image:Xnor,Xor,Nand,Or prototype adder STATE 1.PNG|Prototype digital adder | + | [[Image:Xnor,Xor,Nand,Or prototype adder STATE 1.PNG|frame|Prototype digital adder]] |
− | Image:And,Or,AndOr, Prototype adder STATE 3.PNG|sum 11 | + | [[Image:And,Or,AndOr, Prototype adder STATE 3.PNG|frame|sum 11]] |
− | Image:And,Or,AndOr, Prototype adder STATE 2.PNG|sum 10 | + | [[Image:And,Or,AndOr, Prototype adder STATE 2.PNG|frame|sum 10]] |
− | Image:And,Or,AndOr, Prototype adder STATE 1.PNG|sum 01 | + | [[Image:And,Or,AndOr, Prototype adder STATE 1.PNG|frame|sum 01]] |
− | Image:And,Or,AndOr, Prototype adder STATE 0.PNG|sum 00 | + | [[Image:And,Or,AndOr, Prototype adder STATE 0.PNG|frame|sum 00]] |
− | Image:9bit adder prototype interface pannel.PNG|9bit adder interface | + | [[Image:9bit adder prototype interface pannel.PNG|frame|9bit adder interface]] |
− | Image:9bit adder prototype.PNG|9bit adder | + | [[Image:9bit adder prototype.PNG|frame|9bit adder]] |
− | Image:9bit adder prototype 10100010notes.PNG|9bit adder, notes show the decimal value of each adder's bit | + | [[Image:9bit adder prototype 10100010notes.PNG|frame|9bit adder, notes show the decimal value of each adder's bit]] |
</gallery> | </gallery> | ||
Line 270: | Line 251: | ||
− | + | 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 | |
− | |||
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 263: | ||
finished dorfputer pending | finished dorfputer pending | ||
− | + | Subtractors | |
− | |||
inverse adder, simple but not yet tested. | inverse adder, simple but not yet tested. | ||
Line 295: | Line 273: | ||
− | + | 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 | |
− | |||
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 | ||
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 | |
− | |||
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 | ||
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 | ||
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 | |
− | |||
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 | |
− | |||
I'm working on an incremental goblin powered system, results pending. | I'm working on an incremental goblin powered system, results pending. | ||