Ã¥¼Ò°³
¾ð¸®¾ó ¿£ÁøÀ¸·Î 3D À̸ӽúê ÄÜÅÙÃ÷ °³¹ß
¸ôÀÔÇü ½Ç°¨ ÄÜÅÙÃ÷(Immersive Contents) °³¹ßÀÚ¸¦ À§ÇÑ
¾ð¸®¾ó ¿£ÁøÀÇ ¸ðµç °Í
¹Ì±¹ ¿¡ÇÈ°ÔÀÓÁî »ç°¡ °³¹ßÇÑ ¸®¾óŸÀÓ 3D Á¦ÀÛ Ç÷§ÆûÀ¸·Î ¸ôÀÔÇü ½Ç°¨ ÄÜÅÙÃ÷¸¦ Á¦ÀÛÇÏ´Â ¾ð¸®¾ó ¾ðÁø(Unreal Engine)Àº °³¹ßÀÚ¶ó¸é ¸ÞŸ¹ö½º ½Ã´ë¿¡ ´©±¸³ª Çѹø ¹è¿ö¾ß ÇÏ´Â °³¹ßȯ°æÀ¸·Î ²ÅÈù´Ù. À¯´ÏƼ°¡ C#À» äÅÃÇÑ ¹Ý¸é ¾ð¸®¾ó¿£ÁøÀº °³¹ßÀÚ¿¡°Ô Àͼ÷ÇÑ C++À» »ç¿ëÇÑ´Ù´Â Á¡µµ ¸Å·ÂÀ¸·Î ²ÅÈù´Ù. À¯´ÏƼ°¡ ¸ð¹ÙÀÏ °ÔÀÓ¿¡ °Á¡ÀÌ ÀÖ´Ù¸é ¾ð¸®¾óÀº ºñµð¿À °ÔÀÓÀ» ºñ·ÔÇÑ 3D ½Ç»ç ÄÜÅÙÃ÷·Î ¡®Á¸À硯¸¦ ´À³¢°Ô ÇØÁÖ´Â ¸ôÀÔÇü ÄÜÅÙÃ÷ÀÇ ÃÖ°ÀÚÀÌ¸ç ¸ÞŸ¹ö½º ½Ã´ë¿¡ °É¸Â´Â ¸ÞŸÈÞ¸Õ Å©¸®¿¡ÀÌÅ͸¦ ºñ·ÔÇÑ ´Ù¾çÇÑ ±â´ÉÀ¸·Î ÀÏ¹Ý »ç¿ëÀÚ´Â ¹°·Ð °³¹ßÀÚµéÀ» »ç·ÎÀâ°í ÀÖ´Ù.
¾ð¸®¾ó ¿£ÁøÀº ¿ø·¡ ¿¡ÇÈ°ÔÀÓÁîÀÇ Ã¹ °ÔÀÓ [¾ð¸®¾ó]¿¡ »ç¿ëµÉ ¸ñÀûÀ¸·Î °³¹ßµÈ ¿£ÁøÀÌ¶ó ¡®¾ð¸®¾ó¡¯ ÇÏ¸é ¿¡ÇÈ°ÔÀÓÁîÀÇ °£ÆÇ ½ºÅ¸ÀÌÀÚ ´©±¸³ª ¾ð¸®¾ó ¿£ÁøÀ» ¶°¿Ã¸± Á¤µµ·Î °ÔÀÓ ¿£ÁøÀÇ µ¿ÀǾî·Îµµ »ç¿ëµÈ´Ù. ¾ð¸®¾ó ¿£Áø 5°¡ Áö³ 3¿ù ¹ßÇ¥µÇ¸é¼ ±â´ë°¨ÀÌ ÇѲ¯ °íÁ¶µÈ Áö±Ý, ¾ð¸®¾ó ¿£Áø 4¸¦ ±â¹ÝÀ¸·Î 5¸¦ ÁغñÇÏ´Â °³¹ßÀÚ¿Í ÇлýÀ» À§ÇÑ º»°Ý ¾ð¸®¾ó ±³ÀçÀÌ´Ù. ÀÌ Ã¥ÀÇ ¿¹Á¦ ÁøÇà ±¸¼ºÀº ÇÁ·ÎÅäŸÀÔ, ¾ËÆÄŸÀÔ, º£Å¸Å¸ÀÔ ¹öÀü·Î ±¸¼ºµÇ¾î ½ÇÁ¦ ½Ç¹« Á¦ÀÛ ÇÁ·Î¼¼½º¸¦ °æÇèÇÒ ¼ö ÀÖ°Ô ±¸¼ºµÇ¾ú´Ù.
ƯÈ÷ ÀÌ Ã¥Àº [Àλý À¯´ÏƼ ±³°ú¼], [Àλý À¯´ÏƼ VR/AR ±³°ú¼]¸¦ ÁýÇÊÇß´ø Àü¹® °ÀÇ ±×·ì ARAÀÇ ÀÌ¿µÈ£ ´ëÇ¥¸¦ ÇʵηΠÇÑ ÀúÀÚµéÀÌ ÀÌ¹Ì °ËÁõµÈ °ÀǷ°ú ÇÊ·ÂÀ» ÀÚ¶ûÇϸç, ¾ð¸®¾ó ¿£ÁøÀÇ ºñÁÖ¾ó ½ºÅ©¸³ÆÃÀÎ ¾ð¸®¾ó ºí·çÇÁ¸°Æ®, ¾ð¸®¾ó ¿¡µðÅ͸¦ È°¿ëÇØ ½ÇÀü °ÔÀÓÀ» Á¦ÀÛÇØ º»´Ù.
Ã¥Àº Åë±ÇÀ¸·Î Ãâ°£µÇÁö¸¸ ÈÞ´ëÇϱ⠽±°Ô ºÐ±ÇÀ¸·Î Ãâ°£µÇ¾ú´Ù.
ƯÈ÷ ÀúÀÚ Ä«Æä(https://m.cafe.naver.com/unrealunity.cafe)¸¦ ÅëÇØ ÄÚµå ¹× ¹®ÀÇ»çÇ× ¾÷µ¥ÀÌÆ®°¡ ÁøÇàµÊÀº ¹°·Ð ¿¹Á¦ ÄÚµå´Â ¼º¾È´ç ÀÚ·á½Ç¿¡¼, °ÀÇ ÆÄ¿öÆ÷ÀÎÆ®´Â ¼º¾È´ç °ÀÇÀÚ·á½Ç¿¡¼ Á¦°øÇϸç, À¯·á °ÀÇ ¿µ»óÀº ¼º¾È´ç ÀÌ·¯´×(bm.cyber.co.kr)¿¡¼ ¼ö° °¡´ÉÇÏ¿© °ÀÇÀÚ¿Í ÇнÀÀÚ ¸ðµÎ¸¦ ¸¸Á·½ÃÅ°´Â µ¶º¸ÀûÀÎ ¾ð¸®¾ó ±³Àç°¡ µÉ °ÍÀ¸·Î º¸ÀδÙ.
¸ñÂ÷
Chapter?1
¾ð¸®¾ó ¿£Áø ¾Ë¾Æº¸±â
1.1 ¾ð¸®¾ó ¿£Áø °³¿ä
1.1-1 ¸®¾óŸÀÓ ¿£ÁøÀÇ ÇöÀç¿Í ¹Ì·¡
¸®¾óŸÀÓ ¿£ÁøÀ̶õ?
¸ÞŸ¹ö½º¿Í ¸®¾óŸÀÓ ¿£Áø
1.1-2 ¾ð¸®¾ó ¿£Áø ¼Ò°³
¾ð¸®¾ó ¿£ÁøÀÇ ½ÃÀÛ
¾ð¸®¾ó ¿£ÁøÀÇ ÇöÀç¿Í È°¿ë ºÐ¾ß
1.2 ÄÜÅÙÃ÷ °³¹ß ¹æ¹ý·Ð
1.2-1 ÇÁ·ÎÁ§Æ® Á¦ÀÛÀÇ ÀÌÇØ
ÄÜÅÙÃ÷ Á¦ÀÛ ÇÁ·Î¼¼½ºÀÇ ÀÌÇØ
1.2-2 ¾ð¸®¾ó ¿£ÁøÀÇ Á¦ÀÛ ¹æ¹ý
·¹°í¿Í ¾ð¸®¾ó ¿£Áø Á¦ÀÛ ¹æ¹ý ºñ±³
1.3 ¾ð¸®¾ó ¿£Áø ¼³Ä¡Çϱâ
1.3-1 ¾ð¸®¾ó ȸ¿ø °¡ÀÔ°ú ¼³Ä¡Çϱâ
¿¡ÇÈ°ÔÀÓÁî °¡ÀÔÇϱâ
¿¡ÇÈ°ÔÀÓÁî ·±Ã³ ´Ù¿î·Îµå ÈÄ ¼³Ä¡Çϱâ
¿¡ÇÈ°ÔÀÓÁî ·±Ã³·Î ¾ð¸®¾ó ¿£Áø ¼³Ä¡Çϱâ
1.4 ¾ð¸®¾ó ¿£ÁøÀÇ È¸é ±¸¼º
1.4-1 »õ·Î¿î ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ
ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ
ÇÁ·ÎÁ§Æ® »ý¼º ¿É¼Ç ¼³Á¤Çϱâ
1.4-2 ¾ð¸®¾ó ¿£ÁøÀÇ È¸é ±¸¼º »ìÆ캸±â
¾ð¸®¾ó ¿£Áø ¿¡µðÅÍÀÇ ¾ð¾î º¯°æÇϱâ
¾ð¸®¾ó ¿£Áø ¿¡µðÅÍÀÇ È¸é ±¸¼º
1.5 ¾×ÅÍ ´Ù·ç±â
1.5-1 ¾ð¸®¾ó ¿£Áø ¿¡µðÅÍÀÇ ±âº» Á¶ÀÛ ¹æ¹ý ¾Ë¾Æº¸±â
ºäÆ÷Æ® Ä«¸Þ¶ó Á¶ÀÛÇϱâ
¾×ÅÍÀÇ À̵¿, ȸÀü, Å©±â Á¶ÀÛÇϱâ
1.5-2 Áö¿À¸ÞÆ®¸® ºê·¯½Ã ¾×Å͸¦ ÀÌ¿ëÇÑ °ø°£ µðÀÚÀÎ
·¹º§ ÀúÀåÇϱâ
»õ ·¹º§ ¸¸µé±â
Áö¿À¸ÞÆ®¸® ºê·¯½Ã ¾×ÅÍ
¾ÆÆÄÆ® Æò¸éµµ ÁغñÇϱâ
º® ¸¸µé±â
ÁÖ¹æ ¹× ½Ä´ç ¸¸µé±â
¹® ±¸¸Û ¶Õ±â
1.5-3 ÀçÁú Ç¥ÇöÇϱâ
3D ¸ðµ¨¸µ µ¥ÀÌÅÍÀÇ ±¸¼º
¾ð¸®¾ó ¿£Áø ¸ÓƼ¸®¾óÀÇ ÀÌÇØ
¸ÓƼ¸®¾ó Á¦ÀÛ ¹× Àû¿ë
1.5-4 ¹®°ú â¹® Ãß°¡Çϱâ
¹® ¾×ÅÍ ¹èÄ¡Çϱâ
1.5-5 Á¶¸í ¹èÄ¡Çϱâ
¶óÀÌÆ® ¾×ÅÍÀÇ Á¾·ù
¶óÀÌÆ® ¼ÒÇ° ¹èÄ¡Çϱâ
¶óÀÌÆ® ¹èÄ¡Çϱâ
Chapter?2
°ÔÀÓ Á¦ÀÛÇϱâ
2.1 ºí·çÇÁ¸°Æ® »ç¿ëÇϱâ
2.1-1 ÄÚµù°ú ºñÁÖ¾ó ½ºÅ©¸³ÆÃ
¾ð¸®¾ó ÇÁ·ÎÁ§Æ® ÁغñÇϱâ
¾×ÅÍ ºí·çÇÁ¸°Æ® Á¦ÀÛÇϱâ
Hello World! Ãâ·ÂÇϱâ
2.1-2 ºí·çÇÁ¸°Æ® ½ºÅ©¸³ÆÃÀÇ ±âÃÊ
ºí·çÇÁ¸°Æ® ³ëµåÀÇ ±¸Á¶¿Í Á¦¾î È帧
µ¥ÀÌÅÍÀÇ ±×¸©, º¯¼ö(Variable)
¿øÇÏ´Â µ¿ÀÛÀ» ÇÏ´Â ³ëµå, ÇÔ¼ö(Function)
Flow Control 1 ? Á¶°Ç¹®
Flow Control 2 ? ¹Ýº¹¹®
2.1-3 Ŭ·¡½º¿Í ¶óÀÌÇÁ »çÀÌŬ
Ŭ·¡½º¶õ ¹«¾ùÀΰ¡?
°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö
¾ð¸®¾ó ¿£ÁøÀÇ ¶óÀÌÇÁ »çÀÌŬ ÇÔ¼ö
2.2 ÇÁ·ÎÅäŸÀÔ ¹öÀü Á¦ÀÛÇϱâ
2.2-1 ÇÁ·ÎÅäŸÀÌÇΠȯ°æ ±¸¼ºÇϱâ
½´Æà ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ
Game Mode Base Á¦ÀÛÇϱâ
Ä«¸Þ¶ó¿Í Á¶¸í ¼³Ä¡Çϱâ
2.2-2 Ç÷¹À̾î À̵¿Çϱâ
Ç÷¹ÀÌ¾î ºí·çÇÁ¸°Æ® »ý¼ºÇϱâ
»ç¿ëÀÚÀÇ ÀÔ·Â ¹ÙÀεùÇϱâ
Ç÷¹À̾î À̵¿ ó¸®Çϱâ
2.2-3 ÃÑ¾Ë ¹ß»çÇϱâ
ÃÑ¾Ë ºí·çÇÁ¸°Æ® »ý¼ºÇϱâ
ÃÑ¾Ë ¹ß»ç ÀÔ·Â Å° ¹ÙÀεùÇϱâ
ÃÑ¾Ë »ý¼º ±â´É ±¸ÇöÇϱâ
ÃÑ¾Ë ¹ß»çÀ½ ³Ö±â
2.2-4 Àû(Enemy) Á¦ÀÛÇϱâ
Enemy ºí·çÇÁ¸°Æ® »ý¼ºÇϱâ
Enemy °øÀå ¾×ÅÍ Á¦ÀÛÇϱâ
EnemyÀÇ À̵¿ ¹æÇâ Ãß÷Çϱâ
2.2-5 Ãæµ¹(Collision) ó¸®Çϱâ
Äݸ®Àü »ý¼ºÇϱâ
Äݸ®Àü ¼³Á¤Çϱâ
Ãæµ¹ À̺¥Æ® ±¸ÇöÇϱâ
ų Á¸(Kill Zone) Á¦ÀÛÇϱâ
2.2-6 ¹è°æ ½ºÅ©·ÑÇϱâ
À̹ÌÁö °¡Á®¿À±â(Image Import)
À̹ÌÁö¸¦ 3D ¿ùµå °ø°£¿¡ ¹èÄ¡Çϱâ
À̹ÌÁöÀÇ UV¸¦ ½ºÅ©·ÑÇϱâ
Light Map Bake¿Í Cast Shadow ¼³Á¤Çϱâ
2.3 ¾ËÆÄŸÀÔ ¹öÀü Á¦ÀÛÇϱâ
2.3-1 ¿ÜºÎ ¸ðµ¨¸µÀ¸·Î ±³Ã¼Çϱâ
¿ÜºÎ ¸ðµ¨¸µ ÆÄÀÏ °¡Á®¿À±â
¸ÓƼ¸®¾ó ¼³Á¤Çϱâ
½ºÅÂƽ ¸Þ½Ã ±³Ã¼Çϱâ
¿¡³Ê¹Ì¿¡°Ô ȸÀü ±â´É Ãß°¡Çϱâ
2.3-2 Á¡¼ö UI Á¦ÀÛÇϱâ
Á¡¼ö ´©Àû ÇÔ¼ö ¸¸µé±â
Á¡¼ö ´©Àû ÇÔ¼ö È£ÃâÇϱâ
ÇöÀç Á¡¼ö UI Á¦ÀÛÇϱâ
À§Á¬À» ȸ鿡 Ãâ·ÂÇϱâ
2.3-3 °ÔÀÓ ¿À¹ö UI Á¦ÀÛÇϱâ
°ÔÀÓ ¿À¹ö À§Á¬ ¸¸µé±â
°ÔÀÓ ¿À¹ö UI¸¦ ȸ鿡 Ãâ·ÂÇϱâ
ÀϽà Á¤Áö ¹× ¸¶¿ì½º Ä¿¼ º¸À̱â
¹öÆ° ±â´É ±¸ÇöÇϱâ
2.4 º£Å¸Å¸ÀÔ ¹öÀü Á¦ÀÛÇϱâ
2.4-1 ÃÖ°í Á¡¼ö Ç¥½Ã ¹× µ¥ÀÌÅÍ ÀúÀåÇϱâ
ÃÖ°í Á¡¼öUI Á¦ÀÛÇϱâ
ÃÖ°í Á¡¼ö °»½ÅÇϱâ
Á¡¼ö¸¦ ÆÄÀÏ·Î ÀúÀåÇÏ°í ºÒ·¯¿À±â
2.4-2 ½ÇÇà ÆÄÀÏ·Î ÆÐŰ¡Çϱâ
ÆÐŰ¡ Àü ÇÁ·ÎÁ§Æ® ¼³Á¤Çϱâ
ÇÁ·ÎÁ§Æ® ÆÐŰ¡Çϱâ
2.5 ¾ð¸®¾ó C++ ±âÃÊ
2.5-1 C++¸¦ ÀÌ¿ëÇÑ ¾ð¸®¾ó ¿£Áø °³¹ßÇϱâ
ºñÁÖ¾ó ½ºÆ©µð¿À 2019 ¼³Ä¡ È®ÀÎÇϱâ
»õ ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ
Hello World Ãâ·ÂÇϱâ
2.5-2 C++¿¡¼ÀÇ º¯¼ö¿Í ÇÔ¼ö
±âº» ÀÚ·áÇü º¯¼ö Á¦ÀÛÇϱâ
UPROPERTY ½Ã½ºÅÛ
C++ ÇÔ¼ö ¸¸µé±â
Àü¿ª º¯¼ö¿Í Áö¿ª º¯¼ö
UFUNCTION ½Ã½ºÅÛ
2.5-3 C++¿¡¼ÀÇ Á¶°Ç¹®°ú ¹Ýº¹¹®
Á¶°Ç¹®
¹Ýº¹¹®
2.5-4 Á¢±Ù ÇÑÁ¤ÀÚ¿Í »ý¼ºÀÚ, ±×¸®°í Æ÷ÀÎÅÍ
Á¢±Ù ÇÑÁ¤ÀÚ
»ý¼ºÀÚ(Constructor)
Æ÷ÀÎÅÍ(Pointer)
°ª¿¡ ÀÇÇÑ È£Ãâ(Call by value)°ú ÂüÁ¶¿¡ ÀÇÇÑ È£Ãâ?
(Call by reference)
2.6 C++ ½´Æà ÇÁ·ÎÁ§Æ® Á¦ÀÛÇϱâ
2.6-1 ½´Æà ÇÁ·ÎÁ§Æ® ȯ°æ ±¸¼ºÇϱâ
·¹º§ »ý¼º ¹× ±âº» ¸Ê ÁöÁ¤Çϱâ
GameModeBase Ŭ·¡½º ¸¸µé±â
Ä«¸Þ¶ó¿Í ¶óÀÌÆ® ¹èÄ¡Çϱâ
2.6-2 Ç÷¹À̾î Á¦ÀÛÇϱâ
Ç÷¹À̾î Ŭ·¡½º »ý¼ºÇϱâ
»ç¿ëÀÚÀÇ ÀÔ·Â Å° ¹ÙÀεùÇϱâ
À̵¿ °ø½Ä Àû¿ëÇϱâ
2.6-3 ÃÑ¾Ë Á¦ÀÛÇϱâ
Bullet Ŭ·¡½º »ý¼ºÇϱâ
ÃѾËÀ» Àü¹æÀ¸·Î À̵¿½ÃÅ°±â
¸¶¿ì½º ¹öÆ° ÀÔ·Â ¾×¼Ç
ÃÑ¾Ë »ý¼º ±â´É ±¸ÇöÇϱâ
ÃÑ¾Ë ¹ß»ç È¿°úÀ½ ±¸ÇöÇϱâ
2.6-4 Àû(Enemy) Á¦ÀÛÇϱâ
Enemy Ŭ·¡½º ¹× ºí·çÇÁ¸°Æ® »ý¼ºÇϱâ
Ãß÷¿¡ ÀÇÇÑ À̵¿ ¹æÇâ °áÁ¤ ±â´É
ÀúÀåµÈ ¹æÇâÀ¸·Î À̵¿ÇÏ´Â ±â´É ±¸ÇöÇϱâ
¿¡³Ê¹Ì »ý¼º ¾×ÅÍ Á¦ÀÛÇϱâ
2.6-5 Ãæµ¹(Collision) ó¸®Çϱâ
Collision ä³Î ¼³Á¤Çϱâ
°³º° Collision Response ¼³Á¤Çϱâ
Ãæµ¹ À̺¥Æ®¿Í µ¨¸®°ÔÀÌÆ®
ų Á¸(Kill Zone) Á¦ÀÛÇϱâ
2.6-6 Á¡¼ö UI Á¦ÀÛÇϱâ
Á¡¼ö ´©Àû ÇÔ¼ö ¸¸µé±â
UserWidget Ŭ·¡½º »ý¼ºÇϱâ
ÇöÀç Á¡¼ö¸¦ À§Á¬¿¡ ¹Ý¿µÇϱâ
2.6-7 °ÔÀÓ ¿À¹ö UI Á¦ÀÛÇϱâ
°ÔÀÓ ¿À¹ö À§Á¬ Á¦ÀÛÇϱâ
°ÔÀÓ ¿À¹ö ½Ã À§Á¬ ¶ç¿ì±â
°ÔÀÓ ¿À¹ö UIÀÇ ¹öÆ° ±â´É ±¸ÇöÇϱâ
Æ÷ÀÎÅÍ º¯¼ö¸¦ »ç¿ëÇÒ ¶§ ÁÖÀÇÇÒ Á¡
Àλý ¾ð¸®¾ó ±³°ú¼ µµÆÇ ¸ñ·Ï