仕様関連

div_x・div_yパラメータ

大体はスキン見れば想像付くとは思いますが一応補足。
div_xとdiv_yによる分割アニメーションの並び順は横方向優先です。
分かりやすくNUMBER定義で図にしてみましたが、NUMBER定義に限らずLR2では必ずこうなります。

number

30分割はcycle値で指定された時間(単位:ms)で3色点滅する10分割NUMBER定義です。

24分割辺りだと約数が多いのでスペースを有効に使えますが、11分割は縦・横いずれかで
1列に並べるしか方法が無いので、どんなに頑張ってもそこそこのサイズになります。
なお、NUMBER定義は10or11or24のいずれかの整数倍、BUTTON定義は各ボタンタイプ毎の分割数厳守。
多かったり足りなかったりすると正常に動作しません。

ちなみにボタン定義はNUMBER定義のように規定数の整数倍に分割してもアニメーション出来ないので、
アニメーションさせるには複数のボタン定義をtimeでガッチリ区切って無理矢理表示を切り替えるしかありません。
(ClassicスキンのLR2files/Theme/Classic/FX/FX-TYPE-1/TYPE-1.csv参照)

また、ボタンtype11 現在の鍵盤数フィルタ(全体) 等は使用している難易度フィルタや鍵盤数フィルタで
実際に動作するボタン数が変わってくるので動作確認時には注意が必要です。

ついでに3色点滅についても触れておきますが、
赤青緑の3色点滅パーツは白を混ぜ込んで気持ち明るめにしておいた方が目に優しいです。

light

エフェクタボタンのピッチ

ボタンの分割数絡みで一点だけ注意事項。
type20からのFX名はbutton.txtではピッチを含めた9種類が書かれていますが、
現行のLR2ではピッチはここには含まれません。別枠でtype32と33に分離されています。

※ただし9分割でもピッチを飛ばしてオフに戻るので特に問題はありません。

スキンで参照可能なフォント数

1つのスキンで参照できるLR2フォントの数は10個までです。環境によっては11個以上定義したスキンを使うと即落ちするらしいので注意。
フォント定義が10個越えることはあまり無いとは思いますが分岐ミスでの重複読み込みなどには気を付けましょう。

LR2フォント調整時の注意

lr2fontファイルはスキンcsvや画像・動画等と扱いが異なるようで、LR2起動中に変更しても適用されません。
(スキンを一瞬でも読み込ませるとlr2fontファイルがLR2body.exeにロックされます)
このためスキンオプションで切り替える場合でもLR2の再起動が必要です。

※上述のフォント10個の制限とプロセスロックの仕様により、LR2フォントを10個使い切っているスキンでのオプションによるフォント切り替えは
瞬間的に読み込みフォント数が11個になるため切り替えた瞬間にLR2が落ちます。

※lr2fontファイルから参照される画像ファイルはロックされませんが、
dxa圧縮している場合はパッケージごとロックされるためLR2起動中は展開出来なくなります。

スキンの頻繁な変更でLR2が落ちやすくなるのはこれのせい、というのが.REDの私見です。
誤って別なスキンを読み込まない様にThemeフォルダの中は常用するスキン以外置かない、というのが
異常終了回避の有効な方法の1つだと思います。

拡大縮小とfilter値

主にエフェクト系の話ですが、徐々に拡大(縮小)する透過(あるいは加算)パーツにfilterを使ってしまうと
アニメーション中にSRCの指定範囲外のピクセルが見えてしまう事があります。

noize

このため拡縮パーツをぼかしたい場合はSRC画像側で他の画像パーツと隣接させない等の工夫が必要です。
また、ぼかし固定の場合であれば体側のfilterではなく、SRC画像側をあらかじめぼかすという手もあります。
(LR2のfilterは基本的にはBGA用です。また、仕様書によると処理が重いらしいので多用は避けましょう)

※画質を追求すると最終的には可逆圧縮動画かdivアニメーションになります。

ゲージ色に関わるオプションと分岐

