์ธ๋ฆฌ์ผ ๋ธ๋ฃจํ๋ฆฐํธ ์์ฒด๊ฐ ๊ฐ์ํ๋ก ๋๋ฆฌ๋๊ฑฐ๋ผ ๋ฃจํ๊ฐย ์กด๋๊ฒ ๋๋ ค.ย ๊ทธ๋์ ์ดํฐ๋ ์ด์
๋ค์ด๊ฐ๋ ๋ถ๋ถ์ย c++๋ก ์ง์ผํ๊ณ .
๋ญ ์๊ณ ๋ ์ง๊ป์ด์ง. ๊ทธ๊ฑธ ํผํ๋ ค๊ณ ๋ค์ดํฐ๋ธํ๋ํ๋๊ฑด๋ฐ 4์์๋๊ฑธ 5์์๋ ์ง์๋๊ณ ๋์ค์ ์
๋ํ๋ค๊ณ ํด์ ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ๋
ผ๋๊ฑฐ๋ฆฌ์๊ตฌ๋ง.
ํ์ฌ๊ฐ ์ ๋ฅ์๋ค ์์ค์์๋ ๋ญ ๋ง์ถฐ์ ์๊ธฐํด์ค๋ ์๋์ผ๋นผ์ก ๊ฑฐ๋ฆฌ๋ฉด์ย ์ธ๋ฉดํ๋ค๋๊น.
์ข๋๋ชจ๋ฅด๊ฒ์ผ๋ฉด
https://ikrima.dev/ue4guide/engine-programming/blueprints/bp-virtualmachine-overview/
๋ผ๋์ฝ์ด๋ณด๋ ๊ฐ ๋จธ์ ๋ฆฌ ์ ๋ฅ์ ์์ค์์ ์์๋ค์ด๋จน์์ง๋ ์๋ฌธ์ด์ง๋ง.
https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/Blueprints/TechnicalGuide/NativizingBlueprints/
https://forums.unrealengine.com/t/any-plan-to-improve-blueprint-vm-performance/120443
๊ณ ์ํ ๋ด๊บผ ์ง๋ฌธ์ข ๋๋ตํด์ค ใ ใ ์ ๋ํฐ cpu ์ ์ ์จ ๋ฎ์๋ฌธ์ ์ด๊ฑฐ ์์ด๋ฐ๊ฑด์ง ๋ชจ๋ฅด๊ฒ ์ด
์ง๊ฐ ์ค ๋งํฌ๊ฐ ๋ญ์๋ฆฌํ๋์ง๋ ๋ชจ๋ฅด๊ณ ๊ฐ์ ธ์๋คใ ใ ใ ใ ใ ใ ใ ์ด๊ฒ ๋ ๋ง๋๋ก ์ธ๋ฆฌ์ผ์ด ๊ฐ์๋จธ์ ์์์ ๋์๊ฐ๋ค๋ ๊ฐ์๋ฆฌ๋? ๋ธ๋ฃจํ๋ฆฐํธ๊ฐ ์๋ฐ ๋น์ทํ๊ฒ ๊ตฌํ๋์ด์๋จ ์๋ฆฌ์งใ ใ ใ ์๋ํฐ๋ ํจํค์งํ ํ๋ก๊ทธ๋จ์ ์ต์ ํ์ฐจ์ด๋์ ์ข๋ ์๊ด์๋ ๋ถ๋ถ์ธ๋ฐ ์๋๋ฐ๋ ๊ธ์ด์์ ์ง๋ํ๋๊ฒ ์ง์ง ๊ฐ๋ณ์ ๊ฐ๋ค
๋ญ? ์๋ํฐ์์ ๋๋ฆฌ๋๊ฑด ๊ฐ์ํ๋์ด์์ด์ ๋๋ ค? ๋ณ์ ์ใ ใ ใ ใ ใ ๋ธ๋ฃจํ๋ฆฐํธ๊ฐ ๊ฐ์๋จธ์ ์ผ๋ก ๋์๊ฐ๋ฉด ์๋ํฐ๋ ํจํค์งํ๊ฑฐ๋ ๋๊ฐ์์ผ์งใ ใ ใ ใ ใ
๋๊ฐ ์ฌ๋ฆฐ ๋งํฌ๋ ๋ธํ๋ฅผ ๋ค์ดํฐ๋ธ C++๋ก ๋ณํํ๋ ๊ฐ์ด๋์ง ๋ญ ์ข๋ ์๊ตฌ๋ง ๋ณด์ด๋๊ฑฐ ๋ฌด์ง์ฑ์ผ๋ก ๊ธ์ด์๋คใ ใ ์ข๋ณ์ ์ ๋ฅ์์๋ผใ ใ
์์ ์์ผ๋ฉด ๋ ผ๋ฆฌ๋ก ๋ฐ๋ฐํ๋ผ๊ณ . ํ๊ธ์ฎ๊ธฐ๋๊ฑฐ ๊ฐ์ง๊ณ ๊ผฌํฌ๋ฆฌ์ก์ง๋ง๊ณ ๋ฉ์ฒญ์. ์ธ๋ฆฌ์ผ ๋ธ๋ฃจํ๋ฆฐํธ์ VM๋๋ฌธ์ ๊ฐ์ค๋ ๋น์ฉ์ด ์๋ค๋ ๋ด์ฃผ์ฅ์ด ํ๋ ธ๋?? ๋๋ตํด๋ด. ๋ธํ์ VM๋น์ฉ์ด ๋ค์ด๊ฐ๋ค๋๊ฒ ํ๋ ธ๋์ง ์ํ๋ ธ๋์ง ๋ฑ๋งํด.
ใ ใ (220.80) ์ญ์ ์น์ ๋ฅ์๋ผ c++๋ก ๋ณํํ๋ ๊ทธ์ค๋ช ์ '๋ธ๋ฃจํ๋ฆฐํธ VM๋๋ฌธ์ ๋น์ฉ์ด ์ถ๊ฐ๋๋ค. ๊ทธ๋๋ฌธ์ ๋ค์ดํฐ๋ธํ๋ฅผ ์ด๋ค' ๋ผ๋ ์ค๋ช ์ ์ฝ์ง๋ ๋ชปํ์ง? ใ ใ ใ ใ ใ ใ ใ ๋นจ๋ฆฌ ๋ฐ๋ฐํด๋ด. ๋๋ง๊ฐ์ง๋ง๊ณ ใ ใ ใ
When teams script gameplay with Blueprints, they're creating new UClasses without having to write or compile native C++ code. As a result, Blueprints work well for game teams that don't have the technical expertise of native C++ programmers. The reason that non-programmers can work strictly
with Blueprints, is because Blueprint nodes run in a virtual machine (VM), enabling them to call native C++ functions. Unfortunately, relying on a VM that translates Blueprints into native C++ code comes at a cost; and as you can imagine, translating Blueprint nodes into native C++ functions can potentially slow your game's performance per frame.
๋ณ์ ์ ๋๊ฐ ์๋ํฐ ํ๋ ์ ๋จ์ด์ง๋ค๋ ๊ธ์ ์ฌ๋ฆฐ ๋ต๋ณ์ด๋ฉด์ ๋ด์๋ฆฌ ์กด๋ํ๋ค ๋ธํ ๊ฐ์ํ๊ฐ ์ฑ๋ฅ ๋จน๋๋ค๋๊ฑฐ๋ ์๋ํฐ ํ๋ ์ ์๋์จ๋ค๋๊ฑฐ๋ ๋ญ์๊ด์ด์ผ ๋ณ์ ์
๋ญ ํจํค์งํ๋ฉด์ ๋ธํ๋ฅผ ๋ค์ดํฐ๋ธํํ๊ธฐ๋ผ๋ ํ ๊ฑฐ๊ฐ๋? ์ดํด๋ชปํ๊ฑด ๋์ผ ๋ณ์ ์
ใ ใ (220.80) ใ ใ ์ ๋ด ๋ ๋ด์๋ฆฌํ๋ฉด์ ๋๋ตํํผํ์ง??? ๋ธ๋ฃจํ๋ฆฐํธVM๋๋ฌธ์ ์๋ํฐ์์์๋ ํ๋ ์ ํ์ฐธ ๋๋์ค๋๊ฑด๋ฐ ๋ ๋ด์๋ฆฌํ์ง??? ์ ๋ฅ์์๋ผ ํ์ ๋ ผ๋ฆฌ๋์ ๋ฉ๋ฆฌํ๊ณ ๋๋ง์ด๋ ๋ค๋ ๋ผ ใ ใ ใ ใ
ใ ใ (220.80) ํจํค์งํ๋ฉด ํ๋ ์ ๋์๋์ค๊ณ c++๋กํ๋ฉด ํจํค์ง๋ฒ์ ผ์์์ ๋ธํVM๋น์ฉ๋ ์์ด์ ๋ ์๋์ค๋๊ฑฐ์ผ ใ ์
ํ ๋ณ์ ์๋ผ... ๋ง์ ์ข๋ ๋ชป์์์ณ๋จน๋ค ๋ธํ๋ ์๋ํฐ๋ ํจํค์งํ๊ฑฐ๋ ๋๊ฐ์ด ์ฑ๋ฅ์ณ๋จน๋๋ค๊ณ ๋๊ฐ๋ฆฌ ๋น์๋ผ์ผ ๋ง์ฅ๋์ณํ๊ณ ์๋ค ๋คํต์ ์กด๋ ์ณ๋ง์์ผ ๊ฐ์๋ฆฌ๋ฅผ ์ํ์ง
์จ๋ฐ ๋ง ๋๋ฒ์ณํ๊ฒ ํ์ง ์ข ๋ง๋ผ ์๋ํฐ์์ ๋ก๋์จ ๋จ์ด์ ธ์ ์ฑ๋ฅ ์๋์จ๋ค๋ ๊ธ์ ๊ฐ์ํ ใ ใ ในํ๋ฉด์ ๊ฐ์๋ฆฌํด๋๊ณ ๋ณ์
๊ฑ ๋๊ธ๋ง๊ฐ ๊ธ ์ดํดํ๋ ๋ฐฉ๋ฒ์ ๋ชป๊ฐ๋ฅด์น๊ฑฐ๊ฐ์๋ฐ ํ์ ๊ทธ๋ฌ๊ณ ๋ณ์ ๊ฐ์ ๊ธ๋ง ์ธ๊ณ ์ด์๋ผ ใ ใ ๋ณ๋จน๊ธํด์ผ์ง
ใ ใ ใ 220๋ง์ ์ ๋ ๋๋ต๋ชปํ๊ณ ๋ด์๋ฆฌํ๋ค
๋ธ๋ฃจํ๋ฆฐํธ ํจ์๋ค๋ ์ด์ฐจํผ cpp๋ก ๋ถ๋ฆ funcmap ์ ํจ์ ํฌ์ธํฐ ๋ฃ์ด๋๊ณ ๊ฑฐ๊ธฐ์ ์ฐพ์์ ํธ์ถ ํ๋์์ผ๋ก ๋์๊ณ ๊ทธ๋ฐ ์ผ๋ จ์ ๊ณผ์ ์ด ์ค๋ฒํค๋๋๊ฑฐ์