°ÔÀÓ¿¡¼­ÀÇ ÀΰøÁö´É Ãß¼¼

Á¦¸ñ : °ÔÀÓÀ» ÅëÇØ¼­ º» Game AI

ÀÛ¼ºÀÚ : ÀÓ¿µÀÏ

 

AI¿¡ ´ëÇØ¼­ °ü½ÉÀ» °¡Áö°í ÀÖ´Â ºÐµéÀº ¸¹À»  °ÍÀÌ´Ù. °ø»ó°úÇмҼ³À̳ª SF¿µÈ­¿¡¼­ ÀÚÁÖ ´Ù·ç¾îÁö´Â ¼ÒÀçÀ̱⵵ ÇÏ°í ¿ØÁö ½Åºñ·Ó°Ô±îÁö ´À²¸Áö´Â ºÐµéµµ ÀÖÀ» °ÍÀÌ´Ù. ³ª ¶ÇÇÑ ÀÌ·± ȯ»óÀ» ÂѾƼ­ Áö±ÝÀº Game AI¿¡ Àü³äÇϰí ÀÖ´Ù. Game¿¡¼­µµ AI´Â Á¡Á¡ ´õ Áß¿äÇÑ  ºñÁßÀ» Â÷ÁöÇϰí ÀÖ´Ù. »ç½Ç Ãʱâ Game AI´Â °ÅÀÇ ÀüºÎ°¡ hard coding(if¹® µîÀ¸·Î ó¸®)·Î ó¸®ÇÏ´Â °ÍÀÌ ´ëºÎºÐ À̾ú´Ù. ÇÏÁö¸¸ ÀÌÁ¦´Â Á» ´õ ü°èÀûÀ̰í ÇмúÀûÀÎ Ãø¸éÀ¸·Î Á¢±ÙÇϰí ÀÖ´Ù. ÀÌÀü±îÁö AI´Â ÇмúÀûÀÎ ¿¬±¸ºÐ¾ßÀÇ ÀüÀ¯¹°Ã³·³ ¾î·Æ°Ô¸¸ ´À²¸Á³Áö¸¸ Á¡Â÷ ¿ì¸® »ýȰ°ú Áö±Ý ¾ê±âÇÏ·Á´Â  Game¿¡¼­µµ Á¡Á¡ AI¿ä¼Ò°¡ Àû¿ëµÇ°í ÀÖ´Ù.

Game¿¡¼­ AI°¡ µé¾î°¡´Â ºÎºÐÀº ÀÏ´ÜÀº À¯Àú°¡ Á¶ÀÛÇÏÁö ¾Ê´Â NPC(Non-Player Character)¸¦ Control ÇÏ´Â µ¥¿¡ ±âº»ÀûÀ¸·Î Àû¿ëµÇ°í ÀÖ´Ù. ¿¹Àü¿¡ ³ª¿Ô´ø °£´ÜÇÑ 2D Game¿¡¼­´Â ´Ü¼øÇÑ ·£´ý ¾Ë°í¸®Áòµµ ¸¹ÀÌ »ç¿ëµÇ¾úÁö¸¸ Áö±ÝÀÇ Game¿¡¼­´Â ´Ù¾çÇÑ À帣¸¦ ¼ÒÈ­ÇÒ ¼ö ÀÖ´Â ÀûÀýÇÑ AI ±â¹ýµéÀÌ Àû¿ëµÇ°í ÀÖ´Ù.

 

ÇØ¿Ü °ÔÀÓµéÀ» º¸¸é ÀΰøÁö´ÉÀÇ ºñÁßÀÌ ´Ã°í ÀÖ´Ù´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. Çϵå¿þ¾îÀÇ ¹ßÀü¿¡ µû¸¥ °Íµµ ÀÖÀ» °ÍÀÌ°í °ÔÀÓ¿¡¼­ÀÇ Àç¹Ì¿ä¼Ò·Î¼­ ÀΰøÁö´ÉÀÇ Á߿伺ÀÌ ³ô¾ÆÁö°í ÀÖ´Â °Íµµ ÇϳªÀÇ ÀÌÀ¯ÀÏ °ÍÀÌ´Ù.

 

