simplestarの技術ブログスマートフォン用の表示で見るsimplestarの技術ブログ目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。キューブ情報の集合体です。クライアントから直接この世界データにアクセスするにはインデックス指定は必須だと思いますが、配置するときにいずれかのキューブであることを表す情報を渡すのはいかがなものでしょうか?そう、無限増殖とか、希少なキューブタイプを不正にリクエストすれば簡単に増やすことができてしまいます。これは許せないですね。取り出すのか、そのスロット番号を与えれば良いことに気づけたということで、サーバーでスロット番号からアイテムを特定するロジックを組んでみることにしました。してホットバーを作りました。いうことで取れるように例のアクティブスロット更新イベントを購読させます。次の実装を書いて、常に現在のアクティブスロットインデックスを同期して持たせます。詰めてもらうことにしました。取れるか?最後にしてしまいましたが、最も重要な処理を書くことにします。サーバー処理が重たくなりますが、これも無限増殖というチートを防ぐため、受け入れましょう。取れることが確認できたコードがこちらです。}入力を厳しくチェッククライアントからのリクエストがサーバーのインベントリの情報とすべてマッチしていることを確認します。本当はクライアントのロジックで不正なリクエストは絶対発生しないように作ります。それでも改竄してアイテム増殖を行おうという人がこのロジックで弾かれて、バイナリキャッシュサーバーまで処理が届けられなくなります。}一応、クライアント改竄による不正にアイテムを増やそうとする対応をわざと入れてみましたが、弾かれました。カウントを減らします。チェック機構で必ず残数があることを確かめているので、ここは単純に減らすだけ加えてアイテム本体の数を減らす必要があります。内のカウントの消費です。2個一緒に減らしたときにインベントリからアイテム自体が消えたので、成功ですね。管理メニューから確認できました。アイテム固定になっているので、スロットのアイテムで上書きします。}あと数字が残るバグもあったので直します。部分を総なめして空きがある最小の値を見つけ出し、ここに置くと宣言する...という計算を走らせなければならないそれはやめようと思うやめると困るのは、新しいキューブを手に入れたときサーバーで適切なスロットに格納されないから、ローカルで頑張らなければならないそこで、サーバーで大変なケースになっていることはわかるので、その時だけクライアント側で計算してもらい正しいスロット番号状態をリクエストしてもらうのはどうだろうそうしよう、ということでサーバー側は簡易な以下のコードでスロット内の数を加算することにしました。}最後にクライアント側でのアイテムの増加サーバー側で行われたアイテム増減の結果は返ってきませんのでクライアント側で、サーバーの状態を類推して合わせてあげる必要があります。}まとめ上記の工程を経て、タイミングが良ければ...一見してアイテムを消費したり、掘削してキューブを取得したりができていそうここからデバッグしていきます。安全にアイテムの利用、キューブの破壊ができているようです。作るものが具体的になってきました。長いことクライアントで閉じていた処理がサーバーで行われ...を押して貰えると、すごくがんばれます。知識リンク作者ホームページはてなブログをはじめよう!simplestar_techさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。