본문 바로가기

프로젝트/게임 개발

[05] 230108 게임 개발 일지 - 직업 특수 스킬 구현

직업별 특수 스킬을 구현해 보았다

 

1. 도발

사용 시 5초간 어그로 1순위가 된다.

 

몬스터 AI 함수에서 몬스터가 피격 될 시 실행되는 함수에, 

  • 타겟 순위를 도발 버프가 있을 때 1순위로 지정한다.
  • 도발건 유저가 없으면,  때린 유저가 어그로가 지정된다.

 

이렇게 지정하면, 도발이 없을 때 여러 유저가 몬스터를 때릴때마다 어그로가 계속 갱신될 것 같다.

내부 타이머를 설정해서 일정 시간동안 어그로가 고정되도록 해야 하나 고민중이다...

 

일단 어그로가 풀릴 때의 함수 지정은,

몬스터 AI함수에서 2초마다 자동 실행되는 함수에,

  • 타겟으로 잡은 유저가 도발 버프가 없다면 어그로를 해제한다.

로 설정했지만, 도발한 유저가 없을 때, 그냥 때린 유저도 어그로가 풀리는데,

이게 2초마다 실행되는 함수가 피격 기준으로 돌아가는 것이 아니라, 어그로가 매우 빨리 풀릴 때도 있어 좀 매끄럽지 않다.

 

이를 해결하기 위해서, 피격 시 도발을 사용한 유저의 ID를 가져와 조건문으로 비교하여 그 유저의 버프가 풀렸을 때만 어그로가 풀리도록 하고 싶었지만,

지역 변수에 도발을 사용한 유저의 ID가 저장되지 않는 문제가 발생했다.

함수가 몬스터에 등록되면, 함수 안의 지역변수는 계속 유지 될거라 생각했지만, 함수가 갱신되나...?

 

어그로 관련 문제는 좀 더 고민해 봐야 될 듯 하다.

 

2. 방깎

피격자의 방어력을 퍼센트 수치만큼 감소시킨다.

 

현재 충분히 매우 무거워진 데미지 콜백 함수를 가볍게 하고 싶어 따로 함수를 분리해 방어력을 감소시키고 싶었으나,

유저의 경우 방어력이 방어력 스탯 말고, 다른 스탯까지 연산을 하여 처리되기 때문에, 분리시키기 애매하다.

 

데미지 함수에 조건문을 추가하여, 해당 스킬일 때, 방어력을 퍼센트 감소 시켰다.

 

 

3. 넉백

피격자를 넉백시킨다.

 

토끼가 슝슝 날라가서 귀여웠다...

근데 문제점이 발생했는데, 해당 몬스터가 리스폰 될 때, 넉백이 일어났다...

 

어... 이건 플랫폼 내에서 설정을 했는데...

다른 게임에도 이러한 문제가 발생했나 검색해 보았는데, 나타나지 않았다.

 

한번 문의를 해 봐야 겠다.

 

 

4. 반격

반격 스킬을 사용할 때, 피격당하면 1회에 한하여 데미지를 모두 막아주고,

공격자에게 스턴과 방깎을 적용시킨다.

회피의 경우에는 적용되지 않도록 하였다.

 

이 역시 데미지 함수에서 설정을 하고 싶지 않았지만...

역시 이 함수에 적용시키는게 쉽고 깔끔하겠다... 생각이 들었다...

 

 

 

 

스크립트를 짜고 스킬을 직접 써보면서 결과물을 쉽고 명확히 볼 수 있어서

요즘 작업 했던 것들 중에서는 즐겁게 작업 했던 것 같다.