Figure 1: AI poll results from the GDC 2000 roundtables

°ÔÀÓ¿¡¼­ÀÇ CPU Á¡À¯À²À» ¿¹·Î µé¸é 2000 GDC¿¡¼­ ¹ßÇ¥µÈ °á°ú¿¡¼­ 1997³âµµ¿¡´Â °ÅÀÇ ¸î %¿¡ Áö³ªÁö ¾Ê´ø °ÍÀÌ 2000³â µé¾î¼­¸é¼­ °ÅÀÇ 30%¿¡ À°¹ÚÇϰí ÀÖ´Ù. ÀÌ·± Á¶»ç°á°ú¸¦ º¸¸é ÀÌÀü¿¡ 3D Engine¿¡ ÅõÀÚÇÏ´ø CPU Á¡À¯À²À» Çϵå¿þ¾îÀÇ ¹ßÀü°ú °ÔÀÓ¿¡¼­ÀÇ AIÀÇ Á߿伺¿¡ ÀÇÇØ¼­ AI ÂÊÀ¸·Î ºñÁßÀ» ½Ç¾î ÁÖ°í ÀÖ´Ù°í »ý°¢µÈ´Ù.

±×¸®°í AI¸¦ Àü´ãÇÏ´Â °³¹ßÀÚ¸¦ µÎ´Â °æ¿ì°¡ ¿¹Àü¿¡´Â 20%Á¤µµ¿¡ ±×ÃÆÁö¸¸ ÇöÀç´Â 80%Á¤µµÀÇ °³¹ß»ç°¡ AI Àü´ã °³¹ßÀÚ¸¦ µÎ°í ÀÖ´Â ½ÇÁ¤ÀÌ´Ù. ±¹³»¿¡¼­´Â ¾ÆÁ÷ Ŭ¶óÀÌ¾ðÆ®¿¡ Æ÷ÇÔµÈ Á¤µµ·Î ÀνÄÇϰí ÀÖÁö¸¸ ÀÌ´ë·ÎÀÇ Ãß¼¼¶ó¸é ¹Ù²ð °ÍÀÌ ºÐ¸íÇÏ´Ù°í º»´Ù.

 

°ÔÀÓ¿¡¼­ÀÇ AI´Â ¾î¶² ÇÑ µÎ °¡ÁöÀÇ ¾Ë°í¸®ÁòÀ¸·Î ±¸ÇöµÇ±â´Â Èûµé´Ù. °ÔÀÓÀÇ ¼öÁذú À帣¿¡ µû¶ó ´Ù¸£°ÚÁö¸¸ ¿©·¯ °¡ÁöÀÇ AI ±â¹ýµéÀ» Á¶ÇÕÇØ¼­ ÇϳªÀÇ °ÔÀÓ¿¡ ÇÊ¿äÇÑ AI¸¦ Àû¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù.

 

±×·³ ÃÖ±Ù °ÔÀÓµéÀ» ÅëÇØ¼­ °ÔÀÓ¿¡ »ç¿ëµÈ AI ±â¹ýµéÀ» ¼Ò°³ÇÏ°í °£´ÜÇÑ ¼³¸íÀ» ÇØ º¸µµ·Ï ÇϰڴÙ.

 

 

Black & White

