URL: http://qiita.com/advent-calendar/2013/unity
AIかランキング機能をやろうと思いました。
しかし、AIはすぐに書けないので、需要ありそうなランキング機能にしますね。
Mac OS X前提です(^^)
参考ネタURL: Unifyの記事
http://wiki.unity3d.com/index.php?title=Server_Side_Highscores
ちょっとこの参考ネタURLのランキングの仕様の説明。
実際に動かしてないのでソース見た限り、
名前だけ、WWW.EscapeURL にして渡している。名前は何が入るかわからないのでエスケープさせているのだ。
また、ハッシュ化したのもパラメータで渡してマッチしてたらDBに挿入している。
キーを適当に設定しているがきちんとしたのを入れよう。
こちらの記事にあるMD5Testのコードは使えないので、こちらのコードを使うようにしてください。
https://gist.github.com/shinriyo/7856337
元記事はPHPとMySQLでつまらないので、Python 3.x系&MongoDBにします。
URLのマッピングも欲しいので、Web側のフレームワークはBottleでやります。
PDOは「PHP Data Objects」の略で、どのDBを使っているかを隠蔽してくれるものですが、これも使いません。
Bottleのインストールですが、
pip install bottle
で入ります。
今はPython 3を使うのが常識ですね。
Python 2を使うのは情弱か非ベンチャー的(ventureしない)な会社だけだと思います。
MongoDBインストール
brew install mongodb
でささっとインストールします。
MongoDBの初期設定
ln -s /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents/$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
MongoDBの起動
mongo
だけ。
スコアの追加用のテストでまず書いてみる。
・add_score.py
中身はこちら
https://gist.github.com/shinriyo/7856207
・実行
python add_score.py
・結果
Successfully inserted document: {'_id': ObjectId('52a45565150ecdb664683639'), 'score': '10', 'name': 'shinriyo'}
スコアの表示用のテストでまず書いてみる。
・display.py
中身はこちら
https://gist.github.com/shinriyo/7856219
・実行
python display.py
・結果
shinriyo 10 shinriyo 10 shinriyo 10
こんな感じになる。
できたら、こちらから
https://gist.github.com/shinriyo/7857151
こちらのC#をとってきて、
HSController.csで保存。
・先ほどの「HSController」をコンポーネントとして貼り付ける
・実際のスコア登録を行う処理はコチラ
score.py
https://gist.github.com/shinriyo/7857609
my_hash is 9386A8A972C08946C9BB1B05FC8972CA
real_hash is 9386a8a972c08946c9bb1b05fc8972ca
となるので、my_hashに対しては、lower()で小文字化する必要はありました。
URLには、Inspector上で
Add Score URL
http://localhost:8080/score/add
Highscore URL
http://localhost:8080/score/display
を忘れないように
では、実際にUnityから登録をやってみる
追加されました!
では次の方!toru_inoueさんですね。