SlideShare a Scribd company logo
1 of 26
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 시스템 개발도중 도저히 최적화할 수 없
  을거 같은 문제를 만났을 경우 위의 전략을
  다시 한번 보자.
EN
D

More Related Content

More from KyeongWon Koo

빌드 속도를 올려보자
빌드 속도를 올려보자빌드 속도를 올려보자
빌드 속도를 올려보자KyeongWon Koo
 
[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍KyeongWon Koo
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬KyeongWon Koo
 
[기초수학] 미분 적분학
[기초수학] 미분 적분학[기초수학] 미분 적분학
[기초수학] 미분 적분학KyeongWon Koo
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++KyeongWon Koo
 
[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리KyeongWon Koo
 

More from KyeongWon Koo (6)

빌드 속도를 올려보자
빌드 속도를 올려보자빌드 속도를 올려보자
빌드 속도를 올려보자
 
[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬
 
[기초수학] 미분 적분학
[기초수학] 미분 적분학[기초수학] 미분 적분학
[기초수학] 미분 적분학
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++
 
[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리
 

[Gpg2권 구경원] 3.1 ai전략

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