今回は webGL版の最後として、SAVE、LOADができるのかどうか実験してみます。
マニュアルには「bsave命令などファイルの静的な保存はできません」とズバリ書いてあります。
まあローカルフォルダからデータを読み出せない仕様なら、ローカルフォルダにアクセスできないんだろう事は予想できます。
なお、Android版での bsave、bloadはできる事を確認済みです。
やってみましょう。
#include "hsp3dish.as" a=10 bsave "test.dat",a
これを HSP Dish helperで変換して、と
とりあえず Firefoxに放り込んでみる。
特にエラーとかはでないけど
saveはされてないみたい
cドライブ(HDD)を検索してみよう
無かった。
う~ん、考えてみればサーバーからプログラム(html)を読むのだから、これだとサーバーにセーブデータを書くことになって、それぞれのローカルフォルダにセーブする事にはならない。
この場合ジャバスクリプトでセーブプログラムを作る必要があるんだろうけど、HSP Dishの webGL版は中間コード(.as)を逐次実行するインタプリタ仕様だから、元の HSPで対応できなければジャバスクリプト書き足せないし、無理なのかな?
少し調べてみたけど、ジャバの方で Cookieかウェブストレージってのを使ってやれば saveできるみたい。
しかし HSPから javaへの値の渡し方が分からないし、たぶん中間コードに変換された HSPのプログラムソースは.dataファイルに格納されているんじゃないかと思われるし、と言う事はどのみち変換している HSPLet辺りまででウェブストレージへの命令を追加するなりしないと無理なんじゃないだろうか。
変則的にクリップボードを仲介してデータを渡す、なんてのも考えてみたけど、情報によるとやはりセキリュティのため、web上では javaではクリップボードにもアクセスできないみたい。
と言う訳で、HSP Dishの webGL版で、ローカルフォルダへのセーブはやっぱり無理のようでうす。
対処法としては昔ながらのパスワード方式が考えられます。
ドラクエの復活の呪文方式ですね。
しかし課金の事を考えると、どうもスマートじゃない。
後はクラウド上、つまりどこかの webサーバ上にデータを格納する方法だけど、最近のブラウザゲームにはそういうのもあるけど、恒久的なデータ保存とか考えるとどうなってるんだろう?
この辺もその内勉強する事にしよう。
どの道、課金要素を考えると、いずれ javaまでいじるような感じがするんですけど、とりあえず今は「棚上げ」して次へ進む事にしましょう。
webGL版についてはとりあえず以上で、次回からはいよいよ Android版をやっていきます。