シンプルランキング

 これは何?

ゲームエンジン、制作ツールを問わず、簡単に使えるオンライン、ランキングのシステムが
あってもいいなぁ…。と思ったのがきっかけで、作ってみたものです。

アプリ内に特別な仕込みはせずに、HTTP通信の機能がついていれば、ツール問わず
また、ゲームでなくても使える、はず。

サーバ上に置いたCGIスクリプト https://oo.jp/ranking.cgi に

アプリ内からPOST GET でスコア、名前、等を送信し
例 https://oo.jp/ranking.cgi ?score=4000 &?na=太郎& ?id=0123

CGIスクリプトが受け取って処理。ランキングログ、ページを更新します。

動作のイメージはこんな感じ

 Web上でシミュレーションできるページを作ったので、流れを確かめてみてください。

シンプルランキングテスト
https://sino.sakura.ne.jp/sintest/ranking_t.cgi

-------------------------------

テスト動画
Unityで制作したテストアプリからスコアを送信しています。
------------------------------
@シンプルランキング 使い方 1一方通行

アプリから、スコア、名前、IDを送信するだけの一番シンプルなもの。
"mode"に write を指定し、いきなりスコアを送ります
いわば一方通行で、スコアが設定ランキング内なら登録し、ランク外なら
却下されます。

ランキングの確認は、プレイヤーがブラウザでページを開いて
確認します。 アプリ内からURLを開く機能があれば割とスムーズかもしれません。

サーバからの応答をアプリで受け取れない場合、この使い方のみになるでしょう。

具体的には、UnityでWebGLビルドしたブラウザゲームがこのパターン。
実際触れて確認してみてください。

https://sino.sakura.ne.jp/games/[WebGL]SimpleRankingTest/

------------------------------
@シンプルランキング 使い方 2応答処理
送信するだけではなく、サーバからの応答を受け取り、そのまま表示したり
処理したりします。
"mode"に
check[ランキング内か確認] write[スコア書き込み] down[ランキングリスト読み込み]
を指定して出力結果を受け取ります

登録前に、ランキング圏内かチェック出来、またランキングリストをダウンロードし
アプリ内で表示することが出来ます。

テスト用のアプリとして、UnityでPC向けにビルドしたものを置きます。
(テスト動画で紹介してるもの)

------------------------------
上2つとも同じスクリプトで処理しています。
ブラウザでランキングを確認できるページは、
https://sino.sakura.ne.jp/sranking/ranking_type1.cgi


テストアプリはUnity制ですが、前述したようにHTTP通信の機能がついていれば、
ツール問わずまた、ゲームでなくても使える、と思います。
ツール、アプリに応じた、調整は必要だと思いますが
------------------------------
@Unityでの使用方法 一例

1 サンプルスクリプト[C#]  wwwpost.cs
公式アニュアルにあったものを少し改変しています。
空のオブジェクトにアタッチして、スコア等の値を上記のCGIスクリプトに送信
してみることが出来ます。 writeモードのみの[応答を受け取らない]単純なものです。
送信結果はブラウザでCGIスクリプトにアクセスして確認します。

空のオブジェクトにアタッチ↓ インスペクタで指定↑

Debug.Log
ブラウザで確認  https://sino.sakura.ne.jp/sranking/ranking_type1.cgi

2 ビジュアルスクリプトの使用
テスト動画のアプリでも 実装はビジュアルスクリプト[PlayMaker]で組んでいます。
値を送信してサーバからの応答を受け取って表示して…といった流れは中々煩雑で
特にゲーム自体とは関わらない部分でもあり、気力が削がれます…

PlayMakerでは上手くアクションを組み合わせることにより、視覚的にもわかりやすく
ノードを組んでいくことができるので、参考に紹介したいと思います。

サーバからの応答がなかった場合のため、別オブジェクトで送信と同時にカウントを
開始し、設定の時間になったら、こちらの送信処理を停止するようにします。
応答があれば、カウントを停止します。

使用しているアクションの 「WWWPOST」はエコシステムから手に入れる
カスタムアクションです。PlayMakerエコシステムについては、こちらも参考
になるかもしれません。

------------------------------

@「シンプルランキング」スクリプトのサーバへの設置

perlスクリプト  simpleranking_v1.0
Zipファイルの中に以下のファイルが入っています。

ranking_type1.cgi
log.cgi

送信できるパラメーターは
"mode" "na" "id" "score"
"mode" は check write down を指定でき、それぞれに応じて機能します。
スクリプト内のコメントでも説明があります。

Perlのスクリプトと、ログファイルをサーバに置きます。
CGIの設置設定は難しくはありませんが、慣れてない方は調べると多くの情報が
あると思います、 参考 Web Liberty(ウェブ リバティー)様

手順としては
サーバが、Perlを使えるか、Perlのパスは変更が必要か、など確認する。
FTPツールで、ranking.cgi と log.cgi をアップロード。
パーミッションを設定する。
動作確認。
ranking.cgi内の、ランキングログ保持数、ID等を設定する。 
アプリから送信してのテスト。

という具合でしょうか。


@ありそうな質問
----------------------------
[注意] 19_0518
GooglePlayでは、外部のURLにアクセスすることが、厳しくチェックされることになる
ようです。そのためアンドロイド用アプリで、単にこのシンプルランキングへのアクセス
機能を付加しただけでは、改善を勧告される可能性が高いです。
シンプルランキングにも関するGooglePlayのアレ
Fix the Intent Redirection vulnerability issues

0 件のコメント:

コメントを投稿