본문 바로가기

코딩(Roblox Studio Luau)/제작일지

로블록스 스튜디오 Luau 컴파일러 리버싱

2024년 5월 23일부터 프로젝트를 시작했다. 바로 '로블록스 스튜디오 Luau 컴파일러 리버스 엔지니어링(Roblox Studio Luau Compiler Reverse Engineering, 줄여서 RSLCRE)'이다. 그렇게 나는 4개의 프로젝트(the MISSION, Mini Contry, 공항, RSLCRE)를 동시에 진행하는 중이다. 

 

이 RSLCRE는 말 그대로 로블록스 채팅에 '/consol' 이라고 치면 나오는 콘솔과 유사한 장치를 만드는 것이다. 이게 리버싱인 이유는, 내가 만드는 게 이 콘솔과 동일한데 이 콘솔 스크립트를 뜯기가 무서워서 TextBox, TextLable, UserInputService, RemoteEvent, BindableEvent, 기타 여러 이벤트 등등을 사용해 '결과물만 비슷한' 것을 만드려 하기 때문이다. 근데 로블록스 콘솔도 UI인데 game.Players.LocalPlayer.PlayerGui에 있을텐데, 그냥 그거를 복제해서 쓰면 안되나?

 

ui는 윈도우 터미널을 참고해 검은 바탕에 흰색 Mono체 글씨로 디자인했다. 맨 밑에 있는 입력 창에 텍스트를 입력한 뒤 엔터나 입력 버튼을 누르면 로컬 스크립트에서 입력과 텍스트를 감지한 뒤, 로컬 스크립트나 스크립트에서 처리하고, 출력 레이블에 출력하거나 Workspace 등에 위치시킨다. 

 

입력 명령어는 print(), Instance.new(), :Destroy() 3개를 1차 목표로 하고 있다. 문제는 점 연산자(.)를 사용한 로블록스의 오브젝트 계층 감지를 어떻게 해야 할 지 모르겠다는 것. 대충 떠오르는 방법 첫번째는 그냥 플레이어가 입력한 계층 문자열을 그대로 사용하는 것이다. 근데 이렇게 하면 "game.Workspace.Part"를 game에 있는 Workspace에 있는 Part라고 인식하지 못하는 것 같기도.

대충 떠오르는 방법 두번째는 for 루프로 점(.)을 찾은 뒤 점 바로 뒤에 있던 점이나 처음까지의 오브젝트를 찾는 것이다. 그런데 이 코드를 어떻게 입력해야 할지 모르겠고, 어시스던트(로블록스 스튜디오의 똑똑한  AI 선생님)에게 질문하자니 질문을 뭐라고 써야 할지 모르겠다. 

'코딩(Roblox Studio Luau) > 제작일지' 카테고리의 다른 글

내가 자주 하는 실수.zip  (0) 2024.05.10