AI 구조

jjuiddong
이동: 둘러보기, 찾기

AI 구조

  • AI Library 는 게임과 별도로 만들어진 라이브러리 프로젝트다.
  • 어떤 게임이든 쉽게 붙일 수 있게 캡슐화 했다.
  • 인공지능은 캐릭터의 행동을 어떻게 하느냐를 다루는 객체이므로 Action 이란 개념으로 정리할 수 있다.
  • 캐릭터를 접근해서 애니메이션이나 이동, 회전을 해야 하기 때문에 캐릭터를 접근하는 object 개념이 필요하다.
  • 행동은 다시 새로운 행동을 낳게하고, 여러 행동이 합쳐져 하나의 목적을 위한 행동이 될 수 있으므로 Action은 트리구조여야 한다.
  • 캐릭터는 특정 부대에 속할 수 있고, 더 나아가 특정 팀, 특정 유저, 특정 단위로 묶일 수 있으므로 object는 트리구조여야 한다.
  • AI Library 이므로 일반적으로 쓰이는 Action 들은 라이브러리화가 되어 있어야 한다. 이동, 공격, 길찾기 정도는 라이브러리화가 되어야 한다.
  • 캐릭터(object)가 어떻게 행동할 지 여부를 판단하는 행동(Action) 이 핵심이므로, 실제 AI를 다루는 소스코드에서는 Action 만 다루면 된다.
  • 캐릭터의 주 Action 에서 새로운 Action이 파생되게 한다. 게임에서는 캐릭터에 해당하는 Action 을 생성해 push 해주면된다. 이미 AI Library에 있는 Action을 푸쉬해도 되고, 직접 Action 클래스를 파생해 구현해서 푸쉬해도 된다.
  • AI Library 가 해줄 수 있는 것은 Action 을 푸쉬하면 그에 맞게 캐릭터가 행동하게 하는 것이고, 미리 만들어진 Action 이 어떤 상황이든 잘 작동하게 하는 것이다.

Action

  • Object에게 명령을 내린다.
  • 행동을 처리하는 클래스다. cAction 클래스는 추상클래스로 아무 행동도 하지 않는다. 구체적인 행동은 이 클래스를 상속받아서 처리한다.
  • Action 트리를 관리하기 위한 인터페이스 와 행동의 시작과 끝, 루프, 메세지를 처리하는 인터페이스가 정의된다.
  • 행동을 처리하기 위한 가장 기본적인 기능과 인터페이스를 정의한다.

Object

  • 게임 오브젝트에게 행동을 취하게 한다.
  • 게임모델과 연동되어 기능한다.
  • 트리 구조이며 자식으로 cObject 를 가질 수 있다.
  • cAction 을 관리하며, 행동처리는 cAction이 하지만, 게임과 연동되는 부분은 cObject 가 담당한다.
개인 도구
이름공간

변수
행위
둘러보기
도구모음