Tuesday, May 01, 2007

Draft: The Workbench

This is a draft, not a proposal.  I solicit comments.

The Workbench is a 10x10 grid of 100 positions, numbered consecutively from 1 to 100.  Position #1 is in the lower left hand corner and the positions are numbered in increasing order from left to right and from the lowest row of the grid to the highest row, with the upper right hand corner of the grid being Position # 100.

Positions are considered “adjacent” if their positions in the Workbench grid are adjacent.  For example, position #12 is adjacent to positions #2, 11, 13 and 22, but not adjacent to any other positions.  By way of further example, position 10 (being in the lower right hand corner of the grid) is not adjacent to position #1 or #11, but is adjacent to #9 and #20.

Each Part on the Machine is assigned to exactly one position on the Workbench.  Unless a rule provides otherwise, a new Part on the Machine is assigned to the position with a number one more than the highest numbered position that then contains a Part (even if a lowered number position is then vacant).  For example, if there are Parts at positions 1, 2, 3 and 5, then the next Part will be placed at position 6.

If a position becomes vacant and there is a Part in the position above it, then that Part moves to the vacant position.  For example, if there are Parts at all positions 1 through 30, but position 4 becomes vacant, then the Part at position 14 slides down to position 4, then the Part at position 24 slides down to position 14, then the Part at position 24 slides down to position 14.

Comments

Hix:

05-01-2007 16:14:20 UTC

Don’t overload “position”.

I would explicitly provide means for tracking Part locations.

spikebrennan:

05-01-2007 16:43:28 UTC

What do you mean by “don’t overload ‘position’”?

I imagine that a proposal following this concept would have to also make conforming changes to the Parts rule.

Hix:

05-01-2007 17:01:33 UTC

I mean that Amnistar is already using “position” to mean something else.

spikebrennan:

05-01-2007 17:06:32 UTC

Ah… “location” or “gridsquare” would work just fine for this concept, then.

Enderbean:

05-01-2007 17:07:41 UTC

Why use 1-100 to represent a 10 by 10 grid instead of a coordinate system?

Also I sort of think Variables should get a location as well and not just Parts.

spikebrennan:

05-01-2007 17:17:27 UTC

Coordinates would work fine too.  Is it possible for the GNDT to incorporate a 10x10 grid to accomodate this concept?  Each gridsquare would only need to fit maybe 3 or 4 characters if each Part was assigned a short abbreviation for purposes of denoting its location in the grid.  For example, if there existed a Part called “Tasty wedge of cheese”, the abbreviation could be “CHEE”, and the gridsquare in which that Part was located would simply say “CHEE”.

My understanding of Variables is that it consists of things like: “The temperature of a Part can be: Boiling, Hot, Warm, Cold or Frozen.  The current temperature of Part X is Hot.”  or “The atmosphere can be Fragrant, Neutral or Smelly.  The current atmosphere is Smelly.”
This doesn’t have anything to do with a location per se.

spikebrennan:

05-01-2007 17:20:02 UTC

A benefit to 1-100 numbering rather than coordinates is that you can use GNDT DICE to pick a random location.

spikebrennan:

05-01-2007 17:22:26 UTC

Since the connect-four-style “sliding down to fill a gap” is one of the reasons I like this proposal, a 10x10 grid is probably too big.  Maybe a 5x5 instead.

Amnistar:

05-01-2007 17:23:51 UTC

I think I’d rather that people can select where on the grid parts are placed, and then parts can only affect Variables that are next to them

Amnistar:

05-01-2007 17:24:20 UTC

Which of course requires Variables to be on the table to, in which case 10x10 works out.

spikebrennan:

05-01-2007 17:28:33 UTC

Help me conceptualize—give me a hypothetical example of a Variable and how it could be placed on the Table.

Amnistar:

05-01-2007 17:35:43 UTC

I suppose you’re right… :p Guess that it doesn’t make much sense for them to be on the table…

Enderbean:

05-01-2007 18:02:05 UTC

Well if the variable is something like:

Name: Ball on a Ramp
Possible States: top of ramp; bottom of ramp
State: top of ramp

Then it makes sense. IMO

spikebrennan:

05-01-2007 18:05:33 UTC

Enderbean- I think you’re combining two concepts that are best kept distinct.  I think that a more coherent way of thinking about what you’re describing is a Part called “Ball on a Ramp”, and a Variable that corresponds to that part, where the possible states of the variable are “Top of ramp; Bottom of ramp”, and the initial state of that Variable is “Top of ramp”.  That way, the _Part_ has an initial position on the grid, but the Variable continues to refer to that Part even if the Part should move around on the grid for some reason.  Am I making sense?

spikebrennan:

05-01-2007 18:10:06 UTC

I guess that there are two conceivable types of variables: “Part-related” and “Global”.  The “Ball on a Ramp” one would be an example of a “Part-related” variable: it conveys information about the status of a particular Part. 

“Global” variables would just have a state but would not correspond to a particular Part.  Examples of a “Global” variable might be “Day of the week”: valid states are “Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday”.  Initial state is Monday.  The purpose of having such a variable is that a Part could, when activated, check or change the state of a global variable.  (Example: If the Bell is activated, then the bell rings only if the Day of the Week is Saturday or Sunday, otherwise the bell does nothing.  If the Clock is activated, then the state of Day of the Week is advanced by one day.)

Enderbean:

05-01-2007 18:16:43 UTC

I like that.

I got the ball on a ramp example from one of the CEO’s prior examples. I was under the impression that they were intended to be physical objects that did nothing but have states. I got this impression from the fact that the rules refer to both Parts and Variables as Pieces.

I mean.. why should I create a Part called “Ball on a Ramp” that doesn’t have any Initiator or Effects?

Though you may want to add a provision for Global type variables as well.

spikebrennan:

05-01-2007 18:20:05 UTC

join us on chat

Enderbean:

05-01-2007 18:22:29 UTC

I can’t. I am at work, and they block that. :)

Amnistar:

05-01-2007 18:24:12 UTC

but but…you’re there… :p

Enderbean:

05-01-2007 18:35:19 UTC

I know.. I was surprised to see myself listed there. Apparently when I logged in last night I didn’t log out correctly. I’m not even sure how to log out correctly.