30

장기간의 고민 끝에 설계를 확정한 스폰 시스템

언제, 무엇을, 어디에, 어떻게 적을 스폰할 것인가를 데이터로 나타낼 수 있으면서, 손쉽게 확장할 수 있는 형태를 구현하는 데 고민이 많았음


무엇을 소환하는 건지는 사실 명확하고..

최종적으로 아래와 같이 결정

언제 -> Rule 집합 세팅해두고 전부 다 통과하면 그게 소환할 때라 판단

어디 -> ISpawnArea라는 인터페이스를 정의해서, 자유롭게 확장 가능하도록 구현. 일단 간단한 콜라이더 기반 영역을 정의해봤고.. 추후에는 타일맵으로도 스폰 영역을 정의할 수 있도록 확장

어떻게 -> 그냥 안 보이는 곳 랜덤으로 스폰 시킬까 하다가, 추후 확장을 고려해서 ISpawnMethod 인터페이스를 정의해서 확장할 수 있도록 처리


당장 머리를 굴려봐도 이 정도면 에지간한 케이스는 커버가 되겠다 싶어서 그대로 구현 시작

57



24b0d121e09c28a8699fe8b115ef0464d58ce2cd

그렇게 나온 ScriptableObject 데이터

-테스트 적 1을

-RespawnPolicyRule에 따라 5초에 한 번 최대 3마리 까지, 리스폰 횟수는 제한 없음

-CheckPlayerInAreaRule에 따라 스폰 영역에 플레이어가 있을때만

-모든 Rule을 만족할 때

-SimpleSpawnMethod로 스폰

1



3eadd131eb9c3faf689fe8b115ef046ab81dcc64e249

잘 된다

66


24b0d121e09c28a8699fe8b115ef046f5d489199af

참고용 다이어그램

58