ÇÇÅÍ ¸ô¸®´º°¡ ÆÄǽ·¯½º µîÀÇ °ÔÀÓÀ» °ÅÃļ­ ÃÖ±Ù¿¡ ³»³õÀº È­Á¦ÀÛ. God °ÔÀÓÀÇ Ã¢½ÃÀڷμ­ ÀÌ °ÔÀÓ¿¡¼­´Â ƯÈ÷ Å©¸®ÃÄÀÇ ÀΰøÁö´ÉÀÌ µ¸º¸ÀδÙ. ÀÌ °ÔÀÓ¿¡¼­´Â A-Life(Artificial Life Àΰø»ý¸í) ±â¼úÀÌ µµÀԵǾú´Âµ¥ Å©¸®ÃÄ ÀÚ½ÅÀÇ ¿å±¸¿Í »óÅ¿¡ µû¶ó À¯ÀúÀÇ Çൿ¿¡ ´ëÇÑ ¹ÝÀÀÀÌ ´ÙÀ̳ª¹ÍÇÏ°Ô ³ªÅ¸³­´Ù. ´õ ³î¶ó¿î °ÍÀº À¯Àú°¡ Å©¸®Ãĸ¦ °¡¸£Ä¥ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. ¾î¶² ÇൿÀ» Å©¸®ÃÄ¿¡°Ô ¹Ýº¹Çؼ­ º¸¿© ÁÖ¾úÀ» °æ¿ì ±× ÇൿÀ» ¶È°°ÀÌ µû¶ó ÇÏ´Â °Í°ú ĪÂù°ú ¹úÀ» º´ÇàÇÔÀ¸·Î½á ¼±°ú ¾Ç ¾ç ¹æÇâÀ¸·Î ±³À°ÀÌ °¡´ÉÇÏ´Ù.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Black & White ¿¡¼­ »ç¿ëÇÑ belief/desire/intention architecture

 

À§ÀÇ ¾ÆÅ°ÅØÃĸ¦ »ìÆìº¸¸é Å©¸®ÃÄÀÇ ¿å¸Á°ú Àǰß, ¹ÏÀ½ µîÀÌ ÇൿÀ» °áÁ¤Çϴµ¥ ¿µÇâÀ» ÁØ´Ù. ƯÈ÷ Opinions¿¡ ÇØ´çÇÏ´Â Decision tree¸¦ ÀÌ¿ëÇØ¼­ ±³À°ÀÇ È¿°ú¸¦ ±¸ÇöÇß´Ù. Black & White¿¡¼­´Â Dynamically Building Decision Trees (´ÙÀ̳ª¹Í ÇÏ°Ô Á¦ÀÛµÈ °áÁ¤ Æ®¸®)¶ó´Â ¹æ½ÄÀ» ÀÌ¿ëÇߴµ¥ ÀϹÝÀûÀÎ Decision Tree ¹æ½ÄÀ» ÀÀ¿ëÇØ¼­ Á» ´õ ´ÙÀ̳ª¹ÍÇÑ ÇüÅ·Π¹Ù²Ù¾ú´Ù.

¸ÕÀú Decision Tree ¹æ½ÄÀ» ¼³¸íÇÏÀÚ¸é °ÔÀÓ¿¡¼­ ¾î¶² ³í¸®ÀûÀÎ °èȹÀ» Á» ´õ È¿À²ÀûÀ¸·Î ±¸ÇöÇϱâ À§ÇÑ ±¸Á¶ÀÌ´Ù. Hard coding(if ¹® µî)À¸·Î ó¸®ÇÒ ¼öµµ ÀÖÀ¸³ª Á» ´õ È¿À² ÀûÀÎ ±¸Á¶·Î ¸¸µé¾î¼­ Äڵ带 Á÷Á¢ º¯°æÇÏÁö ¾Ê°íµµ ¿ÜºÎ¿¡¼­ º¯°æ °¡´ÉÇÑ ±¸Á¶·Î ¸¸µå´Â °ÍÀÌ´Ù.

 

¾Æ·¡ÀÇ °èȹÀ» Decision Tree·Î ÀÛ¼ºÇÑ´Ù°í °¡Á¤Çغ¸ÀÚ.

Ç÷¹À̾ °¡±îÀÌ ÀÖ°í ¼Õ»óÁ¤µµ°¡ ÀûÀ¸¸é Ç÷¹À̾ °ø°ÝÇÑ´Ù.

Ç÷¹À̾ ¸Ö¸® ÀÖ°í ¿¬·á°¡ ¸¹À¸¸é Ç÷¹À̾ ÀÖ´ÂÁö ¼ö»öÇÑ´Ù.

À§ÀÇ °èȹÀ» Decision Tree·Î ³ªÅ¸³»¸é ´ÙÀ½°ú °°´Ù.

 

 

 

º¯°æ °¡´ÉÇÑ ÀÔ·Â ¿ä¼Ò

Distance : Ç÷¹À̾î¿Í NPC »çÀÌÀÇ °Å¸®

