yhc509

Epoch: Unseen Devlog 2 - 타일맵과 전투 AI 기반 정리

·5 min read

이번엔 직접 만들던 편집 툴과 하드코딩 로직을 접고, 유니티 기본 도구와 에셋 쪽으로 방향을 틀었다. 타일맵, 범위 세팅, AI까지 앞으로 계속 손이 갈 부분을 한 번에 정리한 회차다.

유니티 타일맵 도입

개발 마인드가 조금 바뀌었다. 예전에는 최대한 직접 만들어 보자는 쪽이었는데, 이제는 가져다 쓸 수 있는 건 가져다 쓰고 더 빨리 결과를 내는 쪽에 가깝다.

그래서 직접 만들던 전용 타일맵 툴은 과감하게 버리고, 유니티 타일맵을 쓰기로 했다. 좌표계도 유니티 기준으로 맞췄다. 원래는 좌측 상단이 (0, 0)이었지만, 이제는 좌측 하단이 (0, 0)이다.

Devlog - 2 image 1

다만 타일맵 에셋은 잘못 고른 것 같다. 써 보니 마음에 안 드는 부분이 꽤 있어서 조금 후회된다. 당분간은 계속 쓰겠지만, 나중에는 다른 에셋으로 바꿀 가능성이 크다.

공격범위 / 효과범위 통합 및 세팅 툴 작업

기존에는 공격 범위와, 공격 대상을 중심으로 퍼지는 효과 범위가 따로 놀고 있었다. 따지고 보면 같은 범위 로직으로 처리할 수 있는 문제라 판단해서 하나로 통합했다. 범위 안에 포함되는지 하드코딩으로 판정하던 부분도 전부 걷어내고, 눈으로 보면서 만들 수 있는 세팅 툴도 같이 작업했다.

Devlog - 2 image 2

Devlog - 2 image 3

범위는 타깃을 중심으로 4분면으로 나눈 뒤, 한 면을 칠하는 방식으로 지정한다.

  • 방향 개념이 없으면 상하좌우 대칭으로 4개 면을 모두 다룬다.
  • 방향 개념이 있으면 아래를 바라보는 기준으로 좌우 대칭만 적용해 2개 면만 다룬다.

Devlog - 2 image 4

  • ALL - 전범위
  • CONE - 부채꼴 모양
  • CROSS - 십자
  • DIAMOND - 마름모(몰우전)
  • LASER - 관통(이격, 삼격, 육격)
  • NONE - 범위 없음
  • RANGE - 원거리(궁병, 노병, 연노병)
  • SQUARE - 8방향(구궁)

유닛 AI에 Behavior Designer 도입

AI 로직도 하드코딩이 너무 심해서 관리가 어려웠다. 그래서 기존 코드는 전부 걷어내고 Behavior Tree를 도입했다. 시각적으로 AI의 의사결정 구조를 볼 수 있다는 점이 크다. 대신 러닝 커브는 조금 있다.

Devlog - 2 image 5

위 스크린샷은 공격 범위 안에 적이 있으면 이동해서 공격하는 가장 단순한 형태의 트리다.

트리는 클래스 타입에 따라 56종류, 여기에 현재 방침까지 더하면 34종류 정도의 파생형이 필요할 것 같다. 중요한 적 보스는 별도 트리를 따로 줄 생각이다.

Behavior Designer를 도입한 뒤에는 병종별 베이스 트리를 먼저 잡고, 시나리오별 파생형을 추가하는 방식으로 정리할 생각이다.