Skip to content

boostcampwm-snu-2026-1/microgames-mingyuan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

162 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์บฃํƒ€์›Œ ์˜ค๋ฅด๊ธฐ

์บฃํƒ€์›Œ ์˜ค๋ฅด๊ธฐ ๋กœ๊ณ 

๋ฐ•์ž์— ๋งž์ถฐ ์Ÿ์•„์ง€๋Š” ์งง์€ ๋ฏธ์…˜์„ ํ•ด๊ฒฐํ•˜๊ณ , ๋ชฉ์ˆจ์„ ์ง€ํ‚ค๋ฉฐ ๋” ๋†’์€ ์ธต๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ€๋Š” ์›น ๋งˆ์ดํฌ๋กœ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค.

Next.js React TypeScript Tailwind CSS

ํ”Œ๋ ˆ์ด ์ค‘์ธ ๋ฉ”์ธ ํ™”๋ฉด ์„ฑ๊ณต ๊ฒฐ๊ณผ ํ™”๋ฉด ์‹คํŒจ ๊ฒฐ๊ณผ ํ™”๋ฉด

ํ•œ๋ˆˆ์— ๋ณด๊ธฐ

์บฃํƒ€์›Œ ์˜ค๋ฅด๊ธฐ๋Š” WarioWare ์Šคํƒ€์ผ์˜ ์ดˆ๋‹จ๊ธฐ ๋ฏธ์…˜์„ Next.js์™€ Canvas๋กœ ๊ตฌํ˜„ํ•œ ๋ฆฌ๋“ฌํ˜• ์›น ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค. ๋งค ๋ผ์šด๋“œ๋งˆ๋‹ค ์กฐ์ž‘๋ฒ•์ด ๋จผ์ € ์ œ์‹œ๋˜๊ณ , ํ”Œ๋ ˆ์ด์–ด๋Š” ์ œํ•œ๋œ ๋ฐ•์ž ์•ˆ์— ๊ณผ์ œ ์ œ์ถœ, ์˜ค์นด๋ฆฌ๋‚˜ ์—ฐ์ฃผ, ์•Œ๊นŒ๊ธฐ, ํฌ์ผ“๋ชฌ ์ด๋ฆ„ ๋งžํžˆ๊ธฐ, ์ „์„  ์—ฐ๊ฒฐ, ๊ฐ€์‹œ ํ”ผํ•˜๊ธฐ ๊ฐ™์€ ๋ฏธ์…˜์„ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ญ๋ชฉ ๋‚ด์šฉ
์žฅ๋ฅด ๋ฐ•์ž ๊ธฐ๋ฐ˜ ๋งˆ์ดํฌ๋กœ๊ฒŒ์ž„
ํ”Œ๋žซํผ Web
๋ผ์šด๋“œ ๊ตฌ์กฐ ์กฐ์ž‘๋ฒ• ์•ˆ๋‚ด -> ๋ฏธ์…˜ -> ์„ฑ๊ณต/์‹คํŒจ ํŒ์ •
์„ ํƒ ๊ทœ์น™ ์„ธ์…˜ ๋žœ๋ค bag, ์ง์ „ ๊ฒŒ์ž„ ์ฆ‰์‹œ ๋ฐ˜๋ณต ๋ฐฉ์ง€
๋ณด์Šค ๊ทœ์น™ 12๋ผ์šด๋“œ๋งˆ๋‹ค ๋ณด์Šค microgame pool์—์„œ ๋ผ์šด๋“œ ์„ ํƒ
์ €์žฅ localStorage ์ตœ๊ณ  ๊ธฐ๋ก ๋ฐ ๋„๊ฐ ๋ฐœ๊ฒฌ ๊ธฐ๋ก ์ €์žฅ
์—์…‹ public/games/*/images, public/games/*/sounds

๊ฒŒ์ž„ ํ๋ฆ„

์—์…‹ ํ”„๋ฆฌ๋กœ๋“œ
  -> ๋ฉ”์ธ ํ™”๋ฉด
  -> ์กฐ์ž‘๋ฒ• ์•ˆ๋‚ด
  -> ์‹œ์ž‘ ํ”„๋กฌํ”„ํŠธ
  -> ๋ฐ•์ž ์ œํ•œ ๋ฏธ์…˜
  -> ์„ฑ๊ณต / ์‹คํŒจ ํŒ์ •
  -> ์†๋„ ์ฆ๊ฐ€ ๋˜๋Š” ๋ชฉ์ˆจ ํšŒ๋ณต
  -> 12๋ผ์šด๋“œ๋งˆ๋‹ค ๋ณด์Šค ๋ผ์šด๋“œ
  -> ๊ฒŒ์ž„ ์˜ค๋ฒ„ ๋ฐ ์ตœ๊ณ  ๊ธฐ๋ก ์ €์žฅ

