๐ English Abstract
This comprehensive troubleshooting guide addresses the bullet tunneling (wall pass-through) issue occurring in high-speed RigidBody3D nodes when using the Jolt Physics engine in Godot 4 with multithreading enabled. It dives deep into Discrete vs. Continuous Collision Detection (CCD), CPU worker thread contention, physics tick rate optimization, and custom Shapecasting strategies. By fine-tuning physics step limits and Jolt-specific broadphase parameters, developers can achieve pixel-perfect collision accuracy while maximizing multi-core rendering efficiency.
Godot 4 ์์ง์ผ๋ก ์ ํํ๋ฉด์ ๊ณ ์ฑ๋ฅ 3D ๋ฌผ๋ฆฌ ์ฐ์ฐ์ ์ํด Jolt Physics(Godot Jolt) ํ๋ฌ๊ทธ์ธ์ ๋์ ํ๋ ๊ฐ๋ฐ์๊ฐ ๋๊ณ ์์ต๋๋ค. Jolt๋ AAA๊ธ ๊ฒ์์ธ Horizon Forbidden West์์ ์ ์ฆ๋ ์คํ์์ค ๋ฌผ๋ฆฌ ์์ง์ผ๋ก, ๊ฐ๋ ฅํ ๋ฉํฐ์ค๋ ๋ฉ(Multithreading) ์ฑ๋ฅ์ ์๋ํฉ๋๋ค. ํ์ง๋ง FPS๋ ๋ ์ด์ฑ ๊ฒ์์ฒ๋ผ ๋ฆฌ์ง๋๋ฐ๋(RigidBody3D)์ ์ด๋ ์๋๊ฐ ๊ทน๋๋ก ๋น ๋ฅผ ๋, ๋ฌผ์ฒด๊ฐ ์์ ๋ฒฝ์ด๋ ์งํ์ ๊ทธ๋๋ก ํต๊ณผํด ๋ฒ๋ฆฌ๋ ํฐ๋๋ง ํ์(Tunneling Issue / Bullet-through-paper problem)์ ์์ฃผ ๊ฒช๊ฒ ๋ฉ๋๋ค.
์ด ๋ฌธ์ ๋ ๋จ์ง ๋ฌผ๋ฆฌ ํฑ(Physics Tick) ์์น๋ฅผ ์ฌ๋ฆฌ๋ ๊ฒ๋ง์ผ๋ก๋ ์์ ํ ํด๊ฒฐ๋์ง ์์ต๋๋ค. ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ๋ฐ์ํ ์ ์๋ ์ค๋ ๋ ๋๊ธฐํ ๋๋ ์ด, ๋ถ์ฐ์ ์ถฉ๋ ๊ฐ์ง(Discrete Collision Detection)์ ํ๊ณ, ๊ทธ๋ฆฌ๊ณ ๋ฌผ๋ฆฌ ์คํ ํ(Physics Stepping) ์ต์ ๊ฐ์ ์ํธ์์ฉ์ ๊น์ด ์๊ฒ ์ดํดํด์ผ ํฉ๋๋ค. ๋ณธ ํฌ์คํ ์์๋ Godot 4 + Jolt Physics ํ๊ฒฝ์์ ๋ฐ์ํ๋ ๋ฒฝ ๊ดํต ํธ๋ฌ๋ธ์ํ ๊ณผ ์ฑ๋ฅ ์ต์ ํ ๋ฐฉ๋ฒ์ ์์ธ๋ถํฐ ์ ๋ฐํ๊ฒ ๋ค๋ฃน๋๋ค.
1. ๊ณ ์ ๋ฆฌ์ง๋๋ฐ๋ ๊ดํต ํ์(Tunneling)์ ์ฐ์ฐ ๊ตฌ์กฐ์ ์์ธ
ํฐ๋๋ง์ด ์ ๋ฐ์ํ๋์ง ์ดํดํ๋ ค๋ฉด ๊ธฐ๋ณธ ์ถฉ๋ ๊ฒ์ถ ์๊ณ ๋ฆฌ์ฆ์ธ ๋ถ์ฐ์ ์ถฉ๋ ๊ฐ์ง(Discrete Collision Detection, DCD)์ ์๋ ์๋ฆฌ๋ฅผ ํ์ ํด์ผ ํฉ๋๋ค.
DCD(๋ถ์ฐ์ ์ถฉ๋ ๊ฐ์ง)์ ํ๊ณ์ ์ด์ฐ์ ์์น ์ํ๋ง
์ผ๋ฐ์ ์ผ๋ก ๋ฌผ๋ฆฌ ์์ง์ ๋งค ํ๋ ์(๋๋ ๋งค ๋ฌผ๋ฆฌ ํฑ)๋ง๋ค ๋ฌผ์ฒด์ ์์น๋ฅผ ๊ฐฑ์ ํฉ๋๋ค. ์๊ฐ $t_0$์์์ ์์น์ $t_1$์์์ ์์น๋ฅผ ์๊ฐ ํฌ์ฐฉ(Snapshot)ํ์ฌ ๋ ์์ ์ ๋ฌผ์ฒด๊ฐ ๊ฒน์ณ ์๋์ง๋ฅผ ๊ฒ์ฌํฉ๋๋ค.
- ์ ์ ์๋: $t_0$์ $t_1$ ์ฌ์ด์ ์ด๋ ๊ฑฐ๋ฆฌ๊ฐ ์ฅ์ ๋ฌผ์ ๋๊ป๋ณด๋ค ์์ผ๋ฏ๋ก ์ถฉ๋ ์ง์ ์ด ์ ํํ ๊ฐ์ง๋ฉ๋๋ค.
- ์ด๊ณ ์ ์ด๋: $t_0$์ผ ๋ ๋ฌผ์ฒด๋ ๋ฒฝ ์ ๋ฉด์ ์๊ณ , ๋จ 1 ํฑ(Tick) ํ์ธ $t_1$์๋ ๋ฌผ์ฒด๊ฐ ์ด๋ฏธ ๋ฒฝ ํ๋ฉด์ ํต๊ณผํ ์ํ๊ฐ ๋ฉ๋๋ค. ์ด์ฐ์ (Discrete) ์๊ฐ ์ํ๋ง์์๋ $t_0$์ $t_1$ ๋ชจ๋ ์ถฉ๋ ๋ ์ด์ด์ ๊ต์ฐจํ์ง ์๋ ๊ฒ์ผ๋ก ํ์ ๋์ด ๋ฒฝ ๊ดํต(Tunneling)์ด ์ผ์ด๋ฉ๋๋ค.
Jolt ๋ฉํฐ์ค๋ ๋ฉ ์ ์ฉ ์ ์ ํ๋๋ ์ฃ์ง ์ผ์ด์ค(Edge Cases)
Jolt Physics๋ ์์ ๋ถํ (Work-stealing) ๊ธฐ๋ฐ์ ๋ฉํฐ์ค๋ ๋ ๋ธ๋ก๋ํ์ด์ฆ(Broadphase) ๋ฐ ๋ด๋ก์ฐํ์ด์ฆ(Narrowphase) ์ฐ์ฐ์ ์ํํฉ๋๋ค. ๋ฌผ๋ฆฌ ํฑ์ด ๋ฉํฐ์ค๋ ๋๋ก ์ฒ๋ฆฌ๋ ๋ ํ๋ ์ ๋ ์ดํธ(FPS)์ ๋ฌผ๋ฆฌ ํฑ(Physics Ticks) ์ฌ์ด์ ๋ถ์ผ์น๊ฐ ์ฌํด์ง๊ฑฐ๋ ๋ฉ์ธ ์ค๋ ๋ ๋ณ์ ๊ฐฑ์ ์ฐ์ฐ ์ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๊ฐ์ค๋ฉ๋๋ค.
- ๋ฌผ๋ฆฌ ์คํ ์คํต(Physics Step Skip): ๋ ๋๋ง ํ๋ ์ ๋ฌ์ฑ๊ฑฐ๋ฆผ์ผ๋ก ์ธํด ํ ๋ฒ์ ๋ณต์์ ๋ฌผ๋ฆฌ ์คํ (`max_physics_steps_per_frame`)์ด ๋ชฐ๋ ค์ ์คํ๋ ๋, ๋ฉํฐ์ค๋ ๋ ํ์์ ๋์ ๋ณ์๋์ด ๊ธ์ฆํ์ฌ ๊ดํต ํ๋ฅ ์ด ์ปค์ง๋๋ค.
- ๋์ ๋ฐ์ด๋ฉ ๋ฐ์ค(AABB) ๊ฐฑ์ ์ค์ฐจ: ๋ธ๋ก๋ํ์ด์ฆ ๋ ธ๋ ํ์ ์ค๋ ๋๊ฐ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ์์ ๋ฌถ์ ๋, ์ด๊ณ ์ ๋ฌผ์ฒด์ AABB(Axis-Aligned Bounding Box)๊ฐ ์ถฉ๋ถํ ํ์ฅ๋์ง ์์ผ๋ฉด ๋ด๋ก์ฐํ์ด์ฆ ์ฐ์ฐ ๋์์์ ์ ์ธ๋ ์ ์์ต๋๋ค.
2. ๋จ๊ณ๋ณ ํธ๋ฌ๋ธ์ํ : ๋ฒฝ ๊ดํต ์๋ฒฝ ์ฐจ๋จ ์๋ฃจ์
Godot 4์ Jolt Physics ์กฐํฉ์์ ๋ฒฝ ๊ดํต์ ์ฐจ๋จํ๊ธฐ ์ํ 3๋จ๊ณ ์ค๋ฌด ์ ์ฉ๋ฒ์ ๋๋ค.
Step 1: ์ฐ์ ์ถฉ๋ ๊ฐ์ง(CCD - Continuous Collision Detection) ํ์ฑํ
๊ฐ์ฅ ์ง๊ด์ ์ธ ์ฒซ ๋ฒ์งธ ํด๊ฒฐ์ฑ ์ ์ฐ์ ์ถฉ๋ ๊ฐ์ง(Continuous Collision Detection, CCD)๋ฅผ ์ผ๋ ๊ฒ์ ๋๋ค. CCD๋ ์ด์ฐ ์ง์ ์ด ์๋ $t_0$์์ $t_1$๊น์ง์ ์ด๋ ๊ถค์ ์ ์ฒด๋ฅผ ์ค์ํํธ ๋ณผ๋ฅจ(Swept Volume) ๋๋ ๋ ์ด์บ์คํธ(Motion Casting)๋ก ํ์ด ์ถฉ๋์ ๊ฒ์ฌํฉ๋๋ค.
์ ์ฉ ๋ฐฉ๋ฒ:
- ๊ดํต ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ `RigidBody3D` ์ธ์คํํฐ ์ฐฝ์ ์ด๊ณ Solver -> Continuous CD ์์ฑ์ `true`๋ก ์ค์ ํฉ๋๋ค.
- ์คํฌ๋ฆฝํธ๋ก ์ค์ ์:
$FastRigidBody.continuous_cd = true
Jolt ์์ง๋์ด๋ง ์ฃผ์์ฌํญ: Jolt Physics๋ CCD ์๋ ์ ๋ ์ด์บ์คํธ/์์ดํ์บ์คํธ ๊ธฐ๋ฐ์ Motion Casting์ ์ฌ์ฉํฉ๋๋ค. ๋ชจ๋ ๋์ ์ค๋ธ์ ํธ์ CCD๋ฅผ ํ์ฑํํ๋ฉด CPU ์์ ์ค๋ ๋์ ๋ถํ๊ฐ ๊ธ์ฆํ์ฌ ๋ฉํฐ์ค๋ ๋ฉ ์ฑ๋ฅ ์ด์ ์ด ๋ฐ๊ฐ๋๋ฏ๋ก, ์ด์, ๋ฏธ์ฌ์ผ, ๊ณ ์ ์ฐจ๋ ๋ฑ ๊ผญ ํ์ํ ์ค๋ธ์ ํธ์๋ง ์ ๋ณ์ ์ ์ฉํด์ผ ํฉ๋๋ค.
Step 2: ๋ฌผ๋ฆฌ ํฑ(Physics Ticks) ์์น ๋ฐ ์คํ ํ๋ ์ ๋ฐ ์กฐ์
๊ธฐ๋ณธ 60Hz ๋ฌผ๋ฆฌ ํฑ ํ๊ฒฝ์์๋ ์๋๊ฐ ์ฝ 100m/s๋ง ๋์ด๊ฐ๋ 1 ํฑ๋น 1.66m๋ฅผ ์ด๋ํ๋ฏ๋ก ์์ ๋ฒฝ(์: 0.2m ๋๊ป)์ ๋ฌด์กฐ๊ฑด ๊ดํตํฉ๋๋ค. ํ๋ก์ ํธ ์ค์ ์ ์กฐ์จํ์ฌ ์ ๋ฐ๋๋ฅผ ์ฌ๋ฆฝ๋๋ค.
- Project Settings -> Physics -> Common -> Physics Ticks Per Second: ๊ธฐ๋ณธ๊ฐ `60`์์ `120` ๋๋ `140`์ผ๋ก ๋ณ๊ฒฝ. (๋ฌผ๋ฆฌ ๊ณ์ฐ ๋น๋๋ฅผ ๋์ฌ ํฑ๋น ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ฐ ์ดํ๋ก ๋จ์ถ)
- Max Physics Steps Per Frame: ๊ธฐ๋ณธ๊ฐ `8` ์ ์ง ๋๋ `4~6` ์ ๋๋ก ์ ํ. (ํ๋ ์ ๋๋ ๋ฐ์ ์ ๋์ ํ ์ฑ๋ฅ ํ๋ฝ(Spiraling of Death) ๋ฐฉ์ง)
Step 3: Shapecast3D๋ฅผ ํ์ฉํ ํ์ด๋ธ๋ฆฌ๋ ํฌ์ฌ์ฒด ๊ตฌํ (์ฃ์ง ์ผ์ด์ค ๋์)
์๋๊ฐ ๊ทน๋จ์ ์ผ๋ก ๋น ๋ฅธ ๊ด์ ๊ฒ, ๋ ์ผ๊ฑด, ์ด๊ณ ์ ์ด์ ๋ฑ์ RigidBody3D์ ๋ฌผ๋ฆฌ ์์ง์ ํฑ์ ์์กดํ์ง ์๊ณ ์ฝ๋ ๊ธฐ๋ฐ์ ShapeCast3D ๊ธฐ๋ฒ์ ํผํฉํ๋ ๊ฒ์ด ์ฐ์ฐ ํจ์จ ๋ฐ ์ ํ๋ ์ธก๋ฉด์์ ๋ฐ์ด๋ฉ๋๋ค.
์ด๋ ์ ์์น์์ ์ด๋ํ ๋ชฉํ ์์น๊น์ง ๋ฏธ๋ฆฌ ์์ดํ(์: Sphere, Cylinder)๋ฅผ ํฌ์(Cast)ํ์ฌ ์ถฉ๋ ์ง์ ์ ์ฆ์ ๊ณ์ฐํ๋ ๋ฐฉ์์ ๋๋ค.
3. ์ฌํ ๋ด์ฉ: Jolt Physics ๋ฉํฐ์ค๋ ๋ฉ ๋ฐ ๋ฌผ๋ฆฌ ํฑ ์ฑ๋ฅ ์ต์ ํ
์ถฉ๋ ๊ดํต์ ๋ง๊ธฐ ์ํด CCD์ ํฑ(Tick)์ ๋๋ ธ๋ค๋ฉด, ์ด์ ๋ ๋ฌผ๋ฆฌ ์์ง์ด ๋ฉํฐ์ฝ์ด๋ฅผ ์ต๋๋ก ํ์ฉํ ์ ์๋๋ก Jolt ๊ณ ์ ์์ฑ์ ํ์ดํ๋ผ์ธ ๋ ๋ฒจ์์ ์ต์ ํํด์ผ ํฉ๋๋ค.
Jolt Physics ์์ปค ์ค๋ ๋(Worker Threads) ํ๋ผ๋ฏธํฐ ํ๋
Godot 4์ฉ Jolt ํ๋ฌ๊ทธ์ธ์ ์์ฒด ์ค๋ ๋ ํ(Thread Pool)์ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ํ๋ก์ ํธ ์ค์ ์ Physics 3D -> Jolt Physics ํญ์์ ๋ค์ ํญ๋ชฉ์ ๊ฒํ ํ์ธ์.
| ์ค์ ํญ๋ชฉ (Setting) | ๊ถ์ฅ๊ฐ / ํ๋ ์ ๋ต | ๊ธฐ์ ์ ์ํฅ (Impact) |
|---|---|---|
| Thread Count | Default (0 = Auto) ๋๋ CPU ์ฝ์ด ์ - 1 | ๋ฉ์ธ ๋ ๋๋ง ์ค๋ ๋ ๋ฐ ์ค๋์ค ์ค๋ ๋์์ ๊ฒฝํฉ(Contention) ์ถ์ |
| Velocity Iterations | 8 ~ 10 (๊ธฐ๋ณธ 8) | ๋ฆฌ์ง๋๋ฐ๋ ๊ฐ์ ๊ดํต ๋ฐ ํ๊น ์์ ์ฑ ์ฆ๊ฐ |
| Position Iterations | 2 ~ 4 (๊ธฐ๋ณธ 2) | ์ ์ฝ ์กฐ๊ฑด(Constraint) ํด์ ์ ๊ฒน์นจ ํ์ ์ ๋ฐ ๋ณต์ |
| Position Solve Body Threshold | 0.01 m ๋ด์ธ ์กฐ์ | ๋ฏธ์ธ ์ง๋(Jittering) ๋ฐฉ์ง ๋ฐ ๋ธ๋ก๋ํ์ด์ฆ ๊ณ์ฐ ๋ถํ ๊ฐ์ |
์๋ธ์คํ ํ(Sub-stepping)๊ณผ ๋ฌผ๋ฆฌ ๋ณด๊ฐ(Physics Interpolation)
๋ฌผ๋ฆฌ ํฑ์ 120Hz ์ด์์ผ๋ก ๋์ด์ฌ๋ฆฌ๋ฉด CPU ๋ ๋๋ง ์ค๋ ๋๊ฐ ๋๊ธฐ ์ํ์ ๋น ์ง ์ ์์ต๋๋ค. Godot 4.3 ์ด์์์ ์ง์ํ๋ ๋ฌผ๋ฆฌ ๋ณด๊ฐ(Physics Interpolation) ์์คํ ์ ํ์ฉํ๋ฉด ๋ฌผ๋ฆฌ ํฑ์ 60Hz๋ก ์ ์งํ๋ฉด์ ๋ ๋๋ง ํ๋ ์(์: 144Hz, 240Hz ๋ชจ๋ํฐ)์์๋ ๋ถ๋๋ฌ์ด ์์ง์์ ์ฐ์ถํ ์ ์์ต๋๋ค.
- Physics Interpolation ํ์ฑํ: Project Settings -> Physics -> Common -> Physics Interpolation์ `true`๋ก ์ค์ .
- ๊ฒฐ๊ณผ: ์ด๊ณ ์ ๋ฌผ์ฒด๋ง CCD๋ฅผ ์ ์ฉํ๊ณ ์ ์ฒด ๋ฌผ๋ฆฌ ํฑ ์ฆ๊ฐ๋ ์ต์ํํจ์ผ๋ก์จ CPU ์ ์ ์จ์ ํฌ๊ฒ ๋ฎ์ถ ์ ์์ต๋๋ค.
4. ์ค๋ฌด ์ฒดํฌ๋ฆฌ์คํธ ๋ฐ ์ฃ์ง ์ผ์ด์ค ๋ฐฉ์ง ์ ๋ต
์ค์ ์์ฉ ๊ฒ์ ๊ฐ๋ฐ ์ ๋ฐ์ํ ์ ์๋ ์ฃ์ง ์ผ์ด์ค๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํ ์ฒดํฌ๋ฆฌ์คํธ์ ๋๋ค.
1) ์์ ๋ฉ์ฌ์ CollisionShape3D ๋๊ป ๋ณด๊ฐ
๋ฒฝ์ด๋ ๋ฐ๋ฅ ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค ๋ ํ๋ฉด(Plane) ํํ์ ๋ฉ์ฌ๋ ๋๊ป๊ฐ 0์ ๊ฐ๊น์ด `ConcavePolygonShape3D`๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํฐ๋๋ง์ ์ฃผ์์ธ์ ๋๋ค. ์๋ฌด๋ฆฌ CCD๋ฅผ ์ ์ค์ ํด๋ ๋ถ๋ ์์์ ์ค์ฐจ๋ก ์ธํด ์ถฉ๋์ด ๋๋ฝ๋ ์ ์์ต๋๋ค. ๋ฒฝ ๋ด๋ถ์ ์ต์ 0.2m ~ 0.5m ์ด์์ ๋๊ป(BoxShape3D)๋ฅผ ์ ์ฉํ๋ ์ค๊ณ ์ต๊ด์ด ํ์์ ์ ๋๋ค.
2) Scale ์ถ ๋ณํ ์ฃผ์
`RigidBody3D`๋ ๊ทธ ํ์ `CollisionShape3D`์ ํธ๋์คํผ Scale์ ์์ ๋๋ ๊ท ์ผํ์ง ์๊ฒ(Non-uniform Scale) ๋ณ๊ฒฝํ๋ฉด, Jolt Physics์ ๋ฉํฐ์ค๋ ๋ ์ถฉ๋ ์ฒด๊ณ(BVH Tree) ๊ณ์ฐ ์ ๋ฐ์ด๋ฉ ๋ณผ๋ฅจ์ด ์๊ณก๋์ด ๊ดํต ํ์์ด ์ฌํ๋ฉ๋๋ค. Scale์ ๋ฐ๋์ `(1, 1, 1)`๋ก ์ ์งํ๊ณ Shape์ Extents/Size ํ๋ผ๋ฏธํฐ๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
3) StaticBody3D ์ถฉ๋ ๋ ์ด์ด ์ต์ ํ
Jolt์ ๋ฉํฐ์ค๋ ๋ ๋ธ๋ก๋ํ์ด์ฆ ํ์ ํจ์จ์ ๋์ด๋ ค๋ฉด ์ถฉ๋ ๋ ์ด์ด(Collision Layer)์ ๋ง์คํฌ(Collision Mask)๋ฅผ ์๊ฒฉํ ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค. ๋ถํ์ํ ๋ ์ด์ด ๊ฐ ์ฐ์ฐ์ ๋๋ฉด CCD ํ์ ์ค๋ ๋์ ๋ถ๋ด์ด ํฌ๊ฒ ์ค์ด๋ญ๋๋ค.
5. ๊ฒฐ๋ก : ์ฑ๋ฅ๊ณผ ์ ํ๋์ ์ต์ ๋ฐธ๋ฐ์ค
Godot 4์ Jolt Physics ์กฐํฉ์ ์๋์ ์ธ ๋ฉํฐ์ฝ์ด ์ฑ๋ฅ์ ์ ๊ณตํ์ง๋ง, ๊ณ ์ ๋ฆฌ์ง๋๋ฐ๋์ ๋ฒฝ ๊ดํต ๋ฌธ์ ๋ ๋จ์ํ ๋ฒ๊ทธ๊ฐ ์๋ ์ด์ฐ์ ๋ฌผ๋ฆฌ ์ฐ์ฐ ํน์ฑ์์ ๋น๋กฏ๋๋ ๊ธฐ์ ์ ํธ๋ ์ด๋์คํ์ ๋๋ค.
์ด๋ฅผ ์๋ฒฝํ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐํฉ ์ ๋ต์ด ์ต์ ์ ๋๋ค:
- ๊ณ ์ ์ค๋ธ์ ํธ์๋ง ์ ๋ณ์ CCD(Continuous CD) ํ์ฑํ
- Godot 4.3+ ๋ฌผ๋ฆฌ ๋ณด๊ฐ(Physics Interpolation)๊ณผ ํจ๊ป ์ ์ ํ ๋ฌผ๋ฆฌ ํฑ(60Hz~90Hz) ์ธํ
- ์ด๊ณ ์ ํฌ์ฌ์ฒด๋ ShapeCast3D ๊ธฐ๋ฐ ์กฐ์ค/๊ถค์ ์ถ์ ์ผ๋ก ๋์ฒด
- Jolt ์์ง ์ค์ ์์ ์ค๋ ๋ํ ๋ฐ ์์ปค ์ค๋ ๋ ๊ฒฝํฉ ์ต์ํ
์ ํธ๋ฌ๋ธ์ํ ๋จ๊ณ๋ฅผ ์ฐจ๋ก๋๋ก ์ ์ฉํ๋ฉด ์ฐ์ฐ ๋ถํ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๋ฉด์๋, ์ด๋ ํ ๊ณ ์ ํ๋ ์ ํ๊ฒฝ์์๋ ๋ฒฝ์ ๋ซ์ง ์๋ ์์ ์ ์ธ 3D ๋ฌผ๋ฆฌ ์์คํ ์ ๊ตฌ์ถํ ์ ์์ ๊ฒ์ ๋๋ค.