*概要 [#rf9b7dd3] Flashゲームでは以前はSharedObjectでゲームのセーブが出来たのですが、最近はブラウザのセキュリティでデフォルトでは一定期間で消えるようになりました。 消えるとプレイヤーから文句を言われますし、ブラウザの設定で消さないように出来ると注意書きをしても無視するプレイヤーがかなりいます。無視されなくても理解できないユーザーもかなりいます。 そのため、最近ではブラウザゲームのゲームデータの保存はサーバーで行う事が多くなりました。 ここではゲームデータの保存のためにGoogle App Engineの使い方を紹介していきます。 *Google App Engine [#c810862b] Google App Engine(以下GAE)はGoogleのクラウドサービスで、簡単にいえばGoogleのサーバー群の上に乗って動くレンタルサーバーの様なものです。 GAEをブラウザゲームの保存に使う理由は以下の通りです。 -無料枠があり、ゲームがヒットしなければサーバー代は無料になる -従量課金だがそれほど高価では無く、課金されたとしても、ちゃんと調整していれば大きな額にならないため、広告を入れておけば赤字にはならない -自動でリソースがスケールするので、過負荷でサーバー自体が落ちると言うことは無い -自分でサーバーの管理をする必要は無い ブラウザでのカジュアルゲームの場合、初期にかなりアクセスが集中してその後はほとんど負荷が無くなることが多いです。すると最初の数ヶ月のために性能の良いレンタルサーバーを借りるのは無駄が大きくなります。GAEだとアクセスが多くても勝手にスケールし、しかもアクセスが少なくなれば無料になります。使った分だけ払えば良く初期投資などのリスクが無いので、リリース前に負荷が読めにくく安定もしないブラウザゲームにとってはとてもありがたいです。 ただし、もちろん問題もあります。 -他のサーバーに後から移したくなってもそのままでは無理である -ちゃんと課金額が大きくならないような調整をしていないとそれなりにかかる -集計や並べ替えといった処理が難しい -はじめから負荷が高く一定であることが分かっているならサーバーを借りた方が安くなる場合が多い -swfなど、容量の大きな静的ファイルは普通のサーバーに置いた方が安くなる しかし、これらの問題はほとんどの場合、サーバー側の処理が複雑になったときに重要になるので、個人で作るカジュアルゲームなどでは気にすることはあまりないでしょう。また、知識があれば避けられる問題も多いです。 *言語 [#t07fc23a] 対応している言語はJavaやPython、PHP、Goなどいろいろあります。国内ではJavaの情報が多いようですが、海外ではPythonも人気があります。 それ以外の言語については分かりませんが、Goは最近の言語でPHPは最近の対応なので資料が少ない事が予想されます。 カジュアルゲームのデータの保存程度ならPythonをお勧めします。 大規模開発ならJavaのような厳密な型定義やクラスのある言語の方が良いかも知れませんが、ゲームデータの保存だと少ない場合は1ユーザー1レコード、管理用の物も含めて2~3テーブル程度しかデータはありませんので、それだけのためにJavaで書くのは面倒です。Pythonだとタイプ量が格段に減ります。 また、ひょっとすると最近は改善されているかも知れませんが、開発環境であるGAEのSDKの実行速度がPythonの方がずっと速いです。よって数日で完成するようなものならPythonの方がだんぜん能率は良いです。 また、Pythonは海外では非常によく使われている歴史のある言語なので、ライブラリなどがとても充実しています。しかもその多くが最初から標準ライブラリで使えるようになっています。ただし残念ながら日本語の資料は少ないです。また、日本語処理などでは不満が出る場合があります。 言語自体の習得は簡単です。Pythonは教育用でも使われているぐらいわかりやすい上に、ゲームデータの保存程度では簡単な機能しか使いません。すでに他の言語を習得している人なら入門書を一冊読む程度で最低限の知識は得られます。 *チュートリアル [#r376bfde] **サーバー構成 [#u348cf11] GAEは転送量に応じて課金があるので、Flashゲームのように容量が大きくなる物をGAEのサーバーに置いておくのは費用面であまり良くありません。また、運用面でもGAEはFTPなどでアップロードするわけは無いので、管理がちょっと面倒になります。swfや読み込む外部画像ファイルなどは通常のレンタルサーバーに置いておいた方が良いでしょう。 GAEへはcrossdomain.xmlを使ってアクセス可能にしておきます。 こうすることで、万一アクセス数が予想以上に増えたときにもswfをホストしているレンタルサーバーを増やしたり変えたりする柔軟な運用が可能となります。もし同一のレンタルサーバーでswfのホストもデータの保存もしていると、アクセスが多いときに引っ越したりするのは少し面倒になります。 そんな事を気にするほどのアクセスが無かった、という場合にはGAEの無料範囲で収まるでしょうから、固定のサーバー代が余分にかかることもありません。 **Google App Engine Launcher [#m90000cf] GAE for pythonの開発にはGoogleの配布しているSDKを使います。SDKはコマンドラインからも使えますが、「Google App Engine Launcher」というGUIが配布されているのでそれを使うと便利です。 https://cloud.google.com/appengine/downloads こちらでインストーラが配布されているので、インストールします。WindowsでPython2.7を入れていないパソコンの場合は、途中でPythonを入れてくださいというメッセージが出るのでそこからリンクをたどってPython2.7を入れるのを忘れないようにしてください。Macの場合は通常Python2.7ははじめから入っています。Linuxの場合は上記ダウンロードページを参考にパスなどの設定が必要です。 **Eclipse [#je4246fc] 開発用のエディタとしてEclipseを使います。理由は他の言語の開発などでもよく使われるので資料が多いのと、PyDevというPython統合環境用EclipseプラグインがデフォルトでGAEをサポートしているので、テンプレートなどが用意されており便利だからです。もちろん、使い慣れたエディタで作業してもかまいません。 Eclipseのインストールについては「Eclipse インストール」などで検索するとわかりやすい記事が大量にヒットすると思いますのでそちらを参考にしてください。 **PyDev [#e6f9c53c] PyDevはEclipseのプラグインとして動作するPython統合環境です。 http://pydev.org/ Pythonのコード補完などがそれなりに使えるようになり、GAE用のテンプレートも用意されているので大変便利です。 準備中
(This host) = https://njf.jp