2016年4月29日金曜日

ユーザ間の変数同期プラグイン

 RPGツクールMVで使用可能な自作プラグイン「ユーザ間の変数同期プラグイン」の紹介です。


プラグインの説明

 ゲームをプレーしている全てのユーザ間で指定範囲内のスイッチ、変数の値を同期し、共有できるようになります。オンライン要素が存在するゲームで使えるほか、作者が任意のタイミングでプレイヤーのデータの変数・スイッチを操作できます。

スクリーンショット

 実装にはMilkcocoa(https://mlkcca.com/)を使用していますが、新規に利用登録する必要はなく通常利用する上で意識する必要はありません。プラグインコマンドを事前にひとつ実行するだけです。詳細はヘルプを参照してください。

!!注意事項!!

  1. 変数やスイッチに、個人情報などの情報資産にあたるものを絶対に格納しない(させない)よう注意してください。いかなる場合でもこのプラグインを使用することによって生じた不利益に関しては一切責任を負いません。
  2. 本プラグインは試験運用中です。利用状況によってはサービスの運用を停止せざるを得ない場合があります。

ダウンロード

プラグインファイルはGithubで公開しています。

ダウンロード(Download)

利用規約

当プラグインはMITライセンスのもとで公開されています。作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)についても制限はありません。このプラグインはもうあなたのものです。

http://opensource.org/licenses/mit-license.php

更新履歴

  • 2016/05/26 Milkcocoa側のAPI更新によりローカル環境で実行できなくなっていた問題を修正
  • 2016/04/29 初版

