unityで作るソシャゲの構造

  • このエントリーをはてなブックマークに追加
  • LINEで送る

大まかに分類した場合のゲームの構造。

基本的には、すべてのシーンは下のいずれかになるように設計する。

加えてこれらのシーン中には、 プレイヤーが操作するかサーバー処理または、バックグランドで処理が完了した場合に次のシーンにつながるように設計する。

  1. 起動画面
  2. ログイン画面
  3. メニュー画面
  4. ゲーム画面
  5. リザルト画面

起動画面

起動時に表示される画面、unityの場合、強制のスプラッシュがあるがそれとは別に

スプラッシュを用意する。ゲームデータ用のクラス読み込み、サーバーとの通信確認、音声の読み込み、

ゲームの起動に必要な処理を行う。 サーバーとの通信確認やサーバー時間の取得など、ゲーム起動後も繰り返し行う場合が多い処理は、スタティッククラスなど

でグローバル化しておく。

サーバー状態の確認では、 そもそも指定されたサーバーに接続できるか?サーバーがわで示す、アプリの最新版であるか?メンテナンス状態か?などを

設定しておくと運用時にアレコレできる。

 

ログイン画面

ログイン画面では、以下の処理を行う。

1、インストール後の初回起動かどうか?初回起動なら、サーバーに生成させた個別のユーザーIDを端末の

PlayerPrefsに登録する。同時に初回起動フラグを設定して、チュートリアルの起動や遊び方の説明を呼び出すきっかけにしておく。

整数でユーザーを管理した場合の端末登録

[c]

int userID = PlayerPrefs.SetInt(“userID”, server_from_userID);

[/c]

端末引っ越し等想定すると、初回起動フラグは端末でなく、サーバー側での管理にする。

2、端末のPlayerPrefsからユーザーIDをつかいサーバーにログインする。

[c]</pre>
int userID = PlayerPrefs.GetInt(“userID”, 0);//デフォルトキー0は取得失敗とみなす。
<pre>[/c]

ログインを行い、ユーザー固有のデータを取得する。インムスでは、プレイヤーデータ。レベル、アイテム個数、ミッションの到達、クエストデーター、

手持ちのキャラクターデータリスト。

手持ちでないキャラクターデータリストをダウンロードする。

こうしておくことで、アプリのバージョンを上げずに、新規にキャラクターを追加したり、クエストの追加を行えるようにする。

 

メニュー画面

メニュー画面では、プレイヤーが次に何をするのか?ゲームするのか、キャラクター育成を行うのか?遊び方をしらべるのか?という、プレイヤー操作とは別に

、サーバーに対してプレゼントがないか?運営側からプレイヤーにお知らせがないか?

HP、MP、ユーザーのステータスの変更をサーバーと動機させる

など、バックグランド処理も行わせる。そのため、トップメニュー、カード合成、カード進化、課金画面、ガチャ画面、ギルド画面をすべて同一シーン上に展開する。こうすることで、処理を途切れさせないでメニュー画面の操作が可能になる。

タイマー式の問い合わせは、フラグの管理が大変なため、各メニューの展開時に問い合わせる方式とした。(ex プレゼントがある場合→ログイン後トップメニューを表示時にチェック→育成画面を表示時にチェック→ギルド表示時にチェック)チェック時に同時にサーバー時間の取得を行う設計とした。

ゲーム画面

ゲーム開始前に、ゲーム内容のデーターを読み込んでおく。敵パラメーターや出現ドロップの内容、

ゲームの内容はおいておくとして、下記の状態遷移を想定する。

ユーザーがゲームに勝利した場合。

ユーザーがゲームに負けた場合、

ユーザーがゲームをリタイアした場合、

端末がアプリを切断した場合(電話がかかってきた、電池が亡くなった場合、ユーザーが他のアプリを使用した場合)

状態遷移では無いが、今回はアイテム石の実装が有るため、ユーザーがアイテムの使用を選択した場合の処理も追加。

 

リザルト画面

ゲーム後の結果処理を行い、再びメニューに戻る画面。メニューに戻る前に、

ドロップアイテムの受取処理(ゲームコイン、取得キャラクターのサーバー受け渡し等)のほか、

ユーザーパラメーターの加算処理を行う。ユーザーパラメータは、例えばパズルゲームなら何連鎖したか?赤の石を何個消したか?今日何回目のゲームか?

ゲームを始めて何回勝利したかなど詳細に収集する。  パズルゲームの途中で逐次サーバーに送っていては、データ処理が膨大になるため、

リザルトにてサーバーと同期させるようにさせる。

表示後、サーバーに実績の解除等を問い合わせる。ミッションの達成フラグ等を取得する。

 

まとめ

どうでしょう?普段あなたがプレイしているゲームも多分こんな感じ。

 

 

  • このエントリーをはてなブックマークに追加
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*