■何故レイヤーを使う事がリスクになるのか?:
当サイトのお絵描きチャットには、PaintChatのV3.66(最新版)を使用しています。
V3.66のレイヤー機能は多機能である反面、バグが多くラインキャッシュが破損しやすいといったリスクがあります。
まずは下の画像をご覧下さい。(クリックで拡大)
メニューの最下段をクリックすると、レイヤーのプロパティを見ることができます。
デフォルトでは、「レイヤ0」と「レイヤ1」の2枚になっているはずです。
ところが、時間が経過したり後から入室してアニメデータを読み込み終えても絵が描けなくなることがあります。
こういったケースは、レイヤーのプロパティがおかしくなっている為に発生することが多いようです。
上の画像では、入室後のバグ(?)でレイヤーのプロパティが「レイヤ2」と「レイヤ3」になってしまいました。
結果としてサーバ側の設定では「レイヤ0」と「レイヤ1」しか無いのに、クライアント側では「レイヤ2」と「レイヤ3」に絵を描くよ!と言っている。
これでは当然、キャンバスに絵が描けない!(※)ってなりますよね。
※:実はきちんと線データには反映されているのだが、キャッシュを残した状態でレイヤーの数を増やす必要がある
ついでに。
PaintChat V3.60以降は、レイヤー関連の操作がログインしている参加者全員に対して反映されます。
例えば、参加者の誰かがレイヤ0の透明度を「100%」から「50%」に変更したとします。するとログインしている他の参加者にもレイヤ0の「50%」が反映されてしまい、レイヤ0に描いていた絵がいきなり見えなくなってしまった…なんて事態もあり得るのです。
(V3.56以前は、レイヤーの透明度と入れ替えは操作した人にのみ反映されます)
以上の事から、当サイトにおいてはレイヤーメニューの操作(新規レイヤーの追加、レイヤーの結合等)をサーバ側で禁止に設定しています。
■ではどうするか?:
レイヤーのプロパティに関するバグを回避する方法は、現状のところありません。
PaintChatの修正を待ちましょう。
…と書くと考察の意味が無いので(笑)、色々試した上でそれっぽい運用上での回避策を見つけました。
以下より説明します。
前述した通り、バグ自体を回避する事は現状のところ出来ません。
しかしレイヤーの枚数は変わっていないので「何処のレイヤーに対して絵を描くか?」という設定さえ正しければ絵を描く事は出来るんじゃないか?
そこで「レイヤーのプロパティーがおかしくなったら、正しい設定に書き換える」ことで回避しよう、というのが以下の手順です。
1. レイヤーウインドウで、レイヤーの名前をダブルクリックします
2. ダイアログが表示されるので、レイヤーの名前を「レイヤ0」または「レイヤ1」にリネームして「了解」ボタンを押します
3. 最終的に、レイヤーウインドウの内容が以下になるよう設定します
注意点としては、
・初期状態では、レイヤーの連番は下から順番に振られていること
・「レイヤ〜」となっている名前は、全て「半角文字」で入力すること
(リソースに設定されている形式に合わせる必要があるため)
・上記の手順を実行するのは、参加者のうち誰か1人で良い
(レイヤーの設定は全員共有なので、誰かが設定すれば参加者全員に反映される)
ことです。
■まとめ:
レイヤーを使う上で重要なのは、
・ログインしたら、まずメニューの最下段にあるレイヤーウインドウを確認
・「レイヤ0」と「レイヤ1」になっていない場合は、レイヤーの名前を修正する
ということ。
こうしたルールを前提とした上で、当サイトにおけるお絵描きチャットのレイヤーカウントをデフォルトに戻しました。
この運用で問題無ければ、ガイドラインとしてトップにでも描いておこうかと思います。