자해하는 미친 전사

이우석·2024년 2월 19일

포트폴리오

목록 보기
14/15

주말동안 내 코드의 구조적인 문제를 찾았다..

내가 맞았을 때 반응하는 스킬을 구현하려고 했는데.. 문득 모든 처리가 Host에서 처리되지 않고 Host, Guest 나눠서 처리되고 있었다.

그 동안은 어떻게든 만들었는데.. 맞았을 때 반응하는 복수 스킬을 구현하기 어려워져서 난관에 부딪혔다.

복수 스킬을 다른 스킬로 변경해버릴지도 고려해봤지만.. 아무래도 모든 판정은 Host에서 처리하는게 맞다는 게 마음에 걸렸고 결국 이동부터 다시 구현하기로 했다.

주말동안은 어떻게 바꿀지 헤메느라 시간만 버렸지만 오늘 주말동안 손댔던 코드를 원복하니 작업이 훨씬 쉬웠다.

이동, 타격, 돌진, 도주까지 다시 구현하는데에 성공했는데, 이 중 타격이 특히 발목을 잡았다. 자꾸만 게스트 쪽에서 자기 자신을 공격하는데.. 에디터로 게스트 쪽을 돌리느라 문제점을 찾는게 늦어졌다. 문제는 바로 타격의 판정 처리였다.

모든 판정을 호스트를 기준으로 처리하기 위해 재작업을 시작했고, 호스트가 때릴 때와 호스트가 맞을 때를 구현하고 게스트는 그에 맞춰 이펙트만 구현하고 있는데, 호스트인지 구분하는 방법이 제법 복잡하다.

NetworkBehavier에서 제공하는 IsOwenr와 IsHost 복합적으로 값을 사용해야하는데, 처음에는 IsHost 값에 대해 오해하고 사용해 시간이 걸렸다. IsOwner는 해당 오브젝트의 Owner가 자신인지 체크하지만 IsHost는 오브젝트와 상관없이 현재 클라이언트가 호스트인지를 체크한다. 나는 IsHost가 해당 오브젝트가 호스트의 오브젝트인지 판별한다고 지례 짐작해버려 자해하는 미친 전사가 완성됐다...

내일은 중간 점검과 함께 나머지 스킬들을 구현하려한다. 우선은 전에 만들어두었던 사격, 마력탄 스킬을 우선 구현하고 캐스터의 두번째 스킬인 한파를 구현하면 모든 직업이 2가지 스킬을 가지게 된다.

이 외에도 덫, 복수, 영체화 스킬이 있어야하지만.. 이 세 스킬은 일정을 봐서 추가하고 다른 스킬을 우선 구현하고 인게임 UI 등을 구현한 뒤에 작업을 고려해봐야 할 것 같다.

profile
게임 개발자 지망생, 유니티 공부중!

0개의 댓글