# ゲーム状態管理

> Model full game state on a backend server to enforce rules and validation, and prevent cheating.

サーバー認証を実装するには、バックエンドサーバー上で完全なゲーム状態をモデル化します。これは、各プレイヤークライアントがビューポートとして機能し、サーバーがルール、検証、[チート防止](./cheat-prevention.md) を適用することを意味します。ゲーム状態データを Cloud Save に保存して、ゲームがクライアント間で永続化され、任意の時点から再開できるように設定できます。

サーバーゲームの状態管理は、クライアントがプレゼンテーションを処理する間、クラウドサーバーを正しい情報源として活用するので、非同期マルチプレイヤーゲームをビルドするための堅牢な方法です。クライアントは滑らかな UI と可視化に集中でき、サーバーはゲームプレイ、整合性、同期を管理します。

## チェスの例##chess-example

チェスのようなゲームの場合、サーバーは Cloud Code と Cloud Save で正式なボードと駒の位置を維持できます。プレイヤーが動かすと、クライアントは以下のようなパラメーターを使用して Cloud Code 関数にリクエストを送信します。

* ゲーム ID
* 駒の移動
* 開始位置
* 終了位置

チェスゲームの Cloud Code 関数は、各ターンで以下を実行できます。

1. ゲーム ID を使用して、Cloud Save から現在のゲーム状態をロードします。
2. 正しいプレイヤーのターンであることを確認します。
3. 開始位置にある駒がリクエストと一致していることを確認します。
4. 駒が終了位置に正しく移動できることを確認します。
5. 駒を動かしてボードの状態を更新します。
6. その駒が相手の駒を取ったかどうかを計算します。
7. チェックメイトを確認し、true の場合はゲームを終了します。
8. 更新されたボードの状態を Cloud Save に保存します。
9. [プッシュメッセージ](./modules/how-to-guides/push-messages.md) でリアルタイム更新を発信し、相手に動きを通知します。
10. Cloud Code が移動を処理したというレスポンスをプレイヤーのクライアントに返します。
