プロパティファイル¶
solution-finderには、プロパティファイルから入力する設定がいくつか存在します。 それらのファイルのフォーマットについて説明します。
kicks¶
ローテーションシステムのKickテーブルをカスタムすることができます。
なおここで設定したKicksは、各コマンドで --kicks @ファイル名
で参照可能です(--kicks @srs
を指定すると kicks/srs.properties
がロードされます)。
verify kicks
コマンドで、各ミノの動きを一覧化して確認できます。設定後は、一度目視で確認することをおすすめします。
デフォルトで用意されているプロパティファイルは以下の通りです。
@srs : SRSに準拠したKicks。90回転のみ。
@nullpomino180 : SRSに、180度回転として Nullpomino のStandard Wallkickを加えたKicks
サンプル
L.NE=(0,0)(-1,0)(-1,+1)(0,-2)(-1,-2)
L.ES=(0,0)(+1,0)(+1,-1)(0,+2)(+1,+2)
...
J.NE=&L.NE
J.ES=&L.ES
...
T.NE=(0,0)(-1,0)(-1,+1)(0,-2)(@-1,-2)
...
Propertyのキー (e.g. L.NE
)¶
(ミノ).(回転前の状態)(回転後の状態)
を表します。
たとえば L.NE
は LミノをNorthから右回転してEastにする
ときの挙動を定義します。
180度回転も同様で、L.NS
のように設定できます。
したがって定義すべきキーの数は、90度回転のみでは 56
、180度回転も有効にする場合は 84
になります。
意図しない定義になるのを避けるため、これら以外のキーの数ではエラーとなるのでご注意ください。
オフセット (e.g. (0,0)(-1,0)(-1,+1)(0,-2)(-1,-2)
)¶
(xの移動量, yの移動量)
を表し、回転時のテストパターンを定義します。回転時のテストは前から順番に適用され、移動可能なところに移動します。すべてのテストパターンに失敗した場合は回転されません。
たとえば T.NE=(0,0)(-1,0)(-1,+1)(0,-2)(-1,-2)
は、 こちらのテト譜 のような動きになります。
オフセットを設定するときの注意として、「移動量には、回転軸を中心に回転したミノの移動量を記述すること」を意識する必要があります。
solution-finderの回転軸はSRSに準拠しています。
そのため、たとえばOミノに対して (0,0)
を設定しても動いてしまいます。
SRSやその回転軸については Harddrop SRS#How_Guideline_SRS_Really_Works がとても参考になるので、こちらを参照していただくことをおすすめします。
@ : T-Spin時にMiniからRegularに昇格するテストパターン (e.g. (@-1,-2)
)¶
solution-finderでは次のような擬似アルゴリズムでTスピンを判定しています。
if (Tの隅のブロックが2つ以下)
return NO_TSPIN
if (Tの凸側の2つの隅が埋まっている)
return TSPIN_REGULAR
if (TSTのような特別にREGULARとなる動きである) // ★
return TSPIN_REGULAR
return TSPIN_MINI
この設定の @
がついているテストパターンでは、★の判定で true となります。
したがって、SRSにあわせた設定では T.NE
T.SW
T.NW
T.SE
の第5テストパターンに @
が付与されています。
これによって、一般的なTSTの動きがT-Spin Miniではなく、T-Spin Regularで判定されるようになります。
& : 他のオフセットと同じ設定にする (e.g. &L.NE
)¶
オフセットの設定は、いくつかのミノの種類で同じになることも多くあります。
その場合は &(参照したいパターン)
で、同じオフセット値を引き継ぐことができます。
theme¶
util fig
コマンドで出力する画像の色のテーマをカスタムすることができます。
サンプル
T.normal=#b300b3
O.normal=#b3b300
...
T.clear=#d900d9
O.clear=#d9d900
...
T.piece=#ff00ff
O.piece=#ffff00
...
Empty=#151500
Border=#000000
SideFrame=#333333
カラーテーマのプロパティは、以下のルールを基に色を設定します。
ブロック・ライン
T,I,O,S,Z,L,J,Gray
: 各ブロックの色Gray
: せり上がりブロックの色Empty
: 空白の色Border
: ブロックまわりの線の色SideFrame
: フィールド左右のフレームの色BoxFrame
: ホールド・ネクストボックスの枠の色
適用されるタイミング
.normal
: 通常時のブロックの色.clear
: ラインが揃ったときに強調するための色.piece
: 操作しているミノを強調するための色