๐ ๋๋ ์ค์๋ก ๋ธ๋ผ์ฐ์ ์์ ์ ์ฒด 3D Endless Runner ๊ฒ์์ ๋ง๋ค์๋ค (์ฐธ๊ณ ๋ก KB ๋จ์)
Source: Dev.to โ I Accidentally Built a Full 3D Endless Runner Game in the Browser (Itโs inโฏKBs btw)

์๊ฐ
์๋ ๊ฐ๋ฐ์๋ค, ์ด์จํธ์ ๋๋ค ๐
์์ํ๊ธฐ ์ ์ ๊ฐ๋จํ ์ง๋ฌธ:
- ์ ๋ชจ๋ ์น ๊ฒ์์ด ~200โฏMB ์ ๋๊ฐ ๋์ด์ผ ํ ๊น์?
- ๊ฒ์์ ์ด์๋ง์ ๋ด ํฐ์ด ์ ํธ ์์ง ์๋ฆฌ์ฒ๋ผ ํฌ๊ฒ ๋๋ ์ด์ ๋?
๊ทธ๋์ ๋ ๋ค์ ๋ฌด์ฑ ์ํ ์ผ์ ํ์ด์โฆ!
์ฝโฏ6โฏ์๊ฐ ๋์, ์ปคํผ์ ๋ถ์คํ ํ๋จ์ ํ์ ์ด Metro Runner๋ฅผ ๋ง๋ค์์ต๋๋ค โ ์ ์ฒด๊ฐ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ ํโ3D ๋ฌดํ ๋ฌ๋์ ๋๋ค.
- Unity ์์.
- Unreal ์์.
- Godot ์์.
- ๋จ์ง Three.js, React, and Audacity๋ง ์ฌ์ฉํ์ต๋๋ค. ๐
๐ฆ Size Flex (Chrome Users Donโt Know This)
Metro Runner๋ ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ(PWA)์ ๋๋ค. ์ด๋ ๋ค์์ ์๋ฏธํฉ๋๋ค:
- Chrome์ ์ด๋ฏธ ๋ ๋๋ง ์์ง์ด ํฌํจ๋์ด ์์ต๋๋ค.
- Three.js๊ฐ ์ฌ์ดํธ ๊ฐ์ ๊ณต์ ๋ฉ๋๋ค.
- ๋ชจ๋ ์์ ์ CSS์ ๊ฐ๋ฒผ์ด ๋ฆฌ์์ค๋ก ์ ๊ณต๋ฉ๋๋ค.
์ค์ ๋ค์ด๋ก๋ ํฌ๊ธฐ: ๋ช ๋ฐฑโฏKB์ ๋ถ๊ณผํฉ๋๋ค(์, KB, MB๋โฏGB๊ฐ ์๋๋๋ค).
๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค:
- ์ฌ์ดํธ๋ฅผ ์ฝ๋๋ค.
- PWA๋ฅผ ์ค์นํฉ๋๋ค.
- ํ ํ๋ฉด์์ ๊ฒ์์ ์คํํฉ๋๋ค.
Chrome ์ฌ์ฉ์๋ Chrome๋ง ์ฌ์ฉํด๋ ์ด๋ฏธ ์์ง์ ์ ๋ฐ์ ๋ค์ด๋ก๋ํ ์ฌ์ค์ ์ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. (์ ๋ ๊ทธ ์ค ํ ๋ช ์ด์์! ๐)
๐ฎ Metro Runner๋?
Metro Runner๋ 3D ๋ฌดํโ๋ฌ๋ ๋ธ๋ผ์ฐ์ ๊ฒ์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํน์ง์ด ์์ต๋๋ค:
- 3๋ ์ธ ์ด๋
- ์ ํ / ์ฌ๋ผ์ด๋ ๋ฉ์ปค๋์ฆ
- ์งํ์ ๋ฐ๋ผ ์๋ ์ฆ๊ฐ
- ์ฝ์ธ ๋ฐ ํ์โ์ ์์ง
- ์ธโ๊ฒ์ ์์ ์์ ์ ๊ทธ๋ ์ด๋ ๊ฐ๋ฅ
- ๋ ํนํ ์๊ฐ์ ๊ฐ์ง ์ฌ๋ฌ ๋ฐ์ด์ด
- ํน์ดํ UFO ๋ฉ์น ์ด๋ฒคํธ (์ถํ ์์ธํ ๐)
Subway Surfers์ ๋น์ทํ์ง๋ง:
- ๋ธ๋ผ์ฐ์ ์์ ๋ฐ๋ก ์คํ
- ์์ 3D ๊ทธ๋ํฝ
- ํจ์ฌ ๋ ๋ฏธ์น
๐ ํ๋ ์ดํ๊ธฐ: [Insert game link] (์ค์ URL๋ก ๊ต์ฒด)
๐ง โ๊ฒ์ ์์ง์ ์ฌ์ฉํ๋์?โ
No ๐
Itโs built with React Three Fiber (Three.js) and:
- Custom game loop
- Manual collision logic
- Fake speed via world movement (deltaโtimeโbased motion)
The player barely moves forward; the world rushes toward youโa classic illusion that remains undefeated.
Source:
๐ ํธ๋ ์ธ, ๋จํ, ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ฅ์ด ๋ ๋ฒ๊ทธ ๐
๊ณ ์์ผ ๋, ๊ฐ๋:
- ํ๋ ์ด์ด๊ฐ ํธ๋ ์ธ ๋จํ์ ๋ถ๋ชํ
- ๋์ด์ ธ์ ํ๊ฒจ ๋๊ฐ๊ณ ์ฌ๋ง ๐
์ถฉ๋ ์ค์ํ, ์ ๋ ฌ ๋ฏธ์ธ ์กฐ์ , ๋ถ๋ฒ ์๋ ๋๋ฒ๊น ๋ฑ์ ์๋ํ์.
ํจ๊ณผ๊ฐ ์์๋์? ์๋์.
๊ทธ๋์ ๋ชจ๋ ์ ์์ ์ธ ๊ฐ๋ฐ์๊ฐ ํ๋ ๋๋ก ํ์ต๋๋ค: ๋ฒ๊ทธ๋ฅผ ๊ณ ์น ์ ์์ผ๋ฉด โ ๊ฒ์ํ๋ ์ด๋ก ์น๊ฒฉ์ํค์.
๐ง ์คํ ๋ฆฌ ์ ๋ฐ์ดํธ
์ผ๋ถ ํธ๋ ์ธ ๋จํ๋ ์ฝ์น์ ์ฝ๊ฐ ์ด๊ธ๋ ์์ต๋๋ค. ๊ณ ์์์๋ ๋ถ์คํ ์ ํ๊ฐ ์คํฌ ๊ธฐ๋ฐ ํ๋ํฐ(๋จ์ด์ ธ์ ๊ฒ์ ์ค๋ฒ)๋ก ์ด์ด์ง๋๋ค.
์ด์ ๋ ๋ฒ๊ทธ๊ฐ ์๋๋ผ ์๋๋ ์์์ ๋๋ค.
๐ ๊ธฐ์ฐจ ์์คํ (ํต์นญ ๊ณ ํต ๋ฐ์๊ธฐ)
- ์ผ๋ฐ ๊ธฐ์ฐจ โ ์ ์ง + ์ด๋
- ํธ๋ฆฌํโํธ๋ ์ธ ๋จํ ๊ตฌ๊ฐ (~10%) โ ๋ชจ๋ ์ฐจ์ ์ฐจ๋จ, ์์ ๋จํ, ๋๋ ์ฝ์ธ ๋ณด์
- ๊ธฐ์ฐจ ์ ํ ๊ตฌ๊ฐ (~10%) โ ์ฐจ์ ์ ๊ฐ๋ก์ง๋ฌ ๊ธฐ์ฐจ ์ฌ์ด๋ฅผ ์ ํ; ํ ๋ฒ ๋์น๋ฉด ๋ฉ๋ด๋ก ๋ณต๊ท ๐
๊ธฐ์ฐจ๋ ์ค์ ์ถฉ๋โ์ ๋ น ํด๋ฆฌํ ์์.
๐ฝ ์ธ๊ณ์ธ ๋ฉ์น ์ด๋ฒคํธ (์ฌ๊ธฐ์ ์ ์ด๋ฅผ ์์)
๋ฐ ์ค์ ๋ฐ์ํ๋ ๋๋ค ์ด๋ฒคํธ:
- UFO ๋ฑ์ฅ
- ์ด๋ก๋น๊ณผ ํธ๋ํฐ ๋น
- ํ๋ฉด์ด ์ด๋์์ง
- ์๋ก์ด ๋ฐ์ด์ด์ผ๋ก ํ ๋ ํฌํธ
- +25 ๋ฌด๋ฃ ์ฝ์ธ ๋ฐ ์ผ์์ ์ธ ๋ฌด์
ํ์ค์ ์ธ๊ฐ์? ์๋์.
์ฌ๋ฏธ์๋์? ๋น์ฐํ. ๐ธ
โก ํ์โ์ (๋ค, ๊ทธ ์ ์๋ค์ ์ค์ ์ ๋๋ค)
| PowerโUp | Effect |
|---|---|
| ๐งฒ Magnet | ๋์ ๋์ด๋น๊น |
| ๐ Super Boots | ์ ํ ๋์ด 2๋ฐฐ |
| ๐น Hoverboard | ํ ๋ฒ์ ๋ฌด๋ฃ ์ถฉ๋ |
| ๐ Headstart | ๋ก์ผ ๋ถ์คํฐ |
| โ๏ธ Multiplier | ๋์ ๋ ๋ฐฐ |
| ๐ Jetpack | ์ฅ์ ๋ฌผ ์๋ฅผ ๋ ๊ธฐ |
๊ทธ ์ ์๋ค(๋ฐ๋ ์๊ตญ, ์คํผ๋ ๋ผ์ธ)์ ๋จ์ํ โ์๊ฐ ํจ๊ณผโ๊ฐ ์๋๋ผ ์๋ ์ฐฉ๊ฐ์ ํ๋งคํฉ๋๋ค. ์ ํธํฉ ์ ์๋ ์ ํธํฉ์์ ๋์ค๋ ๊ฒ์ด๋ฉฐ, ๋ถ์๊ธฐ์์ ๋์ค๋ ๊ฒ์ด ์๋๋๋ค.
๐ช Shop System (I Went Too Far)
- ์ฝ์ธ์ผ๋ก ํ์โ์ ์ ๊ตฌ๋งค
- ์์ ์ง์ ์๊ฐ ์ ๊ทธ๋ ์ด๋ (์ต๋ 6๋จ๊ณ)
- ์์ ํ์โ์ ์ ํ
์ธ๋ฒคํ ๋ฆฌ๋ localStorage๋ฅผ ํตํด ์ ์ง๋ฉ๋๋ค. ํญ์ ๋ซ์๋ค๊ฐ ๋์ค์ ๋ค์ ์ด๋ฉด, ๋น์ ์ ๊ทธ๋ผ์ธ๋๊ฐ ์ ์ฅ๋ฉ๋๋ค. ๐ค
๐ ์๋ฌผ๊ตฐ๊ณ
- ๐ ์งํ์ฒ
- ๐๏ธ ๋์
- ๐ฒ ์ฒ
์๋ฌผ๊ตฐ๊ณ ์ ํ์ ๊ฐ์ ์ด๋ฉฐ, ๋ฐ๋ผ์ ์คํ์ด ๋ณต์ฌโ๋ถ์ฌ๋ฃ๊ธฐ์ฒ๋ผ ๋๊ปด์ง์ง ์์ต๋๋ค.
๐ฅ Easter Egg
๋ฉ๋ด์์ ๊ฒ์ ์ ๋ชฉ์ ํด๋ฆญํ์ธ์.
๊ทธ๊ฒ ์ ๋ถ์์ ๐
๐ง Tech Stack (a.k.a. Bad Decisions)
- Reactโฏ+โฏTypeScript
- Three.js (via React Three Fiber)
- ๋ง์ถค ์ถฉ๋ ๋ก์ง
- ํํฐํด ์์คํ
- PWA (์ค์น ๊ฐ๋ฅ, ์คํ๋ผ์ธ ์นํ์ )
localStorage๋ฅผ ํตํ ์ ์ฅ๋ ์ํ
์์ง๋, ๋ฌผ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๊ณ โ๊ทธ๋ฅ ์ํ, ํ์ด๋ฐ, ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ๋ง.
๐ง ์ ์ด๊ฑธ ๋ง๋ค์๋๊ฐ
I wanted to see: ์ค์ 3D ๊ฒ์์ด ๋ธ๋ผ์ฐ์ ์์ ํธ์ํ๊ฒ ์คํ๋ ์ ์์๊นโฆ ๊ทธ๋ฆฌ๊ณ ์ฌ์ ํ ์ข์ ๋๋์ ์ค ์ ์์๊น?
Turns out โ yes. And it fits in KBs, which still feels illegal.
๐ ํผ๋๋ฐฑ
๋๊ธ, ์ ์ ๋ฑ์ ์์ ๋กญ๊ฒ ๋จ๊ธฐ๊ฑฐ๋, ํน์ โ์!โ๋ผ๊ณ ๋งํด ์ฃผ์ธ์.
์กฐ๋กฑ ํ์
ํ๋ ์ดํ๋ค๋ฉด:
- ๋น์ ์ด ์ด๋์ ์ฃฝ์๋์ง ์๋ ค ์ฃผ์ธ์.
- ์ด๋ค ๋จํ๊ฐ ๋น์ ์ ๋ฐฐ์ ํ๋์ง ์๋ ค ์ฃผ์ธ์.
- UFO ์ ํ๊ฐ ๋น์ ์ ๊ฒ๋จน๊ฒ ํ๋์ง ์๋ ค ์ฃผ์ธ์.
์ด์ ์ด๊ฒ์ด โ๊ทธ๋ฅ ๊ฐ๋จํ ์คํโ์ด์๋ค๋ ์ฒํ๋ฉด์ ์ํด๋ฅผ ๊ตฌํฉ๋๋ค.
โ Ishant ๐ค


