見出し画像

Unity実装04 ログイン処理を実装、前にバージョンチェック処理

いつもありがとうございます。

スキマ時間開発のお時間です。よろしくお願いします。


前回までのあらすじ

 ログイン画面を作ったよ!

 クライアント側のDBも準備できたよ!

ということで、次はログイン&初回ユーザ登録処理!

の前に、汎用のクライアント・サーバー間通信の処理を実装していきます。


いわゆる「臨時メンテナンス」の入り口を作成します。

今回のバージョン管理は、

 [テーブルバージョン].[ゲームバージョン].[マスタバージョン]

です。

クライアントが持っているバージョン情報を、通信の度に、サーバーの情報と突合して、食い違っていたら最新化するぞ、と。


php側をサクッと書いてみた。

<?php
require_once 'connectdb.php'; 

// URL引数からバージョンを取得
if(isset($_GET['ver'])) {
 $version = $_GET['ver'];
}

// SQLステートメントを実行し、結果を変数に格納
$sql = "SELECT * FROM msts_server_statsu ";
$stmt = $dbh->query($sql);

// 枠を定義
$server_statsu = "";
$table_version = "";
$game_version = "";
$master_version = "";

// foreach文で配列の中身を一行ずつ出力
foreach ($stmt as $row) {
 $server_statsu = $row[server_statsu];
 $table_version = $row[table_version];
 $game_version = $row[game_version];
 $master_version = $row[master_version];
}

// サーバが稼働していない場合、エラー
if($server_statsu <> 'run') {
 echo '101'; // ERROR_SERVER_NOT_RUNNIG
 echo '<br>';
 exit;
}

// バージョン情報を展開
$version_pieces = explode(".", $version);

if (count($version_pieces) <> "3" ) {
 // バージョン情報が不正の場合
 echo '102'; // ERROR_VERSION_STRING_DISCORD
 echo '<br>';
 exit;
}

// バージョン情報を照合
if($version_pieces[0] <> $table_version) {
 // テーブルバージョン不一致の場合
 echo '501'; // TABLE_VERSION_DISCORD
 echo '<br>';
 exit;
}
if($version_pieces[1] <> $game_version) {
 // ゲームバージョン不一致の場合
 echo '502'; // GAME_VERSION_DISCORD
 echo '<br>';
 exit;
}
if($version_pieces[2] <> $master_version) {
 // マスタバージョン不一致の場合
 echo '503'; // MASTER_VERSION_DISCORD
 echo '<br>';
 exit;
}

?>

どシンプル。


でC#側は、上記のエラーコードが返ってきたら、対応する処理をする、と。

テーブルバージョン不一致の場合は、DBのドロップクリエイト→全データリロード。

ゲームバージョン不一致の場合は、ストアに飛ばす。

マスタバージョン不一致の場合は、マスタデータのリロード。


軽く書いているケド、ストアに飛ばすってどー書くんでしょうね。

アルファテストの審査通してから考えよう。。。


次回は今度こそログイン処理かしら。



最後まで読んでいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?