IFとスロットで特性が異なる、つまりスキン動作開始直後としばらく経った後で値が変わるオプション値では良く起こる現象ですが、
ゲージ色に関わるオプション値(op42〜45、op63〜66)では『現在のゲージオプション』と『リプレイに保存されているゲージオプション』が異なる場合、
そのリプレイを再生するとIF分岐(スキン動作開始直後)は現在のゲージオプション準拠、次の瞬間にスロット分岐がリプレイ準拠のゲージに切り替わり、以降は変動しなくなります。

上述の通り、スロット分岐のみでの実装には制約が大きいため応用範囲は多少狭まりますが、ゲージの色で分岐させたいシーンは往々にして起こり得るものです。
実装時には注意しましょう。

IF命令とSETOPTION命令を使ったOR分岐とNOT分岐

どちらも99個しか使えないスキン固有のDSTオプションのうち1個を使うので必須かと言うとやや微妙。
ただ、条件が2個程度であれば分岐させる必要はありませんが、これが10個20個になると作った方が確実です。

NOT分岐は特にDSTオプションでONのみしか用意されていなくて、
かつIFで複数定義をごっそり分岐させたい時にあると便利です。

SETOPTION命令の特性

SETOPTION定義は特定のDST値をONにするだけでなく、OFFにすることも可能ですが
同一csv内でONとOFFを宣言した場合は後に記述した方が適用されます。(ちなみにFLIPRESULT命令なども同様)
また、当然と言えば当然ですがSETOPTIONでON/OFFを制御できるのは900番台のオプションだけです。

ただし、通常オプションも全てSETOPTIONで900番台にリンクさせてからスキンを組んでいけば
通常オプション用の機能も強制的にONに出来るようになります。

ボタン定義の重ね順

ボタン定義を複数個重ねた場合、マウスでクリックするとcsv内で先に記述したボタンから順に押されます。
重ねたボタンがクリック不可設定であれば先に記述されているボタンもクリック出来なくなるので誤クリック防止に使えますが、
この時利用できるのはそのシーンで動作可能なボタンに限られます。

複合ボタン定義はRED BLET KEYCONFIGで使われています。
詳しくはRED_BELT/KeyConfig/keyconfig.csv内を「//TEST PLAY PANELボタン本体」で検索して下さい。

※テストプレイボタン動作詳細
テストプレイモードに入る際には必ずキーコンフィグ選択を「OFF」にしておかないと
テストプレイでボタンを押した時に片っ端から割り当てられてしまいますが、
ワンクリックで「OFF」に持っていく方法が無いので1P1鍵→鍵盤変更ボタンplusonly=2(逆順)の順番でボタンを重ね、
更にその上にテストプレイパネル起動ボタンを重ねてます。

サウンドセット以外の音声参照

音声トラック付きの動画を読み込ませれば音出るかと思って試しましたが無理でした。
この事からLR2で参照される動画データの音声部分は再生されないという事も分かります。(BGAも同様です)

コースモードでは使えない機能

コースモードではSTAGEFILEやBACKBMP等のbms側で用意されている画像や、判定ランクやソフラン有無などの譜面データが参照出来ません。(BGAは可)
参照出来るのはせいぜい難易度種別(NORMAL/HYPERなど)ぐらいですがこれもコースステージ毎にキッチリ分岐させないと何故か正常に表示されません。

※動作オプション解析によりDX3やDX+ほど長々と分岐させなくても動くっぽいことが判明してます。

特定条件下でのみ参照値が異なる機能

LR2ではいくつかの値が複数値兼用になっており、条件によって本来の参照値ではないものが表示される場合があります。
イメージとしてはクリック不可なボタン定義の様なものですが、当然ボタン定義の話ではありません。

DP FLIPとSP TO DP

仕様か不具合かでちょっと迷いましたが仕様に分類しておきます。
DP FLIPオプションはRANDOM/MIRROR等と同じように本体側で制御されている機能であり、プレイスキン側で専用の定義を作る必要はありません。
で、先日初めて聞いたんですがSP TO DPオプション使用時はDP FLIPが使えません。
おそらくSP TO DPも本体側で制御されている機能だからだと思われます。

