Daniel Lepage on 27 Apr 2003 22:40:01 -0000


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [spoon-discuss] Why we need OO



On Sunday, April 27, 2003, at 02:54  PM, Rob Speer wrote:

So, a whole lot of wins or attempted wins have come from the fact that
the rules don't cleanly define what things _are_. Is a Charter a bunch
of text? Is it an object that can take actions? Is it Wonko? Does it
exist at all?

If objects were defined by a class system, then there would be no
question of a Charter possibly being turned into something it isn't.

I was about to propose my OO system. The proposal is kind of large,
because it contains a whole ton of classes - to be precise, as many
classes as are necessary to bootstrap an OO system that is itself OO.

The idea behind the system is that it can coexist with the ruleset, but
eventually parts of the ruleset will be replaced such that the ClassTree
defines what things _are_, while the Ruleset defines what they _do_.

Now that things are all confused, I'm going to wait until the CFJs go
through or we get things sorted out some other way (I dislike SOEs, by
the way).

Really? I always thought they were rather interesting. I like the idea of a sort of 'meta-game' that we withdraw to when the game becomes unplayable. Sort of like how proposals in this game could be used to fix fatal flaws in an INH subgame.

But I'll post the current version of the proposal here. If you want to
get to the important part, look at Thingy and Class, which define most
of the system; Object, which almost everything will derive from; and
Unique, a concept that has been sorely missing from the Ruleset. I'm not
defining things like Players within it yet; this is just the foundation
for the system, and changes like that can be proposed separately.

__Be Objective__
{{
1. Destroy the Base class, and repeal rule 1447 [[Class System]].
2. Create a rule:

__Object-Orientation__
{{
Everything in the game is an instance of a Class, as defined in the
ClassTree. If not otherwise specified, it is an instance of Thingy.

Taking X to be the name of any class: if an object is an instance of
class X, or any subclass of X, it can be referred to as "a X" or "an X".
}}

One wonders if there might be a better way to phrase the last sentence - I'd prefer not to encourage saying, "an Gnome" or "a athame".

3. Create the ClassTree, which has these contents:
{{
Class: Thingy
Properties:
  * {10} It follows the Rules.
  * {9} It is an instance of a Class.
* {8} It has all of the properties of its Class, and all Superclasses of its
    Class, except when those properties contradict, in which case:
	  - If a property contradicts a Rule, the Rule takes precedence.
- If one property has a Chutzpah greater than the other, that property
	    takes precedence, otherwise:
- If both properties come from the same class, the one that is later in
		the Properties list takes precedence
- If the class that creates one property is a superclass of the class
		that creates the other, the subclass takes precedence
- Otherwise: Take the highest Superclass of the Class that inherits from
		both classes with contradictory properties - the property from the
		class which comes earlier in the Superclass's inheriting list takes
		precedence.

One wonders if "Object" would make more sense here than later...

[[Abstract stuff that's needed for a fully bootstrapped OO system:]]

Class: Concept
Inherits from: Thingy
ClassFeatures:
* Every possible instance of Concept, or any subclass of it, already exists,
    and does not need to be explicitly created.

I'm not sure I like that wording... a Win in my possession, or a rule that gives me absolute power, are both possible Concepts... this suggests that they both exist already.

Class: Text
Inherits from: Value [[not String]]
Properties:
  * It is a sequence of words, where whitespace and formatting are not
    relevant.

Perhaps, should some distinction be made between class Text (just a block of text) and class Document (an official game document such as a rule, charter, or proposal)?

[[ Now, the class that actual game objects can derive from! ]]

Class: Object
Inherits from: Thingy
Properties:
  * It has a name.
  * Its existence is tracked by the Administrator.
  * {3} It is part of the Gamestate.

Gnomes are Objects; their existence is tracked by the Minister of Gnomes and the Minister of the Ordinance Survey, neither of whom is necessarily the Administrator.

Also, perhaps this should be a "game object", not just an 'object', as numbers and whatnot should be called objects too ('cause they are).

Class: Class
Inherits from: Object
Properties:
  * It inherits from one or more classes, unless it is named Thingy.
* It has a list of Superclasses, which contains each Class that it inherits
    from, plus all the Superclasses of each of those Classes.
  * It has a list of ClassFeatures.
  * It has a list of Properties.

Many of these definitions have no ClassFeatures, and some don't have Properties.

_______________________________________________
spoon-discuss mailing list
spoon-discuss@xxxxxxxxx
http://lists.ellipsis.cx/mailman/listinfo/spoon-discuss