EmueraBA
소개
EmueraBA 런처는 EmueraEE+EM 런처에서 수정되었으며, 현재 .NET Framework 4.8 플랫폼을 사용하여 구축되었습니다.
런처의 기본 제목이 EmueraBA로 변경되었으며, 런처의 기본 아이콘이 변경되었습니다.
그래픽 라이브러리가 SkiaSharp 로 교체되었습니다. 화면 표시와 이미지 그리기 관련 기능은 모두 SkiaSharp으로 전환되었으며, 描画インターフェース (그래픽 그리기 인터페이스) 구성 항목이 제거되었습니다.
지원되는 이미지 형식에 대한 정보는 GETRESOURCEEXT 의 사용 예 섹션을 참조하세요.
GIF, WEBP 애니메이션 이미지 읽기 및 재생을 지원합니다. 정적 이미지처럼 resources 리소스 파일에서 정의한 다음 ERB 스크립트에서 동일한 방식으로 인쇄 표시하기만 하면 됩니다.
SETANIMETIMER 명령을 사용하여 화면을 새로 고쳐 원활한 재생 효과를 얻을 수 있습니다.
자동 문자 범위 인식 기능이 구현되었습니다. 중국어, 일본어, 한국어, 영어, 이모지 문자를 정확하게 인식하고 길이를 계산할 수 있습니다. 内部で使用する東アジア言語 (내부에서 사용하는 동아시아 언어) 구성 항목이 제거되었습니다.
표시 설정 인터페이스에 새로운 タブ文字幅 (탭 문자 너비) 구성 항목이 추가되었습니다. 이 구성 항목은 텍스트 내 탭 문자(\t)의 문자 길이를 조정하며, 기본값은 8입니다.
탭 문자는 이전 텍스트의 문자 길이에 따라 자체 문자 길이를 자동으로 조정합니다. 예를 들어, 탭 문자 앞에 텍스트 111이 있으면 현재 탭 문자는 5개의 문자 길이를 차지합니다.
새로운 사용자 정의 변수 키워드 RESIZE 가 추가되었습니다. 이 키워드는 배열 크기를 재설정해야 하는 변수를 표시하는 데 사용됩니다. 이 키워드 사용에 대한 자세한 내용은 ARRAYRESIZE를 참조하세요.
스크린샷 기능을 지원합니다. 메뉴 모음의 도움말 → 스크린샷 버튼을 통해 현재 화면을 파일로 저장하거나, 새로 추가된 GSNAPSHOT 명령을 사용하여 현재 화면의 이미지 데이터를 얻을 수 있습니다.
resources 폴더는 글꼴 파일 읽기를 지원합니다. font 폴더와 같이 글꼴 파일을 직접 배치하기만 하면 됩니다.
RANDDATA 배열의 길이가 더 이상 제한되지 않으며, csv/VariableSize.CSV 파일에서 수정할 수 있습니다.
모드 기능
모드 읽기 메커니즘이 추가되었으며, 런처 메뉴 모음에 새로운 모드 목록 세션 창이 추가되어 여기에서 모드를 보고, 켜기/끄기, 모드 로딩 순서를 조정할 수 있습니다.