๋งˆ์ดํฌ๋กœ๊ฒŒ์ž„ ๋ชฉ๋ก

๊ฒŒ์ž„ ๋ฏธ์…˜ ์กฐ์ž‘ ๋ฐ•์ž ์ข…๋ฅ˜
๊ณผ์ œ ์ œ์ถœ ๊ณผ์ œ๋ฅผ ์ œ์ถœํ•ด๋ผ! ๋งˆ์šฐ์Šค ํด๋ฆญ 8 ์ผ๋ฐ˜
๋ ˆ์ดํŠผ ๊ต์ˆ˜์™€ ์ด์ƒํ•œ ๋งˆ์„ ๊ฐ™์€ ๋ชจ์–‘์„ ์ฐพ์•„๋ผ! ์ˆซ์žํ‚ค 8 ์ผ๋ฐ˜
๋ฆฌ๊ทธ ์˜ค๋ธŒ ๋ ˆ์ „๋“œ ์ฑ”ํ”ผ์–ธ์„ ๋ฐดํ•ด๋ผ! ๋งˆ์šฐ์Šค ํด๋ฆญ 12 ์ผ๋ฐ˜
๋ฆฌ๋“ฌ ์„ธ์ƒ ์ œ๋•Œ ๋ฉˆ์ถฐ๋ผ! ๋งˆ์šฐ์Šค hold 8 ์ผ๋ฐ˜
๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ ๋‹ค์ด์•„๋ชฌ๋“œ๋ฅผ ์บ๋ผ! ๋งˆ์šฐ์Šค hold 8 ์ผ๋ฐ˜
๋ง๋ž‘๋ง๋ž‘ ๋‘๋‡Œ๊ต์‹ค ๋ธ”๋ก์€ ๋ช‡ ๊ฐœ? ์ˆซ์žํ‚ค 12 ์ผ๋ฐ˜
๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ ์ž…๋ ฅํ•ด๋ผ! ํ•œ๊ธ€ ํ‚ค๋ณด๋“œ 12 ์ผ๋ฐ˜
๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ ๋ฃฌ ์ˆœ์„œ๋Œ€๋กœ ์ž…๋ ฅํ•ด๋ผ! ๋ฐฉํ–ฅํ‚ค 8 ์ผ๋ฐ˜
๋ชจ๋‘์˜ ๋งˆ๋ธ” ํฐ ์ˆ˜๋ฅผ ๊ตด๋ ค๋ผ! ๋งˆ์šฐ์Šค hold 8 ์ผ๋ฐ˜
๋ชจ์—ฌ๋ด์š” ๋™๋ฌผ์˜ ์ˆฒ ์ฐ์–ด๋ผ! ๋งˆ์šฐ์Šค ํด๋ฆญ 8 ์ผ๋ฐ˜
๋ฏธ๋‹ˆ๊ฒŒ์ž„EX ๊ณฐ์„ ์ž˜๋ด๋ผ! ์ˆซ์žํ‚ค 16 ์ผ๋ฐ˜
๋ณ„์˜ ์ปค๋น„: ์šธํŠธ๋ผ ์Šˆํผ ๋””๋Ÿญ์Šค ๋นจ์•„๋“ค์—ฌ๋ผ! ๋งˆ์šฐ์Šค hold 8 ์ผ๋ฐ˜
๋ถˆ๊ณผ ์–ผ์Œ์˜ ์ถค ๋ฐ•์ž์— ๋งž์ถฐ ๋ˆŒ๋Ÿฌ๋ผ! ์ŠคํŽ˜์ด์Šค๋ฐ” 8 ์ผ๋ฐ˜
์‚ฌ๊ณผ๊ฒŒ์ž„ 10์„ ๋งŒ๋“ค์–ด๋ผ! ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ 12 ์ผ๋ฐ˜
์ˆ˜๋ฐ•๊ฒŒ์ž„ ์ˆ˜๋ฐ•์„ ๋งŒ๋“ค์–ด๋ผ! ๋ฐฉํ–ฅํ‚ค + ์ŠคํŽ˜์ด์Šค๋ฐ” 8 ์ผ๋ฐ˜
์Šˆํผ ๋งˆ๋ฆฌ์˜ค ์ฝ”์ธ์„ ์ •ํ™•ํžˆ ๋ชจ์•„๋ผ! ์ŠคํŽ˜์ด์Šค๋ฐ” 8 ์ผ๋ฐ˜
์Šˆํผ๋งˆ๋ฆฌ์˜ค ๊ฐค๋Ÿญ์‹œ ์Šคํƒ€๊ตฌ์Šฌ์„ ๋ชจ์•„๋ผ! ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ 12 ์ผ๋ฐ˜
์Šค๋„์ฟ  ๋นˆ์นธ์„ ์ฑ„์›Œ๋ผ! ์ˆซ์žํ‚ค 12 ์ผ๋ฐ˜
์•Œ๊นŒ๊ธฐ ์  ๋Œ์„ ๋ฐ€์–ด๋‚ด๋ผ! ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ 8 ์ผ๋ฐ˜
์–ด๋ชฝ์–ด์Šค ์—ฐ๊ฒฐํ•ด๋ผ! ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ 14 ์ผ๋ฐ˜
์–ธ๋”ํ…Œ์ผ ํ”ผํ•ด๋ผ! ๋ฐฉํ–ฅํ‚ค 8 ์ผ๋ฐ˜
์˜ค๋ชฉ ํฐ๋Œ์„ ๋†“์•„ ์ด๊ฒจ๋ผ! ๋งˆ์šฐ์Šค ํด๋ฆญ 8 ์ผ๋ฐ˜
์ ค๋‹ค์˜ ์ „์„ค: ์Šค์นด์ด์›Œ๋“œ ์†Œ๋“œ ๋™๊ทธ๋ผ๋ฏธ๋ฅผ ๊ทธ๋ ค๋ผ! ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ 12 ์ผ๋ฐ˜
์ ค๋‹ค์˜ ์ „์„ค: ์‹œ๊ฐ„์˜ ์˜ค์นด๋ฆฌ๋‚˜ ์—ฐ์ฃผํ•ด๋ผ! ๋ฐฉํ–ฅํ‚ค + ์ŠคํŽ˜์ด์Šค๋ฐ” 12 ์ผ๋ฐ˜
์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ๋Œ€์‹œ ๊ฐ€์‹œ๋ฅผ ํ”ผํ•ด๋ผ! ์ŠคํŽ˜์ด์Šค๋ฐ” 12 ์ผ๋ฐ˜
์ฟ ํ‚ค๋Ÿฐ: ์˜ค๋ธ๋ธŒ๋ ˆ์ดํฌ ๋‹ฌ๋ ค๋ผ! ๋ฐฉํ–ฅํ‚ค + ์ŠคํŽ˜์ด์Šค๋ฐ” 12 ์ผ๋ฐ˜
์ฟ ํ‚ค๋Ÿฐ: ํ‚น๋ค ์Šคํ‚ฌ์„ ๋ฐœ๋™ํ•ด๋ผ! ์ˆซ์žํ‚ค 8 ์ผ๋ฐ˜
ํฌ๋ ˆ์ด์ง€ ์•„์ผ€์ด๋“œ ๋ฌผํ’์„ ์„ ์„ค์น˜ํ•ด๋ผ! ๋ฐฉํ–ฅํ‚ค + ์ŠคํŽ˜์ด์Šค๋ฐ” 12 ์ผ๋ฐ˜
ํฌ๋กฌ ๊ณต๋ฃก๊ฒŒ์ž„ ์ ํ”„ํ•ด๋ผ! ์ŠคํŽ˜์ด์Šค๋ฐ” 8 ์ผ๋ฐ˜
ํ…ŒํŠธ๋ฆฌ์Šค 4์ค„ ์—†์• ๋ผ! ๋ฐฉํ–ฅํ‚ค + ์ŠคํŽ˜์ด์Šค๋ฐ” 12 ์ผ๋ฐ˜
ํฌ์ผ“๋ชฌ์Šคํ„ฐ ์ด ํฌ์ผ“๋ชฌ์˜ ์ด๋ฆ„์€? ํ•œ๊ธ€ ํ‚ค๋ณด๋“œ 12 ์ผ๋ฐ˜
ํฌ์ผ“๋ชฌ ์นด๋“œ ๊ฒŒ์ž„ Pocket ๋งž๋Š” ํƒ€์ž… ์นด๋“œ๋ฅผ ๋‚ด๋ผ! ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ 12 ์ผ๋ฐ˜
ํ ๋ฒ„ํ…จ๋ผ! ๋ฐฉํ–ฅํ‚ค 8 ์ผ๋ฐ˜
ํ”Œ๋ž˜ํ”ผ๋ฒ„๋“œ ํŒŒ์ดํ”„๋ฅผ ํ”ผํ•ด๋ผ! ์ŠคํŽ˜์ด์Šค๋ฐ” 8 ์ผ๋ฐ˜
ํ”ผ์•„๋…ธ ์—ฐ์ฃผํ•ด๋ผ! ์ˆซ์žํ‚ค 10 ์ผ๋ฐ˜
ํ•œ์ปด ํƒ€์ž์—ฐ์Šต ๋‹จ์–ด๋ฅผ ์ž…๋ ฅํ•ด๋ผ! ํ•œ๊ธ€ ํ‚ค๋ณด๋“œ 12 ์ผ๋ฐ˜
Baba Is You ๊นƒ๋Œ€์— ๋„๋‹ฌํ•ด๋ผ! ๋ฐฉํ–ฅํ‚ค 8 ์ผ๋ฐ˜
Fire Boy and Water Girl ๊ฑด๋„ˆ๊ฐ€๋ผ! ๋ฐฉํ–ฅํ‚ค 8 ์ผ๋ฐ˜
Wii Sports A์™€ B๋ฅผ ๋ˆŒ๋Ÿฌ๋ผ! ํ•œ๊ธ€ ํ‚ค๋ณด๋“œ 8 ์ผ๋ฐ˜
2048 32๋ฅผ ๋งŒ๋“ค์–ด๋ผ! ๋ฐฉํ–ฅํ‚ค 36 ๋ณด์Šค
๋™๋ฌผ๋†์žฅ ๋‹จ์–ด๋ฅผ ๊ฑฐ๊พธ๋กœ ์จ๋ผ! ํ•œ๊ธ€ ํ‚ค๋ณด๋“œ 36 ๋ณด์Šค
์นดํŠธ๋ผ์ด๋” ์™„์ฃผํ•ด๋ผ! ๋ฐฉํ–ฅํ‚ค 36 ๋ณด์Šค
ํ• ๋ฆฌ๊ฐˆ๋ฆฌ ๊ณผ์ผ์ด 5๊ฐœ์ผ ๋•Œ ์ข…์„ ์ณ๋ผ! ๋งˆ์šฐ์Šค ํด๋ฆญ 36 ๋ณด์Šค