20 件のコメント:

  1. これって送信のタイミングを任意に出来ないんですか?

    返信削除
    返信
    1. 現状は一定間隔で状態を監視し、変更されていた場合は送信する仕様です。
      プラグインコマンド等で送信タイミングを任意にすることは恐らく難しくないと思うので検討してみます。

      削除
    2. 今まで1秒間隔で送信していたのを、修正したら即送信(ただし前回送信後1秒間は送信でいない)に変更しました。
      完全に任意にしてしまうと、使い方次第で毎フレーム送信とかもできてしまうのでこのような感じになっています。

      削除
  2. これも使用します。ありがとうございます。
    トリアコンタンさんのPlug-inはすごいことが多いですね。

    返信削除
    返信
    1. ご利用ありがとうございます!
      MilkcocoaというBaaS(Backend as a service)を使わせていただいています!

      削除
  3. 素晴らしいプラグインです!
    それで…賞賛ついでで恐縮ですがこれを応用して、
    「ネットランキングを実装するプラグイン」などいかがでしょうか…?

    他の人に需要あるかもわからずかつ一方的なお願いなので、
    気にしなくても構いませんが、もし気が向いたらよろしくお願いします!

    返信削除
    返信
    1. プラグインのご利用ありがとうございます!
      ランキングプラグインはVXAce以前でもありましたので、おそらく一定の需要はあると思っています。
      時期をお約束することはできませんが、検討してみます。

      削除
  4. ありがとうございます。お待ちしております!

    返信削除
  5. トリアコンタンさん。
    素敵なプラグインありがとうございます。
    ゲームの製作にたいへん役に立っています。
    しかし、ゲームの製作中に問題ができまして、
    お伺いしたいと思います。

    スイッチのリアルタイム同期化は問題ありませんが、
    変数だけ変更すればアルタイム同期化ができません。
    (変数の数字は4000番代です)

    質問ばかりで申し訳ありませんが、
    お助けが必要です。


    ユーザ間の変数同期プラグインを使う時、スイッチと変数がそれぞれ百個以上になるとエラーがでます。

    エラー
    https://leadinlmv4lo.mlkcca.com/api?path=main&id=test831&api=get&appid=leadinlmv4lo
    Failed to load resource: the server responded with a status of 404 (Not Found)

    スイッチと変数を百個以上(約1000個ぐらい)使用できる方法はありませんか?

    please help ; _ ;

    返信削除
    返信
    1. こんにちは。
      いつもご利用ありがとうございます。

      実は、Milkcocoa(Backend as a service)の仕様で、一度に転送できる量が4KBまでと決まっています。
      どちらの現象も転送量が限界を超えたために発生した可能性が高いです。

      これを回避するのは難しいので、同期する変数の数を減らして対応していただくかたちになります。
      申し訳ありませんが、よろしくお願いします。

      So sorry. ;_;

      削除
    2. ご回答ありがとうございます。
      これからも宜しくお願い致します。

      削除
  6. トリアコンタン様、このプラグインを導入させていただきました。サーバーとかがわからない私でも使える、夢のようなプラグインで、本当に感謝しております。
    一つご質問なのですが、これは、ブラウザなどのオンライン専用だとは思うのですが、インストーラ版から、一時的にアクセスして、情報を取得したり、書き込んだりはできますでしょうか。私のゲームは基本的にオフラインで、ランキングデータのみ、プレイヤーが要求する際に一時的にアクセスできるようにできれば大変ありがたく存じます。

    返信削除
    返信
    1. もちろん、ランキングとかは自作しますので、ブラウザとかでは簡単にできるような、WEBにアクセス(ネット環境がなければそのまま失敗でOK)、情報取得&書き換え、ゲームに反映、のみでいいです。この部分も自作しなければと思うのですが、どうにも知識がなく、プラグインコマンド一つでできたら本当に嬉しいです。

      削除
    2. こんにちは! プラグインのご利用ありがとうございます!
      インストーラー版でもデータの受信、送信は可能です。
      ただし、ゲーム起動時にネットワークに接続している必要があります。

      削除
    3. おお、本当だ。大変失礼しました。これは本当に素晴らしいプラグインです。大事に使わせていただきます。ありがとうございます!

      削除
  7. アンチョビ2017年4月6日 14:40

    はじめまして、いつもプラグインの書き方など参考にさせてもらってます。
    ネットワークを使ったものを作りたいと思っていたので、このプラグインをお借りしたいと思っています。
    つきまして仕様について質問があるのですが、

    ・(現実的では無いですが)10万を超える作品がこのプラグインを利用することはできない
    ・「このプラグインを使った全作品」の通信量の合計が4KBを超えるとエラーが出る
    ・「このプラグインを使った全作品」が計20以上起動されるとエラーが出る
    ・「このプラグインを使った全作品」の通信回数が2万回を超えるとエラーが出る(ひとつの作品が毎秒通信したとして5~6分?)

    Milkcocoaの規約を読んで、こう解釈したのですがあってますでしょうか?
    他の方の作品にまで影響が出るのであれば、できるだけトラフィックが小さくなるように設計したいのですが・・・
    BaaSなどについて疎いので、詳しく解説いただければ嬉しいです。よろしくお願いします。

    返信削除
    返信
    1. はじめまして! プラグインのご利用ありがとうございます!

      >・(現実的では無いですが)10万を超える作品がこのプラグインを利用することはできない
      こちらは確認できませんでした。おそらくムリだと思います。

      >「このプラグインを使った全作品」の通信量の合計が4KBを超えるとエラーが出る
      4KB制限は1回のリクエストにつきおよそ4KBになります。同期する変数の中に文字列等が入っていると、超過しやすくなります。
      これに関しては他のゲームを意識する必要はありません。

      >「このプラグインを使った全作品」が計20以上起動されるとエラーが出る
      ゲーム自体はエラーにはなりませんが、同期はできなくなります。

      >「このプラグインを使った全作品」の通信回数が2万回を超えるとエラーが出る
      1日につき2万回までとなっています。同じくエラーにはならず同期に失敗します。

      参考までに、現在の利用状況は
      ・配信メッセージ数:2387/20000
      ・コネクション数 :7/20
      となっていました。(休日はもう少し多いかもしれません)

      リリース直後などは一時的に混雑する可能性があります。

      また、本プラグインはRPGアツマールでは使用できません。ご了承ください。
      (アツマール側が外部との通信を制限しています)

      削除
    2. アンチョビ2017年4月6日 22:08

      お返事ありがとうございます。
      やはりアツマールでは動きませんか……
      残念ですがそれは薄々そうだろうなとは思っていたので仕方ない。動くものができあがってから、別の形での公開を模索します。

      >・配信メッセージ数:2387/20000
      >・コネクション数 :7/20
      魅力的なプラグインだけあって競争率高いですね!
      重ねて質問して申し訳ないのですが、
      ・プラグインにURLやAPIの記述がありますが、ここを書き換えれば他のサーバでも使えるのか?
      ・メッセージ数というのは、変数を書き換えたときのアップロードでも消費するし、コネクション数が多ければそれだけ通信回数もかさむのか?
      というあたりが気になります。
      よければ回答をいただけないでしょうか。
      よろしくお願いします。

      ……エラーを返さない。なるほど……
      以前TCP/IPを学んだときも、通信がうまくいってるのかどうか確かめるのに苦労したのを思い出しました。

      削除
    3. お疲れさまです。
      本プラグインは、Milkcocoaのアカウントを作成しなくても利用できるプラグインですが、アカウントを作成したうえでAPIキーを書き換えればおそらく使用可能です。その際は「SyncManager._milkCocoaApiId」の値を書き換えてください。

      また、Milkcocoaのマイページからデータストアとしてauthおよびmainを作成してください。
      メッセージ数についてですが、書き換え後のアップロードで1回、誰かがアップロードした際に、同じゲームに同時接続している全ユーザによるダウンロードでユーザ数分加算されます。

      削除
    4. アンチョビ2017年4月6日 23:02

      すばやいお返事ありがとうございます!
      アカウントを作成して使えるなら、選択肢として覚えておこうと思います。

      削除

注: コメントを投稿できるのは、このブログのメンバーだけです。