모드를 추가하는 방법은 다음과 같습니다:
- 게임 메인 디렉토리에 새로운
mod폴더를 생성합니다. 이 폴더는 모드 메인 디렉토리입니다. mod폴더 아래에 모드 폴더를 생성합니다. 폴더 이름은 제한되지 않습니다. 예를 들어MyMod입니다.MyMod폴더에_mod.csv라는 이름의 모드 식별 파일을 생성하고, 아래 표의 속성에 따라 내용을 채웁니다:
| 속성 | 설명 |
|---|---|
| ID | 이 모드의 고유 식별자. 이 식별자가 비어 있거나 다른 모드와 이름이 중복되는 경우 모드는 인식되지 않습니다. ID 이름이 함수 명명 규칙을 따르는지 확인하고, 생성 후 수정하는 것은 권장되지 않습니다. |
| Name | 이 모드의 표시 이름. |
| Authors | 이 모드의 작성자 이름. |
| Cover | 이 모드의 표시 커버. 모드 내 이미지를 읽으려면 모드 경로로 {0}을 채울 수 있습니다. 예를 들어 {0}resources/cover.png |
| Description | 이 모드의 표시 설명. 여러 줄로 계속할 수 있습니다. Description 속성은 다른 속성 뒤에 작성하세요. |
ID,MyMod
Name,내 모드 v1.0
Authors,Tom & Jerry
Cover,{0}resources/cover.png
Description,내 모드의 설명
내 모드의 설명1
내 모드의 설명2
다음으로, 모드 폴더에 다음 리소스 파일을 추가할 수 있습니다:
- 사전 설정 파일을 추가하기 위해
csv폴더 생성:.csvChara*.csvVarExt*.csv. - 스크립트 파일을 추가하기 위해
erb폴더 생성:.erb.erh.erd. - 다음 리 소스를 추가하기 위해
resources폴더 생성:- 이미지 리소스:
.csv.png.jpg등. 지원되는 이미지 형식에 대한 정보는GETRESOURCEEXT의사용 예섹션을 참조하세요. - 오디오 리소스:
.csv.ogg.m4a등. 지원되는 오디오 형식에 대한 정보는GETRESOURCEEXT의사용 예섹션을 참조하세요. - Spine 리소스:
.csv.atlas.skel.json. - 글꼴 리소스:
.ttf.otf. - 플러그인 리소스:
.csv.dll.
- 이미지 리소스:
- 다국어 리소스를 추가하기 위해
text폴더 생성:.json. - 글꼴 리소스를 추가하기 위해
font폴더 생성:.ttf.otf.
모드 내 파일은 게임 메인 디렉토리의 파일과 다르지 않으며, 파일 이름은 제한되지 않지만 모드 간 내용 중복 문제에 주의해야 합니다:
- 사전 설정 파일:
.csvChara*.csvVarExt*.csv- 내용이 중복되는 경우, 동일 모드 내에서는 첫 번째 내용이 선택되고 경고가 발생합니다. 다른 모드 간에는 뒤쪽 모드의 내용이 선택되고 경고가 발생합니다.
- 스크립트 파일:
.erb.erh.erd- 내용이 중복되는 경우, 동일 모드 내에서는 첫 번째 내용이 선택되고 경고가 발생합니다. 다른 모드 간에는 뒤쪽 모드의 내용이 선택 되고 경고가 발생합니다.
- 이미지 리소스, 오디오 리소스, Spine 리소스
- 리소스 이름이 중복되는 경우, 동일 모드 내에서는 첫 번째 내용이 선택되고 경고가 발생합니다. 다른 모드 간에는 뒤쪽 모드의 내용이 선택됩니다.
- 글꼴 리소스
- 글꼴 공식 이름이 중복되는 경우, 동일 모드 내에서는 첫 번째 내용이 선택됩니다. 다른 모드 간에는 뒤쪽 모드의 내용이 선택됩니다.
- 다국어 리소스
- 키 이름 경로가 완전히 동일한 경우, 동일 모드 내에서는 마지막 내용이 선택됩니다. 다른 모드 간에는 뒤쪽 모드의 내용이 선택됩니다.
- 플러그인 리소스
- 확장 메서드 이름이 중복되는 경우, 동일 모드 내에서는 첫 번째 내용이 선택되고 경고가 발생합니다. 다른 모드 간에는 뒤쪽 모드의 내용이 선택됩니다.
다국어 기능
다국어 기능은 제작자가 게임 내 텍스트를 정리하여 현지화 번역을 용이하게 하며, 게임 실행 시 런처 가 사용 가능하고 우선순위가 높은 언어 콘텐츠를 자동으로 통합하여 다국어 텍스트를 빠르게 표시할 수 있습니다.
다국어 텍스트를 추가하는 방법은 다음과 같습니다. 간체 중국어 언어를 추가하는 예를 들어 보겠습니다:
- 게임 메인 디렉토리에 새로운
text폴더를 생성합니다. 이 폴더는 다국어 메인 디렉토리입니다. text폴더 아래에 지역 언어 폴더를 생성합니다. 폴더 이름은로캘 언어문서의언어 태그(Language tag)를 참조해야 합니다.- 위 문서를 조회하면
Chinese (Simplified)의 지역 이름이zh-CN임을 알 수 있으며, 이것이 폴더 이름으로 사용됩니다. - 폴더 이름은 대소문자를 구분하지 않으며,
밑줄(_)과하이픈(-)도 구분하지 않지만, 대문자와밑줄(_)로 통일하는 것을 권장합니다. 예를 들어ZH_CN입니다.
- 위 문서를 조회하면
ZH_CN폴더에 임의의json형식 파일을 생성하고, 파일에 다음 예시 내용을 채웁니다:
{
// 이것은 주석입니다.
"键名": "内容",
"START_GAME": "开始游戏",
"ITEM": "物品",
"ITEM":
{
"APPLE":
{
"NAME": "苹果",
"DESC": "一种水果",
},
// 주의: 키 이름에 줄 바꿈 문자(\n)를 포함하지 마세요. 예를 들어 BA\nNANA 는 준수하지 않는 키 이름입니다. 이는 런처가 언어 콘텐츠를 통합할 때 이 문자를 이용하기 때문입니다.
"BANANA":
{
"NAME": "香蕉",
"DESC":
[
"大香蕉,一条大香蕉",
"你的感觉真的很奇妙",
],
},
},
}
이제 간체 중국어의 다국어 텍스트를 성공적으로 추가했습니다. 다음으로, 설정에서 이 언어를 활성화해야 합니다:
- 런처를 열고
모드 목록에 들어갑니다. 창의 왼쪽 하단에 있는다국어 목록에중국어옵션이 추가된 것을 볼 수 있습니다. 이 옵션을 더블 클릭하여 활성화하고저장버튼을 클릭합니다.- 여러 다른 언어를 추가한 경우, 마우스를 사용하여 활성화된 언어를 드래그하여 표시 순서를 조정할 수 있으며, 목록 상단이 가장 높은 우선순위를 가집니다.
- 또한,
모드 목록에서 모드 간에 키 이름 경로가 중복되는 경우, 뒤쪽 모드의 텍스트 콘텐츠가 우선적으로 채택됩니다. 다국어 목록을 변경할 때마다 프로그램을 재시작하여 언어 텍스트 캐시를 재설정하고, 상수 문자열로 리팩터링된 모든 코드를 재설정해야 합니다.
마지막으로, 코드에서 TEXT 및 TEXTLIST 명령을 사용하여 다국어 텍스트를 얻습니다. 호출할 때는 json 파일에서 자체적으로 설정한 키 이름 경로에 따라 키 이름을 입력하기만 하면 됩니다:
LOCALS '= TEXT("start_game") ; 텍스트 "开始游戏" 얻기, 입력 키 이름은 대소문자를 구분하지 않음
PRINTSL TEXT("ITEM") ; "物品" 출력
PRINTSL TEXT("ITEM", "APPLE", "DESC") ; "一种水果" 출력
TEXTLIST LOCALS, "ITEM", "APPLE", "DESC"
PRINTSL LOCALS:0 ; "一种水果" 출력
TEXTLIST LOCALS, "ITEM", "BANANA", "DESC"
PRINTSL LOCALS:0 ; "大香蕉,一条大香蕉" 출력
PRINTSL LOCALS:1 ; "你的感觉真的很奇妙" 출력
오디오 기능
오디오 컴포넌트가 CSCore 로 교체되었으며, 런처 메뉴 모음에 새로운 오디오 세션 창이 추가되어 여기에서 다양한 볼륨과 기능을 조정할 수 있습니다.
이미지 리소스와 유사하게, resources 폴더에 오디오 파일을 배치하고 csv 파일을 생성하여 오디오 리소스를 정의하여 더 많은 맞춤 오디오 효과를 지원할 수 있습니다.
; 오디오 이름,오디오 파일 이름,볼륨(100),시작 시간(00:00:00),재생 시간(오디오 파일의 총 시간)
MyMusic,MyMusic.ogg
MyMusic1,MyMusic1.m4a,100
MyMusic2,MyMusic2.wav,80,00:01:30
MyMusic3,MyMusic3.mp3,70,00:01:30,15000
csv 파일의 시작 시간 및 재생 시간 속성은 TimeSpan 또는 ms(밀리초) 값을 받아들입니다. TimeSpan의 작성 형식은 TimeSpan.TryParse 문서의 예시 섹션을 참조하세요.
오디오 기능에 대한 자세한 내용은 오디오 관련 명령을 참조하세요.
지원되는 오디오 형식에 대한 정보는 GETRESOURCEEXT 의 사용 예 섹션을 참조하세요.
Spine 애니메이션 기능
Spine 런타임 에 대한 지원이 추가되었으며, Spine 애니메이션 파일을 읽고 SkiaSharp 를 통해 화면을 렌더링 그릴 수 있습니다.
- 현재 다음 버전의 Spine 런타임을 지원합니다:
- 3.8.xx
- 4.2.xx
Spine 리소스를 추가하는 방법은 이미지 리소스 추가와 유사합니다. Spine 리소스 파일을 resources 폴더에 배치하고 csv 파일을 생성한 다음, csv 파일에 다음 내용을 채웁니다:
; Spine 리소스 이름,atlas 파일,skel 파일 또는 json 파일
aris_spine, aris.atlas, aris.skel
이후 코드에서 SPINECREATE, CBGSETSPINE 등과 같은 명령을 사용하여 Spine 애니메이션을 로드하고 화면에 표시할 수 있습니다.
; 애니메이션 새로 고침 간격을 밀리초 단위로 설정
SETANIMETIMER 1000 / 60
; 자체 지정 ID에 Spine 애니메이션 생성
SPINECREATE 0, "aris_spine"
; Spine 애니메이션의 스케일을 50%로 설정
SPINESETSCALE 0, 50
; Spine 애니메이션에 ANIM 설정
SPINESETANIM 0, 0, "IDLE_01", 1
SPINESETANIM 0, 1, "00", 1
; 지정된 Spine 애니메이션을 화면에 표시
CBGSETSPINE 0, 0, 0, 1
Spine 애니메이션 기능에 대한 자세한 내용은 SPINE 관련 명령을 참조하세요.
플러그인 기능
EmueraBA는 외부 동적 링크 라이브러리 파일(*.dll) 읽기를 지원하여, 런처 자체를 수정하지 않고 확장 메서드를 추가하고 게임 스크립트에서 호출할 수 있어 더 많은 기능 요구를 충족하고 실행 성능을 개선할 수 있습니다.
플러그인을 구축하는 프로세스는 다음과 같습니다:
- 먼저 EmueraBA 런처의 빌드 프로세스를 실행하여 EmueraBA 런처의 개발 환경 배치를 완료합니다.
- 클론된 EmueraBA 저장소에서
Emuera.sln솔루션을 찾아 열고, Visual Studio의 솔루션 탐색기에서PluginExample프로젝트를 찾아 프로젝트 내PluginEntry.cs파일을 엽니다. - 플러그인에는 공개 정적
PluginEntry클래스를 포함해야 하며, 이는 플러그인의 초기화 진입점입니다. PluginEntry클래스에서 다음 내용을 선언하여 런처에 새 기능을 추가합니다:- 확장 메서드를 추가하기 위해 공개 정적
void RegisterFunctionMethod(Dictionary<string, FunctionMethod> methodList)함수를 선언합니다.- 다음 파일을 참조하여
FunctionMethod를 상속하는 구현 클래스의 작성법을 대략적으로 이해하고,PluginEntry.cs파일에서 사용자 정의 확장 메서드를 작성할 수 있습니다:- Emuera\GameData\Function\Creator.cs
- Emuera\GameData\Function\Creator.Method.cs 시리즈 파일
- 다음 파일을 참조하여
- 확장 메서드를 추가하기 위해 공개 정적
- Visual Studio 인터페이스의 왼쪽 상단에서 솔 루션 구성을 찾습니다. 구성이
Debug인 경우Release로 전환합니다. PluginExample프로젝트를 마우스 오른쪽 버튼으로 클릭하고속성을 선택한 후,응용 프로그램메뉴 페이지에서어셈블리 이름과어셈블리 정보…의 기본 이름을 귀하의 플러그인 이름으로 변경합니다.PluginExample프로젝트를 마우스 오른쪽 버튼으로 클릭하고다시 빌드를 선택합니다. 생성된 DLL 파일은PluginExample\bin\Release폴더에서 찾을 수 있습니다.
플러그인을 게임 본체에 추가하는 프로세스는 다음과 같습니다:
이미지 리소스를 추가하는 방법과 유사하게, 생성된 DLL 파일을 resources 폴더에 배치하고 csv 파일을 생성한 다음, csv 파일에 다음 내용을 채우기만 하면 됩니다.
csv 파일에서는 PluginEntry 클래스를 포함하는 DLL 파일만 채우고, 다른 동반 DLL 파일은 채울 필요가 없습니다.
; DLL 파일 이름
MyPlugin.dll
MyOtherPlugin.dll
새로운 확장 변수 유형
리스트
리스트의 선언 형식은 #LIST(S) <변수 이름> 입니다.
이 변수를 선언할 때 GLOBAL, SAVEDATA, CHARADATA, DYNAMIC, REF 키워드와의 동시 정의를 지원합니다.
SAVEDATA 키워드와 정의할 때는 バイナリデータライターのバージョン (바이너리 아카이브 작성기 버전) 구성 항목을 1809 이상으로 변경해야 합니다.
자세한 기능은 리스트 관련 명령을 참조하세요.
#LIST MY_LIST ; 값 유형이 `정수`, 이름이 `MY_LIST` 인 리스트 변수 선언
LISTADD MY_LIST, 10 ; MY_LIST 에 값 10의 요소 추가
PRINTVL MY_LIST:0 ; MY_LIST 의 0번째 요소 출력, 출력 결과는 "10"
해시 리스트
해시 리스트의 선언 형식은 #HASHLIST(S) <변수 이름> 입니다.
이 변수를 선언할 때 GLOBAL, SAVEDATA, CHARADATA, DYNAMIC, REF 키워드와의 동시 정의를 지원합니다.
SAVEDATA 키워드와 정의할 때는 バイナリデータライターのバージョン (바이너리 아카이브 작성기 버전) 구성 항목을 1809 이상으로 변경해야 합니다.
자세한 기능은 해시 리스트 관련 명령을 참조하세요.
#HASHLISTS MY_HASHLIST ; 값 유형이 `문자열`, 이름이 `MY_HASHLIST` 인 해시 리스트 변수 선언
HASHLISTADD MY_HASHLIST, "TEXT" ; MY_HASHLIST 에 값 "TEXT"의 요소 추가
PRINTVL HASHLISTHAS(MY_HASHLIST, "TEXT"); MY_HASHLIST 의 값 "TEXT"에 대한 검색 결과 출력, 출력 결과는 "1"
딕셔너리
딕셔너리의 선언 형식은 #DICT_<I|S><I|S> <변수 이름> 입니다.
선언된 키 유형이 정수인 경우 ERD 키워드 기능 사용을 지원합니다.
이 변수를 선언할 때 CONST, GLOBAL, SAVEDATA, CHARADATA, DYNAMIC, REF, HARDCHECK 키워드와의 동시 정의를 지원합니다.
SAVEDATA 키워드와 정의할 때는 バイナリデータライターのバージョン (바이너리 아카이브 작성기 버전) 구성 항목을 1809 이상으로 변경해야 합니다.
자세한 기능은 딕셔너리 관련 명령을 참조하세요.
#DICT_IS MY_DICT ; 키 유형이 `정수`, 값 유형이 `문자열`, 이름이 `MY_DICT` 인 딕셔너리 변수 선언
MY_DICT:6 '= "TEXT" ; MY_DICT 에 키 6, 값 "TEXT"의 요소 작성
PRINTSL MY_DICT:6 ; MY_DICT 의 키 6 값 출력, 출력 결과는 "TEXT"
배열형 딕셔너리
배열형 딕셔너리의 선언 형식은 #DICT(S)_DIM(S) <변수 이름>(, 배열 길이 = 1) 입니다.
선언된 기본 키 유형이 정수인 경우 ERD 키워드 기능 사용을 지원합니다.
변수의 두 번째 차원 배열 첨자는 기본적으로 ERD 키워드 기능 사용을 지원합니다.
이 변수를 선언할 때 GLOBAL, SAVEDATA, CHARADATA, DYNAMIC, REF, HARDCHECK 키워드와의 동시 정의를 지원합니다.
SAVEDATA 키워드와 정의할 때는 バイナリデータライターのバージョン (바이너리 아카이브 작성기 버전) 구성 항목을 1809 이상으로 변경해야 합니다.
자세한 기능은 딕셔너리 컬렉션 관련 명령을 참조하세요.
#DICTS_DIM MY_DICTDIM, 10 ; 기본 키 유형이 `문자열`, 값 유형이 `정수`, 이름이 `MY_DICTDIM` 인 배열형 딕셔너리 변수 선언, 생성된 각 배열의 길이는 `10`
DICTITEMCREATE MY_DICTDIM, "NEW" ; MY_DICTDIM 에 이름 "NEW"의 배열 생성
MY_DICTDIM:"NEW":0 = 20 ; MY_DICTDIM 의 "NEW" 배열 0번째 요소에 값 20 할당
PRINTVL MY_DICTDIM:"NEW":0 ; MY_DICTDIM 의 "NEW" 배열 0번째 요소 출력, 출력 결과는 "20"
리스트형 딕셔너리
리스트형 딕셔너리의 선언 형식은 #DICT(S)_LIST(S) <변수 이름> 입니다.
선언된 기본 키 유형이 정수인 경우 ERD 키워드 기능 사용을 지원합니다.
이 변수를 선언할 때 GLOBAL, SAVEDATA, CHARADATA, DYNAMIC, REF, HARDCHECK 키워드와의 동시 정의를 지원합니다.
SAVEDATA 키워드와 정의할 때는 バイナリデータライターのバージョン (바이너리 아카이브 작성기 버전) 구성 항목을 1809 이상으로 변경해야 합니다.
자세한 기능은 리스트 관련 및 딕셔너리 컬렉션 관련 명령을 참조하세요.
#DICTS_LIST MY_DICTLIST ; 기본 키 유형이 `문자열`, 값 유형이 `정수`, 이름이 `MY_DICTLIST` 인 리스트형 딕셔너리 변수 선언
DICTITEMCREATE MY_DICTLIST, "NEW" ; MY_DICTLIST 에 이름 "NEW"의 리스트 생성
LISTADD MY_DICTLIST:"NEW", 20 ; MY_DICTLIST 의 "NEW" 리스트에 값 20의 요소 추가
PRINTVL MY_DICTLIST:"NEW":0 ; MY_DICTLIST 의 "NEW" 리스트 0번째 요소 출력, 출 력 결과는 "20"
해시 리스트형 딕셔너리
해시 리스트형 딕셔너리의 선언 형식은 #DICT(S)_HASHLIST(S) <변수 이름> 입니다.
선언된 기본 키 유형이 정수인 경우 ERD 키워드 기능 사용을 지원합니다.
이 변수를 선언할 때 GLOBAL, SAVEDATA, CHARADATA, DYNAMIC, REF, HARDCHECK 키워드와의 동시 정의를 지원합니다.
SAVEDATA 키워드와 정의할 때는 バイナリデータライターのバージョン (바이너리 아카이브 작성기 버전) 구성 항목을 1809 이상으로 변경해야 합니다.
자세한 기능은 해시 리스트 관련 및 딕셔너리 컬렉션 관련 명령을 참조하세요.
#DICTS_HASHLIST MY_DICTHASHLIST ; 기본 키 유형이 `문자열`, 값 유형이 `정 수`, 이름이 `MY_DICTHASHLIST` 인 해시 리스트형 딕셔너리 변수 선언
DICTITEMCREATE MY_DICTHASHLIST, "NEW" ; MY_DICTHASHLIST 에 이름 "NEW"의 해시 리스트 생성
HASHLISTADD MY_DICTHASHLIST:"NEW", 20 ; MY_DICTHASHLIST 의 "NEW" 해시 리스트에 값 20의 요소 추가
PRINTVL HASHLISTHAS(MY_DICTHASHLIST:"NEW", 20) ; MY_DICTHASHLIST 의 "NEW" 해시 리스트 값 20에 대한 검색 결과 출력, 출력 결과는 "1"
딕셔너리형 딕셔너리
딕셔너리형 딕셔너리의 선언 형식은 #DICT(S)_DICT_<I|S><I|S> <변수 이름> 입니다.
선언된 기본 키 유형이 정수인 경우 ERD 키워드 기능 사용을 지원합니다.
선언된 보조 키 유형이 정수인 경우 ERD 키워드 기능 사용을 지원합니다.
이 변수를 선언할 때 GLOBAL, SAVEDATA, CHARADATA, DYNAMIC, REF, HARDCHECK 키워드와의 동시 정의를 지원합니다.
SAVEDATA 키워드와 정의할 때는 バイナリデータライタ ーのバージョン (바이너리 아카이브 작성기 버전) 구성 항목을 1809 이상으로 변경해야 합니다.
자세한 기능은 딕셔너리 관련 및 딕셔너리 컬렉션 관련 명령을 참조하세요.
#DICTS_DICT_IS MY_DICTDICT ; 기본 키 유형이 `문자열`, 보조 키 유형이 `정수`, 값 유형이 `문자열`, 이름이 `MY_DICTDICT` 인 딕셔너리형 딕셔너리 변수 선언
DICTITEMCREATE MY_DICTDICT, "NEW" ; MY_DICTDICT 에 이름 "NEW"의 딕셔너리 생성
MY_DICTDICT:"NEW":8 '= "TEXT" ; MY_DICTDICT 의 "NEW" 딕셔너리에 키 8, 값 "TEXT"의 요소 작성
PRINTSL MY_DICTDICT:"NEW":8 ; MY_DICTDICT 의 "NEW" 딕셔너리 키 8 요소 출력, 출력 결과는 "TEXT"
문법, 명령 및 프로그램 호환성 변경
함수형 매크로 정의 관련 기능의 제한이 해제되었습니다. 이 기능의 신뢰성은 완전히 테스트되지 않았습니다.
ERD 키워드 기능 관련 변경:
- 키워드 인덱스 값을 생략하면 시스템이 해당 키워드에 사용되지 않은 인덱스 값을 자동으로 할당합니다.
경고:SAVEDATA로 선언된 변수는 게임 저장 데이터 오류를 피하기 위해 인덱스 값 생략을 권장하지 않습니다. - 기존 키워드 이름을 인덱스 값으로 채우면 해당 키워드의 인덱스 값을 직접 참조합니다.
1,能量饮料 ; "能量饮料" 의 인덱스 값은 1로 할당됨
,酒 ; "酒" 의 인덱스 값은 자동으로 0으로 할당됨 (인덱스 값 0이 점유되지 않았으므로)
酒,Wine ; "Wine" 의 인덱스 값은 "酒" 에서 참조되며, 즉 0
果汁,ジュース ; "ジュース" 의 인덱스 값은 후속 "果汁" 에서 참조되며, 즉 2
,果汁 ; "果汁" 의 인덱스 값은 자동으로 2로 할당됨 (인덱스 값 0과 1이 이미 점유되었으므로)
FORM 문법 관련 변경:
- 보간 변수를 사용할 때 변수 유형에 따라 중괄호(
{STR})와 백분율 기호(%STR%)를 구분할 필요가 없어졌습니다. - 새로운 정렬 키워드
CENTER가 추가되었습니다. 지정된 문자 길이 내에서 텍스트를 가운데 정렬할 수 있습니다. 예를 들어{"确认", 6, CENTER}는" 确认 "로 포맷됩니다. - 정렬 매개변수로 수치 표현식을 전달할 수 있습니다. 예를 들어
{"确认", 6, 1 + 1}는" 确认 "로 포맷됩니다.
구체적인 수치 및 의미는 다음과 같습니다:- 0 = 왼쪽 정렬,
LEFT키워드와 동등. - 1 = 오른쪽 정렬,
RIGHT키워드와 동등. - 2 = 가운데 정렬,
CENTER키워드와 동등.
- 0 = 왼쪽 정렬,
HTML 문법 관련 변경:
div태그의bcolor속성은bdcolor(borderColor)로 이름이 변경되었으며, 다른 태그의bcolor(backgroundColor) 속성과의 혼동을 피합니다.div태그의bdcolor속성의 입력 값 형식은'color'단일 색상 값으로 변경되었으며, 네 모서리 색상 값을 더 이상 받아들이지 않습니다.div태그의border속성의 입력 값 형식은'thick'단일 수치로 변경되었으며, 네 모서리 수치를 더 이상 받아들이지 않습니다.div태그의margin속성의 효과는 바깥쪽으로 확장되도록 변경되었으며, 안쪽으로 압축하지 않습니다.
캐릭터형 2차원 배열은 첫 번째 매개변수 생략을 지원합니다(キャラクタ変数の引数を補完しない (캐릭터 변수 매개변수 자동 완성 안 함) 구성 항목이 활성화되지 않은 경우).
FOR-NEXT 및 REPEAT-REND 제어문의 임시 캐시는 함수와 함께 스택에 들어가고 나옵니다.
__FILE__ 변수로 얻은 파일 경로의 백슬래시 \\는 슬래시 /로 대체되었습니다.
REPLACE 명령의 매개변수 형식 중 하나가 독립 명령 REPLACEBYARRAY로 분리되었습니다.
다음 명령은 이모지 문자 🎉 처리를 지원하도록 되었습니다. 이 명령들은 이모지 문자를 처리할 때 표시 너비를 계산하여 대략적인 문자 길이를 얻습니다.
예를 들어, 😀 의 문자 길이는 2, 👨👩👧👦 의 문자 길이는 4입니다.
SUBSTRING 명령의 경계 문자 처리 로직이 변경되었습니다. 텍스트의 선택 위치가 긴 문자 중간에 있으면 해당 문자 시작 위치로 후퇴합니다.
즉, 시작 위치에 걸린 문자는 포함되고, 끝 위치에 걸린 문자는 무시됩니다.
ERDNAME 가 세 번째 매개변수를 생략하면 배열의 마지막 차원 첨자 키워드를 검색합니다.
INPUTMOUSEKEY 명령은 추가적으로 RESULTS:0 및 RESULT:3 값을 변경합니다.
GCREATE, GCREATEFROMFILE, GLOAD 명령은 새 이미지를 생성하기 전에 이미 생성된 이미지를 해제합니다. 즉, 생성 전에 GDISPOSE 명령을 호출할 필요가 없습니다.
GCREATEFROMFILE 명령의 두 번째 매개변수는 메인 디렉토리부터의 상대 경로임을 확인해야 하며, 세 번째 매개변수는 제거되었습니다.
GDASHSTYLE 명령의 선 캡 효과가 변경되었습니다.
GDRAWTEXT 명령은 RESULT:0 만 반환합니다. 다른 반환 값은 더 이상 유효하지 않습니다.
GDRAWGWITHMASK 의 그리기 결과는 알파 값과 파란색 값의 영향을 받습니다.
그래픽 라이브러리 교체로 인해 GDRAWG 및 GDRAWSPRITE 명령의 색상 행렬 사용 방법이 변경되었습니다. 자세한 내용은 GSETCOLORMATRIX 명령의 설명을 참조하세요.
SETANIMETIMER 명령은 TINPUT 또는 INPUTMOUSEKEY 와 같은 시간 대기 중에도 애니메이션을 계속 새로 고칩니다.
SPRITECREATE 및 SPRITEANIMECREATE 명령은 새 Sprite를 생성하기 전에 이미 생성된 비 내장 Sprite를 해제합니다. 즉, 생성 전에 SPRITEDISPOSE 명령을 호출할 필요가 없습니다. 동일한 이름의 내장 Sprite가 이미 존재하면 생성이 실패합니다.
SPRITEDISPOSEALL 명령은 내장 Sprite를 제거하는 기능이 더 이상 없지만, 내장 Sprite가 참조하는 모든 이미지를 해제할 수 있습니다.
PLAYBGM 및 PLAYSOUND 명령의 첫 번째 매개변수는 오디오 이름 입력만 지원합니다. 오디오 파일 경로로 재생하려면 먼저 AUDIOCREATEFROMFILE 명령을 사용하여 오디오를 생성하세요.
내장 오디오 리소스를 추가하는 방법은 오디오 기능 섹션을 참조하세요.
SETBGMVOLUME 명령은 현재 재생 중인 배경 음악의 볼륨만 변경하며, 전역 볼륨에는 더 이상 영향을 미치지 않습니다.
SETSOUNDVOLUME 명령은 더 이상 사용되지 않으며 효과가 없습니다.
ENUMFILES 명령으로 얻은 파일 경로의 백슬래시 \\는 슬래시 /로 대체되었습니다.
메뉴 모음의 タイトルに戻る 버튼으로 타이틀 화면으로 돌아가면 다음 내용이 추가적으로 지워집니다:
- 모든 CBG 이미지 지우기, CBGBUTTON, CBGBMAP 등을 포함하며,
CBGCLEAR명령과 동일한 효과. - 런타임에 생성된 모든 Sprite 지우기, Sprite가 참조하는 모든 이미지 해제,
SPRITEDISPOSEALL명령과 동일한 효과. - 런타임에 생성된 모든 Spine 애니메이션 지우기, Spine 애니메이션이 참조하는 모든 이미지 해제,
SPINEDISPOSEALL명령과 동일한 효과. - 런타임에 생성된 모든 오디오 지우기 및 오디오 캐시 해제,
AUDIODISPOSEALL명령과 동일한 효과.
emuera.log 게임 로그와 console.log 디버그 로그는 UTF-8-BOM 인코딩으로 저장됩니다.
watchlist.csv 변수 감시 목록은 UTF-8-BOM 인코딩으로 저장 및 읽습니다.
디버그 창을 닫아도 변수 감시 목록이 자동으로 저장되지 않습니다.