ํ”Œ๋ ˆ์ด ๊ฐ๊ฐ

  • ๊ฒŒ์ž„๋ณ„ BGM์ด ๋ผ์šด๋“œ ๋ฐ•์ž์— ๋งž์ถฐ ์žฌ์ƒ๋ฉ๋‹ˆ๋‹ค.
  • ์„ฑ๊ณต, ์‹คํŒจ, ์ฑ„๊ตด, ์ „์„  ์—ฐ๊ฒฐ, ์ ํ”„ ๊ฐ™์€ ํ–‰๋™์— SFX๊ฐ€ ๋ถ™์Šต๋‹ˆ๋‹ค.
  • ๋ชฉ์ˆจ์ด ์‚ฌ๋ผ์ง€๊ฑฐ๋‚˜ ์ƒˆ๋กœ ์ƒ๊ธธ ๋•Œ ์‹ค์ œ ๊ฐ’ ๋ณ€ํ™”์— ๋งž์ถฐ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์žฌ์ƒ๋ฉ๋‹ˆ๋‹ค.
  • ํ•œ๊ธ€ IME ์ž…๋ ฅ์„ ๊ณ ๋ คํ•ด Pokemon, Maplestory, Hancom, AnimalFarm typing game์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์ „์šฉ ๊ฒฝ๋Ÿ‰ ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์œผ๋กœ ์•Œ๊นŒ๊ธฐ ์ถฉ๋Œ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • canvas ๊ฒŒ์ž„์€ ๊ฐ ๋ผ์šด๋“œ๋งˆ๋‹ค remount๋˜์–ด ์ด์ „ ์ƒํƒœ๊ฐ€ ๋‹ค์Œ ๋ผ์šด๋“œ๋กœ ์ƒˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฒŒ์ž„ ๋„๊ฐ

  • ํ”Œ๋ ˆ์ดํ•œ ๋งˆ์ดํฌ๋กœ๊ฒŒ์ž„์€ ๋„๊ฐ์— ๋ฐœ๊ฒฌ ์ƒํƒœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐœ๊ฒฌํ•˜์ง€ ์•Š์€ ๊ฒŒ์ž„์˜ ์ œ๋ชฉ, ์กฐ์ž‘๋ฒ•, ์„ค๋ช…์€ ๊ฐ€๋ ค์ง„ ์ƒํƒœ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐœ๊ฒฌํ•œ ๊ฒŒ์ž„์€ ๋„๊ฐ ์นด๋“œ์—์„œ ์„ ํƒํ•ด ์—ฐ์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋„๊ฐ ์นด๋“œ๋Š” ํ™”๋ฉด ๋„ˆ๋น„์— ๋”ฐ๋ผ 1~3์—ด grid๋กœ ๋ฐฐ์น˜๋˜์–ด ๊ธด ๋ชฉ๋ก์˜ ์Šคํฌ๋กค์„ ์ค„์ž…๋‹ˆ๋‹ค.

