Releases: goldfrosch/MagicScript
Releases · goldfrosch/MagicScript
Release list
v1.2.0
v1.1.0
MagicScript v1.1.0 릴리즈 노트
주요 기능
- 특정 클래스, 구조체에 모듈 정의 없는 문제를 수정
- Context에 인터프리터 주소 값을 넣어 해당 실행 context가 어디 인터프리터가 기준이 되는지를 파악할 수 있도록 처리
v1.0.0
MagicScript v1.0 릴리즈 노트
주요 기능
- 커스텀 스크립팅 언어: JavaScript와 유사한 문법의 DSL
- 완전한 컴파일러 파이프라인: 렉서 → 파서 → AST → 인터프리터
- 런타임 실행 환경: AST 기반 인터프리터, 재귀 호출 깊이 제한(64), while 루프 반복 제한(128)
- 비동기 지원: EventLoop 기반 setTimeout 비동기 작업 처리
- 복잡도 분석: 정적/동적 시간·공간 복잡도 분석 및 캐싱
- 네이티브 함수 통합: C++로 작성된 빌트인 함수 확장 가능
빌트인 함수
- Console: console.log(), console.warn(), console.error()
- Array: Array.push_back(), Array.push_front(), Array.pop_back(), Array.pop_front(), Array.length()
- Math: math.pow()
- Global: SetGlobalFloat()
Unreal Engine 통합
- GameInstanceSubsystem: UMagicScriptInterpreterSubsystem으로 스크립트 실행 관리
- 스크립트 캐싱: 소스 코드, 파싱된 프로그램, 인터프리터 결과 캐싱
- 로깅 시스템: 스크립트 실행 중 로그 수집 및 델리게이트 지원
- 이벤트 루프 자동 업데이트: 서브시스템에서 자동 Tick 처리
기술 사양
- 지원 타입: Null, Number, String, Bool, Function, Array, Object
- 제어문: If, While, For, Switch
- 함수: 네이티브/스크립트 함수 지원, 재귀 호출 가능
- 스코프 관리: 렉시컬 스코프 기반 환경 관리
- 메모리 추적: 실행 중 최대 메모리 사용량 추적
사용법
- 스크립트 파일은 Content/Scripts/ 폴더에 .ms 확장자로 저장
- C++에서 UMagicScriptInterpreterSubsystem::Get()으로 서브시스템 접근
- RunScriptFile() 메서드로 스크립트 실행
- OnScriptLogAdded 델리게이트로 로그 수신