ãããªã²ãŒã æ¥çã§ã¯ã人工ç¥èœïŒAIïŒã¯äžè¬ã«ãã³ãã¬ã€ã€ãŒãã£ã©ã¯ã¿ãŒã«ããæææ±ºå®ãšåŒã°ããŸãã åçŽãªå ŽåããããŸããæµã¯ãã¬ã€ã€ãŒãèŠãŠæ»æããŸãã ãŸãã¯ãããè€éãªãããšãã°ããªã¢ã«ã¿ã€ã æŠç¥ã«ãããAIå¶åŸ¡ã®æµã
ã¢ã³ãªã¢ã«ãšã³ãžã³ã§ã¯ã
ããã€ãã¢ããªãŒã䜿çšããŠAIãäœæã§ããŸãã åäœããªãŒã¯ãAIã䜿çšãã
åäœã決å®ããããã®ã·ã¹ãã ã§ãã ããšãã°ãåœŒã¯æŠããèµ°ãè¡åããããããããŸããã äœåãé«ãå ŽåãAIããã¬ã€ã€ãŒãšæŠãããã€ãã¢ããªãŒãäœæã§ããŸãã 50ïŒ
æªæºã®å Žåã¯ãéããŸãã
ãã®ãã¥ãŒããªã¢ã«ã§ã¯ã次ã®ããšãåŠã³ãŸãã
- PawnèŠçŽ ãå¶åŸ¡ã§ããAIãšã³ãã£ãã£ãäœæããŸã
- ããã€ãã¢ããªãŒãšé»æ¿ãäœæããŠäœ¿çšãã
- AI Perceptionã䜿çšããŠPawn SightãæäŸãã
- Pawnãæµãæ©ããŠæ»æã§ããããã«ããã€ãã¢ãæ§ç¯ãã
泚ïŒãã®èšäºã¯ãUnreal Engineãã¥ãŒããªã¢ã«ã·ãªãŒãºã®9ã€ã®ããŒãã®1ã€ã§ãã
ä»äºãå§ãã
空çœã®
ãããžã§ã¯ããããŠã³ããŒãããŠè§£åããŸãã ãããžã§ã¯ããã©ã«ããŒã«ç§»åãã
MuffinWar.uprojectãéã
ãŸã ã
[
ãã¬ã€]ãã¯ãªãã¯ããŠã²ãŒã ãéå§ããŸãã å²ãŸããé åå
ã
å·Šã¯ãªãã¯ããŠãããã£ã³ãäœæããŸãã
ãã¥ãŒããªã¢ã«ã®ãã®éšåã§ã¯ãç»é¢ãããŒãã³ã°ããAIãäœæããŸãã æµã®ããã£ã³ãAIã®èŠéã«å
¥ããšãæµã«è¿ã¥ããŠæ»æããŸãã
AIãã£ã©ã¯ã¿ãŒãäœæããã«ã¯ã3ã€ã®ãã®ãå¿
èŠã§ãã
- äœïŒãã£ã©ã¯ã¿ãŒã®ç©çç圢æ
ã ç§ãã¡ã®å Žåãäœã¯ããã£ã³ã§ãã
- éïŒãã£ã©ã¯ã¿ãŒãå¶åŸ¡ãããšã³ãã£ãã£ã ãã¬ãŒã€ãŒãŸãã¯AIã«ããããšãã§ããŸãã
- è³ïŒ AIãæ±ºå®ãäžãæ¹æ³ã è³ã¯ããŸããŸãªæ¹æ³ã§äœæã§ããŸããããšãã°ãC ++ã³ãŒãããã«ãŒããªã³ããããã€ãã¢ããªãŒã䜿çšã§ããŸãã
ç§ãã¡ã¯ãã§ã«èº«äœãæã£ãŠããã®ã§ãéãšè³ãå¿
èŠã§ãã ãŸãããéããšãªã
ã³ã³ãããŒã©ãŒãäœæããŸãã
ã³ã³ãããŒã©ãŒãšã¯ïŒ
ã³ã³ãããŒã©ãŒã¯ãPawnã«
çæ¯ã§ããéç©ççãªã¢ã¯ã¿ãŒã§ãã 玹ä»ããããšã§ãã³ã³ãããŒã©ãŒãïŒãæ³åã®ãšããïŒPawn
ãå¶åŸ¡ã§ããããã«ãªããŸãã ãããããã®æèã§ã統治ããšã¯ã©ãããæå³ã§ããïŒ
ãã¬ãŒã€ãŒã«ãšã£ãŠãããã¯PawnããŒãæŒããšäœããè¡ãããããšãæå³ããŸãã ã³ã³ãããŒã©ãŒã¯ãã¬ã€ã€ãŒã®å
¥åãåãåããå
¥åãPawnã«éä¿¡ããŸãã ãŸããã³ã³ãããŒã©ãŒã¯å
¥åèªäœãåŠçããPawnã«ã¢ã¯ã·ã§ã³ãå®è¡ããããã«åœä»€ã§ããŸãã
AIã®å ŽåãPawnã¯ã³ã³ãããŒã©ãŒãŸãã¯è³ããæ
å ±ãåãåãããšãã§ããŸãïŒå®è£
æ¹æ³ã«ãã£ãŠç°ãªããŸãïŒã
AIã䜿çšããŠããã£ã³ãå¶åŸ¡ããã«ã¯
ãAIã³ã³ãããŒã©ãŒãšåŒã°ããç¹å¥ãªã¿ã€ãã®ã³ã³ãããŒã©ãŒãäœæããå¿
èŠããããŸãã
AIã³ã³ãããŒã©ãŒã®äœæ
Characters \ Muffin \ AIã«ç§»åããæ°ãã
ãã«ãŒããªã³ãã¯ã©ã¹ãäœæããŸãã
AIControllerã芪ã¯ã©ã¹ãšããŠéžæãã
AIC_Muffinãšããååã
ä»ããŸãã
次ã«ãããã£ã³ã«æ°ããAIã³ã³ãããŒã©ãŒã䜿çšããããã«æç€ºããå¿
èŠããããŸãã
Characters \ Muffin \ Blueprintsã«ç§»åãã
BP_Muffinãéã
ãŸã ã
ããã©ã«ãã§ã¯ã詳现ããã«ã«ããã©ã«ãã®ãã«ãŒããªã³ãèšå®ã衚瀺ãããŸãã ããã§ãªãå Žåã¯ãããŒã«ããŒã®ã
ã¯ã©ã¹ã®ããã©ã«ãããã¯ãªãã¯ããŸãã
[詳现]ããã«ã«ç§»åãã[
ããŒã³]ã»ã¯ã·ã§ã³ãèŠã€ããŸãã
AI Controller Classã
AIC_Muffinã«èšå®ã
ãŸã ã ããã«ãããããã£ã³ãäœæãããšãã«ã³ã³ãããŒã©ãŒã®ã€ã³ã¹ã¿ã³ã¹ãäœæãããŸãã
ããã£ã³ãåçã«äœæããããã
Auto Possess AIã®å€ã
Spawnedã«
èšå®ããå¿
èŠããããŸãã ãããã£ãŠã
AIC_Muffinã¯äœææã«
BP_Muffinãèªåç
ã«èšå®ããŸãã
[
ã³ã³ãã€ã«]ãã¯ãªãã¯ãã
BP_Muffinãéã
ãŸã ã
次ã«ãããã£ã³ã®åäœãå¶åŸ¡ããããžãã¯ãäœæããŸãã
ããã«ã¯
ããã€ãã¢ããªãŒã䜿çšã§ããŸãã
ããã€ãã¢ããªãŒã®äœæ
Characters \ Muffin \ AIã«ç§»åããŠã
Add New \ Artificial Intelligence \ Behavior TreeãéžæããŸãã
BT_Muffinãšååã
ä»ããŠéããŸãã
ããã€ãã¢ããªãŒãšãã£ã¿
ããã€ãã¢ããªãŒãšãã£ã¿ã«ã¯2ã€ã®æ°ããããã«ããããŸãã
- åäœããªãŒïŒããã¯ãåäœããªãŒã®ããŒããäœæããã°ã©ãã§ã
- 詳现ïŒéžæããããŒãã®ããããã£ãããã«è¡šç€ºãããŸãã
- 黿¿ïŒãã®ããã«ã«ã¯ã黿¿ããŒïŒåŸã§è©³ãã説æããŸãïŒãšãã®æå³ã衚瀺ãããŸãã ã²ãŒã ã®å®è¡äžã«ã®ã¿è¡šç€ºãããŸãã
ãã«ãŒããªã³ããšåæ§ã«ãåäœããªãŒã¯ããŒãã§æ§æãããŸãã åäœããªãŒã«ã¯4ã€ã®ã¿ã€ãã®ããŒãããããŸãã æåã®2ã€ã¯
taskãš
compositeã§ãã
ã¿ã¹ã¯ãšã³ã³ããžãããšã¯äœã§ããïŒ
ååã瀺ãããã«ãã¿ã¹ã¯ã¯äœãããè¡ããããŒãã§ãã ã³ã³ããã§ãŒã³ãªã©ã®è€éãªãã®ã§ããåŸ
æ©ãªã©ã®åçŽãªãã®ã§ãããŸããŸããã
ã¿ã¹ã¯ãå®è¡ããã«ã¯ãã³ã³ããžããïŒã³ã³ããžããïŒã䜿çšããå¿
èŠããããŸãã ããã€ãã¢ããªãŒã¯ãå€ãã®ãã©ã³ãïŒåäœïŒã§æ§æãããŠããŸãã åãã©ã³ãã®ã«ãŒãã«ã¯ã³ã³ããžããããããŸãã ç°ãªãã¿ã€ãã®ã³ã³ããžããã«ã¯ãåããŒããå®è¡ããç°ãªãæ¹æ³ããããŸãã
次ã®äžé£ã®ã¢ã¯ã·ã§ã³ããããšããŸãã
Sequenceã¯åããŒããå·Šããå³ã«å®è¡ãããããåã¢ã¯ã·ã§ã³ãé æ¬¡å®è¡ããã«ã¯ã
Sequenceã³ã³ããžããã䜿çšããå¿
èŠããããŸãã ããã¯æ¬¡ã®ããã«ãªããŸãã
泚ïŒã³ã³ããžããã§å§ãŸããã®ã¯ãã¹ãŠ
ãµãããªãŒãšåŒã¶ããšãã§ããŸãã éåžžããããã¯åäœã§ãã ãã®äŸã§ã¯ãã
ã·ãŒã±ã³ã¹ã ã
ãæµã«
ç§»åã ã
ãæµã«
åãã£ãŠå転ããããã³ãæ»æãã¯ãæµãæ»æããããšèããããšãã§ããŸãã
SequenceåããŒãã®ããããã
å®è¡ã«
倱æãããšãSequenceã¯å®è¡ã忢ããŸãã
ããšãã°ãPawnãæµã«åãã£ãŠç§»åã§ããªãå Žåã
Move To Enemyã¯å€±æããŸãã ããã¯ã
æµãžã®
å転ãš
æ»æãå®äºããªãããšãæå³ããŸãã ãã ããããŒã³ããªããšãæµã«åãã£ãŠç§»åã§ããã°ããããã¯æºããããŸãã
åŸã§ã
ã»ã¬ã¯ã¿ãŒã³ã³ããžããã«ã€ããŠãåŠç¿ããŸãã ããã§ã¯ãPawnãã©ã³ãã ãªãã€ã³ãã«ç§»åããŠåŸ
æ©ããããã«
Sequenceã䜿çšããŸãã
ã©ã³ãã ãã€ã³ãç§»å
ã·ãŒã±ã³ã¹ãäœæããããã
Rootã«æ¥ç¶ããŸãã
次ã«ãPawnãç§»åããå¿
èŠããããŸãã
MoveToãäœæããããã
Sequenceã«æ¥ç¶ããŸãã ãã®ããŒãã¯ãPawnãæå®ããããã€ã³ããŸãã¯ã¢ã¯ã¿ãŒã«ç§»åããŸãã
次ã«ã
åŸ
æ©ãäœæããããã
Sequenceã«æ¥ç¶ããŸãã ãã®ããŒãã¯
MoveToã®
å³åŽã«
é
眮ããå¿
èŠããããŸãã åããŒãã¯å·Šããå³ã«å®è¡ããããããããã§ã®é åºã¯éèŠã§ãã
泚ïŒåããŒãã®å³äžé
ã«ããæ°åãèŠãŠãå®è¡é åºã確èªã§ããŸãã å€ãäœãã»ã©ãããŒãã®åªå
床ãé«ããªããŸãã
ããã§ãšãããããŸããããªãã¯ããªãã®æåã®æ¯ãèããäœæããŸããïŒ Pawnãéžæãããã€ã³ãã«ç§»åãã5ç§éåŸ
æ©ããŸãã
Pawnãç§»åããã«ã¯ããã€ã³ããæå®ããå¿
èŠããããŸãã ãã ãã
MoveToã¯
blackboardããã®ã¿å€ãåãåãããšãã§ãããããäœæããŠã¿ãŸãããã
黿¿äœæ
Blackboardã¯ã倿°ïŒ
ããŒãšåŒã°ããïŒãä¿åããããšãå¯äžã®ç®çãšãããªãœãŒã¹ã§ãã AIã®èšæ¶ãšèããããšãã§ããŸãã
å¿
é ã§ã¯ãããŸãããã黿¿ã¯ããŒã¿ãèªã¿åããä¿åãã䟿å©ãªæ¹æ³ãæäŸããŸãã ããã€ãã¢ããªãŒã®å€ãã®ããŒãã¯é»æ¿ããŒããåä¿¡ã§ããªãããã䟿å©ã§ãã
黿¿ãäœæããã«ã¯ãã³ã³ãã³ããã©ãŠã¶ã«æ»ãã[
æ°èŠè¿œå ] \ [
人工ç¥èœ] \ [黿¿]ãéžæããŸãã
BB_Muffinãšååã
ä»ããŠéããŸãã
黿¿ãšãã£ã¿ãŒ
黿¿ãšãã£ã¿ãŒã¯2ã€ã®ããã«ã§æ§æãããŠããŸãã
- 黿¿ïŒãã®ããã«ã«ã¯ããŒã®ãªã¹ãã衚瀺ãããŸã
- 黿¿ã®è©³çްïŒãã®ããã«ã«ã¯ãéžæããããŒã®ããããã£ã衚瀺ãããŸã
次ã«ãã¿ãŒã²ãããã€ã³ããå«ãããŒãäœæããå¿
èŠããããŸãã
ã¿ãŒã²ãããã€ã³ãããŒãäœæãã
ãã€ã³ãã3D空éã«ä¿åããããããã¯ãã«ãšããŠä¿åããå¿
èŠããããŸãã [
æ°ããããŒ]ãã¯ãªãã¯ãã[
ãã¯ã¿ãŒ]ãéžæããŸãã
TargetLocationãšããååã
ä»ããŸãã
ããã§ãã©ã³ãã ãã€ã³ããçæããŠé»æ¿ã«ä¿åããæ¹æ³ãå¿
èŠã§ãã ãããè¡ãã«ã¯ãããã€ãã¢ããªãŒã®3çªç®ã®ã¿ã€ãã®ããŒãã§ãã
serviceã䜿çšããŸãã
ãµãŒãã¹ãšã¯ïŒ
ãµãŒãã¹ã¯ãç§ãã¡ãäœããããã¿ã¹ã¯ã«äŒŒãŠããŸãã ãã ããPawnã«åŒ·å¶çã«ã¢ã¯ã·ã§ã³ãå®è¡ããã代ããã«ããµãŒãã¹ã䜿çšããŠãã§ãã¯ãå®è¡ãããã黿¿ãæŽæ°ãããããŸãã
ãµãŒãã¹ã¯åå¥ã®ããŒãã§ã¯ãªããã¿ã¹ã¯ãŸãã¯è€åãçµåããŸãã ããã«ãããããå°ãªãããŒãã§äœæ¥ããå¿
èŠããããããããé åºä»ããããããªãŒãäœæãããŸãã ã¿ã¹ã¯ã®äœ¿ç𿹿³ã¯æ¬¡ã®ãšããã§ãã
ãããŠããµãŒãã¹ã®äœ¿ç𿹿³ã¯æ¬¡ã®ãšããã§ãã
ããã§ãã©ã³ãã ãã€ã³ããçæãããµãŒãã¹ãäœæã§ããŸãã
ãµãŒãã¹äœæ
BT_Muffinã«æ»ãã[
æ°ãããµãŒãã¹ ]ãã¯ãªãã¯ã
ãŸã ã
æ°ãããµãŒãã¹ãäœæãããèªåçã«éãããŸãã
BTService_SetRandomLocationãšããååã
ä»ããŸãã ååã倿Žããã«ã¯ãã³ã³ãã³ããã©ãŠã¶ã«æ»ãå¿
èŠããããŸãã
Pawnãç§»åããå¿
èŠãããå Žåã«ã®ã¿ããµãŒãã¹ãå®è¡ããå¿
èŠããããŸãã ãããè¡ãã«ã¯ã
MoveToã«æ·»ä»ã
ãŸã ã
BT_Muffinãéãã
MoveToã
å³ã¯ãªãã¯ã
ãŸã ã [
ãµãŒãã¹ã®è¿œå ] \ BTService [
ã©ã³ãã ãªå Žæã®èšå®]ãéžæããŸãã
MoveToãã¢ã¯ãã£ãã«ãªããšã
BTService_SetRandomLocationãã¢ã¯ãã£ãã«ãªããŸãã
次ã«ãã©ã³ãã ãªã¿ãŒã²ãããã€ã³ããçæããå¿
èŠããããŸãã
ã©ã³ãã ãã€ã³ãçæ
BTService_SetRandomLocationãéã
ãŸã ã
ãµãŒãã¹ããã€ã¢ã¯ãã£ãåããããã調ã¹ãã«ã¯ã
ã€ãã³ãåä¿¡ã¢ã¯ãã£ãåAIããŒã
ãäœæããŸãã 芪ãã¢ã¯ãã£ãåããããšãã«å®è¡ãããŸãïŒèŠªãæ¥ç¶ãããŠããããŒãïŒã
泚ïŒåãããšãè¡ã
ã€ãã³ãåä¿¡ã¢ã¯ãã£ããŒã·ã§ã³ã€ãã³ãããããŸãã 2ã€ã®ã€ãã³ãã®éãã¯ã
ã€ãã³ãåä¿¡ã¢ã¯ãã£ããŒã·ã§ã³AIã
Controlled PawnãæäŸããããšã§ãã
ã©ã³ãã ãã€ã³ããçæããã«ã¯ãéžæããããŒãã远å ããŸãã
Radiusã
500ã«èšå®ããŸãã
ããã«ãããå°éå¯èœãªPawnã®
500åäœå
ã§ã©ã³ãã ãªãã€ã³ããåŸãããŸãã
æ³šïŒ GetRandomPointInNavigableRadiusã¯ãããã²ãŒã·ã§ã³ããŒã¿ïŒ
NavMeshãšåŒã°ããïŒã䜿çšããŠããã€ã³ãã«å°éã§ãããã©ããã倿ããŸãã ãã®ãã¥ãŒããªã¢ã«ã§ã¯ãäºåã«NavMeshãäœæããŸããã ãã¥ãŒããŒãã«ç§»åãã
衚瀺\ããã²ãŒã·ã§ã³ãéžæããããšã§èŠèŠåã§ããŸãã
ç¬èªã®NavMeshãäœæããå Žåã¯ã
Nav Mesh Bounds VolumeãäœæããŸãã ã¹ã±ãŒã«ã倿ŽããŠãç§»åå¯èœãªé åãå¶éããŸãã
ããã§ããã€ã³ãã黿¿ã«ä¿åããå¿
èŠããããŸãã 䜿çšããããŒãéžæããã«ã¯ã2ã€ã®æ¹æ³ããããŸãã
- ããªãã©ã«åã®äœæãããŒãã§ããŒã®ååã䜿çšããŠãããŒãæå®ã§ããŸãã
- 倿°ãããã€ãã¢ããªãŒããèŠããããã«ããããšãã§ããŸãã ããã«ãããããããããŠã³ãªã¹ãããããŒãéžæã§ããŸãã
2çªç®ã®æ¹æ³ã䜿çšããŸãã
Blackboard Key Selectorã¿ã€ãã®å€æ°ãäœæããŸãã
BlackboardKeyãšããååãä»ããŠã
Instance Editableããªã³ã«ããŸãã ããã«ãããåäœããªãŒã§ãµãŒãã¹ãéžæãããšãã«å€æ°ã衚瀺ãããŸãã
次ã«ã次ã®éžæãããããŒããäœæããŸãã
èŠçŽãããšïŒ
- Event Receive Activation AIã¯ããã®èŠªãã¢ã¯ãã£ãåããããšå®è¡ãããŸãïŒãã®å Žåã¯MoveToã§ã ïŒ
- GetRandomPointInNavigableRadiusã¯ããããŒãžãããã£ã³ããååŸ500åäœå
ã®ã©ã³ãã ãªããã²ãŒã·ã§ã³å¯èœãã€ã³ããè¿ããŸã
- 黿¿ã®å€ããã¯ãã«ãšããŠèšå®ã¯ã黿¿ã®ããŒïŒ BlackboardKeyãä»ããŠéä¿¡ãããïŒãã©ã³ãã ãªãã€ã³ãå€ã«èšå®ããŸã
[
ã³ã³ãã€ã«]ãã¯ãªãã¯ãã
BTService_SetRandomLocationãéã
ãŸã ã
次ã«ã黿¿ã䜿çšããå¿
èŠãããããšãããã€ãã¢ããªãŒã«äŒããŸãã
黿¿ã®éžæ
BT_MuffinãéããäœãéžæãããŠããªãããšã確èªããŸãã [詳现]ããã«ã«ç§»åããŸãã
åäœããªãŒã§ ã
Blackboard Assetã
BB_Muffinã«èšå®ã
ãŸã ã
ãã®åŸã
MoveToãš
BTService_SetRandomLocationã¯æåã®é»æ¿ããŒãèªåçã«äœ¿çšããŸãã ãã®äŸã§ã¯ãããã¯
TargetLocationã§ãã
æåŸã«ãããã€ãã¢ããªãŒãéå§ããããAIã³ã³ãããŒã©ãŒã«æç€ºããå¿
èŠããããŸãã
å®è¡ããªãŒã®åäœ
AIC_Muffinãéãã
Run Behavior Treeã
ã€ãã³ãBeginPlayã«æ¥ç¶ã
ãŸã ã
BTAssetã«
BT_Muffinãéžæã
ãŸã ã
ãã®ããã
AIC_Controllerã®äœææã«
BT_Muffinã
èµ·åãããŸãã
[
ã³ã³ãã€ã«]ãã¯ãªãã¯ããŠãã¡ã€ã³ãšãã£ã¿ãŒã«æ»ããŸãã [
åç]ãã¯ãªãã¯ããŠãããã£ã³ãäœæããç»é¢å
ãããŸããæ§åã芳å¯ããŸãã
ç§ãã¡ã¯äžçæžåœåããªããã°ãªããŸããã§ãããããããŸããïŒ æ¬¡ã«ãèŠéå
ã®æµãèªèããããã«AIã³ã³ãããŒã©ãŒãæ§æããå¿
èŠããããŸãã
ããã«ã¯
AI Perceptionã䜿çšã§ããŸãã
AIç¥èŠãæ§æãã
AIç¥èŠã¯ãã¢ã¯ã¿ãŒã«è¿œå ã§ããã³ã³ããŒãã³ãã§ãã ããã䜿çšããŠãAIã®
ææ
ïŒèŠèŠãèŽèŠãªã©ïŒãäžããããšãã§ããŸãã
AIC_Muffinãéãã
AIPerceptionã³ã³ããŒãã³ãã远å ããŸãã
次ã«ãææ
ã远å ããå¿
èŠããããŸãã ããã£ã³ã«èŠçã«å
¥ãå¥ã®ããã£ã³ãèªèãããããã
ããžã§ã³ã远å ããå¿
èŠããããŸãã
AIPerceptionãéžæããŠã詳现ããã«ã«ç§»åããŸãã
AI Perceptionã»ã¯ã·ã§ã³ã§ãæ°ããèŠçŽ ã
Senses Configã«è¿œå ããŸãã
AI Sightæ§æã®èŠçŽ
0ã
èšå®ã ãå±éããŸãã
ããžã§ã³ã«ã¯3ã€ã®äž»èŠãªãã©ã¡ãŒã¿ãŒããããŸãã
- èŠåååŸïŒããã£ã³ãèŠããæå€§è·é¢ã å€3000ãããã«æ®ããŸãããã
- èŠåååŸã®åªå€±ïŒããã£ã³ãæµãèŠãå Žåãããã¯ãããã£ã³ã圌ã®èŠçã倱ãããã«æµãé¢ããªããã°ãªããªãå€ã§ãã ããã«å€3500ãæ®ããŸãããã
- åšèŸºèŠéã®ååã®è§åºŠïŒããã£ã³ã®èŠéè§ã å€ã45ã«èšå®ããŸãã ããã«ãããããã£ã³ã«90床ã®èŠéè§ãäžããããŸãã
ããã©ã«ãã§ã¯ãAI Perceptionã¯æµïŒå¥ã®
ã³ãã³ãã«å²ãåœãŠããã俳åªïŒã®ã¿ãèªèããŸãã ãã ããããã©ã«ãã§ã¯ãã¢ã¯ã¿ãŒã«ã¯ã³ãã³ãããããŸããã ã¢ã¯ã¿ãŒã«ã³ãã³ãããªãå ŽåãAI Perceptionã¯ããã
ãã¥ãŒãã©ã«ãšèŠãªããŸãã
å·çæç¹ã§ã¯ããã«ãŒããªã³ãã䜿çšããŠã³ãã³ããå²ãåœãŠãæ¹æ³ã¯ãããŸããã§ããã 代ããã«ãAI Perpcetionã«äžç«ã®ã¢ã¯ã¿ãŒãèªèããããã«æç€ºããã ãã§ãã ãããè¡ãã«ã¯ã[
æå±ã«ããæ€åº]ãå±éãã[
äžæ§ã®æ€åº]ããªã³ã«ããŸãã
[
ã³ã³ãã€ã«]ãã¯ãªãã¯ããŠãã¡ã€ã³ãšãã£ã¿ãŒã«æ»ããŸãã [
åç]ãã¯ãªãã¯ããŠãããã£ã³ãäœæããŸãã
'ããŒãæŒããŠAIãããã°ç»é¢ã衚瀺ããŸãã AIç¥èŠãèŠèŠåããã«ã¯ã
ãã³ããŒã® 4ãæŒã
ãŸã ã ããã£ã³ã衚瀺ããããšãç·è²ã®çäœã衚瀺ãããŸãã
次ã«ãããã£ã³ãæµã«åãã£ãŠç§»åããå¿
èŠããããŸãã ãããè¡ãã«ã¯ãè¡åããªãŒãæµã«ã€ããŠ
ç¥ã£ãŠããå¿
èŠããããŸãã ããã¯ã黿¿ã«æµãžã®ãªã³ã¯ãä¿æããããšã§å®è¡ã§ããŸãã
æµã®éµãäœæãã
BB_Muffinãéãã
Objectåã®ããŒã远å ããŸãã ååã
Enemyã«å€æŽããŸãã
ããŒã
Objectåã§ããããããããŸã§ã®ãšããã
MoveToã§
Enemyã䜿çšããããšã¯ã§ããŸãããã
MoveToã¯
VectorãŸãã¯
Actoråã®ããŒã®ã¿ãåãåãããšãã§ããŸãã
ãããä¿®æ£ããã«ã¯ã[
æµ]ãéžæãã[
ããŒã¿ã€ã]ãå±éããŸãã
Base Classã
Actorã«èšå®ããŸãã ããã«ãããããã€ãã¢ããªãŒã
Enemyã
ã¢ã¯ã¿ãŒãšããŠèªèããããšãã§ããŸãã
BB_Muffinãéã
ãŸã ã æ¬¡ã«ãæµã«åãã£ãŠç§»åããããã®åäœãäœæããå¿
èŠããããŸãã
æµã«åããåã
BT_Muffinãéãã
Sequenceã
Rootããåé¢ããŸãã ãããè¡ãã«ã¯ã
AltããŒãæŒããªãããããããæ¥ç¶ããŠãã
ã¯ã€ã€ã
å·Šã¯ãªãã¯ããŸãã ãšãããããã©ã³ãã ç§»åã®ãµãããªãŒã¯ãã®ãŸãŸã«ããŠãããŸãããã
éžæããããŒããäœæãã
Blackboard Keyã
Enemyã«èšå®ããŸãïŒ
åæã«ãPawnã¯
Enemyã«ç§»åããŸãã å Žåã«ãã£ãŠã¯ãããŒã³ãå®å
šã«ã¿ãŒã²ããã«åããªãããã
BBãšã³ããªã«çŽé¢ããããã«
å転ã䜿çšããå¿
èŠããã
ãŸã ã
ããã§ãAI Perceptionãå¥ã®ããã£ã³ãèªèãããšãã«
Enemyãèšå®ããå¿
èŠããããŸãã
æµã®ããŒèšå®
AIC_Muffinãéãã
AIPerceptionã³ã³ããŒãã³ããéžæããŸãã
On Perception Updatedã€ãã³ãã远å ããŸãã
ãã®ã€ãã³ãã¯ãææ
ãæŽæ°ããããšãã«å®è¡ãããŸãã ç§ãã¡ã®å ŽåãAIã誰ãã«æ°ã¥ãããšãããŸãã¯ãããèŠå€±ã£ããšãã«å®è¡ãããŸãã ãã®ã€ãã³ãã¯ãæèŠã«ãã£ãŠçŸåšæ€åºãããŠãã俳åªã®ãªã¹ããäŒããŸãã
éžæããããŒãã远å ããŸãã Make
Literal Nameã
Enemyã«èšå®ãããŠããããšã確èªããŠ
ãã ãã ã
ããã«ãããAIã«æ¢ã«æµããããã©ããã確èªã§ããŸãã ããã§ãªããã°ãåœŒã«æµãäžããªããã°ãªããŸããã ãããè¡ãã«ã¯ãéžæããããŒãã远å ããŸãã
èŠçŽãããšïŒ
- IsValidã¯ã æµã®ããŒãèšå®ãããŠãããã©ããã確èªããŸã
- èšå®ãããŠããªãå Žåããã®æç¹ã§çºèŠããããã¹ãŠã®ã¢ã¯ã¿ãŒãã«ãŒãããŸã
- Cast to BP_Muffinã¯ãã¢ã¯ã¿ãŒãããã£ã³ãã©ããããã§ãã¯ããŸã
- 圌ãããã£ã³ã§ããå ŽåãåœŒãæ»ãã§ãããã©ããã確èªããŸã
- IsDeadãfalseãè¿ãå Žåãããã£ã³ãæ°ããæµãšããŠèšå®ããã«ãŒããçµäºããŸã
[
ã³ã³ãã€ã«]ãã¯ãªãã¯ããŠã
AIC_Muffinãéã
ãŸã ã [
åç]ãã¯ãªãã¯ãã2ã€ã®ããã£ã³ãäœæããŠãäžæ¹ã仿¹ã®åã«ãªãããã«ããŸãã 奥ã«ããããã£ã³ã¯ãèªåçã«å¥ã®ããã£ã³ã«ç§»åãå§ããŸãã
ããã§ãããã£ã³ãæ»æãå®è¡ããããã®ç¬èªã®ã¿ã¹ã¯ãäœæããŸãã
æ»æã¿ã¹ã¯ã®äœæ
ããã€ãã¢ããªãŒãšãã£ã¿ã®ä»£ããã«ãã³ã³ãã³ããã©ãŠã¶ã§ã¿ã¹ã¯ãäœæã§ããŸãã æ°ãã
ãã«ãŒããªã³ãã¯ã©ã¹ãäœæãã芪ã¯ã©ã¹ãšããŠ
BTTask_BlueprintBaseãéžæããŸãã
BTTask_Attackãšååã
ä»ããŠéããŸãã
ã€ãã³ãåä¿¡å®è¡AIããŒã
ã远å ããŸãã ãã®ããŒãã¯ãåäœããªãŒã
BTTask_Attackãå®è¡ãããšãã«å®è¡ãã
ãŸã ã
ãŸããããã£ã³ãæ»æãããå¿
èŠããããŸãã
BP_Muffinã«ã¯å€æ°
IsAttackingãå«ãŸããŠããŸãã èšå®ãããŠããå Žåãããã£ã³ã¯æ»æãå®è¡ããŸãã ãããè¡ãã«ã¯ãéžæããããŒãã远å ããŸãã
çŸåšã®ç¶æ
ã§ã¿ã¹ã¯ã䜿çšãããšãããã€ãã¢ããªãŒã¯ã¿ã¹ã¯ãå®äºãããã©ãããèªèããªããããã¿ã¹ã¯ã®å®è¡ã¯åæ¢ããŸãã ãããä¿®æ£ããã«ã¯ããã§ãŒã³ã®æåŸã«ã
å®è¡ã
çµäº ãã远å ããŸãã
次ã«
Successãæå¹ã«ããŸãã
Sequenceã䜿çšããŠããããã
BTTask_Attackã®åŸã«ããŒããå®è¡ã§ããŸãã
ã°ã©ãã¯æ¬¡ã®ããã«ãªããŸãã
èŠçŽãããšïŒ
- ããã€ãã¢ããªãŒãBTTask_Attackãèµ·åãããšã ã€ãã³ãåä¿¡å®è¡AIãå®è¡ãããŸã
- Cast to BP_Muffinã¯ã Controlled Pawnã®ã¿ã€ãã BP_Muffinãã©ããããã§ãã¯ããŸã
- ã¯ãã®å Žåããã®IsAttacking倿°ãèšå®ãããŸãã
- Finish Executeã¯ãã¿ã¹ã¯ãæ£åžžã«å®äºããããšãããã€ãã¢ããªãŒã«èªèãããŸã
[
ã³ã³ãã€ã«]ãã¯ãªãã¯ãã
BTTask_Attackãéã
ãŸã ã
ããã§ã
BTTask_Attackãããã€ãã¢
ããªãŒã«è¿œå ããå¿
èŠããã
ãŸã ã
ããã€ãã¢ããªãŒãžã®æ»æã®è¿œå
BT_Muffinãéã
ãŸã ã æ¬¡ã«ã
BTTask_AttackããŒãã
Sequenceã®æåŸã«è¿œå ããŸãã
次ã«ã
ã·ãŒã±ã³ã¹ã®æåŸã«
åŸ
æ©ããŒãã远å ããŸãã
Wait Time倿°ã®å€ã
2ã«å€æŽããŸãã ããã«ãããããã£ã³ã¯åžžã«æ»æããªããªããŸãã
ã¡ã€ã³ãšãã£ã¿ãŒã«æ»ãã[
åç ]ãã¯ãªãã¯ããŸãã ååãšåæ§ã«ã2ã€ã®ããã£ã³ãäœæããŸãã ããã£ã³ã¯åãå§ããæµã®æ¹ã«åããå€ããŸãã ããããåœŒã¯æ»æãã2ç§éåŸ
ã¡ãŸãã 圌ãå¥ã®æµãèŠãå Žåã圌ã¯åãã·ãŒã±ã³ã¹ãå床繰ãè¿ããŸãã
æåŸã®éšåã§ã¯ãæ»æã®ãµãããªãŒãšã©ã³ãã ãªåããçµã¿åãããŸãã
ãµãããªãŒã®é£å
ãµãããªãŒãçµåããã«ã¯ã
Selectorã³ã³ããžããã䜿çšã§ããŸãã ã·ãŒã±ã³ã¹ãšåæ§ã«ãå·Šããå³ã«ãå®è¡ãããŸãã ãã ããåããŒã
ãæåããå Žåãã»ã¬ã¯ã¿ãŒã¯åæ¢ãã倱æããŸããã ãã®åäœã䜿çšããŠãåäœããªãŒã«1ã€ã®ãµãããªãŒã®ã¿ãå®è¡ãããããšãã§ããŸãã
BT_Muffinãéãã
ã«ãŒãããŒãã®åŸã«
ã»ã¬ã¯ã¿ãŒãäœæããŸãã æ¬¡ã«ã次ã®ããã«ãµãããªãŒãæ¥ç¶ããŸãã
ãã®ãããªã¹ããŒã ã§ã¯ãäžåºŠã«1ã€ã®ãµãããªãŒã®ã¿ãå®è¡ãããŸãã åãµãããªãŒã®éå§æ¹æ³ã¯æ¬¡ã®ãšããã§ãã
- æ»æïŒ ã»ã¬ã¯ã¿ãŒã¯ãæ»æã®æåã®ãµãããªãŒãèµ·åããŸãã ãã¹ãŠã®ã¿ã¹ã¯ãæ£åžžã«å®äºãããšã ã·ãŒã±ã³ã¹ãæåããŸãã ã»ã¬ã¯ã¿ã¯ãããæ€åºããå®è¡ã忢ããŸãã ããã«ãããã©ã³ãã ç§»åã®ãµãããªãŒã¯å®è¡ãããŸããã
- ããŒãã³ã°ïŒã»ã¬ã¯ã¿ãŒã¯æåã«æ»æã®ãµãããªãŒãå®è¡ããããšããŸãã Enemyãèšå®ãããŠããªãå Žåã MoveToã¯å€±æããŸãã ãããã£ãŠã ã·ãŒã±ã³ã¹ã倱æããŸãã æ»æãµãããªãŒã倱æããããã ã»ã¬ã¯ã¿ãŒã¯æ¬¡ã®åãã€ãŸãã©ã³ãã ãªåãã®ãµãããªãŒãå®è¡ããŸãã
ã¡ã€ã³ãšãã£ã¿ãŒã«æ»ãã[
åç ]ãã¯ãªãã¯ããŸãã ããã€ãã®ããã£ã³ãäœæããŠãäœæ¥ããã¹ãããŸãã
åŸ
ã£ãŠãã§ããªãããã£ã³ã¯ããã«å¥ã®ããã£ã³ãæ»æããªãã®ã§ããïŒ
åŸæ¥ã®åäœããªãŒã§ã¯ãã«ãŒãããã®æŽæ°ããšã«å®è¡ãéå§ãããŸãã ã€ãŸããæŽæ°ã®ãã³ã«ãããªãŒã¯æåã«æ»æã®ãµãããªãŒãå®è¡ããæ¬¡ã«ã©ã³ãã ãªåãã®ãµãããªãŒãå®è¡ããããšããŸãã ããã¯ã
æµã®å€ã倿ŽããããšãåäœããªãŒãå³åº§ã«ãµãããªãŒã倿Žã§ããããšãæå³ããŸãã
ãã ããã¢ã³ãªã¢ã«ã®ããã€ãã¢ããªãŒã®åäœã¯ç°ãªããŸãã Unrealã§ã¯ãæåŸã«å®è¡ãããããŒãããå®è¡ãç¶ç¶ãããŸãã AIç¥èŠã¯ä»ã®ã¢ã¯ã¿ãŒãããã«ã¯æç¥ããªããããã©ã³ãã ãªåãã®ãµãããªãŒãå®è¡ãéå§ããŸãã ããã§ãããã€ãã¢ããªãŒã¯ã©ã³ãã ç§»åããªãŒã®å®äºãåŸ
æ©ããæ»æã®ãµãããªãŒãå®è¡ããå¯èœæ§ã確èªããã ãã§ãã
ãããä¿®æ£ããããã«ãããŒãã®æåŸã®ã¿ã€ãã§ãã
decoratorsã䜿çšã§ããŸãã
ãã³ã¬ãŒã¿ãäœæãã
ãµãŒãã¹ãšåæ§ã«ããã³ã¬ãŒã¿ã¯ã¿ã¹ã¯ãŸãã¯ã³ã³ããžããã«åå ããŸãã éåžžããã³ã¬ãŒã¿ã¯ãã§ãã¯ãå®è¡ããããã«äœ¿çšãããŸãã çµæãtrueã®å Žåããã³ã¬ãŒã¿ãtrueãè¿ãããã®éãåæ§ã§ãã ãã³ã¬ãŒã¿ã®ãããã§ã芪èŠçŽ ã®å®è¡ãå¶åŸ¡ã§ããŸãã
ããã«ããã³ã¬ãŒã¿ã«ã¯ãµãããªãŒã
çµäºããæ©èœããã
ãŸã ã ããã¯ã
æµãæå®ãããŠããå Žåãã©ã³ãã ç§»åãµãããªãŒã®å®è¡ãå®äºããããšãã§ããããšãæå³ããŸãã ãããã£ãŠãããã£ã³ã¯çºèŠåŸããã«æµãæ»æããããšãã§ããŸãã
çµç«¯ã䜿çšããã«ã¯ã
Blackboardãã³ã¬ãŒã¿ã䜿çšã§ããŸãã 黿¿ããŒãèšå®ãããŠãããã©ããã確èªããã ãã§ãã
BT_Muffinãéããæ»æã®
ã·ãŒã±ã³ã¹ãµãããªãŒã
å³ã¯ãªãã¯ã
ãŸã ã [
ãã³ã¬ãŒã¿ã®è¿œå ] \ [
黿¿]ãéžæããŸãã åæã«ãBlackboardãã³ã¬ãŒã¿ãã·ãŒã±ã³ã¹ã«è¿œå ãããŸãã
次ã«ã
Blackboardãã³ã¬ãŒã¿ãéžæããŠã詳现ããã«ã«ç§»åããŸãã
Blackboard Keyã
Enemyã«èšå®ããŸãã
ããã«ããã
æµãèšå®ãããŠãããã©ããã確èª
ãããŸãã èšå®ãããŠããªãå Žåããã³ã¬ãŒã¿ã¯å€±æãã
ã·ãŒã±ã³ã¹ã¯å€±æããŸãã ããã«ãããã©ã³ãã ç§»åã®ãµãããªãŒãéå§ãããŸãã
ã©ã³ãã ç§»åãµãããªãŒã®å®è¡ã忢ããã«ã¯ã
Observer Abortsãã©ã¡ãŒã¿ãŒã䜿çšããå¿
èŠããããŸãã
ãªãã¶ãŒããŒã¢ããŒãã®äœ¿çš
ãªãã¶ãŒããŒãäžæ¢ãããšãéžæãã黿¿ããŒã倿Žããããšãã«ãµãããªãŒã忢ããŸãã çµäºã«ã¯2ã€ã®ã¿ã€ãããããŸãã
- SelfïŒãã®ãªãã·ã§ã³ã«ããã æµãç¡å¹ã«ãªã£ããšãã«æ»æãµãããªãŒã®å®è¡ã忢ã§ããŸãã ããã¯ãæ»æã®ãµãããªãŒãå®äºããåã«æµãæ»äº¡ãããšãã«çºçããå¯èœæ§ããããŸãã
- äœåªå
床ïŒãã®ãªãã·ã§ã³ã䜿çšãããšã Enemyãèšå®ãããšãã«äœåªå
床ã§ããªãŒã®å®è¡ã忢ã§ããŸãã ã©ã³ãã ç§»åãµãããªãŒã¯æ»æåŸã«é
眮ããããããåªå
é äœã¯äœããªããŸãã
Observer AbortsãBothã«èšå®ããŠãäž¡æ¹ã®ã¿ã€ãã®çµäºãæå¹ã«ããŸããããã§ãæµãããªãå Žåãæ»æãµãããªãŒã¯å³åº§ã«ã©ã³ãã ãªåãã«ç§»è¡ããŸãããããŠãã©ã³ãã ãªåãã®ãµãããªãŒã¯ãæµãæ€åºããããšããã«æ»æã¢ãŒãã«åãæ¿ãããŸãã宿ããããã€ãã¢ããªãŒã¯æ¬¡ã®ããã«ãªããŸããæ»æã®ãµãããªãŒãèŠçŽããã«ã¯ïŒ- æµãæå®ãããŠããå Žåãã»ã¬ã¯ã¿ãŒã¯æ»æãµãããªãŒãèµ·åããŸã
- èšå®ãããŠããå ŽåãããŒã³ã¯ç§»åããŠæµã®æ¹ã«åããŸã
- ãã®åŸãåœŒã¯æ»æãå®è¡ããŸã
- æåŸã«ãPawnã¯2ç§åŸ
æ©ããŸãã
ã©ã³ãã ç§»åã®ãµãããªãŒãèŠçŽããã«ã¯ïŒ- ã»ã¬ã¯ã¿ãŒã¯ãæ»æãµãããªãŒã倱æãããšãã©ã³ãã ãµãããªãŒãéå§ããŸããç§ãã¡ã®å ŽåãEnemyãæå®ãããŠããªããšå€±æããŸãã
- BTService_SetRandomLocationã¯ã©ã³ãã ãã€ã³ããçæããŸã
- ããŒã³ã¯çæããããã€ã³ãã«ç§»åããŸã
- ãããã圌ã¯5ç§åŸ
ã¡ãŸã
BT_MuffinãéããŠã[ åç ]ãã¯ãªãã¯ããŸããããã£ã³ãããã€ãäœã£ãŠãæé«ã®ããã«ãã¯ã€ã€ã«ã®æºåãããŸãããïŒæ¬¡ã¯ã©ãã«è¡ããŸããïŒ
宿ãããããžã§ã¯ãã¯
ããããããŠã³ããŒãã§ã
ãŸã ã
ã芧ã®ãšãããåçŽãªAIãã£ã©ã¯ã¿ãŒã®äœæã¯éåžžã«ç°¡åã§ããããè€éãªAIãäœæããå Žåã¯ãEnvironment Query Systemãã芧ãã ããããã®ã·ã¹ãã ã«ãããAIã¯ç°å¢ã«é¢ããããŒã¿ãåéããããã«å¿çã§ããŸãã