Kropki (GM[40]), format of RU (=rules) field, PROPOSAL

Note: this version is obsolete! Use this one.

I suggest that we use the following format for RU[simpletext]:

RU[tag1=value1,tag2=value2,...]

For simplicity of parsing, tags and values should contain only letters and digits (no '=' or ']' sign, no spaces, and also no spaces around the = sign in tag=value). It is possible that the set of possible values is empty, and then only sole 'tag' may be used (useful for shortcuts). For compability with sgfs from Szkrab, it is allowed to use just 'tag' instead of 'tag=value'. If possible values are 0 and 1, then it is equivalent to 'tag=1'. In other cases, the meaning of sole 'tag' should be defined explicitly.

Tags for the RU property (suggestions)

General remarks:
Tag:  punish
Value:	0 or 1
Default:	0
Meaning:	Specifies if there is a punish for surrounding
		own dots (0=no, 1=yes)
Notes:	This option is present on szkrab.net.pl, but almost nobody uses it.

Tag:  holes
Value:	0 or 1
Default:	0
Meaning:	Specifies if holes between enclosures are allowed (0=no, 1=yes)
Notes:	On szkrab.net.pl it is always holes=0.


Tag:	additionalturn
Value:	0 or 1
Default:	0
Meaning:	Specifies if there is an additional move after
		surrounding some enemy dots (0=no, 1=yes)
Notes:	This option is present on vkontakte.ru

Tag:	mustsurround
Value:	0 or 1
Default:	0
Meaning:	Specifies if the surroundings (enclosures) are obligatory (0=no, 1=yes)
Notes:	1. This option is typical for the Russian rules.
	2. When minimalarea=1, then
	surroundings may be made automatically.

Tag:	minimalarea
Value:	0 or 1
Default:	0
Meaning:	Specifies if the surroundings (enclosures) should always have
	minimal area (0=no, 1=yes), taking the value
	of holes tag into account.
Notes:	1. This option is typical for the Russian rules.
	2. When this option is on, then there is no need to save
	enclosure information in move properties, and it is ok both to save
	this information or not in this case (for example, eidokropki.reaktywni.pl
	saves it, and VPoints does not).


Tag:	passmove
Value:	0 or 1
Default:	0
Meaning:	Specifies if pass is allowed (0=no, 1=yes).
Notes:	When one player passes and then the other also passes,
	then the game ends.


Tag:	lastdotsafe
Value:	0 or 1
Default:	0
Meaning:	Specifies if the last dot placed on the board is safe
	(0=no, 1=yes). If no, this means that the opponent may capture
	the last dot, although she cannot place any dot due to lack of
	free space.
Notes:	1. This rule is present on szkrab.net.pl
	(it is always on, cannot be turned off), but maybe this would
	change to always off someday...
	2. This rule only affects scoring, and always at most by 1 point.
	3. Turning this on has strange sideeffects to the result of the game,
	see http://www.kropki.legion.pl/obliczanie-wyniku-t421.html.
	4. This option has no practical importance when passmove
	is allowed (then simply the last player may decide to not to
	play the last dot).

Some tags for future

Here are some tags that describe variants of rules that I personally would be fond of. However, no known to me application uses such variants of rules. But if someone wants to implement such, the proper tag would be already here :) Note that (hypothetical) komi could be stored in a KM property.
Tag:	scoreterritory
Value:	0 or 1
Default:	0
Meaning:	Specifies if territory should be scored (0.5 for each
	place in the territory).
Notes:	1. This rule makes sense only when passmove=1.
	2. This rule only affects scoring. The	combination passmove=1,scoreterritory=1
	gives a score like passmove=0,scoreterritory=0
	up to 1.5 point with lastdotsafe=1, and a mere 0.5 point with lastdotsafe=0.
	3. I know no application using rules with scoreterritory=1.
	4. A lot of kropki players is against this
	rule http://www.kropki.legion.pl/obliczanie-wyniku-t421.html
	claiming that this would make Kropki too similar to Go,
	however this is a rather irrational fear because of note 2. above.


Tags for the RU property: suggestions for shortcuts

In shortcuts I list only tags with values 1, because value 0 is default.
Tag:  szkrab
Value:	(none)
Meaning:	Equivalent to lastdotsafe=1

Tag:  russian
Value:	(none)
Meaning:	Equivalent to mustsurround=1,minimalarea=1,passmove=1,holes=1
(Question: does this list make sense? That is, are all above four options
common for different variants of Tochki?)


Some examples

RU[szkrab]  -- for standard szkrab rules
RU[szkrab,punish]   -- for szkrab rules with punish