Fuel : ³²Àº ¿¬·á

Damage : ÇöÀç ¼Õ»ó Á¤µµ

 

Çൿ

Search : Ç÷¹ÀÌ¾î ¼ö»ö

Attack : Ç÷¹À̾ °ø°Ý

 

 

 

³ëµå ½ÇÇà ½Ã »ç¿ëÇÒ ¼ö ÀÖ´Â ±¸Á¶

typedef struct DECNODE_TYP

{

             int operand1, operand2;   // the first  operands

             int comp1;                        // the comparison operator

 

             int operator;                     // the conjuctive operator

            

             int operand3, operand4;   // the second pair of operands

             int comp2;                        // the comparison to perform

 

             ACTION *act_true;           // action lists for true and false

             ACTION *act_false;

 

             DECNODE_PTR *dec_true;            // branches to take if true or false

 

             DECNODE_PTR *dec_false;

} DECNODE, *DECNODE_PTR;

 

ÀÌ¿Í °°Àº Decision Tree´Â ´Ü¼øÇÑ ¹æ½ÄÀÌÁö¸¸ ÀÀ¿ëÇϱ⿡ µû¶ó¼­ Æí¸®ÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

 

The Sims

EA¿¡¼­ ³»³õÀº ½Ã¹Ä·¹ÀÌ¼Ç À帣ÀÇ °ÔÀÓÀÌ´Ù. Sim City½Ã¸®Áî·Î À¯¸íÇÑ Will Write°¡ ½ÉÇ÷À» ±â¿ï¿© ¸¸µç °ÔÀÓÀÌ´Ù. ¿ì¸®ÀÇ ½Ç»ýȰÀ» °ÔÀÓ¿¡ Àç¹ÌÀÖ°Ô ¿Å°Ü³õ¾Ò´Âµ¥ °¢ CharacterÀÇ ¿å±¸°¡ À־ ±×°ÍµéÀ» Àß ÃæÁ·½ÃÄÑ ÁÖ¾î¾ßÁö Game Play¸¦ ¼øÁ¶·Ó°Ô ÇÒ ¼ö ÀÖ´Ù. Sims ¿¡¼­

Ư¡ÀûÀÎ °ÍÀº ij¸¯ÅÍÀÇ ¿å±¸¿¡ ±â¹ÝÇÑ AI±â¹ýÀÌ »ç¿ëµÈ °Í°ú ¾î¶² Çൿ¿¡ ´ëÇÑ Á¤º¸µéÀ» °¢°¢ÀÇ ¿ÀºêÁ§Æ®°¡ °¡Áö°í ÀÖ´Â ¹æ½ÄÀÌ µ¶Æ¯ÇÏ´Ù. ¿å±¸ ±â¹ÝÀÇ AI ±â¹ýÀº Gamasutra¿¡µµ ¼Ò°³µÇ¾úÁö¸¸ ³»ºÎ»óÅ¿¡ ´ëÇÑ ¿å±¸ÇѰèÁ¡(threshold)À» Á¶ÀýÇØ¼­ ÀûÀýÇÑ È¿°ú¸¦ ¾òÀ» ¼ö ÀÖ´Â ¹æ½ÄÀ¸·Î¼­ »ý¹°ÀÇ Çൿ°ú À¯»çÇϵµ·Ï ±× ÇѰèÁ¡µéÀ» ÀûÀýÈ÷ Á¶ÀýÇϸ鼭 Àû¿ëÇß´Ù.

