1. 게임 아키텍처 개관
    1. Architecture
      1. Raven_Game
        1. Raven_Map
          1. TriggerSystem
          2. Trigger
          3. NavGraph
          4. Wall2D
          5. SpawnPoint
        2. Raven_Bot
          1. Path_Planner
          2. Raven_Weapon
          3. RailGun
          4. RocketLauncher
          5. Shotgun
          6. Blaster
        3. Raven_Projectile
          1. Slug
          2. Shell
          3. Rocket
    2. 클래스 설명
      1. Raven_Game
        1. 프로젝트의 허브
        2. bot과 projectile들을 리스트로 갖고 있음
        3. Method
          1. Render / Update
          2. LoadMap
          3. 파일을 통해 맵을 불러옴
          4. isPathObstructed
          5. 지형과 충돌하지 않으면 조종행동, 충돌하면 길찾기
          6. GetAllBotsInFOV
          7. 이 봇의 시야각 안에 들어오는 봇들만 반환
      2. Raven_Map
        1. 게임 세계 지형을 구성하는 모든 객체의 보유자와 맵의 내비게이션 그래프를 가짐
        2. Method
          1. Render만 있음
          2. LoadMap
          3. 파일을 통해 맵을 불러옴
          4. AddSoundTrigger
          5. CalculateCostToTravelBetweenNodes
          6. UpdateTriggerSystem
      3. Raven_Weapon
        1. Method
          1. AimAt
          2. 무기를 주어진 목표에 겨누기 위해 봇을 회전
          3. ShootAt
          4. 목표 위치로 총알 발사
          5. Render
          6. 순수 가상 함수
          7. GetDesirability
          8. 그 무기를 사용하는 것이 바람직한지
          9. 퍼지논리 사용
      4. Raven_Projectile
        1. UML
          1. BaseGameEntity
          2. MovingEntity
          3. Raven_Projectile
          4. Projectile_Slug
          5. Projectile_Bolt
          6. Projectile_Rocket
          7. Projectile_Pellet
        2. Method
          1. Update / Render
          2. isDead
          3. HasImpacted
      5. Trigger
        1. UML
          1. BaseGameEntity
          2. Trigger<Raven_Bot>
          3. TriggerRegion
          4. TriggerRegion_Circular
          5. TriggerRegion_Rectangular
          6. Trigger_Respawning<Raven_Bot>
          7. Trigger_HealthGiver
          8. Trigger_WeaponGiver
          9. Trigger_LimitedLifetime<Raven_Bot>
          10. Trigger_SoundNotify
        2. 공간적인 조건을 정의하는 객체
        3. 트리거를 사용해 모든 종류의 이벤트와 행동을 만들 수 있음
        4. TriggerRegion
          1. Method
          2. isTouching
          3. 주어진 크기와 위치의 어떤 객체가 트리거 지역과 겹치면 참
          4. 제곱거리 공간으로 구함
          5. 연산량 감소
        5. Trigger
          1. 모든 다른 트리거 타입이 유도되는 기본 클래스
          2. Method
          3. Try
          4. 호출시 트리거는 객체가 트리거의 영향 범위 내에 위치하는지 결정
          5. Update
          6. 트리거가 가지는 모든 내부 상태 갱신
        6. Trigger_Respawning
          1. 하나의 객체에 의해서 트리거된 후 일정 시간이 지나면 다시 비활성화되는 트리거를 정의
        7. Trigger_Giver
          1. 어떤 객체가 부여자 트리거의 트리거 지역으로 들어가면 상응하는 아이템을 부여받음
          2. Trigger_WeaponGiver
          3. Trigger_HealthGiver
        8. Trigger_LimitedLifetime
          1. 자동적으로 제거되기 전에 일정 수의 갱신 단계 동안 환경에 남아 있는 트리거
          2. Trigger_SoundNotify
        9. TriggerSystem
          1. 모든 등록된 트리거를 갱신하고 보여줌
          2. 이들의 수명이 끝나면 제거
          3. Method
          4. private
          5. UpdateTriggers
          6. 죽은 트리거 제거 / 트리거 갱신
          7. TryTriggers
          8. 등록된 트리거들 try 호출
          9. public
          10. Clear
          11. 등록된 모든 트리거를 지우고 리스트를 비움
          12. Update
          13. UpdateTriggers
          14. TryTriggers
          15. Register
          16. 트리거 등록
          17. Render
          18. 그려줘야 될 트리거들
          19. GetTriggers
  2. 게임
    1. 게임 소개