「Fable5.2に適当なプロンプト投げた結果がヤバすぎた」
で登場した驚き屋ゲームを大改造してみた!!
#AetherStrikeZero
白熱するドッグファイト🔥
・オンライン対戦
・CPU対戦
・レート/ランキング
・サーバー代0円⚠️
リプ欄URL
2人で遊べました!!
マッチングまでも一人で遊べるのがいいね!
こちらのポストをめちゃくちゃ参考にさせていただいて、オンライン協力ゲーム化をしてみました。
まだ全然テストプレイしてませんが。。。
kininarunote34.com/games/pla…
5
155
社不猫 retweeted
のめり込んでやってしまった
スマホ操作ここまで感覚的にできるもんなのかというのとダウンロード不要でここまで遅延も少なく見た目もいいゲームができるもんなのかと...
今回お勉強としてコスト0のオンライン対戦を実装しました。そのやったことと振り返りです。
まず、遅延ばっかのゲームやチーターを許すようなゲームは作りたくありませんでした。
なので当初は
「サーバー側に状態を持たせて安全にwsでリアルタイム通信をしよう!」と考えていました。
ですが試算してみたところ思った以上にコストがかかることが判明しました。
そこで僕は急にP2Pを思い出します。
「あれ?サーバーなんか経由せずに直接やり取りすればいいじゃん!」と。
要するにサーバーにはアカウントの認証やマッチング、データの管理を担ってもらって、対戦自体は各自で直接やり取りしてもらおうという考えです。
サーバーの中継が要らなくなるため、コストを下げることができます。
しかしまた問題にぶつかります。
審判役(サーバー)がいないせいでチーターが弾けない。
P2PだからIPが相手に分かってしまう。
これはさすがに頭を抱えたのでFable5.2に相談しました。
Fable「ストリートファイターはハッシュ値の照合を行うことで同期ズレやデータ改ざんを防いでるから真似したらいんじゃね。ズレたらロルバすればいい。」
貴重なアドバイスを貰い、何度かテストをしてみて支障がないレベルで照合しながら戦闘を行えることが確認できました。
次にIPの問題です。
Opus「cloudflare TURNつかえよ」
自分「TURNってなんだよturnstileと名前似すぎだろ」
ごちゃごちゃ言いながらも調べたところWebRTCの全てのトラフィックをTURNサーバーで中継させることが出来る代物でした。
これならキャリア回線でのP2P難しい問題も解決しながらIPを隠すことができます。
素晴らしい。
ということでランクマッチはTURNにしてフレンドマッチは普通に直接P2Pさせることにしました。
次にサーバーが試合を監視していないため、ランキングに穴が出来ます。
虚偽のリザルトを送り付けることが出来るからです。
「だがしかーし☝🏻不正された側は全く同じ虚偽のリザルトを持っていないはずだ。」
双方が試合後にサーバーにリザルトを送り、一致したものだけ有効試合として扱うことにしました。
どちらかがリザルトを偽ったりリザルトを放棄なりした時点でその試合を無効にします。
これでほとんどの不正は無効試合として弾けるはず。
こんな感じで低コストという要件に縛られたせいで問題と解決のいたちごっこをしながらコスト0のオンライン対戦を実装しました。
正直まだ僕の中ではいくつか重要度の低い不正のやり口が思いついてますがキリがない笑
善良なプレイヤーしかいない状態であれば問題なく快適にプレイできる所までは持っていけたと思ってます!
ここまで読んでくれてありがとうございました。
少しでもこれが知見になったり反面教師にでもなれば嬉しいです。
それでは👋🏻
社不猫 retweeted
Astryx just passed 24,000 stars on GitHub and hit #1 trending across all repos ⭐ github.com/meta/astryx
Thank you to everyone who’s starred the repo, opened an issue, filed a PR, or built something with Astryx, an open source design system that’s fully customizable and agent ready. This community is what makes it real. Highlights 👇
Update: github.com/trending?since=da… We are trending #1 today with 22k stars 🥳



















