アプリケーションとのルールを決めよう
アプリケーションとのルールを決めよう
前回はローカル環境にDB,Webサーバーを作成したところまで出来ました。
今回は設計をするためにルールを決めるところまで行きたいと思います。
アプリケーションとの通信
通常のソーシャルゲームは、サーバーとあらゆる通信を行っています。
大枠の考え方の基本としては、
- 認証系通信
- 通常系通信
- デバッグ系通信
- 外部連携系通信
- アセット系通信
となると思います。
認証系通信
アプリケーション上のユーザーが本人であることを確認するための通信です。
この目的としては、
- 本人であることを確認すること
- その後の通信の暗号化方式のルールを決める
となります。
「本人であることを確認する」ことが一番の目的ですが、実は「その後の通信の暗号化方式のルールを決める」ということもセキュリティ的にはとても大事です。
何故なら、通信の暗号化は「ユーザー毎に異なり、かつ可変であるべき」だからです。
この辺は不正検知を詳しく話す機会があれば記載しますが、今は「必要なんだー(´・ω・`)」程度に収めておいてください。
通常系通信
主にデータベースの状態や情報を取得するための通信です。
ログインボーナスを受け取ったり、イベントのデータをとったり...
まさに、通信の大多数を担うところです。
デバッグ系通信
内容は通常系通信とほぼ同じですが、これはデバッグ用としてしか使用しません。
つまり、本番環境(正規のアプリケーション)では使用できません。
考え方とルール次第では、これは使用しなくとも大丈夫です。
外部連携系通信
例えば、TwitterやFaceBookといった、自分のアプリケーション以外のサーバーとの連携用です。
ここでは通常系通信と異なる方式で通信をしなければならないため、認証系・通常系とは別のルールで通信を行います。
ルールは、外部サイトによって異なるので、今回は割愛します。
アセット系通信
アプリケーションに画像を乗せると、容量が膨れ上がったり、画像を変更する際にアプリケーションのバージョンを上げなくてはならなくなります。
そうしないためにも、アプリケーション外に画像を載せて管理する必要があります。
そのために、アセット(画像とか)を外部サイトに置いておきましょう。
最近のスマホゲームだと、よく下記の様にダウンロードする画面を見るかと思います。
iTunes Store、Google Store共に、スマホからのダウンロードにはある程度制限があります。
アプリケーション自体のダウンロード時に、特定のダウンロード容量を超えるようなものはWiFi通信を義務付けるため、ダウンロード数を稼ぐときにも必要となります。
※企業のアプリではほぼ確実に必要となると思います。
次回は、認証系通信から実装していきましょう。
モバイルゲームを作ろう(ローカルサーバー準備編)
モバイルゲームを作ろう
明けましておめでとうございます。
2017年が始まったところで、そろそろ自分に蓄えられた知識をアウトプットしようと思い、それを応用した簡単なモバイルゲームを作成しようと思います。
毎年やろうやろうと思ってもなかなか行動しない自分に鞭打つために、今年こそは!との意気込みです。 ('ω')
作ろうとしているもの
RPG系のゲームが作りやすいので、イメージとしてはバトル系を作ろうと思います。
↓のようなバトルゲームが出来たらいいなぁ。。。
まずは準備しましょ。始めましょ。
クライアント
- Unity
サーバー
まずはサーバーから準備
最初に見た目としてUnityに着手しがちなのですが、クライアント⇔サーバーには色々と準備がいるので、まずはサーバーから準備しましょう。
まず、ローカルサーバーを立てなければなりません。^1
ローカルサーバー建築
特にこれといってこだわりはないので、xamppというツールを使います。
phpとかmysqlとか、色々と入っているのでとても便利です。(´∀`)
というわけで早速
詰まったところは、apatch設定のところでport80が使えなかったところです。
が、これは以前別の用途でIISを同じportで使用していたために起こったことでした。
IISの設定を切って、無事終了!
mySQLの設定
DBも使用したいので、xamppの設定でmySQLも使えるようにしました。
試しにuser_tというテーブルを作成して完了。
phalconフレームワーク追加
純粋なphpで作成していくと面倒なことになるので、時短のためにフレームワークを導入します。
選ぶ主な基準としては、
というザックリな理由です。
MVCは信者なわけでもなのですが、日頃の仕事でも使っているので頭の切り替えが少なくて済むという点で選んでます。
というわけで、こいつもサックリと疎通させました。
地味~に苦労したのは、versionが自分の合ってないとインポートに失敗するという点です。
x86じゃないとダメだったところに、時間かかりました。。
x64で何回も失敗してたよ。。。orz
※Phalcon 3.0.3 - Windows x86 for PHP 7.0.0 (vc14) を使用
組み合わせ確認
今までの組み合わせの確認として、
- localhostを通して
- phalconを使用したphpで、
- phpMyAdminで作成したDBに
- 接続して情報を取得し
- 画面に表示する
という手順を確認します。
testコントローラー
<?php class TestController extends ControllerBase { public function indexAction() { // user_tから全レコードを取得 $users = UserT::find (); // view側に変数を設定する $this->view->setVars ( array ( 'users' => $users ) ); } }
phalcon develop toolで自動作成されたuser_t
<?php class UserT extends \Phalcon\Mvc\Model { /** * * @var integer * @Primary * @Column(type="integer", length=11, nullable=false) */ public $user_id; /** * * @var string * @Column(type="string", length=20, nullable=false) */ public $name; /** * Initialize method for model. */ public function initialize() { $this->setSchema("trace_test"); } /** * Returns table name mapped in the model. * * @return string */ public function getSource() { return 'user_t'; } /** * Allows to query a set of records that match the specified conditions * * @param mixed $parameters * @return UserT[]|UserT */ public static function find($parameters = null) { return parent::find($parameters); } /** * Allows to query the first record that match the specified conditions * * @param mixed $parameters * @return UserT */ public static function findFirst($parameters = null) { return parent::findFirst($parameters); } }
view側のコード
<div class="page-header"> <h1>Congratulations!</h1> </div> <p>You're now flying with Phalcon. Great things are about to happen!</p> <p>This page is located at <code>views/index/index.volt</code></p> <?php foreach ($users as $user) { echo "<h2>", $user->user_id; echo $user->name, "</h2>"; } ?>
eclipse上は下記のような状態
表示された結果
この辺は後半はトントン行きました。
前半は、phalconのデベロッパーツールのphalcon.bat(windows版)が上手く使えなかったという点。。。
ここだけで一時間くらいかかりました。(ドツボ)
@echo off @ ↓のsetではエラーが出る※Cドライブじゃないのが原因っぽい @set PTOOLSPATH="%~dp0\" @ 絶対パスにすると行ける! set PTOOLSPATH=D:\workspace\phalcon-devtools-3.0.x\ php %PTOOLSPATH%phalcon.php %*
参考