GML 프래그마(gml_pragma) 설명서

GML 프래그마(gml_pragma) 함수는 주어진 타겟이 코드를 컴파일하는 방식에 영향을 미치며, 프로젝트의 최종 컴파일을 최적화하기 위해 다양한 명령어와 함께 호출되어야 합니다. 이 명령어들은 게임이 컴파일되기 전에 사전 처리되므로, 프로젝트의 어느 곳에나 배치할 수 있으며 게임이 완전히 컴파일되기 전에 처리됩니다.

사용 가능한 명령어

명령어 설명
forceinline 함수나 메서드에 forceinline 프래그마가 포함되면, YYC는 C++ 컴파일러에 해당 함수를 인라인으로 컴파일하도록 요청합니다. 이 요청은 보장되지 않으며, 결과는 C++ 컴파일러에 따라 다릅니다.
global, [gml code] global 프래그마는 컴파일 시간에 전역 범위에서 문자열 형식의 GML 코드를 호출할 수 있게 합니다. 예: gml_pragma("global", "Init()");
optimise/optimize, <specific_optimisation>, <control> optimise 프래그마는 컴파일러에 최적화 힌트를 제공합니다. 예: gml_pragma("optimise", "js_array_check", "push, off");
PNGCrush PNGCrush 프래그마는 생성된 각 텍스처에 PNGCrush 프로그램을 사용합니다.
Texgroup.Scale, [TextureGroupName], [Scale Divisor] Texgroup.Scale은 컴파일 시 주어진 텍스처 그룹을 스케일링합니다. 예: gml_pragma("Texgroup.Scale", "level1", "2");
UnityBuild, [enable/disable] 이 프래그마를 호출하고 인수를 true로 설정하면 모든 .cpp 파일을 하나의 파일로 압축하여 빌드합니다. 예: gml_pragma("UnityBuild", "true");
AllowReentrantStatic 이 프래그마는 정적 초기화를 이전의 재진입 초기화 동작으로 되돌립니다. 예: gml_pragma("AllowReentrantStatic", true);

컴파일러 최적화

컴파일러 최적화는 optimise 프래그마를 통해 제공됩니다. 기본 구문은 다음과 같습니다:

gml_pragma("optimise", "<specific_optimisation>", "<control>");
  • <specific_optimisation>: 수정할 특정 최적화에 대한 문자열입니다.
  • <control>: 최적화를 제어하는 명령어의 쉼표로 구분된 목록을 포함하는 문자열입니다.

최적화 목록

최적화 설명
js_array_check ON이면 배열 변수가 배열인지 확인하는 체크를 포함합니다. OFF이면 체크가 생략됩니다.
js_error_check ON이면 생성된 JavaScript 코드에 오류 처리를 위한 체크를 포함합니다.
js_check_index ON이면 배열 접근 시 인덱스 체크를 포함하여 범위 오류를 잡습니다.
js_pre_post_no_long ON이면 ++-- 연산자가 int64 타입의 값에 대해 체크되지 않습니다.
js_use_infix_ops ON이면 JavaScript의 이항 연산자를 사용합니다.

활용 예제

  1. 기본 배열 최적화 gml function multiples_of_two() { gml_pragma("optimise", "js_array_check", "push, off"); var a = []; for (var i = 0; i < 100; i++) { a[i] = i * 2; } gml_pragma("optimise", "js_array_check", "pop"); }
  2. 오류 체크 비활성화 gml function process_data() { gml_pragma("optimise", "js_error_check", "push, off"); // 데이터 처리 로직 gml_pragma("optimise", "js_error_check", "pop"); }
  3. 인덱스 체크 비활성화 gml function access_array() { gml_pragma("optimise", "js_check_index", "push, off"); var myArray = [1, 2, 3]; var value = myArray[2]; // 인덱스 체크 생략 gml_pragma("optimise", "js_check_index", "pop"); }

이 문서는 GML 프래그마와 컴파일러 최적화에 대한 기본적인 이해를 돕기 위한 자료입니다.

Read more

기술 문서 해설 및 활용 예제

이 문서는 특정 기술에 대한 설명과 활용 방법을 다룹니다. 아래에서 내용을 쉽게 이해할 수 있도록 해설하고, 다양한 활용 및 응용 예제를 추가로 제공합니다. 기술 개요 이 기술은 게임 개발에서 자주 사용되는 기능으로, 특정 작업을 자동화하거나 효율적으로 처리하는 데 도움을 줍니다. 주로 게임의 로직을 구성하거나 사용자 인터페이스를 제어하는 데 사용됩니다. 주요

By 이재협/실장/시스템개발실/PHYSIA

키워드 설명서

이 문서는 특정 키워드에 대한 설명과 사용법을 제공합니다. 문법 (arguments); 인수 인수 이름 유형 설명 argument_name 인수에 대한 설명을 여기에 작성합니다. 반환값 (선택적 설명) 예제 code_example() { // 여기에 코드 예제를 설명합니다. } 코드 예제 설명 위의 코드 예제는 특정 기능을 수행하는 함수의 기본 구조를 보여줍니다. 이 함수는 인수를 받아들이고, 특정

By 이재협/실장/시스템개발실/PHYSIA

GameMaker 환경 설정 및 기능

이 문서에서는 GameMaker의 환경 설정 및 다양한 IDE 기능에 대한 정보를 제공합니다. 다음은 주요 항목들입니다: IDE 환경 설정 IDE(통합 개발 환경) 설정은 GameMaker의 전반적인 사용 경험을 조정하는 데 도움을 줍니다. 여기서 사용자는 개인의 필요에 맞게 다양한 옵션을 설정할 수 있습니다. 주요 설정 항목 설정 항목 설명 테마 IDE의 색상

By 이재협/실장/시스템개발실/PHYSIA

GameMaker IDE 설명서

GameMaker IDE는 게임을 만들고 소프트웨어에서 제공하는 모든 기능을 활용하는 주요 인터페이스입니다. 이 프로그램은 시작 화면부터 게임을 만들기 위해 사용하는 모든 편집기 창까지 포함되며, 매뉴얼과 다양한 튜토리얼에서 IDE라고 언급됩니다. IDE의 구성 요소 다음 섹션에서는 IDE에 대한 정보를 다룹니다: 1. 설정 및 기능 IDE의 설정 및 기능은 사용자가 게임 개발을 보다 효율적으로

By 이재협/실장/시스템개발실/PHYSIA