筆者は、ティラノスクリプトで作った「うきでんポーカー」というゲームをオンライン化するために、日々制作を行っています。
ティラノスクリプトでサーバーサイドと連携する方法については、本家のサイトで軽く触れられていますが、情報量が少ないこともあり、当初は相当苦労しました。
方法の全てを解説することは無理ですが、今ある知識の範囲で本家サイトの補足を書いていきます。
サーバーサイドのシナリオファイルを読み込む方法
ティラノスクリプトのindex.html を開きます。その後、下記の部分のコメントを外してください。
<!-- First シナリオファイルに外部ファイルを利用したい場合は、こちらにシナリオファイルのURLを指定できます-->
<!--
<input type="hidden" id="first_scenario_file" value="http://test.html5go.info/test/tyrano/" />
-->
そして、valueのところに読み込みたい、シナリオファイルのURLをhttp://〜 からすべて入力します。
*ホスト名はこのindex.htmlが配置されているホスト名と同一にしなければなりません。
以上で、サーバーから読み込んだシナリオファイルを読みだして動作します。
あとは、必要に応じてこの読み先のURLを切り替えて、返却されるシナリオファイルをサーバーサイドで作ってください。
さらに、厳密に許可されていないシナリオにアクセスできないようにするためには、セッションIDのようなものを付与すると良いかと思います。
https://tyrano.jp/usage/advance/server より
補足説明
ホスト名を同一にしなければならないという注意書きから推測するに、これはブラウザゲームの場合に必要な工程だと思われます。
どういうことかというと、html などを置いているフロントエンドにシナリオファイルを置いていると、ゲームをパクられたり、改変されたりする恐れがあるから、サーバーサイドに置いて読み込んだ方が安全だよということです。
ちなみに、パソコンアプリやスマホアプリにパッケージ化する場合は、必要ない工程ですので、すっ飛ばして構いません。
シナリオ中にサーバーサイドからデータを取得する
シナリオの途中にサーバーサイドに問い合わせやデータを送信することができます。
以下にサンプルのスクリプトを提示します。
[iscript]
alert("ajax通信開始。");
$.getJSON("http://api.tyrano.jp?q=Tokyo,jp&callback=?", function(data){
//読み込み完了
alert("Data Loaded: " + data);
//ラベルの位置までジャンプ
TG.kag.ftag.startTag("jump",{target:"*end_load"});
});
[endscript]
[s]
*end_load
ajax通信完了後にここが実行される
;---------ここまで [s] で処理を止めておいて、ajaxの処理完了後に その後のラベルにジャンプさせてます。
これで、ゲームの途中でサーバーサイドにデータの送信や取得ができますね。
https://tyrano.jp/usage/advance/server より
補足説明
こちらは、必ず必要になる技術ですので、しっかり身につけましょう。
コードの赤マーカーを付けている部分 (&callback=?) は、ブラウザゲームでゲームを置いている場所のドメインとサーバーサイドのドメインが異なる場合 (クロスドメイン) だけ必要です。
パソコンアプリやスマホアプリにパッケージ化した場合や、ブラウザゲームでもドメインが同じ場合は、必要ありません。
データ取得の詳しい方法については、以下の記事で紹介している商品リンクがある本を参考にしてください。
まとめ
とりあえず、今の知識で書ける補足説明は、これくらいです。
今後新たに知識が増えて来れば、また加筆・修正するかもしれません。
この記事がティラノスクリプトでオンラインゲームを作る人の一助になれば幸いです。
コメント