GameMaker 日本語掲示板

【原因不明】iniファイル書き出しが行われないバグを再現したい

9 コメント
views
17 フォロー

前提

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ファイルも生成されない
  • 参照元が無いのでセーブされず、毎度はじめから開始するしかない

とこのような現象が発生しているとのことですが、原因が不明で対策できず困っています。

リファレンスのファイルシステム周りを読み込んでできる対策を講じてみようとは思っていますが、何か心当たりがありましたら教えていただけると助かります!

umaaaaaa
作成: 2024/10/11 (金) 08:31:10
通報 ...
1
asa 2024/10/11 (金) 13:06:35 修正

まず、私自身がファイルI/Oについては詳しい知識がないという前提でお読みください。

私の環境で試したところ(試したのはver1.0.2です)、

  1. ゲームを起動したらC:\Users\ユーザー名\AppData\Local\にFishing_The_Abyssフォルダが作られました
    (中にconfigSave.ini、fishSave.ini、PlayerDataSave.ini)
  2. 「はじめから」をクリック
  3. ちょっと遊んで、ウィンドウを閉じる
  4. ゲームを起動して「つづきから」をクリック
  5. 前回の状態から始まりました

サンドボックスが影響してそうな気がします。
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バイト文字)かどうか(これが原因になるは分かりません)
セキュリティソフトが邪魔してるかどうか
でしょうか。

2

ありがとうございますー!!
サンドボックスのオンオフは試してみたいですねー
僕の環境だとそもそもバグが怒らないのでオフにしても結果が変わらなさそうなので、バグ発現してる環境でテストできないのが難しいところです…

あさまどさんが言うように普通にローカル環境依存の可能性もある(そこそこその確率は高そう)ので、あんまり弄り倒さない方がいいのかも知れないと思ったりw

buffer関数は知らなかったので調べてみます!
さすがに既にあるユーザーさんのセーブデータを無駄にするのはしたくないのでsteam版とか別のプラットフォームなどに出す時に検討したい機能かも知れません!

ini関数も別にややこしいことしてないと言いますか、やれることがあんまりないというくらいにはシンプルなので、件数も非常に稀というくらいで割と手詰まりなんですよね…w

3

簡単なデータをセーブするだけならini関数でいいのかな?と思ってますが、
もしbuffer関数に興味があればこのチュートリアル動画はおすすめです
https://www.youtube.com/watch?v=R84mR52QaMg

4
umaaaaaa 2024/10/11 (金) 18:50:29

ありがとうございます!!
bufferは色々メリットありそうですね、参考にさせていただきます!

5
umaaaaaa 2024/10/11 (金) 18:53:25

とりあえず結論としては、

・フォルダを手動で作ってもファイルは生成されない
・とにかくファイル、フォルダが生成されない

ということで挙動的には明らかに生成関係をブロックされてる感じがするので、セキュリティソフトなどの外的要因である可能性が高そうなんですが、だとすると他のGamemakerでリリースしている開発者であるある現象になってそうなもんですが聞かないあたり、どうなんだろうと言った感じです

6

こういう環境依存系、開発側で再現できない系は本当につらいっていうかもやもやが消えないのでしんどいですね

7
生高橋 2024/10/12 (土) 18:25:09

一応環境依存に関係のある資料見つけました(Steamの場合ですが)
https://support.gamecity.ne.jp/hc/ja/articles/5734779245465--共通-Steamでセーブ-ロードできない-エラーになる

8
生高橋 2024/10/12 (土) 18:25:33

大手のゲームでもこういうのは起きてるみたいですね

9
umaaaaaa 2024/10/14 (月) 01:35:14

ありがとうございます!
多分環境依存系でしょうね、何やっても再現できないです
やれることはやったので良しとします、ありがとうございます!