ページへ戻る

− Links

 印刷 

Google App Engine for Python のバックアップソース(No.3) :: NJF Wiki

xpwiki:Google App Engine for Python のバックアップソース(No.3)

« Prev[5]  Next »[6]
*概要 [#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]

準備中

-Google App Engine Launcher


-Python
-Eclipse
-PyDev

« Prev[5]  Next »[6]