¿ÀºêÁ§Æ®°¡ À̺¥Æ®¸¦ ¹ß»ý½ÃŰ´Â ¹æ½ÄÀ» Will Write´Â ¡°smart terrain¡±À̶õ ¸»·Î Ç¥ÇöÀ» Çߴµ¥ ±× ºñÀ¯°¡ ÀûÀýÇÑ °Í °°´Ù. ÁÖü°¡ ¾Æ´Ï¶ó °´Ã¼ÀÎ ObjectµéÀÌ °¢°¢ ÁÖü°¡ ÇØ¾ß ÇÒ Çൿµé¿¡ ´ëÇÑ À̺¥Æ® Á¤º¸¸¦ ¹ß»ý½ÃŲ´Ù. ¸»ÇÏÀÚ¸é ¹è°íÇ ij¸¯ÅͰ¡ Áö³ª°¡¸é ³ÃÀå°í¿¡¼­ ¡°²¨³» ¸Ô¾î¶ó¡±¶ó´Â ¸í·ÉÀ» ³»¸®´Â °Í°ú °°Àº ¹æ½ÄÀ̶ó°í ¸»ÇÒ ¼ö ÀÖ´Ù. ¾î¶»°Ô º¸¸é ¿ô±âÁö¸¸ ¾ÆÁÖ ÀûÀýÇÏ°Ô ±× È¿°ú¸¦ º¸°í ÀÖ´Ù°í ¸»ÇÒ ¼ö ÀÖ´Ù.

ÀÌ °ÔÀÓÀº A-Life ¿Í Fuzzy-State MachineÀ» ÀÌ¿ëÇÑ AI¸¦ ¼±º¸À̰í ÀÖ´Ù. ƯÈ÷ ÀÌ °ÔÀÓ¿¡¼­´Â ¡°smart terrain¡±À̶ó´Â Will WriteÀÇ ¸»Ã³·³ °¢ ¿ÀºêÁ§Æ®µéÀÌ »óÅÂ¿Í ÇൿÀ» ¹ß»ý½ÃŰ´Â ¹æ½Ä. Áï object-oriented ¹æ½ÄÀ¸·Î °¢ ¿ÀºêÁ§Æ®°¡ ij¸¯ÅÍ¿¡°Ô ¿©·¯ °¡Áö Çൿ¿¡ ´ëÇÑ À̺¥Æ®¸¦ ¹ß»ý½ÃŰ´Â event-driven ¹æ½ÄÀÌ´Ù.

 

Black&White³ª The Sims¿¡ A-Life¶ó´Â ¸»ÀÌ ¾ð±ÞµÇ´Âµ¥ Á¶±Ý ¼³¸íÀ» ÇØº¸ÀÚ¸é Áö±Ý±îÁöÀÇ AI´Â À§¿¡¼­ ¾Æ·¡·Î ±×·¯´Ï±î À§¿¡¼­ °èȹÇÑ ´ë·Î ¾Æ·¡¿¡¼­ ÇàÇØÁö´Â °èȹµÇÁö ¾ÊÀº ÇൿÀº ÀϾ ¼ö ¾ø´Â ¹æ½ÄÀε¥ A-Life ´Â ¹Ø¿¡¼­ À§·Î¶ó´Â ¸»·Î Ç¥ÇöµÇ´Âµ¥ °¢°¢ÀÇ ¼¼ºÎÀûÀÎ ´Ü¼øÇÑ ±ÔÄ¢µéÀÌ ¸ð¿©¼­ ÇϳªÀÇ Ä¿´Ù¶õ Ư¼ºÀ» ³ªÅ¸³»´Â °ÍÀ¸·Î Á¤ÇØÁÖÁö ¾ÊÀº ÇൿÀÌ Ã¢¹ßÀûÀ¸·Î ¹ß»ýÇϴ Ư¡À» °¡Áö°í ÀÖ´Ù. Á» ´õ ÀÚ¿¬ÀÇ »ý¹°À» Èä³»³½ ¹æ½ÄÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù.

 

Half Life

Half Life´Â °ÔÀÓ Áß¿¡¼­µµ ¸íÀÛÀ¸·Î ²ÅÈ÷´Â °ÔÀÓÀÌ´Ù. ÀÌ °ÔÀÓÀº ¹«¾ùº¸´Ù ½ºÅ丮¿Í ¿¬Ãâ·Î Ç÷¹À̾îµéÀ» »ç·ÎÀâ¾Ò´Ù. ÀÌ °ÔÀÓ ¶ÇÇÑ AI°¡ Game¿¡ Àç¹Ì¸¦ ´õÇØ ÁÖ°í Àִµ¥ ¸ó½ºÅͳª Ư¼öºÎ´ë¿øµéÀÌ ³ª¿Ã ¶§¸é Á¤¸» ¸¸¸¸ÇÑ »ó´ëµéÀÌ ¾Æ´Ï´Ù¶ó´Â ´À³¦À» ¹ÞÀ» ¼ö Àִµ¥ ±× µéÀÇ ¿òÁ÷ÀÓ ¶ÇÇÑ ¸ðµÎ AI·Î 󸮵Ǿú´Ù.

