운영체제 및 컴파일러
게임을 크로스 플랫폼으로 개발할 때, 게임이 실행되는 장치의 운영체제에 대한 세부 정보를 아는 것이 매우 중요합니다. 언어, 버전, 네트워크 상태와 같은 정보는 게임을 해당 시스템에 맞게 조정하고 최종 사용자 경험을 향상시키는 데 사용될 수 있습니다. GameMaker는 이러한 정보를 얻기 위해 사용할 수 있는 여러 특별한 기능을 제공합니다.
운영체제 및 브라우저 정보
다음 함수와 변수를 사용하여 게임이 실행되는 운영체제나 브라우저에 대한 특정 세부 정보를 얻을 수 있습니다:
함수/변수 이름 | 설명 |
---|---|
os_browser | 현재 브라우저 정보 |
os_device | 현재 장치 정보 |
os_type | 운영체제 유형 |
os_version | 운영체제 버전 |
os_is_paused | 게임이 일시 정지 상태인지 여부 |
os_is_network_connected | 네트워크 연결 상태 |
os_get_config | 운영체제 구성 정보 |
os_get_language | 현재 언어 정보 |
os_get_region | 현재 지역 정보 |
os_get_info | 운영체제 정보 |
os_powersave_enable | 전원 절약 모드 활성화 |
os_lock_orientation | 화면 방향 잠금 |
os_set_orientation_lock | 화면 방향 잠금 설정 |
os_check_permission | 권한 확인 |
os_request_permission | 권한 요청 |
사전 컴파일된 함수 및 상수
게임을 실행할 때 사전 컴파일된 함수와 상수가 있으며, 이는 최종 게임이 어떻게 컴파일될지를 정의하는 데 사용됩니다. 다음은 이러한 함수 및 상수의 전체 목록입니다:
함수/상수 이름 | 설명 |
---|---|
GM_build_date | 빌드 날짜 |
GM_build_type | 빌드 유형 |
GM_version | GameMaker 버전 |
GM_runtime_version | 런타임 버전 |
GM_project_filename | 프로젝트 파일 이름 |
GM_is_sandboxed | 샌드박스 모드 여부 |
gml_release_mode | 릴리스 모드 |
gml_pragmaparameter_count | 매개변수 수 |
parameter_string | 매개변수 문자열 |
environment_get_variable | 환경 변수 가져오기 |
스케줄러
Windows에서 게임이 실행될 때 Windows 스레드 스케줄러의 해상도는 기본적으로 1ms로 설정됩니다. 런타임에서 Windows 스레드 스케줄러의 해상도를 검색하고 변경하는 데 사용할 수 있는 함수는 다음과 같습니다:
함수 이름 | 설명 |
---|---|
scheduler_resolution_get | 스케줄러 해상도 가져오기 |
scheduler_resolution_set | 스케줄러 해상도 설정 |
클립보드
일부 타겟에서는 클립보드에 접근하여 정보를 가져오고 설정할 수 있습니다. GameMaker는 다음과 같은 함수를 제공합니다:
함수 이름 | 설명 |
---|---|
clipboard_has_text | 클립보드에 텍스트가 있는지 확인 |
clipboard_get_text | 클립보드에서 텍스트 가져오기 |
clipboard_set_text | 클립보드에 텍스트 설정하기 |
확장
확장 작업을 할 때 런타임에서 외부 함수를 정의하고 호출해야 할 수 있습니다. 다음 함수를 사용할 수 있습니다:
함수 이름 | 설명 |
---|---|
external_define | 외부 함수 정의 |
external_call | 외부 함수 호출 |
external_free | 외부 함수 메모리 해제 |
활용 예제
다음은 위에서 설명한 기능들을 활용한 코드 예제입니다:
// 현재 운영체제 정보 출력
var os_info = os_get_info();
show_message("운영체제 정보: " + os_info);
// 네트워크 연결 상태 확인
if (os_is_network_connected()) {
show_message("네트워크에 연결되어 있습니다.");
} else {
show_message("네트워크에 연결되어 있지 않습니다.");
}
// 클립보드에 텍스트 설정
clipboard_set_text("Hello, GameMaker!");
// 스케줄러 해상도 변경
scheduler_resolution_set(2); // 해상도를 2ms로 설정
// 현재 언어 가져오기
var current_language = os_get_language();
show_message("현재 언어: " + current_language);
// 화면 방향 잠금
os_lock_orientation(true); // 방향 잠금 활성화
// 권한 요청
os_request_permission("camera", function(success) {
if (success) {
show_message("카메라 권한이 허용되었습니다.");
} else {
show_message("카메라 권한이 거부되었습니다.");
}
});