์กฐ์ž‘ ์•ˆ๋‚ด

์ŠคํŽ˜์ด์Šค๋ฐ” ์กฐ์ž‘ ์•ˆ๋‚ด ๋ฐฉํ–ฅํ‚ค ์กฐ์ž‘ ์•ˆ๋‚ด ๋ฐฉํ–ฅํ‚ค์™€ ์ŠคํŽ˜์ด์Šค๋ฐ” ์กฐ์ž‘ ์•ˆ๋‚ด ๋งˆ์šฐ์Šค ํด๋ฆญ ์กฐ์ž‘ ์•ˆ๋‚ด ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ ์กฐ์ž‘ ์•ˆ๋‚ด ๋งˆ์šฐ์Šค ํ™€๋“œ ์กฐ์ž‘ ์•ˆ๋‚ด ์ˆซ์žํ‚ค ์กฐ์ž‘ ์•ˆ๋‚ด ํ•œ๊ธ€ ํ‚ค๋ณด๋“œ ์กฐ์ž‘ ์•ˆ๋‚ด

์กฐ์ž‘ ํƒ€์ž… ๊ธฐ๋ณธ ์กฐ์ž‘
space ์ŠคํŽ˜์ด์Šค๋ฐ”๋ฅผ ๋ˆŒ๋Ÿฌ ์ ํ”„, flap, ํƒ€์ด๋ฐ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
arrowKeys ๋ฐฉํ–ฅํ‚ค๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ํ™”๋ฉด์˜ ๋ฐฉํ–ฅ ์ง€์‹œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
arrowAndSpace ๋ฐฉํ–ฅํ‚ค์™€ ์ŠคํŽ˜์ด์Šค๋ฐ”๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
mouseClick ๋งˆ์šฐ์Šค๋กœ ์ •๋‹ต, ๋ฒ„ํŠผ, ์ข…, ๋ง ์œ„์น˜๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
mouseDrag ๋งˆ์šฐ์Šค๋ฅผ ๋ˆ„๋ฅธ ์ฑ„ ๋Œ์–ด์„œ ์—ฐ๊ฒฐ, ์„ ํƒ, ์กฐ์ค€, ๊ทธ๋ฆฌ๊ธฐ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
mouseHold ๋งˆ์šฐ์Šค๋ฅผ ๋ˆ„๋ฅธ ์ฑ„ ์œ ์ง€ํ•ด ๊ฒŒ์ด์ง€๋‚˜ ์ง„ํ–‰๋„๋ฅผ ์ฑ„์›๋‹ˆ๋‹ค.
koreanKeyboard ํ•œ๊ธ€ IME ์ž…๋ ฅ์œผ๋กœ ์ œ์‹œ๋œ ๊ธ€์ž๋‚˜ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
numberKeys ์ˆซ์žํ‚ค๋กœ ๋ณด๊ธฐ ๋ฒˆํ˜ธ, ๊ณฐ ๋ฒˆํ˜ธ, ๋ฉœ๋กœ๋”” ์Œ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ์Šคํƒ

