名無しのイカ
2023/05/31 (水) 21:35:17
1c8a1@89eba
そういやパージと本体の位置関係がずれるってのはどういった理由なんだろう
どちらもシェルターが位置を通知しているならそこまでずれないと思うんだよな
パージ後は全マシンで独立に位置計算してるとかホストが面倒見てるとかなんだろうか
通報 ...
多分プレイヤーの位置は絶対座標じゃなくて移動量で通知してるんだと思う
だからどっかで通信が悪くなるとその分ズレが蓄積する
パージした傘自体は各ユーザ毎に位置計算してそうだけど動きが一定だからそんなにおかしなことにはならなさそうに見える
対戦中の通信は相手に届かない可能性が前提にあるので以前の情報がないと計算がずれる使用にはなってないはず
移動量と絶対座標のデータ量はほぼ同じはずだし
通信の間隔では各ユーザのマシンでプレイヤーの位置や傘の位置を予測してる。
で、傘は一定のスピードで動くので予測が容易でずれにくい。
ユーザは加減速をするせいで、「加速して傘に寄ったのでそのままはみ出る」とゲームは予測する。実際にはユーザは「加速して傘に寄れたので減速して傘に沿って動く」。
なので、ユーザからは傘にぴったりくっついて見えても外からははみ出て見えてしまう
結局通信の頻度をあげるか予測をもっと賢くしないとどうしようもない
最初はそう思ったんだけど1/15秒+通信時間で補正される中で前面に出続てるわけで同期ズレにしても激しくないかと思ったわけよ
もちろんこれが結論ならシンプルでいいねよくないって感じ
そこはラグの問題もあるんじゃない?
一回ずれちゃったけど、戻すために使うデータは通信遅延の乗った100ms前とかのデータになるわけだから、戻すにも予測が走っちゃう
傘とキャンシェルイカが同じマシンで計算されて通信を送ってるなら通信を受け取った時点で位置関係は一旦修正されて傘の手前に戻されるよね?
でも実際には傘の前方を歩き続けてるわけで
通信を受け取った時点で戻されない。
通信データを送った時刻が受け取った時刻のおよそ100ms前だったりするので、そこから現在時刻を加味して位置情報を推定し直さなきゃいけない。
だから正しくは「通信データで、予測した動きを補正していく」ということになる。この補正の掛かり方が「傘の前後」だと小さいのではみ出たままになる。
反対に「段差の乗り降り」だと、大きな解離ができるので大きく修正されて残像になる
受信時点で正しい位置が来るよね
そこから遅延分の前進を予測するだろうけども、このときに傘より前に予測されるなら傘よりも速く移動しているだろう
傘と共に歩くシーンでそのような速度で歩いているのだろうか?
傘ギリギリまで詰めてから減速を繰り返すと減速だけカットされるみたいなのは考えられそうだな