GameMaker 日本語掲示板

RPGのシナリオのプログラムの書き方について / 4

5 コメント
views
16 フォロー
4
asa 2021/03/15 (月) 13:00:05 修正

ファイル読み込みの部分がうまくいってないようですね。

GMSのファイル読み書きのデフォルトのパスは確か
C:\Users\UserName\AppData\Local\ProjectName\
ですのでここにファイルがある必要があります。

ここにtext.txt(UTF-8で保存したもの)を置いて、これが動くか試してみてください。

var _file = file_text_open_read("text.txt");
var _str = file_text_read_string(_file);
show_debug_message("_str="+string(_str))
file_text_close(_file);

正しく読み込まれて動作すればこうなります。
画像1

ゲームからファイルを作成し、書き込み読み込みをする処理の場合はこれでいいと思います。
(ゲームのコンフィグデータなど)

ですが、シナリオのテキストは予め自分で作ったテキストファイルをゲームに付属させる形になると思います。
ゲームを配布する時に、ユーザーのPCにこれをどうやって配置すればいい?となりますよね。
プロジェクトにファイルをインクルードすることで実現できます。

画像1
リソースツリーのところからファイルをインクルードすると、プロジェクトのフォルダ内にdatafilesというフォルダが作られ、そこにファイルがコピーされます。これで完了。開発環境でも動くし配布したゲームも動くはずです。テキストを編集する際はdatafilesにあるファイルを編集してください。

配布するゲームをビルド(Ctrl+F8)すると、このファイルはexeファイルと同じ場所に付属する形でコピーされるはずです。やってみてください。

ゲームを遊ぶユーザーから見ると、exeファイルがある場所にtext.txtがあるので開けば見たり編集できます。それをできにくくするなら暗号化したりという手段があります。それも解読不可能では無いと思うので、絶対見られたくないならシナリオテキストもプロジェクトのコード内に書く形にするしか無いのかなと思います。その場合でもリバースエンジニアリングで読まれる可能性は残ります。

私が書けるのはこんな感じで、「よく分からないがこうすると動く」的なことだけです。
コンピュータ、GMSのファイルI/Oについて、詳しい方からの解説を待ってます!
(サンドボックスとは?など私もちゃんと理解したい)

通報 ...