GAME MAKER 강좌
KAYAN
◈ 베이스64(Base64)로 암호화 저장
베이스64 (Base64)는 2진 데이터를 아스키 텍스트로 변환하거나 그 반대로 변환하는 인코딩 방법입니다.
일반적으로 인터넷 상에서 데이터를 암호화한 텍스트 형식으로 주고 받을 때 사용합니다.
아래 함수를 사용하면 문자열을 base64 형식으로 인코딩 된 문자열로 변환할 수 있습니다.
◎ base64_encode(string) : 지정한 문자열을 base64 형식으로 인코딩 합니다.
암호화한 데이터는 텍스트 형식으로 저장할 수 있습니다.
예)
var str, file; str = base64_encode(game_data); //인코딩할 문자열 file = file_text_open_write("save.txt"); file_text_write_string(file, str); file_text_close(file); |
인코딩한 암호화 데이터는 아래의 함수를 사용하여 다시 원래 문자열로 디코딩할 수 있습니다.
◎ base64_decode(string) : base64 형식으로 인코딩한 문자열을 원래 문자열로 디코딩 합니다.
이 함수는 이전에 base64 형식을 사용하여 인코딩 된 문자열을 다시 원래 문자열로 변환합니다.
var str, file; file = file_text_open_read("save.txt"); str = file_text_read_string(file); level_data = base64_decode(str); file_text_close(file); |
이 기능을 사용하면 기존의 데이터 구조체(ds_ 함수)의 데이터를 base64 로 인코딩할 수도 있습니다.
◈ 데이터 구조체의 텍스트화
아래의 함수들을 사용하면 기존의 데이터 구조체(ds_ 함수)를 텍스트로 변환 할 수 있습니다.
- 리스트(list)
◎ ds_list_write(id) : 리스트를 텍스트화 합니다.
◎ ds_list_read(id, str) : 지정한 문자열로 부터 리스트로 복원합니다.
- 맵(map)
◎ ds_map_write(id) : 맵을 텍스트화 합니다.
◎ ds_map_read(id, str) : 지정한 문자열로 부터 맵으로 복원합니다.
- 그리드(grid)
◎ ds_grid_write(index) : 그리드를 텍스트화 합니다.
◎ ds_grid_read(id, str) : 지정한 문자열로 부터 그리드로 복원합니다.
- 스택(stack)
◎ ds_stack_write(id) : 스택을 텍스트화 합니다.
◎ ds_stack_read(id, str) : 지정한 문자열로 부터 스택으로 복원합니다.
- 큐(queue)
◎ ds_queue_write(id) : 큐를 텍스트화 합니다.
◎ ds_queue_read(id, str) : 지정한 문자열로 부터 큐로 복원합니다.
- 우선도 큐(priority)
◎ ds_priority_write(id) : 우선도 큐를 텍스트화 합니다.
◎ ds_priority_read(id, str) : 지정한 문자열로 부터 우선도 큐로 복원합니다.
예를 들어, 리스트 데이터 구조체(ds_list)를 base64로 인코딩하여 텍스트 파일로 저장한다면 아래와 같이
할 수 있습니다.
var str, file, data; data=ds_list_write(global.game_list); //암호화할 리스트의 텍스트화 file = file_text_open_write("save.txt"); str = base64_encode(data); file_text_write_string(file, str); file_text_close(file); |
그리고 base64로 인코딩하여 저장한 리스트 데이터를 다시 base64 디코딩하여 복원할 수도 있습니다.
var str, file, data; data=""; file = file_text_open_read("save.txt"); str = file_text_read_string(file); if !(str == "") { data = base64_decode(str);} //base64 디코딩 file_text_close(file); if !(data==""){ ds_list_read(global.game_list, data); //저장한 리스트를 복원 } |
주의할 것은 데이터 구조체를 텍스트화하거나, 다시 복원할 때의 데이터 구조체 종류가 동일해야 합니다.
예를 들어 리스트를 텍스트화 했다면, 복원 할 때도 반드시 리스트로 복원해야 합니다.
'GameMaker강좌[GMS2] > GMS2기초강좌' 카테고리의 다른 글
[게임메이커 강좌-기초][GMS2] macro : 매크로 (0) | 2021.03.18 |
---|---|
[게임메이커 강좌-기초][GMS2] enum : 열거형 데이터 타입 (2) | 2021.03.16 |
[게임메이커 강좌-기초][GMS2] 게임 저장 : 맵 데이터 구조체로 암호화 저장 (0) | 2021.02.21 |
[게임메이커 강좌-기초][GMS2] 게임 저장 : ini 저장 (0) | 2021.02.20 |
[게임메이커 강좌-기초][GMS2] 게임 저장 : 기본 기능 (0) | 2021.02.20 |
댓글