- ÇöÀç À§Ä¡
- home > ÄÄÇ»ÅÍ¡¤ICT¡¤¾îÇÐ > ÄÄÇ»ÅÍ¡¤IT µµ¼ > °ÔÀÓ > C ¸¦ »ç¿ëÇÑ ¾ð¸®¾ó ¿£Áø 4 °³¹ß 2/e[¿¡ÀÌÄÜÃâÆÇ]
C ¸¦ »ç¿ëÇÑ ¾ð¸®¾ó ¿£Áø 4 °³¹ß 2/e - Á¸ µµ¶õ.Àª¸®¾ö ¼Î¸®ÇÁ.½ºÅ×ÆÇ ÈÀÌƲ ÁöÀ½, Á¶°æºó ¿Å±è
Ŭ·¡½º »ý¼ººÎÅÍ ºí·çÇÁ¸°Æ® ÆíÁý±â, C Ŭ·¡½º¿Í ±¸Á¶Ã¼, ¸Þ¸ð¸® °ü¸®, ½º¸¶Æ® Æ÷ÀÎÅÍ, µð¹ö±ë, ¾×ÅÍ¿Í ÄÄÆ÷³ÍÆ®, À̺¥Æ®¿Í µ¨¸®°ÔÀÌÆ®, ÀԷ°ú Ãæµ¹ µî 100°³°¡ ³Ñ´Â ½ÇÀü ·¹½ÃÇǸ¦ ÅëÇØ ¾ð¸®¾ó·Î ¸¸µå´Â °ÔÀÓ¿¡ ³×ÀÌƼºê Äڵ带 ÅëÇÕÇÏ°íÀÚ ÇÏ´Â °ÔÀÓ °³¹ßÀÚ¿¡°Ô ÇʼöÀûÀΠåÀÌ´Ù.
Ŭ·¡½º »ý¼ººÎÅÍ ºí·çÇÁ¸°Æ® ÆíÁý±â, C Ŭ·¡½º¿Í ±¸Á¶Ã¼, ¸Þ¸ð¸® °ü¸®, ½º¸¶Æ® Æ÷ÀÎÅÍ, µð¹ö±ë, ¾×ÅÍ¿Í ÄÄÆ÷³ÍÆ®, À̺¥Æ®¿Í µ¨¸®°ÔÀÌÆ®, ÀԷ°ú Ãæµ¹ µî 100°³°¡ ³Ñ´Â ½ÇÀü ·¹½ÃÇǸ¦ ÅëÇØ ¾ð¸®¾ó·Î ¸¸µå´Â °ÔÀÓ¿¡ ³×ÀÌƼºê Äڵ带 ÅëÇÕÇÏ°íÀÚ ÇÏ´Â °ÔÀÓ °³¹ßÀÚ¿¡°Ô ÇʼöÀûÀΠåÀÌ´Ù.
ÀúÀÚ: Á¸ µµ¶õ.Àª¸®¾ö ¼Î¸®ÇÁ.½ºÅ×ÆÇ ÈÀÌƲ ÁöÀ½, Á¶°æºó ¿Å±è
1Àå. UE4 °³¹ß µµ±¸
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__ºñÁÖ¾ó ½ºÆ©µð¿À ¼³Ä¡
__ºñÁÖ¾ó ½ºÆ©µð¿À·Î ù C ÇÁ·ÎÁ§Æ® ¸¸µé±â
__ºñÁÖ¾ó ½ºÆ©µð¿À¿¡¼ ÄÚµå ÆùÆ®¿Í »ö»ó º¯°æ
__ÀͽºÅÙ¼Ç - ºñÁÖ¾ó ½ºÆ©µð¿ÀÀÇ Ä÷¯ Å׸¶ º¯°æÇϱâ
__ÄÚµå Æ÷¸ÅÆðú ÀÚµ¿ ¿Ï¼º ¼³Á¤
__ºñÁÖ¾ó ½ºÆ©µð¿À ´ÜÃàÅ°
__ºñÁÖ¾ó ½ºÆ©µð¿À¿¡¼ ¸¶¿ì½º È°¿ë
__¾ð¸®¾ó ¿£Áø 4 ¼³Ä¡
__UE4¿¡¼ ù ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ
__UE4¿¡¼ ù ·¹º§ »ý¼ºÇϱâ
__UE4 - ÇÖ ¸®·Îµù
__UE4 - UE_LOG¸¦ »ç¿ëÇØ ·Î±× ³²±â±â
__´Ù¼öÀÇ FString°ú ´Ù¸¥ º¯¼öµé·ÎºÎÅÍ FString ¸¸µé±â
2Àå. Ŭ·¡½º »ý¼º
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__UCLASS ÀÛ¼º - UObject¿¡¼ ÆÄ»ý
__Ä¿½ºÅÒ UCLASS·ÎºÎÅÍ ºí·çÇÁ¸°Æ® »ý¼º
__»ç¿ëÀÚ ÆíÁýÀÌ °¡´ÉÇÑ UPROPERTY »ý¼º
__ºí·çÇÁ¸°Æ®¿¡¼ UPROPERTY Á¢±Ù
__UPROPERTY ŸÀÔÀ¸·Î UCLASS ÁöÁ¤
__UObject ÆÄ»ý Ŭ·¡½º ÀνºÅϽºÈ(ConstructObject¡´ ¡µ¿Í NewObject¡´ ¡µ)
__UObject ÆÄ»ý Ŭ·¡½º Æı«
__USTRUCT »ý¼º
__UENUM() »ý¼º
3Àå. ¸Þ¸ð¸® °ü¸®, ½º¸¶Æ® Æ÷ÀÎÅÍ, µð¹ö±ë
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__°ü¸®µÇÁö ¾Ê´Â ¸Þ¸ð¸® - malloc()/free() »ç¿ë
__°ü¸®µÇÁö ¾Ê´Â ¸Þ¸ð¸® - new/delete »ç¿ë
__°ü¸®µÇ´Â ¸Þ¸ð¸® - NewObject¡´ ¡µ¿Í ConstructObject¡´ ¡µ »ç¿ë
__°ü¸®µÇ´Â ¸Þ¸ð¸® - ¸Þ¸ð¸® ÇØÁ¦
__°ü¸®µÇ´Â ¸Þ¸ð¸® - ¿ÀºêÁ§Æ® ÃßÀûÀ» À§ÇØ ½º¸¶Æ® Æ÷ÀÎÅÍ »ç¿ë
__(TSharedPtr, TWeakPtr, TAutoPtr)
__¿ÀºêÁ§Æ® ÃßÀûÀ» À§ÇØ TScopedPointer »ç¿ë
__¾ð¸®¾óÀÇ °¡ºñÁö Ä÷º¼Ç ½Ã½ºÅÛ°ú UPROPERTY()
__°¡ºñÁö Ä÷º¼Ç °Á¦ ¼öÇà
__Áß´ÜÁ¡°ú ´Ü°èº° ÄÚµå ½ÇÇà
__¹ö±× Ž»ö°ú ÄÝ ½ºÅà »ç¿ë
__ÇÖ½ºÆÌ ½Äº°À» À§ÇØ ÇÁ·ÎÆÄÀÏ·¯ »ç¿ë
4Àå. ¾×ÅÍ¿Í ÄÄÆ÷³ÍÆ®
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__C ·Î Ä¿½ºÅÒ ¾×ÅÍ »ý¼ºÇϱâ
__SpawnActor¸¦ »ç¿ëÇØ ¾×ÅÍ ÀνºÅϽºÈÇϱâ
__UFUNCTION »ý¼º
__Destroy¿Í Timer¸¦ »ç¿ëÇØ ¾×ÅÍ »èÁ¦
__SetLifeSpanÀ» »ç¿ëÇØ ÀÏÁ¤ Áö¿¬ ÈÄ ¾×ÅÍ »èÁ¦Çϱâ
__ÄÄÆ÷Áö¼ÇÀ» »ç¿ëÇÑ ¾×ÅÍ ±â´É ±¸Çö
__FObjectFinder¸¦ »ç¿ëÇØ ¾Ö¼ÂÀ» ÄÄÆ÷³ÍÆ®¿¡ ºÒ·¯¿À±â
__»ó¼ÓÀ» »ç¿ëÇÑ ¾×ÅÍ ±â´É ±¸Çö
__°èÃþ »ý¼ºÀ» À§ÇÑ ÄÄÆ÷³ÍÆ® ¿¬°á
__Ä¿½ºÅÒ ¾×ÅÍ ÄÄÆ÷³ÍÆ® »ý¼º
__Ä¿½ºÅÒ ¾À ÄÄÆ÷³ÍÆ® »ý¼º
__RPG¸¦ À§ÇÑ InventoryComponent »ý¼º
__OrbitingMovement ÄÄÆ÷³ÍÆ® »ý¼º
__À¯´ÖÀ» »ý»êÇÏ´Â °Ç¹° »ý¼º
5Àå. À̺¥Æ®¿Í µ¨¸®°ÔÀÌÆ® ó¸®
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__°¡»ó ÇÔ¼ö·Î ±¸ÇöµÈ À̺¥Æ® ó¸®
__UFUNCTION¿¡ ¹ÙÀεùµÈ µ¨¸®°ÔÀÌÆ® »ý¼º
__µ¨¸®°ÔÀÌÆ® µî·Ï ÇØÁ¦
__ÀÔ·Â ÆĶó¹ÌÅ͸¦ ¹Þ´Â µ¨¸®°ÔÀÌÆ® »ý¼º
__µ¨¸®°ÔÀÌÆ® ¹ÙÀεùÀ¸·Î ÆäÀÌ·Îµå µ¥ÀÌÅÍ Àü´Þ
__¸ÖƼij½ºÆ® µ¨¸®°ÔÀÌÆ® »ý¼º
__Ä¿½ºÅÒ À̺¥Æ® »ý¼º
__½Ã°£ Çڵ鷯 »ý¼º
__FPS °ÔÀÓÀ» À§ÇÑ Àç¼Òȯ ÇȾ÷ »ý¼º
6Àå. ÀԷ°ú Ãæµ¹
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__Ãà ¸ÅÇÎ - FPS ij¸¯ÅÍ Á¦¾î¸¦ À§ÇÑ Å°º¸µå, ¸¶¿ì½º, °ÔÀÓÆÐµå ¹æÇâ ÀÔ·Â
__Ãà ¸ÅÇÎ - Á¤±ÔÈµÈ ÀÔ·Â
__¾×¼Ç ¸ÅÇÎ - FPS ij¸¯ÅÍ Á¦¾î¸¦ À§ÇÑ ¿ø ¹öÆ° ÀÀ´ä
__C ·Î Ãà°ú ¾×¼Ç ¸ÅÇÎ Ãß°¡
__¸¶¿ì½º UI ÀԷ ó¸®
__UMG Å°º¸µå UI ´ÜÃàÅ°
__Ãæµ¹ - Ignore¸¦ »ç¿ëÇØ ¿ÀºêÁ§Æ® Åë°ú½ÃÅ°±â
__Ãæµ¹ - OverlapÀ» »ç¿ëÇØ ¿ÀºêÁ§Æ® Áݱâ
__Ãæµ¹ - BlockÀ» »ç¿ëÇØ Åë°ú ¹æÁö
7Àå. Ŭ·¡½º¿Í ÀÎÅÍÆäÀ̽º °£ÀÇ Åë½Å: ÆÄÆ® 1
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__UInterface »ý¼º
__¿ÀºêÁ§Æ®¿¡ UInterface ±¸Çö
__Ŭ·¡½º°¡ UInterface¸¦ ±¸ÇöÇß´ÂÁö °Ë»ç
__³×ÀÌƼºê ÄÚµå·Î ±¸ÇöµÈ UInterface·Î ij½ºÆÃ
__C ·Î ³×ÀÌƼºê UInterface ÇÔ¼ö È£Ãâ
__¼·Î UInterface »ó¼Ó
__C ¿¡¼ UInterface ÇÔ¼ö ÀçÁ¤ÀÇ
__UInterface·Î °£´ÜÇÑ »óÈ£ÀÛ¿ë ½Ã½ºÅÛ ±¸Çö
8Àå. Ŭ·¡½º¿Í ÀÎÅÍÆäÀ̽º °£ÀÇ Åë½Å: ÆÄÆ® 2
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__³×ÀÌƼºê º£À̽º Ŭ·¡½º·ÎºÎÅÍ ºí·çÇÁ¸°Æ®·Î UInterface ¸Þ¼µå ³ëÃâ
__ºí·çÇÁ¸°Æ®¿¡¼ UInterface ÇÔ¼ö ±¸Çö
__ºí·çÇÁ¸°Æ®¿¡¼ ÀçÁ¤ÀÇÇÒ ¼ö ÀÖ´Â C UInterface ÇÔ¼ö ±¸Çö »ý¼º
__C ¿¡¼ ºí·çÇÁ¸°Æ®·Î Á¤ÀÇÇÑ ÀÎÅÍÆäÀ̽º È£Ãâ
9Àå. C ¿Í ¾ð¸®¾ó ÆíÁý±â ¿¬µ¿: ÆÄÆ® 1
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__ºí·çÇÁ¸°Æ® º¯¼ö·Î Ŭ·¡½º³ª ±¸Á¶Ã¼ »ç¿ëÇϱâ
__ºí·çÇÁ¸°Æ®¿¡¼ ¼ºêŬ·¡½ÌÇÒ ¼ö Àִ Ŭ·¡½º ¶Ç´Â ±¸Á¶Ã¼ ¸¸µé±â
__ºí·çÇÁ¸°Æ®¿¡¼ È£ÃâÇÒ ¼ö ÀÖ´Â ÇÔ¼ö ¸¸µé±â
__ºí·çÇÁ¸°Æ®¿¡¼ ±¸ÇöÇÒ ¼ö ÀÖ´Â À̺¥Æ® ¸¸µé±â
__¸ÖƼij½ºÆ® µ¨¸®°ÔÀÌÆ®¸¦ ºí·çÇÁ¸°Æ®¿¡ ³ëÃâÇϱâ
__ºí·çÇÁ¸°Æ®¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â C ¿°ÅÇü ¸¸µé±â
__ÆíÁý±âÀÇ ¿©·¯ À§Ä¡¿¡¼ Ŭ·¡½º ¼Ó¼º ÆíÁýÇϱâ
__ºí·çÇÁ¸°Æ® ÆíÁý±â ±×·¡ÇÁ¿¡¼ ¼Ó¼º¿¡ Á¢±Ù °¡´ÉÇÏ°Ô ¸¸µé±â
__ÆíÁý±â¿¡¼ ¼Ó¼º º¯°æ À̺¥Æ®¿¡ ÀÀ´äÇϱâ
__³×ÀÌƼºê ÄÚµå »ý¼º ½ºÅ©¸³Æ® ±¸ÇöÇϱâ
10Àå. C ¿Í ¾ð¸®¾ó ÆíÁý±â ¿¬µ¿: ÆÄÆ® 2
__¼Ò°³
__»õ ÆíÁý±â ¸ðµâ »ý¼º
__»õ Åø¹Ù ¹öÆ° »ý¼º
__»õ ¸Þ´º Ç׸ñ »ý¼º
__»õ ÆíÁý±â â »ý¼º
__»õ ¾Ö¼Â ŸÀÔ »ý¼º
__¾Ö¼ÂÀ» À§ÇÑ Ä¿½ºÅÒ ÄÁÅؽºÆ® ¸Þ´º Ç׸ñ »ý¼º
__»õ ÄÜ¼Ö ¸í·É »ý¼º
__ºí·çÇÁ¸°Æ®¸¦ À§ÇÑ »õ ±×·¡ÇÁ ÇÉ ½Ã°¢È »ý¼º
__Ä¿½ºÅÒ Details ÆгηΠŸÀÔ ºÐ¼®
11Àå. UE4 API »ç¿ëÇϱâ
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__Core/Logging API - Ä¿½ºÅÒ ·Î±× Ä«Å×°í¸® Á¤ÀÇ
__Core/Logging API - Message Log¿¡ ¸Þ½ÃÁö¸¦ ¾²´Â FMessageLog
__Core/Math API - FRotator¸¦ ÀÌ¿ëÇÑ È¸Àü
__Core/Math API - FQuat¸¦ ÀÌ¿ëÇÑ È¸Àü
__API - ÇÑ ¿ÀºêÁ§Æ®°¡ ´Ù¸¥ ¿ÀºêÁ§Æ®¸¦ ÇâÇϵµ·Ï FRotationMatrix¸¦ »ç¿ëÇØ È¸Àü
__GameplayAbility API - °ÔÀÓ ÄÁÆ®·ÑÀ» »ç¿ëÇØ ¾×ÅÍÀÇ °ÔÀÓÇ÷¹ÀÌ ´É·ÂÀ» Æ®¸®°Å¸µ
__GameplayAbility API - AttributeSetÀ¸·Î Åë°è ±¸Çö
__GameplayAbility API - GameplayEffect·Î ¹öÇÁ ±¸Çö
__GameplayTasks API - GameplayTasks·Î »ç°Ç ¸¸µé±â
__HTTP API - À¥ ¿äûÀ¸·Î À¥ ÆäÀÌÁö ´Ù¿î·Îµå
__HTTP API - ´Ù¿î·Îµå ÁøÇà·ü Ç¥½Ã
12Àå. UE4¿¡¼ÀÇ ¸ÖƼÇ÷¹ÀÌ¾î ³×Æ®¿öÅ·
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__Ŭ¶óÀ̾ðÆ®¿Í ¼¹ö °ÔÀÓ µ¿½Ã¿¡ Å×½ºÆ®Çϱâ
__³×Æ®¿öÅ©¸¦ ÅëÇÑ ¼Ó¼º º¹Á¦
__³×Æ®¿öÅ©¸¦ ÅëÇÑ º¹Á¦ ÇÔ¼öµé
__UI ³×Æ®¿öÅ© À̺¥Æ® ó¸®
13Àå. NPC Á¦¾î¸¦ À§ÇÑ AI
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__°£´ÜÇÑ µû¶ó´Ù´Ï±â Çൿ ±¸Çö
__³»ºñ°ÔÀÌ¼Ç ¸Þ½Ã ¹èÄ¡
__ºí·¢º¸µå »ý¼º
__Çൿ Æ®¸® »ý¼º
__Çൿ Æ®¸®¸¦ ij¸¯ÅÍ¿¡ ¿¬°á
__BTService »ý¼º
__BTTask »ý¼º
14Àå. »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º - UI¿Í UMG
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__ĵ¹ö½º¸¦ »ç¿ëÇØ ±×¸®±â
__ȸ鿡 ½½·¹ÀÌÆ® À§Á¬ Ãß°¡
__UI¸¦ À§ÇÑ È¸é Å©±â ÀÎ½Ä ½ºÄÉÀϸµ »ý¼º
__°ÔÀÓ ³» UMG ¿ä¼Ò ½ÃÆ® Ç¥½Ã ¹× ¼û±â±â
__½½·¹ÀÌÆ® À̺¥Æ®¿¡ ÇÔ¼ö È£Ãâ ¿¬°á
__¾ð¸®¾ó ¸ð¼Ç ±×·¡ÇÈ°ú µ¥ÀÌÅÍ ¹ÙÀεù »ç¿ë
__½ºÅ¸ÀÏÀ» »ç¿ëÇØ À§Á¬ ¸ð¾ç Á¦¾î
__Ä¿½ºÅÒ SWidget/UWidget »ý¼º
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__ºñÁÖ¾ó ½ºÆ©µð¿À ¼³Ä¡
__ºñÁÖ¾ó ½ºÆ©µð¿À·Î ù C ÇÁ·ÎÁ§Æ® ¸¸µé±â
__ºñÁÖ¾ó ½ºÆ©µð¿À¿¡¼ ÄÚµå ÆùÆ®¿Í »ö»ó º¯°æ
__ÀͽºÅÙ¼Ç - ºñÁÖ¾ó ½ºÆ©µð¿ÀÀÇ Ä÷¯ Å׸¶ º¯°æÇϱâ
__ÄÚµå Æ÷¸ÅÆðú ÀÚµ¿ ¿Ï¼º ¼³Á¤
__ºñÁÖ¾ó ½ºÆ©µð¿À ´ÜÃàÅ°
__ºñÁÖ¾ó ½ºÆ©µð¿À¿¡¼ ¸¶¿ì½º È°¿ë
__¾ð¸®¾ó ¿£Áø 4 ¼³Ä¡
__UE4¿¡¼ ù ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ
__UE4¿¡¼ ù ·¹º§ »ý¼ºÇϱâ
__UE4 - ÇÖ ¸®·Îµù
__UE4 - UE_LOG¸¦ »ç¿ëÇØ ·Î±× ³²±â±â
__´Ù¼öÀÇ FString°ú ´Ù¸¥ º¯¼öµé·ÎºÎÅÍ FString ¸¸µé±â
2Àå. Ŭ·¡½º »ý¼º
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__UCLASS ÀÛ¼º - UObject¿¡¼ ÆÄ»ý
__Ä¿½ºÅÒ UCLASS·ÎºÎÅÍ ºí·çÇÁ¸°Æ® »ý¼º
__»ç¿ëÀÚ ÆíÁýÀÌ °¡´ÉÇÑ UPROPERTY »ý¼º
__ºí·çÇÁ¸°Æ®¿¡¼ UPROPERTY Á¢±Ù
__UPROPERTY ŸÀÔÀ¸·Î UCLASS ÁöÁ¤
__UObject ÆÄ»ý Ŭ·¡½º ÀνºÅϽºÈ(ConstructObject¡´ ¡µ¿Í NewObject¡´ ¡µ)
__UObject ÆÄ»ý Ŭ·¡½º Æı«
__USTRUCT »ý¼º
__UENUM() »ý¼º
3Àå. ¸Þ¸ð¸® °ü¸®, ½º¸¶Æ® Æ÷ÀÎÅÍ, µð¹ö±ë
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__°ü¸®µÇÁö ¾Ê´Â ¸Þ¸ð¸® - malloc()/free() »ç¿ë
__°ü¸®µÇÁö ¾Ê´Â ¸Þ¸ð¸® - new/delete »ç¿ë
__°ü¸®µÇ´Â ¸Þ¸ð¸® - NewObject¡´ ¡µ¿Í ConstructObject¡´ ¡µ »ç¿ë
__°ü¸®µÇ´Â ¸Þ¸ð¸® - ¸Þ¸ð¸® ÇØÁ¦
__°ü¸®µÇ´Â ¸Þ¸ð¸® - ¿ÀºêÁ§Æ® ÃßÀûÀ» À§ÇØ ½º¸¶Æ® Æ÷ÀÎÅÍ »ç¿ë
__(TSharedPtr, TWeakPtr, TAutoPtr)
__¿ÀºêÁ§Æ® ÃßÀûÀ» À§ÇØ TScopedPointer »ç¿ë
__¾ð¸®¾óÀÇ °¡ºñÁö Ä÷º¼Ç ½Ã½ºÅÛ°ú UPROPERTY()
__°¡ºñÁö Ä÷º¼Ç °Á¦ ¼öÇà
__Áß´ÜÁ¡°ú ´Ü°èº° ÄÚµå ½ÇÇà
__¹ö±× Ž»ö°ú ÄÝ ½ºÅà »ç¿ë
__ÇÖ½ºÆÌ ½Äº°À» À§ÇØ ÇÁ·ÎÆÄÀÏ·¯ »ç¿ë
4Àå. ¾×ÅÍ¿Í ÄÄÆ÷³ÍÆ®
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__C ·Î Ä¿½ºÅÒ ¾×ÅÍ »ý¼ºÇϱâ
__SpawnActor¸¦ »ç¿ëÇØ ¾×ÅÍ ÀνºÅϽºÈÇϱâ
__UFUNCTION »ý¼º
__Destroy¿Í Timer¸¦ »ç¿ëÇØ ¾×ÅÍ »èÁ¦
__SetLifeSpanÀ» »ç¿ëÇØ ÀÏÁ¤ Áö¿¬ ÈÄ ¾×ÅÍ »èÁ¦Çϱâ
__ÄÄÆ÷Áö¼ÇÀ» »ç¿ëÇÑ ¾×ÅÍ ±â´É ±¸Çö
__FObjectFinder¸¦ »ç¿ëÇØ ¾Ö¼ÂÀ» ÄÄÆ÷³ÍÆ®¿¡ ºÒ·¯¿À±â
__»ó¼ÓÀ» »ç¿ëÇÑ ¾×ÅÍ ±â´É ±¸Çö
__°èÃþ »ý¼ºÀ» À§ÇÑ ÄÄÆ÷³ÍÆ® ¿¬°á
__Ä¿½ºÅÒ ¾×ÅÍ ÄÄÆ÷³ÍÆ® »ý¼º
__Ä¿½ºÅÒ ¾À ÄÄÆ÷³ÍÆ® »ý¼º
__RPG¸¦ À§ÇÑ InventoryComponent »ý¼º
__OrbitingMovement ÄÄÆ÷³ÍÆ® »ý¼º
__À¯´ÖÀ» »ý»êÇÏ´Â °Ç¹° »ý¼º
5Àå. À̺¥Æ®¿Í µ¨¸®°ÔÀÌÆ® ó¸®
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__°¡»ó ÇÔ¼ö·Î ±¸ÇöµÈ À̺¥Æ® ó¸®
__UFUNCTION¿¡ ¹ÙÀεùµÈ µ¨¸®°ÔÀÌÆ® »ý¼º
__µ¨¸®°ÔÀÌÆ® µî·Ï ÇØÁ¦
__ÀÔ·Â ÆĶó¹ÌÅ͸¦ ¹Þ´Â µ¨¸®°ÔÀÌÆ® »ý¼º
__µ¨¸®°ÔÀÌÆ® ¹ÙÀεùÀ¸·Î ÆäÀÌ·Îµå µ¥ÀÌÅÍ Àü´Þ
__¸ÖƼij½ºÆ® µ¨¸®°ÔÀÌÆ® »ý¼º
__Ä¿½ºÅÒ À̺¥Æ® »ý¼º
__½Ã°£ Çڵ鷯 »ý¼º
__FPS °ÔÀÓÀ» À§ÇÑ Àç¼Òȯ ÇȾ÷ »ý¼º
6Àå. ÀԷ°ú Ãæµ¹
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__Ãà ¸ÅÇÎ - FPS ij¸¯ÅÍ Á¦¾î¸¦ À§ÇÑ Å°º¸µå, ¸¶¿ì½º, °ÔÀÓÆÐµå ¹æÇâ ÀÔ·Â
__Ãà ¸ÅÇÎ - Á¤±ÔÈµÈ ÀÔ·Â
__¾×¼Ç ¸ÅÇÎ - FPS ij¸¯ÅÍ Á¦¾î¸¦ À§ÇÑ ¿ø ¹öÆ° ÀÀ´ä
__C ·Î Ãà°ú ¾×¼Ç ¸ÅÇÎ Ãß°¡
__¸¶¿ì½º UI ÀԷ ó¸®
__UMG Å°º¸µå UI ´ÜÃàÅ°
__Ãæµ¹ - Ignore¸¦ »ç¿ëÇØ ¿ÀºêÁ§Æ® Åë°ú½ÃÅ°±â
__Ãæµ¹ - OverlapÀ» »ç¿ëÇØ ¿ÀºêÁ§Æ® Áݱâ
__Ãæµ¹ - BlockÀ» »ç¿ëÇØ Åë°ú ¹æÁö
7Àå. Ŭ·¡½º¿Í ÀÎÅÍÆäÀ̽º °£ÀÇ Åë½Å: ÆÄÆ® 1
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__UInterface »ý¼º
__¿ÀºêÁ§Æ®¿¡ UInterface ±¸Çö
__Ŭ·¡½º°¡ UInterface¸¦ ±¸ÇöÇß´ÂÁö °Ë»ç
__³×ÀÌƼºê ÄÚµå·Î ±¸ÇöµÈ UInterface·Î ij½ºÆÃ
__C ·Î ³×ÀÌƼºê UInterface ÇÔ¼ö È£Ãâ
__¼·Î UInterface »ó¼Ó
__C ¿¡¼ UInterface ÇÔ¼ö ÀçÁ¤ÀÇ
__UInterface·Î °£´ÜÇÑ »óÈ£ÀÛ¿ë ½Ã½ºÅÛ ±¸Çö
8Àå. Ŭ·¡½º¿Í ÀÎÅÍÆäÀ̽º °£ÀÇ Åë½Å: ÆÄÆ® 2
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__³×ÀÌƼºê º£À̽º Ŭ·¡½º·ÎºÎÅÍ ºí·çÇÁ¸°Æ®·Î UInterface ¸Þ¼µå ³ëÃâ
__ºí·çÇÁ¸°Æ®¿¡¼ UInterface ÇÔ¼ö ±¸Çö
__ºí·çÇÁ¸°Æ®¿¡¼ ÀçÁ¤ÀÇÇÒ ¼ö ÀÖ´Â C UInterface ÇÔ¼ö ±¸Çö »ý¼º
__C ¿¡¼ ºí·çÇÁ¸°Æ®·Î Á¤ÀÇÇÑ ÀÎÅÍÆäÀ̽º È£Ãâ
9Àå. C ¿Í ¾ð¸®¾ó ÆíÁý±â ¿¬µ¿: ÆÄÆ® 1
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__ºí·çÇÁ¸°Æ® º¯¼ö·Î Ŭ·¡½º³ª ±¸Á¶Ã¼ »ç¿ëÇϱâ
__ºí·çÇÁ¸°Æ®¿¡¼ ¼ºêŬ·¡½ÌÇÒ ¼ö Àִ Ŭ·¡½º ¶Ç´Â ±¸Á¶Ã¼ ¸¸µé±â
__ºí·çÇÁ¸°Æ®¿¡¼ È£ÃâÇÒ ¼ö ÀÖ´Â ÇÔ¼ö ¸¸µé±â
__ºí·çÇÁ¸°Æ®¿¡¼ ±¸ÇöÇÒ ¼ö ÀÖ´Â À̺¥Æ® ¸¸µé±â
__¸ÖƼij½ºÆ® µ¨¸®°ÔÀÌÆ®¸¦ ºí·çÇÁ¸°Æ®¿¡ ³ëÃâÇϱâ
__ºí·çÇÁ¸°Æ®¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â C ¿°ÅÇü ¸¸µé±â
__ÆíÁý±âÀÇ ¿©·¯ À§Ä¡¿¡¼ Ŭ·¡½º ¼Ó¼º ÆíÁýÇϱâ
__ºí·çÇÁ¸°Æ® ÆíÁý±â ±×·¡ÇÁ¿¡¼ ¼Ó¼º¿¡ Á¢±Ù °¡´ÉÇÏ°Ô ¸¸µé±â
__ÆíÁý±â¿¡¼ ¼Ó¼º º¯°æ À̺¥Æ®¿¡ ÀÀ´äÇϱâ
__³×ÀÌƼºê ÄÚµå »ý¼º ½ºÅ©¸³Æ® ±¸ÇöÇϱâ
10Àå. C ¿Í ¾ð¸®¾ó ÆíÁý±â ¿¬µ¿: ÆÄÆ® 2
__¼Ò°³
__»õ ÆíÁý±â ¸ðµâ »ý¼º
__»õ Åø¹Ù ¹öÆ° »ý¼º
__»õ ¸Þ´º Ç׸ñ »ý¼º
__»õ ÆíÁý±â â »ý¼º
__»õ ¾Ö¼Â ŸÀÔ »ý¼º
__¾Ö¼ÂÀ» À§ÇÑ Ä¿½ºÅÒ ÄÁÅؽºÆ® ¸Þ´º Ç׸ñ »ý¼º
__»õ ÄÜ¼Ö ¸í·É »ý¼º
__ºí·çÇÁ¸°Æ®¸¦ À§ÇÑ »õ ±×·¡ÇÁ ÇÉ ½Ã°¢È »ý¼º
__Ä¿½ºÅÒ Details ÆгηΠŸÀÔ ºÐ¼®
11Àå. UE4 API »ç¿ëÇϱâ
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__Core/Logging API - Ä¿½ºÅÒ ·Î±× Ä«Å×°í¸® Á¤ÀÇ
__Core/Logging API - Message Log¿¡ ¸Þ½ÃÁö¸¦ ¾²´Â FMessageLog
__Core/Math API - FRotator¸¦ ÀÌ¿ëÇÑ È¸Àü
__Core/Math API - FQuat¸¦ ÀÌ¿ëÇÑ È¸Àü
__API - ÇÑ ¿ÀºêÁ§Æ®°¡ ´Ù¸¥ ¿ÀºêÁ§Æ®¸¦ ÇâÇϵµ·Ï FRotationMatrix¸¦ »ç¿ëÇØ È¸Àü
__GameplayAbility API - °ÔÀÓ ÄÁÆ®·ÑÀ» »ç¿ëÇØ ¾×ÅÍÀÇ °ÔÀÓÇ÷¹ÀÌ ´É·ÂÀ» Æ®¸®°Å¸µ
__GameplayAbility API - AttributeSetÀ¸·Î Åë°è ±¸Çö
__GameplayAbility API - GameplayEffect·Î ¹öÇÁ ±¸Çö
__GameplayTasks API - GameplayTasks·Î »ç°Ç ¸¸µé±â
__HTTP API - À¥ ¿äûÀ¸·Î À¥ ÆäÀÌÁö ´Ù¿î·Îµå
__HTTP API - ´Ù¿î·Îµå ÁøÇà·ü Ç¥½Ã
12Àå. UE4¿¡¼ÀÇ ¸ÖƼÇ÷¹ÀÌ¾î ³×Æ®¿öÅ·
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__Ŭ¶óÀ̾ðÆ®¿Í ¼¹ö °ÔÀÓ µ¿½Ã¿¡ Å×½ºÆ®Çϱâ
__³×Æ®¿öÅ©¸¦ ÅëÇÑ ¼Ó¼º º¹Á¦
__³×Æ®¿öÅ©¸¦ ÅëÇÑ º¹Á¦ ÇÔ¼öµé
__UI ³×Æ®¿öÅ© À̺¥Æ® ó¸®
13Àå. NPC Á¦¾î¸¦ À§ÇÑ AI
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__°£´ÜÇÑ µû¶ó´Ù´Ï±â Çൿ ±¸Çö
__³»ºñ°ÔÀÌ¼Ç ¸Þ½Ã ¹èÄ¡
__ºí·¢º¸µå »ý¼º
__Çൿ Æ®¸® »ý¼º
__Çൿ Æ®¸®¸¦ ij¸¯ÅÍ¿¡ ¿¬°á
__BTService »ý¼º
__BTTask »ý¼º
14Àå. »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º - UI¿Í UMG
__¼Ò°³
__±â¼úÀû ¿ä±¸ »çÇ×
__ĵ¹ö½º¸¦ »ç¿ëÇØ ±×¸®±â
__ȸ鿡 ½½·¹ÀÌÆ® À§Á¬ Ãß°¡
__UI¸¦ À§ÇÑ È¸é Å©±â ÀÎ½Ä ½ºÄÉÀϸµ »ý¼º
__°ÔÀÓ ³» UMG ¿ä¼Ò ½ÃÆ® Ç¥½Ã ¹× ¼û±â±â
__½½·¹ÀÌÆ® À̺¥Æ®¿¡ ÇÔ¼ö È£Ãâ ¿¬°á
__¾ð¸®¾ó ¸ð¼Ç ±×·¡ÇÈ°ú µ¥ÀÌÅÍ ¹ÙÀεù »ç¿ë
__½ºÅ¸ÀÏÀ» »ç¿ëÇØ À§Á¬ ¸ð¾ç Á¦¾î
__Ä¿½ºÅÒ SWidget/UWidget »ý¼º
¡Ú ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë ¡Ú
¡á UE4 ¹× ºí·çÇÁ¸°Æ® ÆíÁý±â¿Í Àß ÅëÇյǴ C Ŭ·¡½º ¹× ±¸Á¶Ã¼ »ý¼º
¡á ¾ð¸®¾ó ¿£Áø¿¡ Æ÷ÇÔµÈ ´Ù¾çÇÑ API·Î ÀÛ¾÷ÇÏ´Â ¹æ¹ý
¡á UE4 ÇÁ·ÎÁ§Æ®¿¡¼ À̺¥Æ®, µ¨¸®°ÔÀÌÆ®, ÀÎÅÍÆäÀ̽º¿Í °°Àº °í±Þ °³³ä È°¿ë
¡á C ¸¦ ±â¹ÝÀ¸·Î ĵ¹ö½º(Canvas)¿Í UMG¸¦ »ç¿ëÇØ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ±¸ÃàÇϱâ
¡á Ä¿½ºÅÒ À©µµ¿ì¿Í ÆíÁý±â¸¦ ¸¸µé¾î ¾ð¸®¾ó ÆíÁý±â ±â´É È®ÀåÇϱâ
¡á C , ºí·¢º¸µå(Blackboard), Çൿ Æ®¸®(Behavior Tree)¸¦ »ç¿ëÇÑ AI ÀÛ¾÷ ¹× ¼ºñ½º ±¸Çö
¡á ³×Æ®¿öÅ· Áö¿øÀ» À§ÇÑ C ÄÚµå ÀÛ¼º°ú ¼Ó¼º ¹× ÇÔ¼ö º¹Á¦
¡Ú ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¡Ú
°ÔÀÓ µðÀÚÀΰú C ÀÇ ±âº» »çÇ×À» ÀÌÇØÇÏ°í ÀÖÀ¸¸é¼ ¾ð¸®¾ó·Î ¸¸µå´Â °ÔÀÓ¿¡ ³×ÀÌƼºê Äڵ带 ÅëÇÕÇÏ°íÀÚ ÇÏ´Â °ÔÀÓ °³¹ßÀÚ¸¦ ´ë»óÀ¸·Î ÇÑ´Ù. ƯÈ÷ ¿£ÁøÀ» È®ÀåÇϰųª, µðÀÚÀ̳ʸ¦ À§ÇÑ Á¦¾î°¡ ½±°í À¯¿¬ÇÑ ·¹º§ ±¸¼º ½Ã½ºÅÛÀ» Á¦°øÇÏ·Á´Â ÇÁ·Î±×·¡¸Ó¿¡°Ô ÀûÇÕÇÏ´Ù.
¡Ú ÀÌ Ã¥ÀÇ ±¸¼º ¡Ú
1Àå. ¡®UE4 °³¹ß µµ±¸¡¯¿¡¼´Â UE4 °ÔÀÓ °³¹ßÀ» ½ÃÀÛÇÏ´Â µ¥ ÇÊ¿äÇÑ ±âº» ·¹½ÃÇÇ¿Í °ÔÀÓ Äڵ带 ÀÛ¼ºÇÏ´Â µ¥ »ç¿ëÇÏ´Â ±âº» µµ±¸¸¦ ¼³¸íÇÑ´Ù.
2Àå. ¡®Å¬·¡½º »ý¼º¡¯¿¡¼´Â UE4 ºí·çÇÁ¸°Æ® ÆíÁý±â¿Í Àß ÅëÇյǴ C Ŭ·¡½º ¹× ±¸Á¶Ã¼ »ý¼º ¹æ¹ýÀ» ´Ù·é´Ù. ÀÌ·¯ÇÑ Å¬·¡½º´Â UCLASS¶ó°í ÇÏ´Â ÀÏ¹Ý C Ŭ·¡½ºÀÇ ºí·çÇÁ¸°Æ®¿ë ¹öÀüÀÌ´Ù.
3Àå. ¡®¸Þ¸ð¸® °ü¸®, ½º¸¶Æ® Æ÷ÀÎÅÍ, µð¹ö±ë¡¯¿¡¼´Â ¼¼ °¡Áö À¯ÇüÀÇ Æ÷ÀÎÅ͸¦ ¸ðµÎ »ç¿ëÇÏ´Â µ¶ÀÚ¸¦ ´ë»óÀ¸·Î Çϸç, ÀÚµ¿ °¡Áöºñ Ä÷º¼Ç(automatic garbage collection)°ú °ü·ÃÇÑ ¸î °¡Áö ÀϹÝÀûÀÎ ÇÔÁ¤À» ´Ù·é´Ù. ¶ÇÇÑ Å©·¡½Ã(crash)¸¦ ºÐ¼®Çϰųª ±â´ÉÀÌ Á¦´ë·Î ±¸ÇöµÆ´ÂÁö È®ÀÎÇÏ°íÀÚ ºñÁÖ¾ó ½ºÆ©µð¿À ¶Ç´Â XCode¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù.
4Àå. ¡®¾×ÅÍ¿Í ÄÄÆ÷³ÍÆ®¡¯¿¡¼´Â Ä¿½ºÅÒ ¾×ÅÍ¿Í ÄÄÆ÷³ÍÆ®°¡ ÇÏ´Â ¿ªÇÒ, »óÈ£ÀÛ¿ë ¹æ½Ä ¹× »ý¼º ¹æ¹ýÀ» ´Ù·é´Ù.
5Àå. ¡®À̺¥Æ®¿Í µ¨¸®°ÔÀÌÆ® 󸮡¯¿¡¼´Â µ¨¸®°ÔÀÌÆ®(delegate), À̺¥Æ®(event), À̺¥Æ® 󸮸¦ ´Ù·ç¸ç, ÀڽŸ¸ÀÇ ±¸ÇöÀ» »ý¼ºÇÏ´Â ¹æ¹ýµµ ¼³¸íÇÑ´Ù.
6Àå. ¡®ÀԷ°ú Ãæµ¹¡¯¿¡¼´Â UE4¿¡¼ »ç¿ëÀÚ ÀԷ°ú C ÇÔ¼ö¸¦ ¿¬°áÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϸç C ·Î Ãæµ¹À» ó¸®ÇÏ´Â ¹æ¹ýµµ ´Ù·é´Ù. ¶ÇÇÑ »ç¿ëÀÚ ÀԷ°ú Ãæµ¹ °°Àº °ÔÀÓ À̺¥Æ®¸¦ ´Ù·ç´Â ±âº» 󸮵µ Á¦°øÇÔÀ¸·Î½á µðÀÚÀ̳ʰ¡ ÇÊ¿ä¿¡ µû¶ó ºí·çÇÁ¸°Æ®¸¦ »ç¿ëÇØ ÀçÁ¤ÀÇÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
7Àå. ¡®Å¬·¡½º¿Í ÀÎÅÍÆäÀ̽º °£ÀÇ Åë½Å: ÆÄÆ® 1¡¯¿¡¼´Â ÀڽŸ¸ÀÇ UInterface¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϸç, C ¸¦ »ç¿ëÇØ Ä¿ÇøµÀ» ÃÖ¼ÒÈÇÏ°í Äڵ带 °£°áÇÏ°Ô À¯ÁöÇÏ´Â ¹æ¹ýµµ ¾Ë·ÁÁØ´Ù.
8Àå. ¡®Å¬·¡½º¿Í ÀÎÅÍÆäÀ̽º °£ÀÇ Åë½Å: ÆÄÆ® 2¡¯¿¡¼´Â 7Àå¿¡¼ ´Ù·é ³»¿ëÀÇ ¿¬Àå¼±À¸·Î, ºí·çÇÁ¸°Æ®¸¦ È°¿ëÇØ UInterface°¡ ÀÛµ¿Çϵµ·Ï ¸¸µå´Â ¹æ¹ýÀ» ÀÚ¼¼È÷ ´Ù·é´Ù.
9Àå. ¡®C ¿Í ¾ð¸®¾ó ÆíÁý±â ¿¬µ¿: ÆÄÆ® 1¡¯¿¡¼´Â Ä¿½ºÅÒ ºí·çÇÁ¸°Æ®¿Í ¾Ö´Ï¸ÞÀÌ¼Ç ³ëµå¸¦ »ý¼ºÇØ ÆíÁý±â¸¦ Ä¿½ºÅ͸¶ÀÌÁîÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.
10Àå. ¡®C ¿Í ¾ð¸®¾ó ÆíÁý±â ¿¬µ¿: ÆÄÆ® 2¡¯¿¡¼´Â »ç¿ëÀÚ°¡ »ý¼ºÇÑ Å¸ÀÔÀ» °Ë»çÇϱâ À§ÇØ Ä¿½ºÅÒ ÆíÁý±â â°ú Ä¿½ºÅÒ µðÅ×ÀÏ ÆгÎÀ» ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.
11Àå. ¡®UE4 API »ç¿ëÇϱ⡯¿¡¼´Â ÇÁ·Î±×·¡¸Ó°¡ ¿£Áø¿¡°Ô ¹«¾ùÀ» ÇØ¾ß ÇÒÁö Áö½ÃÇÏ´Â ¹æ¹ýÀÎ API¸¦ ¼³¸íÇÑ´Ù. °¢ ¸ðµâÀº API¸¦ Á¦°øÇϸç, API¸¦ »ç¿ëÇÏ·Á¸é ºôµå¿¡¼ »ç¿ëÇÒ ¸ðµç API¸¦ ProjectName.Build.cs ÆÄÀÏ¿¡ ³ª¿ÇØ¾ß ÇÑ´Ù.
12Àå. ¡®UE4¿¡¼ÀÇ ¸ÖƼÇ÷¹ÀÌ¾î ³×Æ®¿öÅ·¡¯¿¡¼´Â ³×Æ®¿öÅ©¸¦ ÅëÇØ ¼Ó¼º°ú ±â´ÉÀ» º¹Á¦ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ¶ÇÇÑ ¼¹ö¿Í Ŭ¶óÀ̾ðÆ®¸¦ µ¿½Ã¿¡ Å×½ºÆ®ÇÏ´Â ¹æ¹ýµµ ´Ù·é´Ù.
13Àå. ¡®NPC Á¦¾î¸¦ À§ÇÑ AI¡¯¿¡¼´Â °£´ÜÇÑ ÀΰøÁö´É(AI)À» º¸À¯ÇÑ NPC ij¸¯Å͸¦ Á¦¾îÇÏ´Â ¹æ¹ýÀ» ´Ù·é´Ù.
14Àå. ¡®»ç¿ëÀÚ ÀÎÅÍÆäÀ̽º - UI¿Í UMG¡¯¿¡¼´Â Ç÷¹À̾°Ô Çǵå¹éÀ» Ç¥½ÃÇÏ´Â °ÍÀº °ÔÀÓ µðÀÚÀο¡¼ °¡Àå Áß¿äÇÑ ¿ä¼Ò Áß ÇϳªÀ̸ç, ÀϹÝÀûÀ¸·Î °ÔÀÓ ³»¿¡¼ ÀÏÁ¾ÀÇ HUD ¶Ç´Â ¸Þ´º¸¦ Á¦°øÇÑ´Ù.
¡á UE4 ¹× ºí·çÇÁ¸°Æ® ÆíÁý±â¿Í Àß ÅëÇյǴ C Ŭ·¡½º ¹× ±¸Á¶Ã¼ »ý¼º
¡á ¾ð¸®¾ó ¿£Áø¿¡ Æ÷ÇÔµÈ ´Ù¾çÇÑ API·Î ÀÛ¾÷ÇÏ´Â ¹æ¹ý
¡á UE4 ÇÁ·ÎÁ§Æ®¿¡¼ À̺¥Æ®, µ¨¸®°ÔÀÌÆ®, ÀÎÅÍÆäÀ̽º¿Í °°Àº °í±Þ °³³ä È°¿ë
¡á C ¸¦ ±â¹ÝÀ¸·Î ĵ¹ö½º(Canvas)¿Í UMG¸¦ »ç¿ëÇØ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ±¸ÃàÇϱâ
¡á Ä¿½ºÅÒ À©µµ¿ì¿Í ÆíÁý±â¸¦ ¸¸µé¾î ¾ð¸®¾ó ÆíÁý±â ±â´É È®ÀåÇϱâ
¡á C , ºí·¢º¸µå(Blackboard), Çൿ Æ®¸®(Behavior Tree)¸¦ »ç¿ëÇÑ AI ÀÛ¾÷ ¹× ¼ºñ½º ±¸Çö
¡á ³×Æ®¿öÅ· Áö¿øÀ» À§ÇÑ C ÄÚµå ÀÛ¼º°ú ¼Ó¼º ¹× ÇÔ¼ö º¹Á¦
¡Ú ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¡Ú
°ÔÀÓ µðÀÚÀΰú C ÀÇ ±âº» »çÇ×À» ÀÌÇØÇÏ°í ÀÖÀ¸¸é¼ ¾ð¸®¾ó·Î ¸¸µå´Â °ÔÀÓ¿¡ ³×ÀÌƼºê Äڵ带 ÅëÇÕÇÏ°íÀÚ ÇÏ´Â °ÔÀÓ °³¹ßÀÚ¸¦ ´ë»óÀ¸·Î ÇÑ´Ù. ƯÈ÷ ¿£ÁøÀ» È®ÀåÇϰųª, µðÀÚÀ̳ʸ¦ À§ÇÑ Á¦¾î°¡ ½±°í À¯¿¬ÇÑ ·¹º§ ±¸¼º ½Ã½ºÅÛÀ» Á¦°øÇÏ·Á´Â ÇÁ·Î±×·¡¸Ó¿¡°Ô ÀûÇÕÇÏ´Ù.
¡Ú ÀÌ Ã¥ÀÇ ±¸¼º ¡Ú
1Àå. ¡®UE4 °³¹ß µµ±¸¡¯¿¡¼´Â UE4 °ÔÀÓ °³¹ßÀ» ½ÃÀÛÇÏ´Â µ¥ ÇÊ¿äÇÑ ±âº» ·¹½ÃÇÇ¿Í °ÔÀÓ Äڵ带 ÀÛ¼ºÇÏ´Â µ¥ »ç¿ëÇÏ´Â ±âº» µµ±¸¸¦ ¼³¸íÇÑ´Ù.
2Àå. ¡®Å¬·¡½º »ý¼º¡¯¿¡¼´Â UE4 ºí·çÇÁ¸°Æ® ÆíÁý±â¿Í Àß ÅëÇյǴ C Ŭ·¡½º ¹× ±¸Á¶Ã¼ »ý¼º ¹æ¹ýÀ» ´Ù·é´Ù. ÀÌ·¯ÇÑ Å¬·¡½º´Â UCLASS¶ó°í ÇÏ´Â ÀÏ¹Ý C Ŭ·¡½ºÀÇ ºí·çÇÁ¸°Æ®¿ë ¹öÀüÀÌ´Ù.
3Àå. ¡®¸Þ¸ð¸® °ü¸®, ½º¸¶Æ® Æ÷ÀÎÅÍ, µð¹ö±ë¡¯¿¡¼´Â ¼¼ °¡Áö À¯ÇüÀÇ Æ÷ÀÎÅ͸¦ ¸ðµÎ »ç¿ëÇÏ´Â µ¶ÀÚ¸¦ ´ë»óÀ¸·Î Çϸç, ÀÚµ¿ °¡Áöºñ Ä÷º¼Ç(automatic garbage collection)°ú °ü·ÃÇÑ ¸î °¡Áö ÀϹÝÀûÀÎ ÇÔÁ¤À» ´Ù·é´Ù. ¶ÇÇÑ Å©·¡½Ã(crash)¸¦ ºÐ¼®Çϰųª ±â´ÉÀÌ Á¦´ë·Î ±¸ÇöµÆ´ÂÁö È®ÀÎÇÏ°íÀÚ ºñÁÖ¾ó ½ºÆ©µð¿À ¶Ç´Â XCode¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù.
4Àå. ¡®¾×ÅÍ¿Í ÄÄÆ÷³ÍÆ®¡¯¿¡¼´Â Ä¿½ºÅÒ ¾×ÅÍ¿Í ÄÄÆ÷³ÍÆ®°¡ ÇÏ´Â ¿ªÇÒ, »óÈ£ÀÛ¿ë ¹æ½Ä ¹× »ý¼º ¹æ¹ýÀ» ´Ù·é´Ù.
5Àå. ¡®À̺¥Æ®¿Í µ¨¸®°ÔÀÌÆ® 󸮡¯¿¡¼´Â µ¨¸®°ÔÀÌÆ®(delegate), À̺¥Æ®(event), À̺¥Æ® 󸮸¦ ´Ù·ç¸ç, ÀڽŸ¸ÀÇ ±¸ÇöÀ» »ý¼ºÇÏ´Â ¹æ¹ýµµ ¼³¸íÇÑ´Ù.
6Àå. ¡®ÀԷ°ú Ãæµ¹¡¯¿¡¼´Â UE4¿¡¼ »ç¿ëÀÚ ÀԷ°ú C ÇÔ¼ö¸¦ ¿¬°áÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϸç C ·Î Ãæµ¹À» ó¸®ÇÏ´Â ¹æ¹ýµµ ´Ù·é´Ù. ¶ÇÇÑ »ç¿ëÀÚ ÀԷ°ú Ãæµ¹ °°Àº °ÔÀÓ À̺¥Æ®¸¦ ´Ù·ç´Â ±âº» 󸮵µ Á¦°øÇÔÀ¸·Î½á µðÀÚÀ̳ʰ¡ ÇÊ¿ä¿¡ µû¶ó ºí·çÇÁ¸°Æ®¸¦ »ç¿ëÇØ ÀçÁ¤ÀÇÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
7Àå. ¡®Å¬·¡½º¿Í ÀÎÅÍÆäÀ̽º °£ÀÇ Åë½Å: ÆÄÆ® 1¡¯¿¡¼´Â ÀڽŸ¸ÀÇ UInterface¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϸç, C ¸¦ »ç¿ëÇØ Ä¿ÇøµÀ» ÃÖ¼ÒÈÇÏ°í Äڵ带 °£°áÇÏ°Ô À¯ÁöÇÏ´Â ¹æ¹ýµµ ¾Ë·ÁÁØ´Ù.
8Àå. ¡®Å¬·¡½º¿Í ÀÎÅÍÆäÀ̽º °£ÀÇ Åë½Å: ÆÄÆ® 2¡¯¿¡¼´Â 7Àå¿¡¼ ´Ù·é ³»¿ëÀÇ ¿¬Àå¼±À¸·Î, ºí·çÇÁ¸°Æ®¸¦ È°¿ëÇØ UInterface°¡ ÀÛµ¿Çϵµ·Ï ¸¸µå´Â ¹æ¹ýÀ» ÀÚ¼¼È÷ ´Ù·é´Ù.
9Àå. ¡®C ¿Í ¾ð¸®¾ó ÆíÁý±â ¿¬µ¿: ÆÄÆ® 1¡¯¿¡¼´Â Ä¿½ºÅÒ ºí·çÇÁ¸°Æ®¿Í ¾Ö´Ï¸ÞÀÌ¼Ç ³ëµå¸¦ »ý¼ºÇØ ÆíÁý±â¸¦ Ä¿½ºÅ͸¶ÀÌÁîÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.
10Àå. ¡®C ¿Í ¾ð¸®¾ó ÆíÁý±â ¿¬µ¿: ÆÄÆ® 2¡¯¿¡¼´Â »ç¿ëÀÚ°¡ »ý¼ºÇÑ Å¸ÀÔÀ» °Ë»çÇϱâ À§ÇØ Ä¿½ºÅÒ ÆíÁý±â â°ú Ä¿½ºÅÒ µðÅ×ÀÏ ÆгÎÀ» ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.
11Àå. ¡®UE4 API »ç¿ëÇϱ⡯¿¡¼´Â ÇÁ·Î±×·¡¸Ó°¡ ¿£Áø¿¡°Ô ¹«¾ùÀ» ÇØ¾ß ÇÒÁö Áö½ÃÇÏ´Â ¹æ¹ýÀÎ API¸¦ ¼³¸íÇÑ´Ù. °¢ ¸ðµâÀº API¸¦ Á¦°øÇϸç, API¸¦ »ç¿ëÇÏ·Á¸é ºôµå¿¡¼ »ç¿ëÇÒ ¸ðµç API¸¦ ProjectName.Build.cs ÆÄÀÏ¿¡ ³ª¿ÇØ¾ß ÇÑ´Ù.
12Àå. ¡®UE4¿¡¼ÀÇ ¸ÖƼÇ÷¹ÀÌ¾î ³×Æ®¿öÅ·¡¯¿¡¼´Â ³×Æ®¿öÅ©¸¦ ÅëÇØ ¼Ó¼º°ú ±â´ÉÀ» º¹Á¦ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ¶ÇÇÑ ¼¹ö¿Í Ŭ¶óÀ̾ðÆ®¸¦ µ¿½Ã¿¡ Å×½ºÆ®ÇÏ´Â ¹æ¹ýµµ ´Ù·é´Ù.
13Àå. ¡®NPC Á¦¾î¸¦ À§ÇÑ AI¡¯¿¡¼´Â °£´ÜÇÑ ÀΰøÁö´É(AI)À» º¸À¯ÇÑ NPC ij¸¯Å͸¦ Á¦¾îÇÏ´Â ¹æ¹ýÀ» ´Ù·é´Ù.
14Àå. ¡®»ç¿ëÀÚ ÀÎÅÍÆäÀ̽º - UI¿Í UMG¡¯¿¡¼´Â Ç÷¹À̾°Ô Çǵå¹éÀ» Ç¥½ÃÇÏ´Â °ÍÀº °ÔÀÓ µðÀÚÀο¡¼ °¡Àå Áß¿äÇÑ ¿ä¼Ò Áß ÇϳªÀ̸ç, ÀϹÝÀûÀ¸·Î °ÔÀÓ ³»¿¡¼ ÀÏÁ¾ÀÇ HUD ¶Ç´Â ¸Þ´º¸¦ Á¦°øÇÑ´Ù.