개발일지 목록
#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 - 무한 맵
잡말
드디어! 무기 복구 끝 ! 겸사겸사 리팩토링도 했어.
개발을 진행해갈수록 나의 한계를 깨닫고 조금씩 줄여나가고 있어.
자세한 이야기는 본문에서 !
두리번 거리는 귀여운 댕댕이 보고가.
무기
전에는 원대한 꿈을 가지고 진화 무기 3종류씩 ! 이런 느낌을 가려고 했는데,
어짜피 스토리 게임을 만들고있다보니 후반 갈수록 늘려나가면 될 것 같고,
개발기간이 너무 늘어지다보니 최소한으로만 만들어서 데모는 내놓을 수 있도록 해봐야겠다 생각했어.
기존에 있던 몇몇 무기는 일단 보류하고
스토리의 시작이 될 무기들만 추가해보려고해.
스토리가 진행할수록 강해지는 것을 보여주고 싶어서
업그레이드 해서 장비 슬롯을 늘려줄거고,
초기에는 최대 3개의 무기와 악세사리를 장비하도록 할 생각이야.
요 아래에 있는 무기들은 잠깐 보류하는 걸로 !
13
45
8
이 발톱 무기는 컨셉과 밸런스가 별로여서 제거할 생각이야.
12
즉사 공격은 버릴까 고민중 !
10
이렇게 보니 뭔가 많이 한것 같으면서도 한게 없네...
어쨌든간에 롤에 있는 스킬 하나씩 따와서 무기를 만들면 금방 만들수 있을 것 같단 생각이 들더라고.
개성있는 무기들을 만들어주고 싶다보니 적절히 따오면 도움이 될 것 같아.
시작 스토리는 댕댕이가 주인이랑 놀고 있었는데, 장난감을 던진 순간 용사로 간택받아.
장난감은 마왕성으로 날아가버리고 댕댕이는 이를 쫓아가게 돼.
용사가 어린시절 가지고 놀던 장난감들이 자아가 생겨서 댕댕이를 쫓아왔고!
그래서 용사의 장난감들을 생각해봤는데 역시 용사하면 젤다의 전설의 링크인 것 같아.
대표적인 무기인 활, 칼, 방패, 부메랑을 초기 장비로 선택했어.
활
기존과 동일해 !
방패
기존에는 뱀서의 성경처럼 빠르게 회전하며 투사체를 막아주는 것을 생각했는데,
이러면 너무 빠르게 회전하다보니 투사체를 절대방어해버릴 것 같더라고.
좀더 방어적인 부분에 초점을 맞춰서
아우솔 과거 패시브나 아이작의 파리 처럼 근처를 천천히 회전하되,
다단히트를 빠르게 주도록 했어.
대신 아래 짤처럼 방향에 따라 입체적이게 되면
스프라이트 모양에 따라 콜라이더 모양을 맞춰주기가 어려워서
속도가 느리다보니 위화감을 느낄 듯 해 스프라이트 모양은 고정시키기로 했어.
이전과 크게 차이는 나지 않지만 요런 느낌으로 변경되었어 !
부메랑
여러가지 고민을 많이 하며 만들었는데,
처음에는 나르 큐처럼 만들어서 되던지는 기능을 넣어주고 싶었어.
하지만 수많은 투사체 속에서 부메랑을 신경쓰기는 그다지 좋은 기분이 아닐 것 같더라고.
그래서 여러 조언을 들어보고 결정한 결과
드레이븐 궁 같은 느낌으로 무조건 돌아오는 방식으로 변경했어.
단순히 던지고 돌아오기만 하면 재미없을테니
받을 때 바라보는 방향으로 던지고, 되돌아올 때는 데미지가 더 높도록 설정했어.
참고로 초기 느낌은 이랬어 !
칼
만족스러운 결과가 나온 무기야.
댕댕이가 칼을 휘두를 순 없으니
자아를 가진 칼이 알아서 공격하는 컨셉이야.
부메랑은 직접 공격, 방패는 근처 공격, 활은 근접한 적 자동 타겟팅이라서
이 세가지와 다른 공격방식을 주고싶었는데
근접 적을 자동 타겟팅하면서 찌르기 공격을 하도록 해보았어.
레벨이 낮을 때에는 조금 구려보이지만,
잠재력이 높은 무기가 될 것 같아.
아마도 진화무기가 되면 이런느낌일 것 같고 !
상쾌해 !
혹시 어떤식으로 구현했는지 궁금한 사람이 있을까 싶어 글이 길어져서 짧게 설명하자면,
포지션을 시작위치, 마지막 위치를 구해서 Lerp로 움직여주고
CircleCast를 사용해서 경로상의 적을 체크해서
데미지를 주는 방식으로 구현했어 !
위를 여러번 반복해서 저런 느낌이 되는거고.
스크립터블 오브젝트
이번에 다른 분 개발일지를 보다가 깨달았는데, 그냥 SO를 때려박는것도 나쁘지 않은 것 같아.
기존에 내가 적의 체력 컴포넌트에 접근하는 방법은
성능을 위해 충돌체를 GetComponent하는 방식이 아닌
미리 충돌체들을 Dictionary에 캐싱해두고 해당 딕셔너리에서 체력 컴포넌트를 받아오는 방식이었어.
그런데 이를 위해 Dictionary를 전역에서 접근해야하고
싱글톤을 이용해서 접근중이었어.
이렇게 하면 해당 싱글톤이 먼저 파괴되거나 늦게 생성되면 문제가 생겨버려.
물론 null체크나 스크립트 순서 등의 해결방법들이 있는데
SO를 사용해볼까 생각을 했어.
단순하게 Dictionary<충돌체, 체력컴포넌트>를 가지고 있는 SO를 만들어주고
적은 이를 참조해서 딕셔너리에 자신의 충돌체를 등록, 파괴될 때는 제거해줘.
무기는 공격 시 이 딕셔너리를 참조해서 대상을 얻어오고.
이렇게 하면 SO는 씬과 독립되어있으므로 초기화 순서나 다른 문제를 걱정할 필요가 없어 !
빌드 시에도 제대로 작동하는지 체크를 해봐야겠지만 아마 잘 될 것 같고.
해당 글에서 추천한 영상.
https://www.youtube.com/watch?v=WLDgtRNK2VE
사운드 매니저 같은 것을 사용할때도 사용할 수 있으니 참고해봐.
이전에 좀비키 개발일지에서도 보았던 내용인데
잘 와닿지 않다가 의존성 주입 관련해서 공부를 해보다보니 좀더 이해가 쉬워진 것 같아.
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=104334
배칭
배칭이 300이 넘어서 프레임 디버거로 확인해보니
데미지 숫자들이 배칭이 되지 않더라고.
이유를 찾아보니 다이나믹 배칭을 켜면 된대.
원리는 모르겠어 !
그런데 사용하는 버전에서는 다이나믹 배칭이 플레이어 설정에 없는거야.
확인해보니 urp는 이쪽으로 옮겨졌나봐.
https://forum.unity.com/threads/dynamic-batching-is-missing-urp.1299333/
배칭이 300에서 30으로 줄어들었어 !
끝
이제 UI도 아이템도 복구해주면 될 것 같아.
그런데 타일 기반으로 경로를 체크해주다보니
언덕 위에서 벽에 붙어있으면 타일 하나짜리라 언덕 아래에서도 경로가 체크되어버려.
아마도 1타일 기준으로 콜라이더와 경로를 체크하지 말고,
1타일을 4조각으로 나누어서 체크해주면 될 것 같아.
아마 시간이 4배로 늘어나겠지만 DFS는 무적이라 큰 영향은 없을 것 같아 !
다음 일지는 미니보스를 죽여서 돌아오도록 할게.
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.