디버깅
스크립트가 생각대로 동작하지 않을 때 원인을 찾는 방법을 설명합니다. OasisW에서는 게임이 새 탭에서 실행되므로, 기록과 오류는 대부분 게임 탭의 브라우저 개발자 도구에서 봅니다.
이 페이지의 실측은 2026-10-29 oasisw.ai 에디터(판 표시 OasisW 7e2aa65, macOS Chrome)에서 한 것입니다.
기록이 나오는 곳
| 자리 | 나오는 것 |
|---|---|
| 게임 탭의 브라우저 Console | 스크립트의 console.log, 스크립트 오류. 줄 끝에 스크립트 파일과 줄 번호가 붙습니다 |
| 에디터 아래 CONSOLE | 에디터의 알림(저장 실패, 연결 등). 스크립트의 console.log는 여기 나오지 않았습니다(Launch 4회) |
에디터에서 직접 하기
1. 브라우저 Console 열기
- ▶ Launch로 게임 탭을 엽니다.
- 게임 탭에서 개발자 도구를 엽니다. Chrome은 F12 또는 Ctrl+Shift+J(맥은 Cmd+Option+J)입니다.
- 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이 있는 엔티티로 옮깁니다 |
함수 이름 오타 applyImpulce | this.entity.rigidbody.applyImpulce is not a function | 철자를 고칩니다(applyImpulse) |
선언하지 않은 변수 scoreLabel | scoreLabel is not defined | this.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하자 다음처럼 나왔습니다.
| 옵션 | 디버깅에 쓰는 곳 |
|---|---|
| Mini stats | 화면 왼쪽 아래 작은 표. 게임이 느려졌는지 볼 때(Frame이 16.7 ms면 초당 약 60프레임) |
| Profiler | Update·Physics·Render 가운데 어디서 시간이 걸리는지 볼 때 |
| Inspector | 실행 중인 엔티티가 실제로 몇 개이고 어떤 상태인지 볼 때. 스크립트가 엔티티를 만들고 지우는 게임에서 유용합니다 |
| Debug | 엔진의 디버그용 파일로 실행합니다. 켜 두는 것을 권합니다 |
자세한 화면 설명은 Launch로 실행하기에 있습니다.
AI에게 맡기기
원인 찾기는 AI가 잘하는 일입니다. 본 것과 원하는 것을 함께 적고, 먼저 원인만 설명하게 하면 부탁하지 않은 수정을 막을 수 있습니다.
Launch하면 Box가 바닥에 닿아도 소리가 나지 않습니다. 브라우저 Console에는 오류가 없습니다.
원인을 먼저 설명해 주세요. 아직 고치지 마세요.
설명을 확인한 뒤 고치게 합니다(고치기 요청 보내기). 작성 대기 AI에게 맡기기 실측 — 같은 요청 3회