Half Life¿¡¼­ Àû¿ëÇÑ ¹æ½ÄÀº ÀÏ·ÃÀÇ ÇൿµéÀ» Schedule·Î ¹­¾î¼­ ó¸®ÇÑ ¹æ½ÄÀε¥, À̰ÍÀº  HFSM(Hierarchy Finite State Machine)À̶õ ¹æ¹ýÀ¸·Î º¼ ¼ö Àִµ¥ FSMÀ» °³³ä¿¡ µû¶ó °èÃþÀ» ³ª´©¾î ³õ¾Ò´Ù°í º¼ ¼ö ÀÖ´Ù. Çϳª ÇϳªÀÇ ±¸Ã¼ÀûÀÎ ÇൿµéÀ» Task State¶ó°í ÇÏ¸é ±× taskµéÀÌ ¿©·¯ °³ ¸ð¿©ÀÖ´Â State°¡ Schedule StateÀÎ °ÍÀÌ´Ù.

 

 ¿©±â¼­ °£´ÜÇÏ°Ô State MachineÀ̶õ °³³äÀ» ¼Ò°³ÇÏÀÚ¸é StateµéÀ» ¾î¶² Á¶°Ç¿¡ µû¶ó ¿¬°áÇØ ³õÀº °ÍÀÌ´Ù. °¢°¢ÀÇ State¿¡´Â ¿©·¯ °¡Áö°¡ µé¾î°¥ ¼ö ÀÖ´Ù. ij¸¯ÅÍÀÇ ³»ºÎ»óŰ¡ µÉ ¼öµµ ÀÖ°í Çൿ ÆÐÅÏÀÌ µÉ ¼öµµ ÀÖ°í ½É¸® »óŰ¡ µÉ ¼öµµ ÀÖ´Ù. ÀÌ·± °¢°¢ÀÇ StateµéÀÌ ¾î¶² Á¶°Ç¿¡ µû¶ó ¿¬°áµÇ¾î ÀÖ´Â °ÍÀÌ State Machine ÀÌ´Ù.

 

State Machine Áß¿¡¼­µµ À¯ÇÑÇÑ °³¼öÀÇ »óŸ¦ °¡Áø °ÍÀ» FSM(Finite State Machine)À̶ó°í Çϴµ¥, ÀÌ °ÍÀÇ ÇÑ ¿¹¸¦ µé¾î º¸°Ú´Ù.

 

 

 

 

 

 

 

 

¸ó½ºÅÍÀÇ »óÅÂÀüÀÌ ±ÔÄ¢

 

ÇöÀç »óÅÂ

ÀÔ·Â

Ãâ·Â »óÅÂ

¨ç

º¸Åë

Ç÷¹ÀÌ¾î µîÀå

ºÒÄè

¨è

º¸Åë

Ç÷¹À̾îÀÇ °ø°Ý

ÈïºÐ

¨é

ÈïºÐ

¸ó½ºÅÍ ´Ùħ

ºÐ³ë

¨ê

ÈïºÐ

¸ó½ºÅÍ Ä¡·áµÊ

º¸Åë

¨ë

ºÐ³ë

¸ó½ºÅÍ ´Ùħ

±¤ºÐ

¨ì

ºÐ³ë

¸ó½ºÅÍ Ä¡·áµÊ

ºÒÄè

¨í

±¤ºÐ

¸ó½ºÅÍ ´Ùħ

±¤ºÐ

¨î

±¤ºÐ

¸ó½ºÅÍ Ä¡·áµÊ

ºÐ³ë

¨ï

ºÒÄè

Ç÷¹ÀÌ¾î ¶°³²

º¸Åë

¨ð

ºÒÄè

Ç÷¹À̾îÀÇ °ø°Ý

ºÐ³ë

¨ñ

ºÒÄè

¸ó½ºÅÍ Ä¡·áµÊ

