MVC4 でマルチプレイヤー ターンベースの MMO (世界は 15 秒ごとに更新) ゲームをプログラミングしています。しばらくの間、私は、セッションがサーバー側に保存され、すべてのユーザーがアクセスできるという部分的に正しい仮定の下で作業してきました。私は半分正解でした。
私が行っていたのは、Session 内のメモリに大きなオブジェクトを保持することでした。これは、すべてのキャラクター、その位置、装備、各シーンの短いチャット ログなどの情報を保持するオブジェクトです。これは、ローカル ホストでのテストでは問題なく機能しましたが、これにより、すべてのユーザーが共有セッションではなく、独自のセッションに分離されることに気付きました。
オンラインで全員が同時にセッションを共通にする方法はありますか? この動作を実装するために使用できる代替手段はありますか? パフォーマンス上の理由から、すべての小さなアクションがデータベースに書き込まれるのを避けようとしています。代わりに、設定された間隔ごとにすべてのコンテンツをバックアップとしてデータベースに保存します。
私が気づいたことは、すべてのセッションに SessionId があることです。ただし、SessionId は読み取り専用であるため、常に同じ ID からロードするようにハードコーディングするという最初のアイデアは明らかに機能しません。
ありがとう!