개발일지 목록


#1 - 플레이어 기본 조작

#2 - 무기 기틀 세우기

#3 - 무기 종류 추가 및 업그레이드 구현

#4 - 기본 몬스터

#5 - 몬스터 스폰

#6 - 즉사 공격, 가까운 적 탐색, 데미지 표기

#7 - 플레이어 스텟

#8 - 성능 최적화 (움짤 주의)

#9 - Experience Point

#10 - 넉백 / 미티어 스트라이크

#11 - 경험치 및 레벨업 UI

#12 - HP / SP

#13 - 상호작용 / 타일맵

#14 - 활 무기 개선 및 추가 / 플레이어 팔로우

#15 - 패기 / 길찾기 (1)

#16 - 길찾기 (2)

#17 - 길찾기 (끝)

#18 - 맵 (1)

#19 - 맵 (2) / 공중 유닛

#20 - 맵 (3) / 실내 / 마스크

#21 - 장비 업그레이드 (1)

#22 - 장비 업그레이드 (2)

#23 - 테스트 플레이 & 중간 점검 (1)

#24 - 방패 무기

#25 - 경헝치 오브젝트 개선

#26 - UI / 길찾기 개선

#27 - 파괴 가능한 오브젝트

#27 - 미니 보스 (1)

#29 - 미니 보스 (2)

#30 - 무한 맵



잡말


드디어! 무기 복구 끝 ! 겸사겸사 리팩토링도 했어.

개발을 진행해갈수록 나의 한계를 깨닫고 조금씩 줄여나가고 있어.

자세한 이야기는 본문에서 !

두리번 거리는 귀여운 댕댕이 보고가.

79f3d72fe3f206a26d81f6e04284706c02

반짝



무기


전에는 원대한 꿈을 가지고 진화 무기 3종류씩 ! 이런 느낌을 가려고 했는데,

어짜피 스토리 게임을 만들고있다보니 후반 갈수록 늘려나가면 될 것 같고,

개발기간이 너무 늘어지다보니 최소한으로만 만들어서 데모는 내놓을 수 있도록 해봐야겠다 생각했어.


기존에 있던 몇몇 무기는 일단 보류하고

스토리의 시작이 될 무기들만 추가해보려고해.

스토리가 진행할수록 강해지는 것을 보여주고 싶어서

업그레이드 해서 장비 슬롯을 늘려줄거고,

초기에는 최대 3개의 무기와 악세사리를 장비하도록 할 생각이야.


요 아래에 있는 무기들은 잠깐 보류하는 걸로 !

7ded8077b59c2fa36caff68b12d21a1dc18d12b2e1803bca13

7ded8068f2d73ab64e81d2b628f176641e323a76387dec9e31e0d0288650bbd58b36857c6b5e34e5d045

7ded807fabc53da47e9fe8b115ef046aa08ef8afeb888


이 발톱 무기는 컨셉과 밸런스가 별로여서 제거할 생각이야.

7de99e31e0d0288650bbd58b36837368c0df9ccb12


즉사 공격은 버릴까 고민중 !

viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cea82fa11d0283167b3609c5c7cf1dd93c16821856a07a2427e550e73bf6e142fdbf57b237af40e88e5185da96a98947cd1e93bf63210



이렇게 보니 뭔가 많이 한것 같으면서도 한게 없네...

시무룩


어쨌든간에 롤에 있는 스킬 하나씩 따와서 무기를 만들면 금방 만들수 있을 것 같단 생각이 들더라고.

개성있는 무기들을 만들어주고 싶다보니 적절히 따오면 도움이 될 것 같아.


시작 스토리는 댕댕이가 주인이랑 놀고 있었는데, 장난감을 던진 순간 용사로 간택받아.

장난감은 마왕성으로 날아가버리고 댕댕이는 이를 쫓아가게 돼.

용사가 어린시절 가지고 놀던 장난감들이 자아가 생겨서 댕댕이를 쫓아왔고!

그래서 용사의 장난감들을 생각해봤는데 역시 용사하면 젤다의 전설의 링크인 것 같아.

대표적인 무기인 활, 칼, 방패, 부메랑을 초기 장비로 선택했어.



7cef9e21ecd418986abce89545897d68cc7bf2

기존과 동일해 !


방패


기존에는 뱀서의 성경처럼 빠르게 회전하며 투사체를 막아주는 것을 생각했는데,

이러면 너무 빠르게 회전하다보니 투사체를 절대방어해버릴 것 같더라고.

좀더 방어적인 부분에 초점을 맞춰서

아우솔 과거 패시브나 아이작의 파리 처럼 근처를 천천히 회전하되,

다단히트를 빠르게 주도록 했어.


대신 아래 짤처럼 방향에 따라 입체적이게 되면

스프라이트 모양에 따라 콜라이더 모양을 맞춰주기가 어려워서

속도가 느리다보니 위화감을 느낄 듯 해 스프라이트 모양은 고정시키기로 했어.viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cea80fa11d02831bf7d547234ca7a60bd4070ad618d97bdc13204b314582a3d7e279c885a0d4434d8f259a60f6aeadbf3a0dff5e2


이전과 크게 차이는 나지 않지만 요런 느낌으로 변경되었어 !

7cec9e21ecd418986abce89543807465718906


부메랑


여러가지 고민을 많이 하며 만들었는데,

처음에는 나르 큐처럼 만들어서 되던지는 기능을 넣어주고 싶었어.

하지만 수많은 투사체 속에서 부메랑을 신경쓰기는 그다지 좋은 기분이 아닐 것 같더라고.

