파일 시스템 이해하기
GameMaker에서 파일 시스템 기능을 사용할 때, 파일이 어떻게 저장되고 어디에 위치하는지, 그리고 시스템의 가능한 한계나 해결 방법에 대해 아는 것이 중요합니다. 이 섹션에서는 파일 시스템의 기본 개념을 쉽게 설명합니다.
파일 저장 영역
파일 시스템에는 두 가지 주요 저장 영역이 있습니다:
1. 파일 번들
- 이곳은 실행 파일과 함께 패키지된 모든 파일이 저장되는 곳입니다. 포함 파일 목록에 추가한 외부 파일도 여기에 속합니다.
working_directory변수를 통해 접근할 수 있으며, 파일은 경로 없이 자동으로 읽힙니다.
2. 저장 영역
- 게임이 안전하게 쓸 수 있는 기기 저장 영역입니다.
game_save_id변수를 통해 접근할 수 있습니다. - 파일을 읽을 때 이곳도 자동으로 확인합니다.
파일 접근 방식
게임이 샌드박스에 있을 때, 파일 번들과 저장 영역 외의 다른 영역에는 접근할 수 없습니다. 하지만 GameMaker는 다양한 환경에 맞추어 게임을 쉽게 다시 타겟팅할 수 있게 하고 있습니다.
파일 읽기 및 쓰기
GameMaker에서 파일을 읽거나 쓸 때는 다음과 같은 방식으로 작동합니다:
- 읽기 작업
- 먼저 저장 영역에서 파일을 찾고, 없으면 파일 번들에서 찾습니다.
- 쓰기 작업
- 파일 쓰기는 저장 영역에서만 가능합니다. 샌드박스를 비활성화하거나 경로를 명시해야 합니다.
파일 작업 예제
1. 디렉토리 생성
저장 영역에서만 작동합니다.
directory_create("my_directory");
2. 파일 읽기
이 예제에서는 미리 저장된 파일을 읽어옵니다.
buf = buffer_load("my_file.dat");
3. 파일 쓰기
이 파일은 저장 영역에 새로 생성됩니다.
buffer_save(buf, "my_file.dat");
샌드박스 밖에서 파일 접근하기
Windows, macOS 및 Ubuntu(Linux)에서 - 사용자가 로드 및 저장할 영역을 선택할 수 있는 기능(get_open_filename, get_save_filename)을 사용할 수 있습니다.
HTML5에서 - 서버에서 파일을 로드하려면 buffer_load_async 함수를 사용해야 합니다. 동기식 로드는 대부분의 브라우저에서 지원되지 않으므로 주의해야 합니다.
저장 영역 위치
각 타겟 플랫폼은 파일과 디렉토리를 읽고 쓸 수 있는 고유한 저장 영역을 관리합니다. 아래는 각 타겟의 저장 영역 목록입니다.
| 플랫폼 | 저장 위치 |
|---|---|
| Windows | %localappdata%\ |
| HTML5, GX.games | 로컬 스토리지 |
| macOS | ~/Library/Application Support/ |
| Ubuntu (Linux) | /home/<사용자>/.config/gamename |
| iOS/tvOS | iTunes를 통해 보기 |
| Android | /data/ (Root가 있어야 접근 가능) |
이러한 기본 지식을 바탕으로 파일 시스템을 효율적으로 활용할 수 있습니다.