Love2D ์“ฐ๊ฒŒ ๋œ ์ด์•ผ๊ธฐ

๊ฐ‘์ž๊ธฐ ์ด๋Ÿฐ ์ด์•ผ๊ธฐ๋ฅผ ๊บผ๋‚ด์„œ ๋†€๋ž„ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ ์–ด์ œ ๋งŒ๋“ค๋˜๊ฑฐ ์‹คํŒจํ–ˆ๋‹ค... (https://gall.dcinside.com/game_dev/157371) ๋ฒ„๊ทธ๋ฅผ ์žก์•„๋„ ๋”ด ๊ณณ์—์„œ ๋‹ค์‹œ ๋ฒ„๊ทธ๊ฐ€ ํŠ€์–ด๋‚˜์˜ค๋Š” ์ƒํ™ฉ์— ๋ชป์ด๊ฒจ ๊ฒฐ๊ตญ ๊ธฐ์กด์— ์žˆ๋˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์“ฐ๊ธฐ๋กœ ํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋ฒˆ์—๋Š” Love2D ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ๋ฅผ ์จ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์‚ฌ์‹ค CPU ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋‹ˆ ๋ญ๋‹ˆ ํ•˜๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ๋‹ค ๊ด€๋ จ ์žˆ์–ด์„œ ํ•˜๋Š” ์†Œ๋ฆฌ๋‹ค.

๋•Œ๋Š” 2024๋…„๋„ 2์›” ์ค‘์ˆœ, ๋‚œ ์–ด๋–ค ๋ฌผ์งˆ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฒŒ์ž„์—์„œ CPU ์„ค๊ณ„ํ•˜๋Š” ์ผ์„ ์—ฐ๊ตฌํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ด๋ฏธ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ CPU๊ฐ€ ๋‚˜์™€์žˆ์—ˆ๊ณ , ์‹ฌ์ง€์–ด๋Š” ๊ฐœ๋ฐœ ๋„๊ตฌ์™€, SIMD๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ์„ธ์„œ๋„ ์กด์žฌํ•  ์ •๋„๋กœ ๊ธฐ์ˆ  ์ˆ˜์ค€์ด ๋†’์•˜๋‹ค. ํ•˜์ง€๋งŒ ์ „๋ถ€ ๊ฐ€์ƒ์˜ ๊ฒƒ๋“ค์ด๋ฉฐ ํ˜„์‹ค์˜ ๊ฒƒ๊ณผ ํ˜ธํ™˜๋˜๋Š” 32๋น„ํŠธ CPU๋งŒ ์—†์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํ˜„์‹ค์˜ CPU์™€ ํ˜ธํ™˜๋˜๋Š” 32๋น„ํŠธ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ ˆ์‹คํžˆ ํ•„์š”ํ•จ์„ ๋А๊ผˆ๊ณ  ๊ทธ๊ฑธ ์œ„ํ•œ ๊ธฐ์ˆ ์„ ์—ฐ๊ตฌํ•˜๊ณ  ์žˆ๋˜ ์ค‘์ด์˜€๋˜ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฒŒ์ž„ ๋‚ด์— ์กด์žฌํ•˜๋Š” ๋ฌผ์งˆ๋กœ๋Š” ์ฒ˜๋ฆฌ ๋‹จ์œ„์˜ ์ œ์•ฝ, ์ฒ˜๋ฆฌ ์†๋„์˜ ์ œ์•ฝ์ด ๋”ฐ๋ž๊ณ  ์ด๋ฅผ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•ด Lua๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ”„๋กœ์„ธ์„œ๋ฅผ ๋ชจ๋”ฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค.

๊ฐœ๋ฐœ์˜ ์ง„ํ–‰ ์†๋„๋Š” ๋งค์šฐ ๋นจ๋ž๋‹ค. 2์›” 17์ผ ์•„์นจ๋ถ€ํ„ฐ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ ๋ช…๋ น์–ด ํ•˜๋‚˜๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์„ฑ๊ณตํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ช…๋ น์–ด์˜ ์ฒ˜๋ฆฌ ์†๋„๋Š” 0.4 MHz๋‚˜ ๋˜์—ˆ๋‹ค. ์ž ๊น, ๋„ˆ๋ฌด ๋А๋ฆฐ๊ฑฐ ์•„๋‹Œ๊ฐ€? ๋ผ๊ณ  ํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ ์•„๋ฌด๋ฆฌ LuaJIT๋ผ๊ณ  ํ•ด๋„ ํƒœ์ƒ์ด Lua์ธ ์ด์ƒ ํ…Œ์ด๋ธ”์˜ ์ ‘๊ทผ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ๋ฌด์‹œํ•  ๋งŒํ•œ ์ˆ˜์ค€์ด ์•„๋‹ˆ๋‹ค.

๊ทธ ์ดํ›„๋กœ 5์ผ ๋™์•ˆ ์•„์นจ์— ์ผ์ฐ ์ผ์–ด๋‚˜์„œ ์ €๋…๊นŒ์ง€ ๊ฐœ๋ฐœํ•˜๋Š” ์กฐ๊ธˆ ๋ฌด๋ฆฌ์— ๊ฐ€๊นŒ์šด ์ผ์ •์„ ์†Œํ™”ํ•œ ๊ฒฐ๊ณผ, 2์›” 22์ผ์— ์ฒซ ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ํ•˜๋Š”๋ฐ ์„ฑ๊ณตํ•œ๋‹ค. ๊ทธ ์ดํ›„๋กœ๋„ ๊ณ„์† ๊ฐœ๋ฐœ์€ ํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋ฆด๋ฆฌ์ฆˆ๋Š” ํ•˜๊ณ  ์žˆ์ง„ ์•Š๋‹ค.

2์›” 17์ผ ์ด์ „์—๋Š” Lua์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ๋ชฐ๋ž๋‹ค. ํ•˜์ง€๋งŒ ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง€๊ธˆ์˜ ๋‚˜๋ฅผ ์žˆ๊ฒŒ ํ•ด์ค€ ์›๋™๋ ฅ์ด์ž ํž˜์ด์˜€๋‹ค. Lua๋ฅผ ์ด๋ ‡๊ฒŒ ๋‹จ์‹œ๊ฐ„์— ์ตํžˆ๊ณ  ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋ผ๊ณ  ์ƒ๊ฐ์„ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ๋„ ๊ทธ ํž˜์— ๋†€๋ผ๊ณค ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ Lua๋กœ ๊ฒŒ์ž„๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ฒŒ์ž„์˜ ๋ชจ๋”ฉ์„ ํ•˜๋Š”๋ฐ ์„ฑ๊ณตํ–ˆ์œผ๋‹ˆ ๊ฒŒ์ž„์„ ๋งŒ๋“ค ์ฐจ๋ก€์ธ ๊ฑด ๋‹น์—ฐํ•˜์ง€ ์•Š์€๊ฐ€? ์ด๋Š” ์›๋ž˜ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž ํ…ŒํฌํŠธ๋ฆฌ ์ค‘์— ํ•˜๋‚˜์ด๊ธฐ๋„ ํ•˜๊ณ .

๊ทธ๋Ÿฐ๋ฐ ๋ฌด์Šจ ๊ฒŒ์ž„ ์—”์ง„์„ ๊ณจ๋ผ์•ผ ํ• ๊นŒ? ๊ณ ๋ฏผ์— ๋น ์กŒ๋‹ค. Lua๋ฅผ ์“ฐ๋Š” ๊ฒŒ์ž„ ์—”์ง„์ด ๋„ˆ๋ฌด๋‚˜๋„ ๋งŽ์€ ๊ฑฐ๋‹ค. ๋‹น์žฅ ์•„๋Š” ๊ฒƒ๋งŒ ์ด์•ผ๊ธฐ ํ•˜๋ฉด Defold, Solar2D, Roblox(์ด๊ฑด ๊ฑฐ์˜ ๊ฒŒ์ž„์— ๊ฐ€๊น๋‹ค.) 3๊ฐœ๊ฐ€ ์žˆ๊ณ  ์ด์™ธ์—๋„ ๋งŽ๋‹ค. Love2D๋„ ๊ทธ ์ค‘์— ํ•˜๋‚˜์˜€๋‹ค.

๊ฒฐ๊ตญ ๊ฒŒ์ž„ ์—”์ง„ ๋ณ„๋กœ API ๋ฌธ์„œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฝ์–ด๋ณด๋ฉด์„œ ์–ด๋–ค ๊ฒŒ์ž„ ์—”์ง„ ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋‚˜์—๊ฒŒ ๊ฐ€์žฅ ์ž˜ ๋งž์„๊นŒ ๊ณ ๋ฏผํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๋ˆˆ์— ๋“ค์–ด์˜จ๊ฒŒ Love2D์˜€๊ณ ,

1. C++์ด๋ž‘ SDL2๋ฅผ ์“ด๋‹ค. (๋‚ด๊ฐ€ ํ•˜๋˜ ๊ฒŒ์ž„์ด๋ž‘ ๋˜‘๊ฐ™๋‹ค.)
2. ์œ ์ผํ•˜๊ฒŒ ๋ณ‘๋ ฌํ™”๋ฅผ ์œ„ํ•œ ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•œ๋‹ค. (์ถ”ํ›„์— ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ฐ€๋Šฅ์„ฑ๋„ ํฌ๋‹ค.)
3. ์–ด์ฉŒ๋‹ค๋ณด๋‹ˆ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊น”๋ ค์žˆ๊ณ , ํŠœํ† ๋ฆฌ์–ผ์„ ๋๋งˆ์ณค๋‹ค. (? ์ž ์‹œ๋งŒ์š”)

๊ทธ๋ ‡๊ฒŒ ํ•ด์„œ Love2D๋กœ ๊ฒฐ์ •๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

์‚ฌ์‹ค ์ด ๊ฒŒ์ž„ ์—”์ง„์˜ ์กด์žฌ ์ž์ฒด๋Š” ์•„์ฃผ ์˜ค๋ž˜์ „๋ถ€ํ„ฐ ์ธ์ง€ํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€์‹ฌ์ด ๊ฐ”์—ˆ๋‹ค๋Š” ๊ฒƒ๋„ ๊ฐ€์žฅ ํฐ ์ด์œ ์ค‘์— ํ•˜๋‚˜์ด๋‹ค. Lua๋ผ๋Š” ์–ธ์–ด๋ฅผ ์•Œ๊ฒŒ ๋œ ์ดํ›„๋ถ€ํ„ฐ ์ธ์ง€๋ฅผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ์˜ ๋ช‡๋…„์„ ์•Œ์•˜๋‹ค๊ณ  ๋ด๋„ ๋œ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ๋งˆ์นจ ์ข‹์€ ์‹œ๊ธฐ์— ๋ฒ„์ „์—…์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ํ™œ๋ฐœํ•œ Love2D๋กœ ๊ฐ€๋Š”๊ฒŒ ์ตœ์„ ์˜ ์„ ํƒ์ด๊ธฐ๋„ ํ–ˆ๋‹ค.

๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ๊ฟˆ์€ ์˜›๋‚ ๋ถ€ํ„ฐ ์žˆ์—ˆ๊ธฐ์—(๊ฑฐ์˜ ์ดˆ๋“ฑํ•™๊ต ์‹œ์ ˆ๋ถ€ํ„ฐ) ์•„์ง ์‹œ์ž‘๋„ ์•ˆํ–ˆ์ง€๋งŒ ๋ฒŒ์จ๋ถ€ํ„ฐ ๊ฟˆ์„ ์ด๋ฃฌ ๊ฒƒ ๊ฐ™๋‹ค.

์—๋ฎฌ๋ ˆ์ดํ„ฐ ์ฝ”๋“œ ์ค‘์— ์–ด๋””์„œ ๊ฐ€์ ธ์˜จ ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ ์•Œ๊ณ  ๋ณด๋‹ˆ Love2D ์ธ๋‹ˆ ๊ฐœ๋ฐœ์ž๋„˜์ด ๋งŒ๋“  ์ฝ”๋“œ์ž„ ใ„ทใ„ท ์–ด์ฉŒ๋ฉด Love2D๋Š” ์šด๋ช…์˜ ๋งŒ๋‚จ์ผ์ˆ˜๋„ ์žˆ๋‹ค. ๋‚˜์ค‘์— ๋งŒ๋‚˜๋ฉด ๊ฐ์‚ฌํ•˜๋‹ค๊ณ  ์ „ํ•ด์•ผ์ง€... (https://github.com/icyselec/tptriscv/blob/main/tptriscv/classes/Integer.lua : 42์ค„๋ถ€ํ„ฐ)