์˜์—ญ ์‚ฌ์šฉ ๊ธฐ์ˆ 
App Next.js App Router, React 19
Language TypeScript
Style Tailwind CSS 4
Gameplay Canvas 2D, custom React hooks
Audio Web Audio API ๊ธฐ๋ฐ˜ BGM/SFX library
Assets ์ •์  image/sound files under public/
State ๋ผ์šด๋“œ ์ง„ํ–‰ hook, ์ž…๋ ฅ hook, ๊ธฐ๋ก ์ €์žฅ hook

Supabase ๋žญํ‚น ์„ค์ •

์ต๋ช… ๋žญํ‚น์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ submit_score RPC๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , /ranking ์„œ๋ฒ„ ํŽ˜์ด์ง€์—์„œ 60์ดˆ ์บ์‹œ๋œ Top 10์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.

NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=

Supabase์˜ anonymous role์€ rankings ์กฐํšŒ์™€ submit_score ์‹คํ–‰๋งŒ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ์ง์ ‘ ์“ฐ๊ธฐ๋Š” ์ฐจ๋‹จํ•˜๊ณ , RPC์—์„œ (game_id, player_id)๋ณ„ ์ตœ๊ณ  ์ ์ˆ˜๋งŒ ๊ฐฑ์‹ ํ•˜๋„๋ก ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

