GM:Studio 以降、外部ファイルへのアクセスが伴う関数処理は各ターゲット・デバイスのサンドボックスが考慮されており、セキュリティに沿ったディレクトリが自動選択されるよう設計されています。

このエントリーをはてなブックマークに追加

この結果ファイル名の指定だけでファイルアクセスが可能になりましたが、サンドボックスの外=保護領域外へのアクセスはできなくなりました。例外的なアクセスが許可されているウィンドウズ OS に関しては、ウィンドウズ専用の関数を用意することで例外にも対応しています。

参考URL(YoYoGames):File System Limits

参考URL(YoYoGames):File Handling

ファイル入出力とサンドボックス

GM:Studio 以降はマルチな出力に対応するため、ファイル入出力機能はサンドボックス(保護された領域)内で動作させる前提となっています。

各システムにおけるサンドボックスの差異は GM:Studio 内部で吸収するため、複数デバイスで動かす前提でも1つのソースコードで対応できるようなファイル入出力機能として設計されています。

このためファイルアクセスについてはファイル名の指定だけこなせばあとはGM:Studio に一任できます。その代わり保護領域外を指定できません。

モバイルを例に考える

GM:Studio からゲームリソースとして追加されたファイル群は各ターゲット用にビルドされ、ビルドされたアプリは各ユーザの環境へインストールされる時にアプリ専用のディレクトリへと展開されます。そして「読み取り専用」データとしてゲーム用リソースは保存されます。

セーブデータなどゲーム実行後に作られるユーザの固有データを保存する場所は上記リソースとは別の、つまり「読み取り」と「書込」が許可されているアプリ固有の領域が用意されている、そこへアクセスします。

  • アプリから読み取りだけが許可された領域
  • アプリから読み取りと書き込み両方が許可された領域

サンドボックスについておおまかなルールはこの二つです。ディレクトリについては、モバイルも各 OS によって位置が異なり、HTML5 でも異なります。

ディレクトリ位置自体は各ターゲット毎に規則があるため、その規則に沿った場所に保存されています。

ウィンドウズさんはガバガバすぎる件

例外的なのは Windows で、この OS はパーミッションの概念が薄いため基本的にEverytime, Everywhere 保存できてしまいます。指定した場所に保存したい場合は Windows なら Windows 限定で利用できるファイルアクセス関数が用意されています。

参考URL(YoYoGames):File System Functions

* Window Only のファイルシステム関数がある点に注意

次のページへ

Leave a Reply

Your email address will not be published. Required fields are marked *