그래서 여러 조언을 들어보고 결정한 결과

드레이븐 궁 같은 느낌으로 무조건 돌아오는 방식으로 변경했어.

7bf3d72fe3f206a26d81f6e14e89726c222b

단순히 던지고 돌아오기만 하면 재미없을테니

받을 때 바라보는 방향으로 던지고, 되돌아올 때는 데미지가 더 높도록 설정했어.


참고로 초기 느낌은 이랬어 !

7ef3d72fe3f206a26d81f6ec4086746e5917




만족스러운 결과가 나온 무기야.

댕댕이가 칼을 휘두를 순 없으니

자아를 가진 칼이 알아서 공격하는 컨셉이야.

부메랑은 직접 공격, 방패는 근처 공격, 활은 근접한 적 자동 타겟팅이라서

이 세가지와 다른 공격방식을 주고싶었는데

근접 적을 자동 타겟팅하면서 찌르기 공격을 하도록 해보았어.


레벨이 낮을 때에는 조금 구려보이지만,

잠재력이 높은 무기가 될 것 같아.


7ced9e21ecd418986abce8954082756a12ea97

74f3d72fe3f206a26d81f6ed4f85726f9872


아마도 진화무기가 되면 이런느낌일 것 같고 !

7af3d72fe3f206a26d81f6e34480726cb306

상쾌해 !

얏호


혹시 어떤식으로 구현했는지 궁금한 사람이 있을까 싶어 글이 길어져서 짧게 설명하자면,

포지션을 시작위치, 마지막 위치를 구해서 Lerp로 움직여주고

CircleCast를 사용해서 경로상의 적을 체크해서

데미지를 주는 방식으로 구현했어 !

위를 여러번 반복해서 저런 느낌이 되는거고.



스크립터블 오브젝트


이번에 다른 분 개발일지를 보다가 깨달았는데, 그냥 SO를 때려박는것도 나쁘지 않은 것 같아.

기존에 내가 적의 체력 컴포넌트에 접근하는 방법은

성능을 위해 충돌체를 GetComponent하는 방식이 아닌

미리 충돌체들을 Dictionary에 캐싱해두고 해당 딕셔너리에서 체력 컴포넌트를 받아오는 방식이었어.

그런데 이를 위해 Dictionary를 전역에서 접근해야하고

싱글톤을 이용해서 접근중이었어.

이렇게 하면 해당 싱글톤이 먼저 파괴되거나 늦게 생성되면 문제가 생겨버려.

물론 null체크나 스크립트 순서 등의 해결방법들이 있는데

SO를 사용해볼까 생각을 했어.


단순하게 Dictionary<충돌체, 체력컴포넌트>를 가지고 있는 SO를 만들어주고

적은 이를 참조해서 딕셔너리에 자신의 충돌체를 등록, 파괴될 때는 제거해줘.

무기는 공격 시 이 딕셔너리를 참조해서 대상을 얻어오고.

이렇게 하면 SO는 씬과 독립되어있으므로 초기화 순서나 다른 문제를 걱정할 필요가 없어 !

빌드 시에도 제대로 작동하는지 체크를 해봐야겠지만 아마 잘 될 것 같고.


해당 글에서 추천한 영상.

https://www.youtube.com/watch?v=WLDgtRNK2VE

Game architecture with ScriptableObjects | Open Projects DevlogIn this second devlog, we look at how we employed ScriptableObjects to create a flexible and powerful game architecture for "Chop Chop", the first Unity Open...www.youtube.com


사운드 매니저 같은 것을 사용할때도 사용할 수 있으니 참고해봐.


이전에 좀비키 개발일지에서도 보았던 내용인데

잘 와닿지 않다가 의존성 주입 관련해서 공부를 해보다보니 좀더 이해가 쉬워진 것 같아.

https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=104334

좀비키 9. ScriptableObject로 Prefab 간 의존성 설정[시리즈] 좀비키 개발일지 · 좀비키 0. 번아웃 경험담과 극복기 · 좀비키 1. 스팀 넥스트 페스트 준비 · 좀비키 2. 스팀 넥스트 페스트 후기 · 좀비키 3. 기술스택과 추천 학습자료 · 좀비키 4. 스팀 스토gall.dcinside.com


배칭


배칭이 300이 넘어서 프레임 디버거로 확인해보니

데미지 숫자들이 배칭이 되지 않더라고.

이유를 찾아보니 다이나믹 배칭을 켜면 된대.

원리는 모르겠어 !

얏호


그런데 사용하는 버전에서는 다이나믹 배칭이 플레이어 설정에 없는거야.

확인해보니 urp는 이쪽으로 옮겨졌나봐.

https://forum.unity.com/threads/dynamic-batching-is-missing-urp.1299333/


배칭이 300에서 30으로 줄어들었어 !




이제 UI도 아이템도 복구해주면 될 것 같아.

그런데 타일 기반으로 경로를 체크해주다보니

79f3d72fe3f206a26d81f6e04284706c02

언덕 위에서 벽에 붙어있으면 타일 하나짜리라 언덕 아래에서도 경로가 체크되어버려.

아마도 1타일 기준으로 콜라이더와 경로를 체크하지 말고,

1타일을 4조각으로 나누어서 체크해주면 될 것 같아.

아마 시간이 4배로 늘어나겠지만 DFS는 무적이라 큰 영향은 없을 것 같아 !


다음 일지는 미니보스를 죽여서 돌아오도록 할게.

안냥