Monday, April 30, 2007

Proposal: Making the Machine work

Quorum Reached: 6 v 2.
—Seebo

Adminned at 01 May 2007 18:20:26 UTC

If there is no rule called “The Machine”, then this proposal has no further effect.

Create a new sub-rule of “The Machine” called “The Machine in action” with text:

At any given time, the Machine is considered to be either “Running” or “Standing by”.  At the moment this paragraph is added to the Ruleset, the Machine is Standing by.

When the Machine is Standing by, it becomes Running if any of the following occur:

*The order or contents of the list of Parts on the “Machine Parts” page or of the list of Variables on the “Machine Variables” page change (including the addition or removal of a Part or Variable).
*A Worker is added to or removed from the list of Active Workers in the blog sidebar.
*A Proposal becomes Enacted.  In this case, the specified effects of said Proposal occur before the Machine becomes Running.
*A value which the Ruleset requires to be tracked in the GNDT changes.

When the Machine becomes Running, the following steps take place, in order:

*Step 1 - If any Rule other than this Rule requires changes to be made to the Gamestate, those changes are made as usual, until no such changes are required.  (If there is an infinite loop within the Ruleset itself, no out will be provided, of course.  Don’t let that happen.)
*Step 2 - If the order and contents of the list of Variables on the “Machine Variables” page are identical to what they were during any previous iteration of Step 2 that was made since the Machine was most recently Standing by, then the Machine becomes Standing by, and any remaining steps are not performed.  (This is the clause that allows us to break out of infinite loops.  Note that the break-out always occurs immediately after we’ve checked that the Ruleset itself will not throw us back into the loop)
*Step 3 - If no requirements for the Initiator of any Part are satisfied, then the Machine becomes Standing by, and any remaining steps are not performed.
*Step 4 - Changes to the “Machine Variables” page are made as described in the Effect of the first Part for which the Initiator requirements are satisfied (when the Parts are considered in the order in which they are listed on the “Machine Parts” page).  No aspect of the Gamestate other than the contents of the “Machine Variables” page may be changed in this way.
*Step 5 - Repeat Steps 1-5 in order, until a Step indicates that remaining steps are not to be performed.

Comments

Enderbean:

30-04-2007 22:59:36 UTC

for

Amnistar: he/him

30-04-2007 23:00:20 UTC

for And once I get Positions worked out, we’ll be 1 step closer to gettin’ the machine running :).  Last requirement is mentioning what the specifications the customer wants are :)

Enderbean:

01-05-2007 00:39:09 UTC

against  I am changing my vote because I think we should either come up with a process for dealing with infinite states that don’t repeat, or we should change the definition of Pieces so that they cannot occur. 

A process for dealing with the situation would be a judgment call that the machine is in such a loop by the person Running the Machine. (My wife assures me that in sufficiently complicated situations there is no way to know for sure. She knows more about algorithm theory and stuff than me, so I’m taking her word for it).

The other solution I see is to restrict the number of Variables to a finite number, and to restrict the number of states a Variable may represent to be a finite number as well. If there are only a finite number of potential states then there can’t be an infinite loop that doesn’t repeat a state.

BobTHJ:

01-05-2007 01:55:23 UTC

imperial

Axeling:

01-05-2007 04:28:10 UTC

imperial

Enderbean:

01-05-2007 14:36:40 UTC

Another possible solution is to decide that after a certain number of iterations the machine will halt automatically.

This could be defined thematically, as breakdown due to wear and tear on parts.

spikebrennan:

01-05-2007 15:55:38 UTC

I’m having a hard time following this:  can somebody post a hypothetical set of simple machine parts and variables so I can follow what’s going on?  If the description of a Part is “If this Part is activated, change Variable X to state Y, and activate part Z”, then which of the five numbered steps would this fall under?

Enderbean:

01-05-2007 17:19:01 UTC

I don’t believe a part can be given an effect that activates another part directly. The rule on Parts seems to indicate that the effect describes changes to the “Machine Variables” wiki page only.

Amnistar: he/him

01-05-2007 17:32:30 UTC

OKay, here we go as a chain.

List of Parts:

N:Master Switch
I:Proposal “Flip that Swich” is passed.
E:Increase Energy Output of Flux Capacitor by 10.

N:Sonic Spoon
I:Magnet is pointed North
E:Floating Ball is set to “In Air”

N:Gravity
I:Magnet is pointed any direction but North
E:Floating Ball is set to “Grounded”

N:Giant Cage Trap
I:Weight on Scale is less that 10
E:Mouse is Trapped

N:Scale Pressure
I:Floating Ball is set to “In Air”
E:Weight on Scale is reduce by 3

N:Electric Fork
I:Flux Capacitor Energy Output is more that 7
E:Turn Magnet to next direction.


List of Variables:

N:Flux Capacitor
PS: Energy Output 1-20
CS: 1

N: Floating Ball
PS: “In Air” or “Grounded”
CS: “Grounded”

N:Magnet
PS: Pointed: North, East, South, West (then loop back to begining of list)
CS: West

N:Weight on Scale
PS: 0-100
CS: 50

N:Mouse
PS: “Free”, “Trapped”
CS: Free

Enderbean:

01-05-2007 17:51:05 UTC

I think this Part would create an infinite loop singlehandedly:

Name: Poo Flinger
Initiator: There is no variable named Poo or variable Poo has a value > 1
Effect: If there is a variable named Poo increment it by 1. If there is no variable named Poo add the following entry to the “Machine Variables” page:
Name: Poo
Creator: Poo Flinger
Possible States: any integer
State: 2

Hix:

01-05-2007 18:43:23 UTC

Exactly, Enderbean.  Don’t make such a Part, please.

Clucky: he/him

01-05-2007 19:40:00 UTC

for

spikebrennan:

01-05-2007 21:42:29 UTC

against to the extent that this would have to be rewritten anyway once my yet-to-be-formed workbench-and-Parts/Variables-rewrite gets posted.

Seebo:

02-05-2007 01:17:07 UTC

for