app/                     Next.js route์™€ ์ „์—ญ ์Šคํƒ€์ผ
components/game-flow/    ๋ฉ”์ธ ํ™”๋ฉด, ๋ผ์šด๋“œ ํ™”๋ฉด, ๊ฒฐ๊ณผ ํ™”๋ฉด, ๋ชฉ์ˆจ UI
data/                    ๋งˆ์ดํฌ๋กœ๊ฒŒ์ž„ registry, ์กฐ์ž‘๋ฒ•, preload asset ๋ชฉ๋ก
games/                   ๊ฐ microgame React canvas์™€ hook ๊ตฌํ˜„
hooks/                   ๋ผ์šด๋“œ ์ง„ํ–‰, ์ž…๋ ฅ, ๋ฆฌ๋“ฌ, ๊ธฐ๋ก ์ €์žฅ hook
lib/                     canvas helper์™€ BGM/SFX library
public/games/            ๊ฒŒ์ž„๋ณ„ image/sound asset
types/                   ๊ณต์œ  ํƒ€์ž… ์„ ์–ธ

์‹œ์ž‘ํ•˜๊ธฐ

npm install
npm run dev

๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ ์ฃผ์†Œ์—์„œ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

http://localhost:3000

์Šคํฌ๋ฆฝํŠธ

npm run dev           # Next.js ๊ฐœ๋ฐœ ์„œ๋ฒ„
npm run build         # ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ
npm run start         # ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„
npm run lint          # ESLint
npm run format        # Prettier ํฌ๋งทํŒ…
npm run format:check  # Prettier ๊ฒ€์‚ฌ

๋งˆ์ดํฌ๋กœ๊ฒŒ์ž„ ์ถ”๊ฐ€ํ•˜๊ธฐ

  1. games/์— <GameName>Game.tsx์™€ use<GameName>Game.ts๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  2. data/microgames.ts์— canvas, control, beatCount, startPrompt๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
  3. components/game-flow/MicrogameCanvas.tsx์— canvas route๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  4. ํ•„์š”ํ•œ asset์„ public/games/<game>/images ๋˜๋Š” public/games/<game>/sounds์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  5. data/preloadAssets.ts์™€ lib/bgmLibrary.ts์— preload, BGM, SFX ํ•ญ๋ชฉ์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
  6. custom input game์ด๋ฉด hooks/useMicrogameInput.ts์˜ generic clear ์ฒ˜๋ฆฌ์™€ ์ถฉ๋Œํ•˜์ง€ ์•Š๊ฒŒ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.
  7. MICROGAMES๋Š” ์ผ๋ฐ˜ ๊ฒŒ์ž„์„ ๊ฐ€๋‚˜๋‹ค์ˆœ์œผ๋กœ ๋จผ์ € ๋‘๊ณ , ๋ณด์Šค ๊ฒŒ์ž„์€ ๋งจ ์•„๋ž˜์—์„œ ๊ฐ€๋‚˜๋‹ค์ˆœ์œผ๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ฐœ์ธ ์‹คํ—˜์šฉ ๋น„๊ณต๊ฐœ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

About

๐Ÿ›— ๋ฏธ๋‹ˆ๊ฒŒ์ž„์„ 5์ดˆ์•ˆ์— ๋๋‚ด๋ฉด์„œ ์บฃํƒ€์›Œ๋ฅผ ์˜ค๋ฅด๋Š” ์ˆœ๊ฐ„ ๋ฐ˜์‘ํ˜• ๊ฒŒ์ž„ ๐Ÿ›—

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors