레플리
글 수 57

메시지 기반의 인공지능

조회 수 339 추천 수 0 2016.03.19 23:36:48


대부분의 게임 인공지능에서 FSM과 함께 메시지 방식이 많이 사용됩니다. 메시지 방식이란 어떤 행동이나 사건이 발생하였을때 그 사실과 정보를 메시지에 담아 해당하는 객체에 전송하는 것을 말합니다. 윈도우에서 마우스를 눌렸을때 이벤트가 발생하여 각 응용프로그램에 보내지는 것과 비슷하다고 할 수 있습니다.

사실 메시지 방식이 꼭 인공지능에만 쓰이는 것은 아니고 게임안에서의 이벤트를 처리하는데 주로 사용됩니다. 예를 들어 주인공이 몬스터를 공격하여 10만큼의 데미지를 주었다고 했을때 어떻게 이런 정보를 처리할 수 있을까요.

 

 


첫번째 방법은 주인공의 처리 루틴에서 직접 몬스터의 데이터를 수정하는 것입니다. 몬스터의 객체를 가져와서 몬스터 체력변수를 10만큼 빼주고 만약 체력이 0이 되었을 경우 몬스터 객체를 삭제합니다.

언뜻 생각하면 직관적이긴 하지만 몬스터의 종류가 여러가지이고 각 종류마다 데미지 계산이나 처리 방법이 다르다고 하면 구현이 힘들어 집니다. 하나의 모듈에서 모든 처리를 다 해야되기 때문에 너무 복잡해질 수 있습니다.

두번째 방법은 공격을 했다는 ID값과 공격력 등의 정보를 메시지로 만들어서 몬스터 객체에게 전송을 한 다음 각 몬스터 객체마다 자신의 데미지 처리 방법에 따라 계산합니다. 이 방법이 구조도 깔끔하고 확장성도 좋습니다.



인공지능을 구현할때도 이러한 메시지 방법을 그대로 사용합니다. 몬스터가 공격을 할때도 공격 메시지를 주인공에게 보낼 수 있고, 체력이 떨어지면 주변 몬스터에게 도와달라는 메시지를 보낼 수도 있을 것입니다.

그리고 꼭 움직이는 객체만이 아니라 사물과 같은 객체에서도 메시지가 사용될 수 있습니다. 예를 들어 의자 객체가 주변 NPC들에게 자기에게 앉으라는 메시지를 주기적으로 보냅니다. 만약 우연히 그 옆을 지나가던 NPC가 이 메시지를 받았을때 자신의 내부 상태를 검사하여 피곤한 상태일 경우 의자에 앉아 휴식을 취하는 처리가 가능합니다.



메시지 방식에 대해서 간략하게 정리해 보았습니다. 좀 더 자세한 동작방식을 알고 싶으시면 아래 책들을 참고하시기 바랍니다.

- 실용적 예제로 본 게임인공지능, p.74
- DirectX를 이용하여 게임만들기, p.318

엮인글 :
List of Articles
제목 글쓴이 날짜 조회 수sort
A* 알고리즘을 사용한 길찾기 file 깊은바다 2016-03-25 14123
유용한 게임 AI 기법 정리 깊은바다 2017-05-04 8406
FSM을 사용한 인공지능 구현 예제 file [1] 깊은바다 2017-04-13 7752
자바스크립트로 만든 장기 인공지능 [4] 깊은바다 2017-03-17 6088
게임트리를 사용한 제로섬 게임의 인공지능 file 깊은바다 2016-03-19 4309
몬테카를로 트리 검색 알고리즘 file 깊은바다 2017-03-27 3810
FSM를 활용한 FPS게임 [2] 사지방컴 2017-10-02 2835
FSM, 몬스터 인공지능의 구현 file 깊은바다 2016-03-19 2684
실용적 예제로 본 게임 인공지능 소스코드 및 PDF 파일 깊은바다 2017-03-31 2293
삼성SDS의 SAIDA팀이 만든 스타크래프트 인공지능 깊은바다 2018-12-07 1996
인공지능 원리로 구현하는 장기 게임 file 깊은바다 2016-03-19 1893
딥러닝으로 게임 콘텐츠 제작하기 file 깊은바다 2017-05-11 1882
A* 알고리즘 데모 file 깊은바다 2018-08-18 1874
FPS 전투가 가능한 인공지능 [5] 사지방컴 2018-05-13 1831
행동트리로 구현하는 인공지능 깊은바다 2017-02-28 1672