FC2ブログ

雛ちゃんシースーロワイヤル ver1.35アップデート予告

忙しくてだいぶ期間が空いてしまいましたがアプデ予告です。
blog20200602_rogo.png





アプデ内容としてはこんな感じです。


○寿司皿の位置完全同期

かねてより計画していた寿司皿の位置の同期取りですが
ようやく実装に成功しました。

仕様の話をしますが若干意味わからん話になってくるので
読み飛ばすか読み物としてお楽しみください。


従来のシステムでは、端末ごとに計算を任せて
寿司皿を一定の速度で移動させ画面外に出たら反対のレーンに移動、
逆方向に移動させてまた画面から出たら…を繰り返させる仕様でした。
端末ごとと言っても前フレームから経過した時間を元に移動距離を制定していたので
基本的にはPCだろうとAndroidだろうとズレは発生しないハズでした。
blog20210611_presushimove_0.png


ところが、端末によって予期せぬジッタ(要は処理のラグ)が発生することがあります。
例えば何かエフェクトが出たとか、入室がちょっと遅れたとかで
画面の処理が一瞬止まって結果遅れてしまう現象です。
すると何が起きるかというと、画面が止まっているにもかかわらず(意図してない停止なので)
計算が継続されてしまい皿の位置が変なところに行ったり動きが遅れたりしてしまい
結果他のプレイヤーと大きく皿の位置が同期ずれし
お互いにおかしな動きになってしまうことがありました。
明らかに他プレイヤーが伸ばした手が2個くらい先の寿司を食べていたりする現象は
主にこれが原因でした。
blog20210611_presushimove_1.png


これではゲームとして成立しないため
どうにかできないか以前から画策していました。
一番いい方法はサーバーを介して皿の位置を同期させる方法ですが
常にすべての皿の位置情報を送受信する必要があり
個人の(特にAndroid勢の)通信量にもよくありませんしサーバーにも負担がかかります。
しかもそれはそれでラグやかくつきが生じたりおかしな動きになることもあります。


というわけで新アルゴリズムの実装です。
ホスト(三人部屋に一番最初に入った人)が部屋に入った時間をAとして保存し
あとから入った二人がこの値を取得します。
その後、サーバーの現在時間Bを常に取得し続けます。

BからAを引くことで、「この部屋が存続している時間」を割り出すことができます。
これをNとします。

Nの値は常に加算されていき、端末が何であれ必ず近似値を得ることができます。
そしてNの値に寿司の速度などを掛け、「寿司の位置制御の基準値」となる値Cを取得します。

寿司皿はCの値を元に自信の場所を決定します。
例えば寿司の速度が1.5だとすると0秒経過したときは0の位置、
3秒経過したときは4.5の位置にいることになります。
また寿司皿11枚はそれぞれ固有の番号を所持し自分の初期位置を割り出すことができるようにし
上記の値にその分の位置情報を足します。

レーンの長さを8として上下分で16。
9のような数字になった時は座標を下に移動させ、9-8で下側の右から1の位置に
描画を行うようにします。

Cを16で割った余りを出すことで、必ずレーンのどこかに配置されるようにし(0~15の値になる)
0に戻ったらまた左上から開始、という風に描画をさせます。

blog20210611_newsushimove.png

これによって何が起きるかというと、たとえまた端末によるジッタが発生しても
部屋の経過時間を参照して計算を行いピタッと位置を特定するため
絶対に皿の位置が遅れたり重なるようにずれたりすることが無くなります。

blog20210611_newsushimove_1.png



今までは
「1秒ごとに1ずつ移動しろよ」って命令だったのが
「今は3秒経ったから3の位置に立ってろよ」って命令に変わったわけです。
上だとその1秒ごとが端末によってわずかに遅れることがありそれで皿がずれていたのですが
下の方式だと遅れがあっても(人間の目で感知できない速度で)正しい位置にワープするようになるので
通信環境によってわずかなズレが起きることはあっても
端末ごとに見えている皿の位置が全然違うということは絶対に発生しなくなります。

話だけ聞くとワープしてカクカクになるんじゃない?みたいに聞こえるかもしれませんが
そのワープ処理を1秒間に60回行うので人間の目に映る動き的には全く問題ありません。


従来の方法でも「端末によるジッタなどが発生しない」ことを条件に
皿の位置がずれずにプレイを行うことができてはいたのですが
特にAndroidではスペックによってそれらがそこそこ発生する状況だったので
正しい選択とは言えない状況でした。

今回の方法の唯一の弱点はサーバーの時間が狂ったり
サーバーの応答が遅い場合に皿の挙動が変なことになることですが
そんな状況下ではそもそもゲームが成立しない(手の動きとかもおかしくなる)ので
多分大丈夫だと思います。


この方式だと逆回転と時間停止の処理を導入するのが死ぬほど面倒でした。
サーバー時間は常に経過しているので時間を逆行させることは不可能ですし
キープしているのは部屋の経過時間の累積でありフレームごとの時間の進みではないので
なんとかこの数値をやりくりするしかない状況でした。

というわけで逆転が起きたらその開始時間を一時的に保持、
その時間から経過した時間の-2倍の負荷を掛け続けることで
部屋の経過時間を補正によって逆行させるという手段を取りました。
blog20210611_reversezu.png

時間停止の場合は-1倍の負荷をかけることで
経過する時間と補正時間を拮抗させ数値的に部屋の経過時間を止まっているように見せかけます。


もう何言ってんだって感じですが
とりあえずこんな感じで実装を行いました。
pingに60くらいの差があると多少のずれが起きる可能性はありますが
ほとんどの場合であの人めっちゃラグってる!ってことが無くなると思います。



○キャラ調整

人気のあるキャラ、強いキャラには少し落ち着いてもらい
人気の無いキャラ、弱いキャラは少しテコ入れを行い
全体のバランスを取っていこうと思います。
あくまで調整案なので、リリース時にはまた変わっているかもしれません。


・河城にとり
スキルB「妨害スモッグ」:テンション回復量減少。
-視界妨害効果が強くなったのであまりテンションを回復する必要もないでしょう。
ただでさえ人気キャラでかつ強いので。


・博麗霊夢
スキルB「夢想封印」:テンションが30%以下の相手にも効果が発動するように。
             ただしその場合硬直時間が激減し実質キャンセル効果のみに。
             それに伴い不発判定が消滅、回復効果も削除。
-せっかく発動したのにエフェクトも音も出ず地味にテンションが回復するだけというのも
 爽快感に欠けますし何が起こったのか分かりません。
 というわけで相手のテンションに関わらず効果が発動し、キャンセルを狙えるようにしてみます。
 一対一の終盤戦がめちゃくちゃ強くなりました。一人落とすのにも使えます。
 ただしその場合硬直がほぼゼロになるので、スキルなどを使われる隙は発生します。


・東風谷早苗
パッシブ「旗コレクター」:名称、効果変更。旗主と結果に関わらず旗付き寿司を食うと皿1枚ボーナス。
スキルA「現代の常識?」:自身の旗でもテンションが最大値回復するように。
                また、自分の身ワサビ入り寿司が緑色で見えるように。
スキルB「守矢の奇跡」:皿消費量が4に。また、次に食べる寿司の回復量アップ。
-人気も勝率もほぼ最低だった早苗さんを救うべくテコ入れです。
保険として用意されていたパッシブですが有用性が低かったため
保険+狙ったときのボーナスとして使えるようにしました。
またスキルABともに発動価値をアップ。
Aは場を荒らしたあげく自分の自滅も多かったのですがワサビの可視化により
事故はだいぶ減るほか自分で旗を差しまくって大回復も狙えるようになります。
Bはもうちょっと調整するかもしれませんが、皿消費を5から4にしてとりあえずノーリスクで撃てるように。


・十六夜咲夜
スキルB「時よ止まれ」:画面演出を入れ、効果発生と終了が分かりやすくなるように。
-お互いが発生、終了タイミングを認知できるようにします。


・菫子
スキルB「超効果自己催眠」:バフのかかり具合の数値を軽減。
-強化を連発してるだけで強くなりすぎてたので少し大人しくなってもらいます。
今までの1.5倍の回数発動してようやく元の性能って感じです。


・プリズムリバー三姉妹
メルランパッシブ「何でもおいしいわ」:食べ速度低下を軽減。
-ちょっと遅すぎたのでもうちょっと早く食べてくれるようにします。


○アイテム追加
デコアイテムとか色々追加します。限定アイテムも。




てな感じです。
皿の仕様を変えた以上デバッグとテストプレイで
おかしなところがないかひた検証することになるので
少しかかるかもしれませんが来週のどこかくらいには更新できるかも。もしくは再来週。


というわけでもう少しお待ちください。




【宣伝エリア】

pixivFANBOXにて支援を受け付けております。
当個人サークルの活動は無料ゲームメインでやっとりますので
開発費、運営費、サーバー代を少しでもカンパしていただけたらありがたいです。
100円からOKです。いつか返礼品も載せます。
pixivFANBOX



イラスト依頼、プログラミング講習依頼など受け付けてます。
詳しくはブログ左上のプロフィール欄からどうぞ。
スマホからの方はPC版表示にすると出てきます。



ニコ生やTwitchでゲーム配信とかしてます(現在はニコ生メイン)。
作業配信とかもしてるのでよろしくどうぞ。
ニコ生コミュリンク
Twitchリンク



☆アッこんなところにAmazonの欲しいものリストが!
なんか買ってくれたらものすごい喜ぶよ!
欲しいものリスト





テーマ : ゲーム製作 関連
ジャンル : ゲーム

コメントの投稿

Secret

No title

霊夢さんの効果がかなりヤバイ・・・
ほぼ相手を確殺できますね。
食べてる最中に使えば皿をもう一度取らなきゃいけないからモーション時間と食べてる時間を計算するとテンション低い状態だとほぼ間違いなくアウトですね。

No title

新しく追加された挨拶機能は特にこれと言ったバグや問題はありません、普通に楽しく使ってます、後菫子のパッシブが見分ける方法が有ります、音符のマークが出るので分かりやすくなってしまいます、何人か気づいていま寿司でも消したら消したでバランス大丈夫かな?ただ食べているか食べていないのかで見わけれるので大丈夫かと思います、長文失礼しました。

No title

新しく追加された挨拶機能は特にこれと言ったバグや問題はありません普通に楽しく使ってます、また菫子のパッシブが見分ける方法が有ります、音符マークが出るので分かりやすくなってしまいます、何人か気づいていますが消したら消したでバランス大丈夫かな?でも食べるか食べないかで見分けること出来るので大丈夫かと思います、長文失礼しました。

文字間違えて二回投稿

間違えて寿司って打って恥ずかしくなって後で再投稿しました、まだその時は間違えて無いと思ってしまいました....まあそれは気にしないでください気にしたら恥ずかしくなるので.....

菫子のパッシブについてはあくまで音が鳴らずセリフが出ないというだけでその他は他のキャラと一緒です
(完全に何もエフェクト等がないと全く分からなくなり理不尽感が強まるので)

なるほど!!

なるほど!!分かりました、悩みがすっきりしました!ISYさんありがとうございます!
プロフィール

いすぃ

Author:いすぃ
ゲームを作ってたりゲームしてたり何もしてなかったりしてます

お仕事あれば請け負います。
ゲーム作ってみたい!とか初歩からプログラムやってみたい!って人もご一報ください。


初歩からゲームプログラミングの講習してます。
プログラミング講習

イラスト依頼等受け付けてます。
イラスト依頼


twitter
ニコニココミュ
pixiv
Twitch


こちらからご支援いただくとものすごーーーーく助かります。
pixivFANBOX


当サークルのゲームにおける
プライバシーポリシー
privacy policy

最新記事
最新コメント
月別アーカイブ
kaunta-
検索フォーム
リンク
スポンサードリンク
カテゴリ