OasisW매뉴얼 English
섹션 9. 스크립팅 방법 작성 대기 1

디버깅

스크립트가 생각대로 동작하지 않을 때 원인을 찾는 방법을 설명합니다. OasisW에서는 게임이 새 탭에서 실행되므로, 기록과 오류는 대부분 게임 탭의 브라우저 개발자 도구에서 봅니다.

이 페이지의 실측은 2026-10-29 oasisw.ai 에디터(판 표시 OasisW 7e2aa65, macOS Chrome)에서 한 것입니다.

기록이 나오는 곳

자리나오는 것
게임 탭의 브라우저 Console스크립트의 console.log, 스크립트 오류. 줄 끝에 스크립트 파일과 줄 번호가 붙습니다
에디터 아래 CONSOLE에디터의 알림(저장 실패, 연결 등). 스크립트의 console.log는 여기 나오지 않았습니다(Launch 4회)

에디터에서 직접 하기

1. 브라우저 Console 열기

  1. ▶ Launch로 게임 탭을 엽니다.
  2. 게임 탭에서 개발자 도구를 엽니다. Chrome은 F12 또는 Ctrl+Shift+J(맥은 Cmd+Option+J)입니다.
  3. Console 탭을 봅니다. 게임을 처음부터 다시 보려면 게임 탭을 새로 고칩니다. 개발자 도구는 열린 채로 남습니다.

2. 기록 남기기

값이 언제 무엇인지 모를 때는 console.log를 넣고 저장한 뒤 게임 탭을 새로 고칩니다. 실측에서 충돌 이벤트에 넣은 기록이 Console에 부딪힘: Plane (1번째)처럼 나왔습니다(충돌 이벤트 받기).

console.log('속도: ' + this.speed, '위치: ' + this.entity.getPosition().toString());

update 안에 넣으면 매 프레임 찍혀 Console이 넘칩니다. 조건을 걸거나 이벤트 함수 안에 넣습니다.

3. 오류 읽기

스크립트에 오류가 있으면 Console에 빨간 줄이 나옵니다. 줄 끝의 파일 이름과 줄 번호를 누르면 그 위치의 코드가 열립니다. 아래는 2026-10-29 Launch한 게임에서 흔한 실수 네 가지를 일부러 내서 받은 메시지입니다(각 1회). 오류가 나도 게임은 멈추지 않고 계속 돌았습니다. 그래서 "화면은 나오는데 무언가 안 된다"면 먼저 Console을 봅니다.

실수받은 메시지고치는 법
Collision이 없는 엔티티에서 this.entity.collision.on(…)Cannot read properties of undefined (reading 'on')그 엔티티에 Collision을 붙이거나, 스크립트를 Collision이 있는 엔티티로 옮깁니다
함수 이름 오타 applyImpulcethis.entity.rigidbody.applyImpulce is not a function철자를 고칩니다(applyImpulse)
선언하지 않은 변수 scoreLabelscoreLabel is not definedthis.scoreLabel처럼 속성으로 쓰려던 것인지, 다른 파일의 변수인지 확인합니다
없는 이름으로 찾은 엔티티 findByName('Ball')Cannot read properties of null (reading 'getPosition')HIERARCHY의 실제 이름과 맞춥니다. AI가 만든 게임은 이름이 판마다 다릅니다

undefined는 "그런 컴포넌트·속성이 없다", null은 "찾았는데 없었다"로 읽으면 대부분 맞습니다.

4. 실행 중인 게임 들여다보기

Console에 직접 코드를 넣어 지금 상태를 볼 수 있습니다. 실측에서 다음 코드로 엔티티 위치와 소리 재생 여부를 읽었습니다.

ow.app.root.findByName('Box').getPosition().toString()
ow.app.root.findByName('Box').sound.slot('hit').isPlaying

여기서 바꾼 값은 에디터에 남지 않습니다.

5. Launch 옵션

▶ Launch에 마우스를 올리면 Profiler, Mini stats, Debug, Inspector 체크 칸이 나옵니다. 실측 시점에는 Debug만 켜져 있었습니다. 넷을 모두 켜고 Launch하자 다음처럼 나왔습니다.

Launch한 게임 탭. 아래에 FRAME 표와 시간 그래프, 오른쪽에 Inspector 창(Hierarchy, Cameras, Assets 등 탭)
① Profiler ② Inspector
옵션디버깅에 쓰는 곳
Mini stats화면 왼쪽 아래 작은 표. 게임이 느려졌는지 볼 때(Frame이 16.7 ms면 초당 약 60프레임)
ProfilerUpdate·Physics·Render 가운데 어디서 시간이 걸리는지 볼 때
Inspector실행 중인 엔티티가 실제로 몇 개이고 어떤 상태인지 볼 때. 스크립트가 엔티티를 만들고 지우는 게임에서 유용합니다
Debug엔진의 디버그용 파일로 실행합니다. 켜 두는 것을 권합니다

자세한 화면 설명은 Launch로 실행하기에 있습니다.

AI에게 맡기기

원인 찾기는 AI가 잘하는 일입니다. 본 것과 원하는 것을 함께 적고, 먼저 원인만 설명하게 하면 부탁하지 않은 수정을 막을 수 있습니다.

Launch하면 Box가 바닥에 닿아도 소리가 나지 않습니다. 브라우저 Console에는 오류가 없습니다.
원인을 먼저 설명해 주세요. 아직 고치지 마세요.

설명을 확인한 뒤 고치게 합니다(고치기 요청 보내기). 작성 대기 AI에게 맡기기 실측 — 같은 요청 3회

다음으로

원고 scripting/debugging.html