Skip to content

Releases: goldfrosch/MagicScript

v1.2.0

Choose a tag to compare

@goldfrosch goldfrosch released this 30 Dec 15:22
140dcd2

MagicScript v1.1.0 릴리즈 노트

주요 기능

  • 스크립트에 순수 C++ 포인터 정보 담을 수 있도록 처리

v1.1.0

Choose a tag to compare

@goldfrosch goldfrosch released this 27 Dec 02:42

MagicScript v1.1.0 릴리즈 노트

주요 기능

  • 특정 클래스, 구조체에 모듈 정의 없는 문제를 수정
  • Context에 인터프리터 주소 값을 넣어 해당 실행 context가 어디 인터프리터가 기준이 되는지를 파악할 수 있도록 처리

v1.0.0

Choose a tag to compare

@goldfrosch goldfrosch released this 26 Dec 02:50

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 델리게이트로 로그 수신