º¸Åë

 

À§ÀÇ ÀüÀÌ ±ÔÄ¢À» FSMÀ¸·Î Ç¥ÇöÇϸé,

 

 

 

                                                        

À§ÀÇ ¿¹¿¡¼­ º¸µíÀÌ FSMÀº ÇöÀçÀÇ State¿¡¼­ ÀԷ°ª¿¡ µû¶ó ´ÙÀ½ÀÇ State°¡ °áÁ¤µÇ´Â ÇüÅ·Πµ¿ÀÛÇÑ´Ù.

 

´ÙÀ½Àº FSMÀÇ ÇϳªÀÇ »óŸ¦ Ç¥ÇöÇÏ´Â µ¥ ¾²À̴ Ŭ·¡½º ÀÌ´Ù.

 

class FSMstate

{

unsigned  m_usNumberOfTransistions;                   // ÀÌ »óŰ¡ ´ãÀ» ¼öÀÖ´Â »óÅÂÀüÀÌ// µéÀÇ °³¼ö

    int  *m_piInputs;                                                    // »óÅÂÀüÀ̸¦ À§ÇÑ ÀÔ·Â ¹è¿­

    int  *m_piOutputState;                                           // Ãâ·Â »óÅ ¹è¿­

    int  m_iStateID;                                                      // ÀÌ »óÅÂÀÇ °íÀ¯ ID

 

public:

    // »ý¼ºÀÚ´Â ÀÌ »óÅ¿¡ ´ëÇÑ ID¿Í ÀÌ »óŰ¡ Áö¿øÇÏ´Â »óÅ ÀüÀ̵éÀÇ °³¼ö¸¦ ¹Þ´Â´Ù.

    FSMstate (int  iStateID, unsigned  usTransitions);

    // ¼Ò¸êÀÚ´Â ÇÒ´çµÈ ¸ðµç ¹è¿­µéÀ» ÇØÁ¦ÇÑ´Ù.

    ~FSMstate ();

 

    // »óÅ ID¸¦ µ¹·ÁÁØ´Ù.

    int GetID () { return  m_iStateID; }

    // ¹è¿­¿¡ ÇϳªÀÇ »óÅ ÀüÀ̸¦ Ãß°¡ÇÑ´Ù.

    void AddTransition (int iInput, int iOutputID);

    // ¹è¿­·ÎºÎÅÍ »óÅ ÀüÀ̸¦ Á¦°ÅÇÑ´Ù.

    void DeleteTransition (int iOutputID);

    // »óÅ ÀüÀ̸¦ ÀÏÀ¸Å°°í Ãâ·Â »óŸ¦ µ¹·ÁÁØ´Ù.

    int GetOutput (int iInput);

}

 

 

Creature

³»°¡ óÀ½À¸·Î °ÔÀÓ ÀΰøÁö´É¿¡ ´ëÇØ¼­ ´ë´ÜÇÏ´Ù°í ´À³¤ °ÔÀÓÀÌ´Ù.

ÀÌ °ÔÀÓ¿¡¼­ÀÇ AI´Â Èä³»³»±â¸¦ ³Ñ¾î¼­¼­ ¸ðµ¨¸µ ¼öÁØ¿¡ °¡±õ´Ù°í ÇÒ ¼ö ÀÖ´Ù.

ÀÌ °ÔÀÓ¿¡¼­´Â »ý¹°À» ¸ðµ¨¸µÇϱâ À§ÇÑ °®°¡Áö AI AlgorithmµéÀ» »ç¿ëÇϰí Àִµ¥, ÀÏ´Ü ÀÌ °ÔÀÓ¿¡¼­´Â Characterµé °£¿¡ ±³¹èµµ °¡´ÉÇÏ´Ù´Â Á¡ÀÌ °¡Àå Èï¹Ì·Ó´Ù. ƯÈ÷ ÀÌ ±³¹è¶ó´Â °ÍÀ» ±¸ÇöÇϱâ À§ÇØ Genetic Algorithm(À¯ÀüÀÚ ¾Ë°í¸®Áò)À» »ç¿ëÇߴµ¥ ¿©±â¼­ CharacterÀÇ ¿©·¯ °¡Áö Ư¡µéÀ» gene(À¯ÀüÀÚ)¿¡ ÀúÀåÇϰí ÀÌ Á¤º¸µéÀ» Genetic AlgorithmÀ» ÀÌ¿ëÇØ ±³¹èÇÒ ¶§ ÀûÀýÈ÷ ¼¯¾îÁÜÀ¸·Î½á ½ÇÁ¦ »ý¹°¿¡¼­ º¼ ¼ö ÀÖ´Â ±³¹èÀÇ È¿°ú¸¦ ±¸ÇöÇß´Ù.

