Wednesday, May 02, 2007

Proposal: Edits to Parts/Variables; Workbench

S.K.
-Amnistar

Adminned at 02 May 2007 17:05:27 UTC

Part 1: Changes to “Parts”

If there is a Rule 2.3.1 “Parts”, then rewrite the text that currently reads:

* Name: The name by which the Part is refered (any any abbreviations by which it may be refered).
...
* Initiator: The requirements that must be met for this Part to take effect.
* Effect: A description of changes to the “Machine Variables” wiki page”

so that it reads:

* Name: The name by which the Part shall be referred to (and the four-character abbreviation by which the Part shall be referred to).
...
* Size: The number and orientation of Workbench Squares that this Part would occupy if placed on the Workbench. (Examples: 1x1, 3 wide by 2 high).  The number of Cells must be a positive integer.  If the size is unspecified then the size is 1x1 (i.e., one Square).
* Attributes: (This element is optional) A list of any attributes that this Part has (e.g., edible, flammable, magnetic, and so on).  If a Part’s description does not specify that it has a particular Attribute then the Part does not have that Attribute.
* Activation Condition: (This element is optional) A description of a condition which, if true, activates this Part.  (In addition to the Activation Condition, if any, specified in the description of the Part on the wiki page, please note that the the description of another Part may expressly provide that the Activation of that Part will Activate this Part.
* Effect: A description of the effect or effects of Activating this Part.  This description may include checking the State of any number of Variables and setting forth the Effect of particular States of particular Variables.  Valid effects include: activating or deactivating any number of specified Parts (which may be specified by identifying the Part or the Location of the Part (e.g., “Activate any Part immediately adjacent to this Part on the right”), or, changing the State of any number of Variables,  changing the Location of any number of Parts, or destroying any number of Parts.  Only Parts that are part of the Machine may be affected. (example: effect of a Part entitled “Piranha”.  If the Variable “Piranha hunger status” has the state “Hungry” and the Variable “Piranha life status” has the state “Alive”, and the Square immediately to the right of this Part is vacant, and the Square that is immediately to the right of that vacant Square contains a Part that is Edible, then change the location of the Piranha by one Square to the right and destroy that edible Part.)

If there is a rule or sub-rule called “The Machine in action” then also add the following text to the end of the “Parts” rule:

“Whenever the Machine becomes Standing By, all Parts become deactivated.”

Part 2: Changes to “Variables”
If there is a Rule 2.3.2 “Variables”, then rewrite the text that currently reads:

* Name: The name by which the Variable is refered (any any abbreviations by which it may be refered).
...

so that it reads:

* Name: The name by which the Variable shall be referred to (and the four-character abbreviation by which the Variable shall be referred to.)

and add the following bullet point to the end of the “Variables” rule:

” Association with Part: If this Variable is associated with a particular Part, the name and/or abbrevation of that Part.  If that Part is destroyed or otherwise removed from the gamestate, then this Variable will also be deleted.”


Part 3: Workbench

If there is a rule “The Machine”, create a subrule entitled “Workbench” as follows:

The Workbench is a grid of Squares consisting of 6 rows labeled “A” through “F” (with A at the bottom) and 8 columns labeled “1” through “8” (with 1 on the left).  Individual Squares in the Worbench are thus identified “1A” (at the lower left” and so on through “6F” at the upper right.

Workbench Squares are considered “adjacent” if their positions on the Workbench grid are adjacent.  For example, Square 1A is adjacent to Squares 2A and 1B, but not adjacent to any other Squares.  The terms “above” and “beneath” may also be appropriately used to indicate Workbench Squares that occupy a position in the same column as a given Square.

In order for a Part to become part of the Machine, that Part must be placed in vacant Squares in the Workbench.  Variables may not be placed in the Workbench.

Any given Square may not hold more than one Part.  Placing a Part in the Workbench is accomplished by indicating which column (or adjacent columns, if the Part is more than 1 column wide) the Part is dropped into.  The Part then drops down to the lowest vacant Squares in that column.  For example, if the Workbench is empty and a 1x1 sized Part is dropped in column 3 then the Part falls down to Square 3A.  If another 1x1 sized Part is then dropped in column 3 it falls down to Square 3B.  If a 2-wide by 1-high Part is then dropped in columns 3 and 4 then it falls down to Squares 3C-4C.

Parts “fall down” to the lowest vacant Squares in the Workbench columns that it occupies, but without changing its shape.  Thus, for example, if the Workbench is empty except for “PART-A” (a 1x1 sized Part located at Square 3A), “PART-B” (a 1x1 sized part located at Square 3B) and “PART-C” (a 2-wide by 1-high Part located at Squares 3C-4C), and PART-B is destroyed or removed from the Workbench, then PART-C will immediately “fall down” and change its location to Squares 3B-4B.  “Falling down” happens whether the Machine is Running or Standing By, and notwithstanding anything to the contrary in the “The Machine in Action” rule, occurs immediately upon the condition for “Falling down” occurring, and before any further Machine running steps may occur.

The Square or Squares on the Workbench occupied by a Part may be referred to as that Part’s Location.

There exists a wiki page Workbench which describes the location of all Parts on the Workbench.  The contents of this list are considered part of the Gamestate (and thus may not be modified except as permitted by the Ruleset).

Comments

Hix:

02-05-2007 15:05:04 UTC

against Very Complicated.  Tries to change too much at once.  Is not compatible with the terminology used in “The Machine in Action”.  New “activation” concept is very clunky (and broken, I think).

I think having all Parts (and only Parts) having locations is going to be confusing or at least unintuitive to many Workers, since there are bound to be both Variables that represent physical objects and Parts that represent abstract concepts.  Maybe in-game “Parts” and “Variables” haven’t been given the most accurate names from a flavor perspective, but really, Parts are just special kinds of Rules that only operate on the Variables (for now, at least).

spikebrennan:

02-05-2007 16:40:44 UTC

How is Activation concept clunky or broken?

Hix:

02-05-2007 17:22:57 UTC

Well, for starters, the “activation condition” is constantly being checked, but to avoid loops, this should only occur while the Machine is Running. 

It’s clunky in that it tries to cram all the rules for arbitrating the Effects into the bullet points, which ought to simply describe what must be contained in the “Machine Parts” entry for any given Part. 

Anyway, why is “activation” being introduced at all?  The “Machine in Action” rule causes the effects of a Part to occur whenever the Initiator requirements are met.  It usually won’t make sense for Parts to be “activated” at other times.

Enderbean:

02-05-2007 17:55:25 UTC

I don’t really see how the changes to Parts are needed for the introduction of the workbench concept. It seems like you are trying to package in a rule that allows Parts to have triggering the effects of a different part as an effect. This is unnecessary. At the moment you could represent such an activation as follows:
Name: Activation Contraption
Initiator: whatever. It doesn’t matter.
Effect: Change the variables page in the way specified by the to part the left.

spikebrennan:

02-05-2007 18:26:30 UTC

Right now, the only thing that a Part can do when initiated is change a Variable.  Under my proposal, the initiation of a Part could have other kinds of effects.

To answer Hix’s question about “activation”: what if you want to create a Part that has the effect “Activate [or, if you prefer, Initiate] the Part that is immediately adjacent to the left of this Part”.  Under the existing rule, this is not possible, because a Part’s Initiation criteria must be stated in the description of the Part in question.  Under my proposed structure, it would be possible for a Part to be Activated[/Initiated] by operation of some other Part or circumstance.

Hix:

02-05-2007 18:48:54 UTC

Huh?  Wouldn’t the example Part that Enderbean just gave do just that?  There’s nothing saying that a Part has a certain effect ONLY when its Initiator is satisfied.  Why can’t Part A’s effect be to mimic the effect of another Part, hence “activating” it?

spikebrennan:

02-05-2007 19:18:06 UTC

Hix: Enderbean’s example doesn’t really work.  “Change the variables page in the way specified by the part to the left” doesn’t work, since if the part to the left is otherwise not Initiated, then that part doesn’t change the variables page.  If the part in question had an Effect of “Change the variables page in the way that it would be changed if the Part to the left were Initiated, whether or not it actually is Initiated”, that would present its own problems.

Hix:

02-05-2007 19:34:22 UTC

I think you’re wrong about the example’s not working.  Well, maybe the example’s specific wording could use some tweaking (depending on what you think “specified” is supposed to mean), but wouldn’t this work?:  “Make the changes described in the Effect section of the Part to the left”

spikebrennan:

02-05-2007 20:19:39 UTC

Let me describe a hypothetical example.  We have two Parts in the Machine as follows:

Name: Part-1
Initiation: The variable “Part-1 Power Switch” has the state “On”
Effect: Change the variables page in the way stated in the Part that is located in the Square on the left that is adjacent to the Square containing this Part.

And the other Part, which is located in the Square immediately to the left:

Name: Part-2
Initiation: The variable “Part-2 Power Button” has the state “Button is pressed”
Effect: Change the state of the variable “Status of Schroedinger’s Cat” to “Dead”.

Assume that both Parts are not Initiated.  (That is to say, the state of Part-1 Power Switch is “Off”, and the state of Part-2 Power Button is “Not Pressed”.  Then we Initiate Part-1 by arranging for the Part-1 Power Switch” to be changed to “On”.  What happens?  By my reading, nothing—this is because the Initiation condition of Part-2 has not, in fact, been satisfied, so the Effect part of that Part is really “no effect”.

Contrariwise, under my proposed re-write of the “Parts” rule, the Effect of Part-1 could be validly written as “Activate the Part that is located in the Square on the left that is adjacent to the Square containing this Part”.  (Under the current rule, a Part’s effect cannot be validly written that way).  Therefore, Part-2 would be activated and its effect would trigger even though the variable Part-2 Power Button still has the state “Not Pressed”.

Hix:

02-05-2007 21:07:54 UTC

spikebrennan said:  “By my reading, nothing—this is because the Initiation condition of Part-2 has not, in fact, been satisfied, so the Effect part of that Part is really “no effect”.”

Where are you getting this from?  The Effect of Part-1 doesn’t say “do what the effect of Part-2 says to do, but only if the initiator is satisfied”.  It just says “do what the effect of Part-2 says to do”.  Also, the effect of Part-2 is not “Kill the Cat, but only if the Power button is pressed” but rather “Kill the Cat”.

You seem to sometimes be using the term “Effect” to refer to the entire “If Initiator, then Effect” process.

spikebrennan:

02-05-2007 21:13:01 UTC

against SELF-KILL

Okay, in the interest of moving things along, I will shelve that Part/Variable stuff for now and post a stripped-down Workbench proposal.