같은 종류의 NPC인데, 객체 위치에 따라 다른 속성을 가져야 할 때가 잦습니다. 여기서 말하는 속성은 프로그래밍 언어에서 말하는 속성이 아니라, 엑셀(Excel) 등에서 테이블로 입력한 자료를 말합니다. 같은 종류의 NPC가 다른 속성을 갖게 하는 방법은 크게 두 가지가 있습니다.
첫 번째 방법은 그 종류의 속성을 복사해서 다른 종류의 속성을 만들고, 두 종류의 NPC를 완전히 별개의 것으로 취급하는 방법입니다. 일반적으로 자주 사용하는 방법입니다. 이 방법을 C++ 프로그래밍 언어와 비교하자면, 완전히 별개의 클래스를 만드는 것이라고 볼 수 있습니다. 상속이 좀 더 나은 방법이지만, 대부분 속성 편집 도구엔 상속을 이용해 속성을 정의할 방법이 없습니다.
두 번째 방법은 종류마다 같은 속성을 공유하되, 객체마다 다른 속성을 줄 수 있게 하는 방법입니다. 이 방법을 C++ 프로그래밍 언어와 비교하자면, 클래스 변수와 인스턴스 변수를 활용하는 것과 비슷합니다.
그렇다면, 언제 어느 방법을 써야 할까요? 제가 내린 결론은 이렇습니다. 여러 객체의 값을 같이 바꿔야 한다면 첫 번째 방법을 쓰는 게 낫고, 한 객체만 값을 바꿔야 한다면 두 번째 방법을 쓰는 게 낫다는 것입니다.
구체적으로 예를 들면 이해가 좀 더 쉬울 것입니다. A 지역의 박쥐는 B 지역의 박쥐와 거의 같은 속성을 갖는데, A 지역의 것은 부활 시간이 더 짧아야 합니다. 이런 경우엔 A 지역에 있는 여러 박쥐의 속성을 바꿔야 하므로, 첫 번째 방법을 사용하는 게 좋습니다. 한편, A 지역의 박쥐 중에서 단 한 마리만 부활 시간이 더 짧아야 한다면, 두 번째 방법을 쓰는 게 좋습니다.
언제 어떤 방법을 써서 문제를 해결할지 고민하는 것은 중요합니다. 상황에 맞게 적합한 방법을 골라서 문제를 해결해야, 불필요한 작업을 최소로 줄이면서도 할 일을 모두 할 수 있습니다.
구체적으로 예를 들면 이해가 좀 더 쉬울 것입니다. A 지역의 박쥐는 B 지역의 박쥐와 거의 같은 속성을 갖는데, A 지역의 것은 부활 시간이 더 짧아야 합니다. 이런 경우엔 A 지역에 있는 여러 박쥐의 속성을 바꿔야 하므로, 첫 번째 방법을 사용하는 게 좋습니다. 한편, A 지역의 박쥐 중에서 단 한 마리만 부활 시간이 더 짧아야 한다면, 두 번째 방법을 쓰는 게 좋습니다.
언제 어떤 방법을 써서 문제를 해결할지 고민하는 것은 중요합니다. 상황에 맞게 적합한 방법을 골라서 문제를 해결해야, 불필요한 작업을 최소로 줄이면서도 할 일을 모두 할 수 있습니다.

댓글을 달아 주세요
근데 그냥 무식하고 쉬운게 좋삼
부활시간 프로퍼티만들어서 셋팅해버리면 끝나빈다.
그리고 저라면
Lua로 UI엔진 만들어보니까 함수도 더하고 빼는게
너무 유연하더군뇽.
그에비해 타입강형체크 언어인 c++ 특성상 좀 귀찮긴 하지만
특정 오브젝트만 정찰경로 설정은
인터페이스 따로 설정해서
command 패턴느낌으로 처리해버리겠스빈다.
음 내가 쓴 글이 명확하지 않네. 내 의도를 정확히 설명하기 어려워서 패스....