ÀÌ °ÔÀÓÀº ¾Õ¿¡¼­µµ ¾ê±âÇßµíÀÌ »ý¹°À» ±¸ÇöÇÏ·Á°í ³ë·ÂÇß´Ù. °³¹ßÀÚ¿¡ µû¸£¸é ±³À°Àû È¿°úµµ ±â´ëÇϸ鼭 Á¦ÀÛÇß´Ù°í ÇÑ´Ù. ÃæºÐÈ÷ ±×·² °ÍÀÌ Ä³¸¯Å͵éÀº ³»ºÎ¿¡ °®°¡Áö ¿å±¸¿Í Áúº´, ¿µ¾ç¼Ò(ºñŸ¹Î µî)À» °¡Áö°í ÀÖ°í ±×°Í¿¡ µû¶ó ¿©·¯ °¡Áö ¹ÝÀÀµéÀ» ³ªÅ¸³½´Ù. ±×¸®°í Å©¸®Ãİ¡ »ç°í ÆÇ´ÜÇÒ ¶§ Àΰ£ÀÇ ³ú¸¦ Èä³»³½ Neural Net AlgorithmÀ» °£´ÜÇÏ°Ô Àû¿ëÇߴµ¥ ÀÌ ¶ÇÇÑ ±²ÀåÇÏ°Ô ´À²¸Áø´Ù. Neural Net(½Å°æ¸Á ÀÌ·Ð)Àº Àΰ£ÀÇ ³úÀÇ ÇнÀ, Ãß·Ð ¿ø¸®¸¦ Èä³»³½ ¾Ë°í¸®ÁòÀ¸·Î¼­ ½ÇÁ¦ Çа迡¼­´Â ÆÐÅÏÀνĿ¡ ÁÖ·Î »ç¿ëÇϰí ÀÖ´Ù.

 

Âü°í ÀÚ·á

1)      ¡°GAME PROGRAMMING GEMS¡± Mark Deloura ¿Ü °øÀú/·ù±¤ ¿ª

-> FSM¿¡ ´ëÇÑ ³»¿ë ÂüÁ¶

2)      ¡°tricks of the WINDOWS Game Programming Gurus¡± Andre LaMothe ÁöÀ½,     ÀÌÁÖ¸® ¿ª, ºñ³Ê½Ã¾È °³¹ßÆÀ °¨¼ö

-> Decision Tree¿¡ ´ëÇÑ ³»¿ë ÂüÁ¶

3)      http://www.gamasutra.com/features/index_ai.htm

-> Game AIÀÇ Ãß¼¼ ÂüÁ¶

4)      http://www.gameai.com/

-> Gameº° AIÀÇ Æ¯Â¡ ÂüÁ¶

5)      http://www.gpgstudy.com/gpgiki/gpgiki.php/AILove.html

-> ¿å±¸±â¹Ý AI ³»¿ë ÂüÁ¶, Black & White AI ÂüÁ¶

6)      ¡°Àΰø»ý¸í¡± ½ºÆ¼ºì ·¹ºñ ÁöÀ½, ±èµ¿±¤/°úÇм¼´ë ¿Å±è ÃâÆÇ»ç: »ç¹Î¼­°¢

-> Àΰø»ý¸í¿¡ ´ëÇÑ ¼³¸í ÂüÁ¶

7)      ¡°Game Developer¡± Magazine   AUGUST 2001

-> Black & White AI ÂüÁ¶

8)      http://www.creatures.co.uk/

-> Creature °ÔÀÓ AI ÂüÁ¶