View
587
Download
0
Category
Preview:
Citation preview
3.1 AI 최적화 전략들
구경원 ( 돼지고기 )GPG2 권 .
1. 폴링 대신 이벤트 주도적 행동을 사용 한다
- 매 프레임 에이전트들은 자신이 반응해야 할 사건이나 객체를 감지해야 한다 .
- 엄청난 계산 중복이 발생 한다 .
- 이벤트 주도적 기법을 이용하여 이벤트를 발생시키는 객체가 다른 에이전트들에게 이벤트 메시지를 주자 .
2. 중복된 계산을 줄인다
- 이미 얻은 정보를 공유할 수 있다면 상당한 시간을 줄일 수 있다 .
- 여러 유닛을 한 번에 이동 시킬 때 개개인이 길 찾기를 하기보다 그 중 하나에 대해 길 찾기를 하고 나머지 는 따라가게 할 수 있다 .
3. 관리자를 통한 협동의 집중화
- 에이전트간에 협동을 하는 경우 복잡한 결정을 관리자를 통해서 해결하는 것이 좋다 .
- 관리자는 멤버 에이전트들에게 각자의 역할을 지시하게 된다 .
4. AI 의 실행 횟수를 줄인다
- AI 에이전트가 매 프레임 모든 의사 결정 과정을 거쳐야하는 경우는 별로 없다 .
- 2~3 프레임 또는 2~3 초마다 AI 코드 일부만 수행해도 무방하다 .
- AI 프로세싱 처리 부담이 순간적으로 급격히 올라가는 경우를 주의하여 , 개별적 시간 범위를 주자 .
5. 처리부담을 여러 프레임들로 분산 시킨다
- A* 길찾기를 한 프레임에 수행하면 부담이 많이 되니 여러 프레임으로 나누자
- 각 프레임에서의 결과를 보존하고 다음 프 레임에서 이어 수행할 수 있도록 하자 .
- 최종 결론이 날때까지의 시간을 미리 결정할 수 없는 알고리즘에는 적용가능 하다 .
6. 세부수준 AI 의 적용
- LOD 개념을 AI 에 적용하여 , 카메라나 플레이어 , 사건과의 거리 또는 연관성에 따라 AI 처리 빈도를 다르게 하자 .
- 보이지 않는 전투에 대해서는 그 승패를 간단한 공식으로 판정 할 수도 있다 .
7. 문제의 일부분만 해결한다
- 커다란 문제가 주어 졌을 때 , 당장 필요한 부분만 해결하는 것으로도 충분 할 수 있다 .
- 미루어두었던 문제가 상황의 변화에 따라 아예 사라져 버리기도 한다 .
8. 힘든일을 미리 처리한다
- 실시간으로 처리하기 부담되는 문제들을 미리 처리된 정보를 조회하여 처리하게 할 수 있다 .
- 미리 계산된 정보를 테이블에 담아두고 필요할때 참조하여 사용한다 .
9. 창발적 행동으로 스크립팅의 필요성을 제거한다
- 간단한 규칙들만으로 지능적이고 창발적인 행동이 나타나도록 할 수 있다 .
- 개체들의 행동방식을 미리 정해주지 않아도 매우 복잡하고 흥미로운 행동이 일어나도록 할 수 있다 .
- 완전히 제어할 수 없는 문제를 가지고 있다
10. 연속적인 갱신을 통한 상각된 질의 비용
- 지능적인 결정을 위해 상당히 많은 양의 데이터를 모아야 하는 경우 , 데이터가 변할 때마다 데이터 구조를 갱신하도록 하자 .
- 단순한 질의 때문에 프레임이 급격히 떨어지는 일은 없어진다 .
11. 문제를 다시 생각하라
- 코드의 특정 부분을 최적화하여 얻는 성능 향상은 크지 않다 .
- 문제를 약간 다른 관점에서 , 다른 접근 방식이나 알고리즘으로 공략할 때 진정으로 향상된다 .
- 바라보는 관점을 다시 생각하자 .
결론
- 다른 관점을 가져라 .
- 하나의 문제를 바라보는 방식은 무수히 많다
- AI 시스템 개발도중 도저히 최적화할 수 없을거 같은 문제를 만났을 경우 위의 전략을 다시 한번 보자 .
END
Recommended