前提
function scr_MaxDepthSave_Write()
{
ini_open("PlayerDataSave.ini");
ini_write_real("player", "point", point);
ini_close();
}
このように、もし"PlayerDataSave.ini"がなければ同名のファイルを生成し、iniファイルをセーブデータとして利用しています。
生成される場所は
C:\Users\ユーザー名\AppData\Local\プロジェクト名
以上のパスがデフォルトで生成される場所です。
問題
開発環境だと正常にフォルダが生成され、iniファイルが書き出されるのですが、ユーザー環境(windowsということ以外不明)で現在10件ほど同じ現象が発生しているのですが、
- フォルダが生成されない
- iniファイルも生成されない
- 参照元が無いのでセーブされず、毎度はじめから開始するしかない
とこのような現象が発生しているとのことですが、原因が不明で対策できず困っています。
リファレンスのファイルシステム周りを読み込んでできる対策を講じてみようとは思っていますが、何か心当たりがありましたら教えていただけると助かります!
まず、私自身がファイルI/Oについては詳しい知識がないという前提でお読みください。
私の環境で試したところ(試したのはver1.0.2です)、
(中にconfigSave.ini、fishSave.ini、PlayerDataSave.ini)
サンドボックスが影響してそうな気がします。
ini_open()のマニュアルにもGamemakerはサンドボックス化されてるため意図したとおりに動かないかもとあります
https://manual.gamemaker.io/beta/en/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_open.htm
サンドボックスについて詳細はこれ
https://manual.gamemaker.io/beta/en/Additional_Information/The_File_System.htm
因みに私はファイルセーブ・ロードはbuffer関数(buffer_write,buffer_saveなど)でやってます。
テストプレイでセーブできないと報告されたことはありません。
ini_open,iniwite以外の方法で改善するか試すとどうなるでしょうか。
(ini*だけがサンドボックの影響下にあるのかどうかも分かってませんが)
サンドボックスはゲームオプションからOFFにできますが
これはなるべくOFFにしないほうがいいのかな?と素人考えで思ってます(なんか怖いっていう程度)。
問題が発生した人がやり取りできる人であれば、一度サンドボックスをOFFにしたバージョンで試してもらって
サンドボックスが原因かを確定させることができたらいいのですが。
その他で気になることと言えば
ユーザー名が日本語(2バイト文字)かどうか(これが原因になるは分かりません)
セキュリティソフトが邪魔してるかどうか
でしょうか。
ありがとうございますー!!
サンドボックスのオンオフは試してみたいですねー
僕の環境だとそもそもバグが怒らないのでオフにしても結果が変わらなさそうなので、バグ発現してる環境でテストできないのが難しいところです…
あさまどさんが言うように普通にローカル環境依存の可能性もある(そこそこその確率は高そう)ので、あんまり弄り倒さない方がいいのかも知れないと思ったりw
buffer関数は知らなかったので調べてみます!
さすがに既にあるユーザーさんのセーブデータを無駄にするのはしたくないのでsteam版とか別のプラットフォームなどに出す時に検討したい機能かも知れません!
ini関数も別にややこしいことしてないと言いますか、やれることがあんまりないというくらいにはシンプルなので、件数も非常に稀というくらいで割と手詰まりなんですよね…w
簡単なデータをセーブするだけならini関数でいいのかな?と思ってますが、
もしbuffer関数に興味があればこのチュートリアル動画はおすすめです
https://www.youtube.com/watch?v=R84mR52QaMg
ありがとうございます!!
bufferは色々メリットありそうですね、参考にさせていただきます!
とりあえず結論としては、
・フォルダを手動で作ってもファイルは生成されない
・とにかくファイル、フォルダが生成されない
ということで挙動的には明らかに生成関係をブロックされてる感じがするので、セキュリティソフトなどの外的要因である可能性が高そうなんですが、だとすると他のGamemakerでリリースしている開発者であるある現象になってそうなもんですが聞かないあたり、どうなんだろうと言った感じです
こういう環境依存系、開発側で再現できない系は本当につらいっていうかもやもやが消えないのでしんどいですね
一応環境依存に関係のある資料見つけました(Steamの場合ですが)
https://support.gamecity.ne.jp/hc/ja/articles/5734779245465--共通-Steamでセーブ-ロードできない-エラーになる
大手のゲームでもこういうのは起きてるみたいですね
ありがとうございます!
多分環境依存系でしょうね、何やっても再現できないです
やれることはやったので良しとします、ありがとうございます!