개발일지 목록
#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, 길찾기 개선
오랜만의 일지
개발도 손에 잘 안 잡히고 바쁘다보니 지난 일지로부터 1달이 지나버렸어.
매번 하는 다짐이지만 이번에도 한번 더 다짐하도록 할게 !
앞으론 더 꾸준히 일지를 작성할거야 !
되돌아보기
현재까지의 결과물은 이런 느낌이었어.
그동안의 일
일지가 늦어지게 된 개발과 관련된 이유로는
코옵 플레이를 위해 스크립트를 수정해준 것과 2022LTS 버전으로 올리게 되서야.
서바이벌류 개발을 시작하면서 목표로 한 핵심 기능은 탐험과 코옵 플레이야.
나는 코옵 플레이를 굉장히 좋아하는데
서바이벌류라고는 뱀서 하나밖에 해보지 않았지만 보통 코옵은 없더라고.
게다가 항상 똑같은 무한맵이거나 작은 공간이고.
그래서 들은 생각이
무한 맵이 아닌 탐험 요소로 가득한 광활한 맵을 친구와 함께 플레이한다면 정말 재밌지 않을까
였고 이걸 목표로 잡았어.
하지만...
https://youtu.be/-j2budq0Qpo?si=W
안돼...!
차별점이라고 생각했던 요소가...
지난 일지에서 길찾기 요소를 코옵가능하도록 개선해주었고,
지금은 플레이어 스크립트가 싱글톤으로 구현되어서
2인 이상 존재할 수가 없었던 문제를 해결해주려고
싱글톤을 통해 플레이어와 엮여있던 시스템들을 모두 수정해주었어.
그리고 유니티 2022LTS 버전이 나왔다길래 쓸만하다고 해서 업데이트를 해주게 되었어.
마음에 들었던 신기능이 몇가지 있었는데, 잘 생각이 나지 않아 가장 인상깊었던 변경점을 말해줄게.
1. Monobehaviour.destroyCancellationToken
https://docs.unity3d.com/2022.2/Documentation/ScriptReference/MonoBehaviour-destroyCancellationToken.html
귀찮게 UniTask를 사용하며 Destroy 시 이용하는 Token을 매번 생성해줄 필요가 없어졌어.
2. 콜라이더와 릿지드바디의 Layer Overrides
여러 가지 기능들이 붙어있는데 간단히 설명해볼게.
뉴비들이 간간히 질문하는 A는 B에 부딪히지 않고 B는 A에 부딪히는 것을 간단하게 구현할 수 있어.
이 링크에 자세히 설명되어 있는데 직접 테스트해보지 않아서 확실하진 않지만 아마 맞을거야.
https://nakamura001.hatenablog.com/entry/2023/01/26/%E3%80%90Unity%E3%80%91Collider_2D_%E3%81%AE_Layer_Overrides
사진을 보면 A가 B와 충돌시에는 힘을 받아 밀려나지만, C와 충돌시에는 밀려나지 않는 것을 볼 수 있지.
물론 B와 C는 A와 충돌되어 밀려나는 상황이고.
1회성 용도로 특정 레이어와만 충돌되는 경우를 만들어주고 싶은데
레이어를 추가해주기는 아쉬운 경우에 레이어 오버라이드에서 설정해줄 수 있어.
레이어 설정보다 우선적으로 인식되기 때문에
굳이 1회용으로 사용하기 위한 레이어를 만들어줄 필요가 없어져.
OnTriggerEnter 같은 콜백 함수도 원하는 레이어로부터만 보내거나 받도록 설정해줄 수 있고.
정말 좋은 추가 기능 같은데, 기존 레이어랑 같이 있으니 좀 헷갈리는 것 같아서 아쉬워.
또다시 문제 발생
하지만 2022LTS 버전에는 정말 치명적인 문제가 있어.
버그가 끝도 없이 나와.
그냥 다시 2021버전으로 다운그레이드 해야겠어...
지난 번, 많은 사람들이 겪던 캔버스 문제는 해결된 듯 싶으나
내가 지금 사용하면서 겪은 버그 두가지가 유니티에 리포트 되지도 않은 것 같아.
지난 번에 유니티에 버그 리포트해보니 정말정말 일처리도 느리고 내 시간만 뺐기는 기분이라
그냥 그나마 멀쩡하게 사용했던 2021버전으로 내리려고 해.
아마 이것보다 더 수많은 치명적인 버그가 있을 것 같아.
참고로 내가 겪은 2022.3.5의 두 가지 버그는
1. 애니메이션 창에서 커브 뷰일 시 우클릭 메뉴에 커브 세팅이 나타나지 않음.
2. 스프라이트 에디터에서 custom physics shape를 설정 시 꼭지점이 클릭되지 않음.
해당 문제를 겪는 다른 사람의 글.
https://discussions.unity.com/t/custom-physics-shape-control-points-not-working/269825
3.4, 3.5버전 확인되었다고 하고 아직까지 버그 리포트도 되지 않은 것 같아.
아직 유니티 기능들을 몇가지 건드린 게 없는데 너무 많은 버그를 발견했다보니
그냥 크게 문제를 느끼지 못한 2021버전으로 내리려고 해.
괜히 버전 올렸다가 쓸데없이 시간만 낭비했어.
신버전이 나오면 새것을 쓴다는 느낌에 신나서 버전을 올리곤 하는데 더이상은 자제해야겠어...
파괴 가능한 오브젝트
잡소리가 길었는데 드디어 본론이야 !
뱀서의 촛대와 같은 오브젝트를 구현해주었어.
빠르게 결과물을 보여주도록 할게.
생성
구현은 간단하게 플레이어는 이동 거리를 체크해주고
일정 주기마다 플레이어들의 이동거리를 읽어 합산하고
목표 이동거리 달성 시 다음 목표 이동거리를 갱신해주고
파괴 가능한 오브젝트를 생성해.
생성 시에는 근처에 중복 생성되지 않도록 해주고.
파괴 가능한 오브젝트는 해당 지역에 어울리는 장식물을 배치해줄 생각이야.
파괴
파괴 가능한 오브젝트 또한 몬스터와 같은 공격 가능한 대상이야.
무작위 적을 랜덤으로 공격한다거나, 가까운 적을 공격할 시에 타겟팅 돼.
파괴 시에는 각 장식물의 파괴 애니메이션이 있었으면 좋겠지만
아쉽게도 에셋에 그런 것은 없어서 직접 그려야 되다보니 그냥 이펙트로 대체해주었어.
파괴 시에는 해당 스테이지 설정에 따른 랜덤 보상이 등장할 예정이야.
골드, 경험치, 아이템 등이 있고, 아이템은 해금 여부에 따라 더 등장할거야.
각각 weight를 주겠지만 아이템이 너무 많이 해금되면
골드나 경험치의 드랍률이 낮아지므로
골드 50% 경험치 30% 아이템 20% 이런식으로 확률을 주고
아이템일 경우 내부에서 해금된 아이템의 weight를 이용해 드랍하게 할 생각이야.
획득
획득은 기존 경험치와 같은 방식을 사용해.
따라서 요 부분만 상속을 이용해주었어.
실제 아이템 획득 시 적용은 가장 아래 ApplyItem 부분을 override 해서 구현돼.
얼굴
얼굴은 개발일지 #2에서도 데쉬 시 ><하는 부분에서 사용되었어.
이 귀엽기만 하던 얼굴을 사용할 때가 되었어.
근처의 적, 상호작용 가능한 오브젝트, 파괴 가능한 오브젝트를 바라볼 거야.
이 기능은 레인 월드를 플레이하며 너무 귀여워서 꼭 넣고 싶던 기능이야.
너무 귀여운거야 !
이런 식으로 근처에 있으면 대상을 바라보도록 해주었어.
뛰어다니면서는 이런 느낌이야 ! 너무 귀여워 !
끝
다음 일지는 2021버전으로 다운그레이드 하고,
맵을 만들던 미니보스를 만들던 해서 돌아올게.
아직 만들고 싶은 기능은 많은데 최소한의 기능은 거의 구현이 다 된 것 같아.
구현을 하며 포기한 부분들도 있어.
광활한 맵을 만들어서 탐험을 하는 게임을 만들고 싶었는데,
나 혼자서 커다란 월드를 디자인 하는 것도 너무 힘들더라고.
그래서 생각해 본 게 그 지역지역을 잘게 쪼개서 스테이지로 만들어주고
해당 스테이지는 단조로움을 덜하도록 무한맵이되, 커다란 무한맵이고
맵에는 다양한 장식과 지형들을 넣어줄 생각이야.
무기 같은 경우에도 각 무기가 여러 진화형을 보유하도록 하려고 했는데
이렇게 하면 또 진화형이 너무 많아져서 나에겐 벅차더라고...
그냥 1대1로 진화시키도록 해야겠어...
어쨌거나 다음 일지는 금방 돌아오도록 할게 !
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.