공지사항

2016. 1. 6. 01:46
728x90
반응형

오늘은 어그로 시스템을 말씀드릴까 합니다. 몬스터 인공지능 관련글들을 보셧다면 어그로란 단어가 여러번 등장하는데요. 과연 어그로 시스템은 어떠한지 살펴보도록 하겠습니다.


◎ 어그로 시스템


▪ 어그로 시스템이란?

몬스터가 캐릭터에 대한 적대감을 수치화한 것을 어그로라 하며, 이 어그로에 의해 몬스터는 자신이 공격해야 할 대상을 결정하게 된다. 이처럼 몬스터의 공격 대상을 설정하는데 바탕이 되는 어그로에 대한 모든 규칙들을 정립한 것이 어그로 시스템이다.


▪ 어그로의 종류

몬스터에게 적대감을 주는 어그로는 아래와 같다.

어그로의 종류

설명

최초 공격 목표 어그로

자신의 탐색 범위에서 적을 발견하여 공격 목표로 선정된 경우

최초 공격자 어그로

자신에게 최초로 공격을 가한 경우

데미지 어그로

자신에게 데미지를 입힌 경우

힐 어그로

자신의 공격 목표에게 힐을 해주는 경우

버프 어그로

자신의 공격 목표에게 버프를 해주는 경우

디버프 어그로

자신에게 상태 이상 마법을 가한 경우

동족 반응 어그로

자신이 속한 동족에게 공격을 가한 경우

그룹 어그로

자신이 속한 그룹에게 공격을 가한 경우

도발? 어그로

어그로 수치를 증가시키는 스킬로 공격을 당한 경우


소환수가 등장하는 게임이라면 [못된 주인 어그로] 라는 소환수가 준 데미지를 주인에게 주는 어그로를 추가하시면 됩니다.


▪ 어그로 리스트

몬스터가 자신에게 어그로를 준 플레이어의 목록을 저장해 놓는 리스트


- 어그로 리스트의 구성

순위

캐릭터 명

어그로 수치

1

 

 

2

 

 

3

 

 

: 순위에서 1위에 해당하는 캐릭터가 공격 대상이 된다.


◦ 어그로 리스트에서 캐릭터 명이 삽입되는 경우 (유저 입장에서 설명)

삽입 경우

선공형 몬스터에게 최초 타깃으로 잡혔을 경우

몬스터에게 공격을 가했을 경우

몬스터가 공격하는 대상에게 힐 또는 버프를 사용 했을 경우

몬스터에게 디버프 계열의 스킬을 사용 했을 경우

몬스터에게 도발?  스킬을 사용 했을 경우


◦ 어그로 리스트에 캐릭터 명이 삭제되는 경우

삭제 경우

캐릭터가 사망 했을 경우

캐릭터가 로그아웃을 했을 경우 or 로그아웃 상태가 된 경우

캐릭터가 인던 밖으로 나간 경우

캐릭터가 특정 거리 이상 멀어졌을 경우

몬스터가 타깃의 추격을 포기 했을 경우 (어그로 리스트 초기화)

삭제되는 경우는 쬐금 애매한 요소가 있는데요. 위의 경우에 해당하는 캐릭터들이 몬스터의 타깃인 상태이냐 아니냐에 따라 삭제되는 순간이 달라집니다. 몬스터의 타깃인 경우는 위의 경우에 바로 어그로 리스트에서 삭제가 되지만 타깃이 아닌 경우는 해당 경우가 발생되었다고 굳이 바로 삭제할 필요는 없다는 얘기입니다.


좀더 쉽게 설명 드리면 몬스터가 A 캐릭터를 타깃으로 잡고 있는데 A 캐릭터가 위와 같은 상황이 되면 바로 어그로 리스트에서 삭제되고 다음 순위의 어그로 대상을 타겟으로 잡는데요. (맨 마지막의 경우 제외, 해당 경우는 어그로 리스트가 초기화됨) 만약 타깃 A가 아닌 어그로 리스트에 등록된 B라는 캐릭터가 위와 같은 상황이 발해되었다면 굳이 그 순간에 삭제할 필요는 없다는 얘기입니다. A라는 캐릭터가 삭제되고 다음 타깃으로 B라는 캐릭터가 선정되었을때 위의 경우라면 그때 삭제하는 것이 효율적이라는 얘기입니다. 


▪ 어그로 수치

어그로의 종류에 따라 아래와 같은 규칙으로 어그로 수치가 적용된다.

어그로의 종류

어그로 수치 계산

최초 공격 목표 어그로

몬스터 생명력 * 최초 공격 목표 어그로 보정치

최초 공격자 어그로

몬스터의 생명력 * 최초 공격자 어그로 보정치

데미지 어그로

몬스터가 받은 데미지의 양 * (0.8 + 공격자 종류 보정치 + 최초 공격자 보정치)

힐 어그로

사용된 힐 마법의 회복량 * 힐 종류 보정치

버프 어그로

몬스터의 생명력 * 버프 어그로 보정치

디버프 어그로

몬스터의 생명력 * 디버프 어그로 보정치

동족 반응 어그로

몬스터의 생명력 * 동족 반응 어그로

그룹 어그로

몬스터의 생명력 * 그룹 어그로

도발? 어그로

스킬에 명시된 어그로 수치가 증가함

: 몬스터의 생명력은 생성(리젠)되었을때의 최종 생명력을 나타낸다. (100% 상태의 생명력)


- 어그로 보정치 테이블

보정치 종류

보정치

최초 공격 목표 어그로 보정치

0.01

최초 공격자 어그로 보정치

0.05

힐 어그로

기본

1

그룹 힐

2

오버 힐

1.5

버프 어그로

0.03

디버프 어그로

0.1

동족 반응 어그로

0.01

그룹 어그로

0.01

공격자 종류 보정치

캐릭터

0.2

최초 공격자 보정치

random (0.0 ~ 2.0)

: 최초 공격자 보정치는 최초 공격자에 페널티를 부여함으로써 몬스터의 어그로가 핑퐁되는 것을 방지


두명의 원거리 타입 캐릭터 A와 B가 몬스터를 번갈아가며 때린다고 할때 (A가 B보다 공격력이 약간 낮음) 데미지 어그로만 존재한다면 때릴때마다 어그로 순위가 바뀌어 몬스터가 중간에서 아무것도 못하고 이동만 하다가 죽을 수 있는 불상사를 방지하기 위함


: 보정치 수치는 테스트를 통해 변경될 예정


◦ 어그로 수치가 증가하는 경우 (어그로 리스트에 캐릭터 명이 삽입되는 경우와 동일)

증가 경우

선공형 몬스터에게 최초 타깃으로 잡혔을 경우

몬스터에게 공격을 가했을 경우

몬스터가 공격하는 대상에게 힐 또는 버프를 사용 했을 경우

몬스터에게 디버프 계열의 스킬을 사용 했을 경우

몬스터에게 도발? 스킬을 사용 했을 경우


◦ 어그로 수치가 감소되는 경우

어그로가 감소되는 경우는 존재하지 않는다. 단, 리스트에서 삭제되는 경우만 발생


리니지2의 엘더 스킬 중에 어그로를 감소시키는 스킬이 있었는데... 그닥 효율이 좋지 않았던것 같아요. 궁극의 스킬 중 하나였는데... 아무튼 어그로 감소를 넣고 싶으시면 [진정? 어그로]라는 개념을 도입하고 감소를 시키면 될듯 합니다.


- 끝 - 




728x90
반응형