カスタマイズオプションの保存先

LR2のスキンオプションの設定はLR2files\SkinCustomizeフォルダにxml形式で保存されます。
このxmlにはスキンカスタマイズの他に、数字キーで呼び出して設定する画面オプションも含まれます。

スキンタイトルや作者名を書き換えても設定は引き継がれる事から、
カスタマイズ項目を元に生成されたハッシュ?でスキンを識別してる物と考えられます。(詳しく知りません)

#CUSTOMOPTIONではオプション値しか保存されませんが#CUSTOMFILEでは選択した項目名が記録されるため、
適当な目立つ名前のファイル/フォルダを選択状態でLR2を終了し、
SkinCustomizeフォルダ内のxmlに全文検索を掛ければそのスキンの設定ファイルが割り出せます。
あまり意味ありませんが。

スキンセレクト画面の特性

どちらかと言うと豆知識的な内容になりますが、LR2のスキンセレクトスキンにはいくつか独特の仕様が存在します。
知っておくと意外と便利なものをいくつか紹介します。(スキンプレビューを使用している前提です)

■オプション値の引き継ぎ
詳しくは応用の方にまとめていますが、LR2は事前に動作していたスキンのDSTオプション値の大部分を引き継いで次のスキンが動作します。
スキンセレクトも同様に直前のスキン(ほぼ選曲スキンのみですが)でのオプション状態が、そのままスキンセレクト、つまりスキンプレビューに反映されます。

例えば、コースリザルトにおける段位認定時の分岐動作を確認したい場合、段位認定にカーソルが合っている(op293 段位認定がON)状態で、
そのままスキンセレクト画面に入り、コースリザルトを選択すれば『段位認定時のスキンプレビュー』を見ることが出来ます。

■クリア判定はスキンセレクト内で
スキンセレクト画面に移動すると例外無く7keysプレイスキンのプレビュー動作が開始されます。
この時、曲進行バーが完全に停止する(=プレイスキンが動作終了する)まで待つと、op90 リザ クリア がONになります。
逆に動作停止を待たずに他のスキン種別に切り替えてしまうとその時点で 91 リザ ミス がONになります。

上手く使いこなせば曲クリアリザルトもクリア失敗リザルトもスキンプレビューで動作確認することが出来ます。
上の例で言えば、段位認定時の合格・不合格の動作確認も簡単に出来るので覚えておきましょう。

なお、op90 or op91のクリア判定はスキンセレクト動作開始時の最初のプレビューで決まります。
このため、クリア判定オプションを切り替えたい場合は一度選曲スキンに戻る必要があります。

関連リンク:LR2でのDSTオプション遷移

スキン描画制限の仕様

LR2プレイスキンには数字の『5』キーを押しながらカーソルキー上下で設定できる『スキン描画制限』という本体側の機能があります。(通称DARKモード)
本来は低スペック環境で動作負荷を下げるために特定の定義の描画を制限してfpsを引き上げる機能ですが、昨今ではノーツが見やすいという理由で常用する人も少なくありません。

DARKモードにはDARK1とDARK2の2段階が用意されており、DARK2ではほとんどの定義が非表示になります。
各モードで消える定義は以下の通り。なお、いずれのモードでもボムタイマー(timer50〜89)を使っている定義は種別に関わらず表示されます。

タイマー動作開始前の定義

※803832さんのtwitterより

DST定義のtime値を-1にするとその定義のtimerが動作開始する前の状態を定義することが出来ます。
この時loop値-1にしてもループ表示させることは出来ず、表示は消えるとの事です。なお、使い道はあまり無い模様。

この情報はtwitter上でスキン屋勢が『スキンプレビューでのみ表示されないパーツ』の扱いについて議論していた際に出て来たもので、
スキンプレビューで非対応のタイマーを定義している場合、すなわち動作開始前のタイマーをトリガーとしてパーツを表示するために使われましたが、
今のところそれ以外の応用方法は見つかっていません。