디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

댕댕이 서바이벌 #8 - 성능 최적화 (움짤 주의)

태보미코갤로그로 이동합니다. 2023.03.24 08:50:01
조회 6080 추천 38 댓글 68

- 관련게시물 : 댕댕이 서바이벌 #6 - 즉사 공격, 가까운 적 탐색, 데미지 표기



- 관련게시물 : 댕댕이 서바이벌 #5 - 몬스터 스폰



- 관련게시물 : 댕댕이 서바이벌 #3 - 무기 종류 추가 및 업그레이드 구현



- 관련게시물 : 댕댕이 서바이벌 #2 - 무기 기틀 세우기



- 관련게시물 : 댕댕이 서바이벌 #1 - 플레이어 기본 조작




댕댕이 서바이벌 #7 - 플레이어 스텟



점점 더 복잡해져가는 시스템 !

어지러워서 쓰러져버릴 것 같아 !

뒤돌아보기 무서워 !

ㅈㅅ




지난 개발일지에서는 아래 짤처럼 즉사 공격, 가까운 적 탐색, 데미지 표기를 구현했어.

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

데미지 표기는 되고 있으나 플레이어 스텟이 존재하지 않아 데미지는 없는 상황이지.

따라서 미뤄왔던 플레이어 스텟을 구현해주었어.


먼저 플레이어 스텟 기반이 될 클래스.

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

사실 이번 게임도 큰 스토리, 세계관, 게임 시스템 틀 정도만 생각하고 시작했어.

그렇기에 세부적인 기획이 존재하지 않고, 이상한 부분이 존재할 수 있어.

플레이어 스텟은 뱀서라이크인 만큼 뱀서의 스텟을 기반으로 만들었고 이후에 바뀔 듯 해.


몇 가지 고민했던 부분에 대해 이야기해보자면,

1. 플레이어의 체력 float

플레이어의 체력을 float로 설정해주었는데 뱀서라이크 사진이나 짤 보면 데미지가 큰 경우에 지저분해보이더라고.

개인적으로 1234k 이런식으로 데미지 붙는것도 좀 유치해보이기도하고.

몬스터 수가 많은 만큼 데미지 표기도 화면에 많이 출력되는데 시야를 방해하지 않았으면 좋겠더라고.

그래서 데미지 또한 크지 않은 수가 될건데 12에서 10%면 1.2니 정수로는 1이 되어버려 소수점 단위를 버리는 것을 방지하고자 했고

초당 체력 회복 시에 소숫점 단위 계산을 용이하게 하기 위하여 float로 설정해보려고 생각했어.

이런 장르 게임은 처음이라 잘 모르겠는데 보통 이렇게 하나?

2. statsincreaseperlevel

이 클래스는 해당 캐릭터의 레벨당 스텟 증가량이야.

게임 시스템을 조금 고민해보았는데

아마도 탕탕특공대처럼 스테이지 외부 캐릭터 선택 창에서 캐릭터를 강화해줄 시스템이 있는게 재밌다고 느꼈어.

스테이지 내에서 무기를 선택하는 레벨이 아닌 캐릭터 레벨을 올려 강화하는 시스템을 넣어줄 것이고

레벨을 올리면 캐릭터 기초 스텟이 증가할 예정이야.

물론, 뱀서의 전체 스텟 강화해주는 시스템도 있을거고.



이렇게 되면 결국 레벨이 많이 증가하면 1번에서 방지하고자 했던 숫자가 커지게 될 텐데

적당 선에서 만렙을 설정하고자해.

뱀서처럼 캐릭터 별 고유 무기를 해당 캐릭터 일정레벨 달성 시 해금되어 아이템 풀에서 나오도록 해줄거야.


적고나니 항상 느끼지만 말만 길어지는 것 같네...

이해해주길 바라.


2ebcc224eadc78ee3df698a518d6040300ecda649bc7cd17efa2

다음은 해당 캐릭터의 데이터를 담아둘 스크립터블 오브젝트.

별것 없어.


이제 플레이어 쪽에서는 현재 데이터에서 선택되어있는 캐릭터를 읽어서 위 데이터를 읽어올 예정이야.

지금은 없는 캐릭터 선택창에서 캐릭터를 선택하고 이 값을 플레이 데이터에 담아두고

스테이지 시작 시 해당 데이터를 참조해서 캐릭터 데이터를 가져오도록 할 거야.

이 방식 외에 다른 방식은 잘 모르겠더라고.

7ded9e36ebd518986abce8954585726f8c

요런 식으로 어드레서블을 이용해서 데이터를 가져오는데 문제가 생겼어.

플레이어 스텟의 데쉬 게이지 양을 이용하는 UI나

플레이어 스텟을 받아 데미지를 계산하는 무기 쪽에서

저 addressable로 플레이어 스텟을 로드하기 전에 스텟을 받아오는 문제야.

어떡할까 하다가 그냥 그런 경우에는 위에 IsReady함수가 참이 되기 전까지 대기시키거나 유니티이벤트를 이용했어.


7ded9e36ebd518986abce8954483746aa7

이런 식으로 플레이어 스크립트의 Start함수에서 로드가 완료되면 데쉬 게이지 최대치 갱신 이벤트를 invoke시키도록.



7ded9e36ebd518986abce8954585776d96

무기 스크립트에서는 요런식으로 무기의 데이터를 로드하고 플레이어 스텟이 로드되어있지 않으면 대기 후에 스텟을 계산해.

이것도 일단 생각한 방법이라 나중에 바뀔수 있어.



어쨌거나 요렇게 해서 간단하게 데이터 생성 완료 !

7ded9e36ebd518986abce89542827169d4

아직 전부 구현된 것은 아니라서 필요한 값만 입력해보았어.

댕댕이 이름은 하얀색이니깐 백구야.


7ded9e36ebd518986abce8954289746dde

투사체에서는 이런식으로 데미지와 크리티컬 등을 초기화 해주는데,

나는 화살 하나가 셋을 공격했을 때 각각에게 데미지와 크리티컬이 다른 것보다는

크리티컬 공격인 화살이라면 그 셋 모두에게 크리티컬 공격을 하는것이 좋아서

활성화 시에 스텟을 계산해주도록 했어.

이 때 항상 데미지가 동일한건 심심하니깐 랜덤값을 조금 주었고.



일단 현재 필요한 스텟 구현은 끝 !

일단 대충 구현해두느라 누덕누덕 붙어버려서 코드 리팩토링을 해야 할 때가 된 것 같아.

다음은 결과물 !




그 전에 지난 개발일지로부터 약간의 수정사항도 있어.

데미지 표기를 요런식으로 해주었는데 숫자가 위로 서서히 올라가는게

데미지가 여러번 뜰 경우 보기에는 낫겟지만

사실 뱀서류가 몬스터가 너무 많다보니 데미지도 위로 올라가면 화면이 난잡해보이는 느낌이더라고.

7ceb877fb1826cf23aea98a213d3341d39338e3a07ade5911e7a


따라서 조금 느낌을 바꿔줬어.

7def9e31e0d0288650bbd58b3689726b29c9

나쁘지 않은 느낌.

그리고 크리티컬일 시에는 조금 강조 효과를 주었는데

일반 숫자는 아래에서 위로 등장, 크리티컬은 위에서 아래로 등장해.

7dec9e31e0d0288650bbd58b3687766aed83

위 움짤에 보이듯이 방패를 든 고블린도 추가해주었어.


최종 결과물 !

7dee9e31e0d0288650bbd58b3680746979598516e0

지금 몬스터가 다 녹색이라 그런지 아니면 꾸며둔게 없어서인지

글씨체도 좀 두꺼운 느낌이고 약간은 마음에 안 들어.

다음에는 다른 종의 몬스터 하나를 더 추가해보도록 할게.

그리고 드디어 경험치를 구현할 예정이야 !

그럼 안녕.

안냥


+ 댓글 내용 추가

타겟프레임레이트 60으로 설정해두었고, 기본적인 풀링은 적용되어있음.

캔버스는 월드캔버스 하나.

초당 적 60마리 생성 중.

7de89e31e0d0288650bbd58b3687746ad2ebf4b5


7deb9e31e0d0288650bbd58b3687706eab2d67cc



7dec9e36ebd518986abce895448175655231


적은 캡슐콜라이더로 되어있음.

1000마리정도 다같이 부대끼면 물리가 저정도 차지하는듯.


최적화는 밸런스맞추고 빌드까지 해보고 실제 플레이 후 나중에 알아보는걸로 !








-댕댕이 서바이벌 #8 - 성능 최적화 (움짤 주의)


7ceb877fb1826df23dec98a213d3341d3a1f2010f4b3f2d9bb73425d7b

지난 번 개발일지 마지막은 요렇게 데미지 표기, 플레이어 스텟 등의 작업이 완료되었었다.

댓글로 성능 관련 질문을 받게되었는데,

대략 텍스트가 많이 표시되면 렉 걸리지 않느냐, 대량의 몬스터도 괜찮은가 였다.

간단히 점검을 해 보았다.

프로파일러도 볼 줄 모르고 물리, 렌더링 관련 지식이 없으므로 양해바람.

7ceb877fb1826ffe3eef98a213d3341d074eccc9303d96431060a912

먼저 데미지가 한번에 대량으로 나오게되면, 순간적으로 프레임이 치솟는게 보인다.

하늘색으로 하이라이트된 부분이 데미지 관련하여 캔버스에 렌더링 되는데에 차지하는 소요시간이다.

데미지 텍스트는 월드 스페이스 캔버스에 tmp를 오브젝트 풀링을 이용해 생성해준다.

두트윈을 이용하였고, 크리티컬, 일반 데미지 각각 두개의 시퀀스를 가지고있다보니

데미지 표기가 많아질수록 두트윈 시퀀스도 500개이상으로 늘어나버린다.

시퀀스를 끝내면 풀에 다시 넣어주는 작업까지.

가비지도 많이 생성되고, 프레임도 불안정하고, 이런저런 문제가 있는 상태다.


아래와 같은 순서로 변경해주었다.

1. 두트윈 대신 애니메이터 이용 => 풀링에 넣어주는 것은 애니메이션 이벤트 이용

애니메이션 이벤트는 ide 상에서 어디서 참조되고 호출되는지 체크하기가 힘들어서 사용을 지양했는데,

가비지도 발생되지 않고 성능도 지금보다 좋아보여서 변경했다.

애니메이터 behaviour는 좀 별로인 것 같았다.

2. TMP Text UI에서 TMP Text로 변경 => 캔버스 사용이 의미가 없는 듯 하고 풀링 시 오브젝트를 껏다 켜는 것이 아닌

mesh renderer enabled 를 제어

3. 데미지 텍스트의 양 제한 => 동시에 일정 개수만 존재 가능, 이후 필요 시 가장 먼저 사용했던 오브젝트를 사용

결과 아래와 같다.

7ded8068f2d73ab64e81d2b628f17c647c2379941b

텍스트 개수를 제한한 것이 효과가 가장 크긴 하겠지만

위 1번 2번 변경을 하며 가비지 생성이 줄어들었으니 다 긍정적인 거 아닐까?

기존과 비교하여 프레임 드롭이 사라졌다 !




참고로 빌드 시에는 성능이 훨씬 좋으므로

나같은 뉴비는 일단 개발하고 성능걱정해도 괜찮을 것 같다.

컴퓨터 사양에 따라 다르겠지만 화면을 가득 채운상태로 대략 1000개 이상의 dynamic 콜라이더가 비벼도 멀쩡해보인다.

프레임 제한을 해제해두었다.

7ded8168f2d73ab64e81d2b628f17c6e9381a3e5f7


7ded8268f2d73ab64e81d2b628f17c6aa7b53d5a26

데미지 표기 개수를 제한해도 크게 거슬리지 않는 느낌?


개수를 제한하는 오브젝트 풀은 요런 식으로 구현해주었다.

2ebcc224eadc76b660b8f68b12d21a1d557c54887c32


실제 게임 플레이 시에는 최대 600마리정도 존재할 것이므로

성능에 대한 걱정보단 역시 구현이나 빨리 해야겠다는 경험이었다.


뉴비인지라 잘못된 부분이 있을 수 있으니 양해바라며, 쓴 말 좋은거에요.

안냥




출처: 인디 게임 개발 갤러리 [원본 보기]

추천 비추천

38

고정닉 11

11

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 의외로 대식가여서 놀란 스타는? 운영자 23/05/29 - -
이슈 [디시人터뷰] 뇌까지 섹시한 래퍼, '피의 게임2' 서출구를 만나다 운영자 23/05/30 - -
공지 실시간베스트 갤러리 이용 안내 [1187/2] 운영자 21.11.18 1605674 276
142213 [주갤] 4년동안 대화를 하지 않은 부부.manhwa [98] ㅇㅇ(39.7) 21:35 5908 296
142211 [싱갤] 훌쩍훌쩍 냉혹한 숫사자의 세계 ...jpg [89] ㅇㅇ갤로그로 이동합니다. 21:25 13874 101
142209 [기갤] 이선균만 모르는 신발에 짱돌 넣은 범인 [110] ㅇㅇ(118.235) 21:15 6267 15
142205 [X갤] 아이즈원이였던 나코 히토미 아침 일본방송 [365] ㅇㅇ(211.197) 20:55 10587 147
142203 [야갤] 무한도전 못친소 10년만에 후기 공개한 출연자들 [100] ㅇㅇ(45.12) 20:45 15093 116
142201 [디갤] 디즈니 여신 할리 베일리.....신작 근황.....gif [561] ㅇㅇ(175.119) 20:35 19856 122
142199 [카연] 머슬걸즈 콜로세움 2화 [46] 김야왕갤로그로 이동합니다. 20:25 3889 56
142197 [기음] 외국 유명 스테이크 하우스 가본 한국 누나들의 솔직한 후기 [354] ㅇㅇ(118.235) 20:15 18223 69
142195 [주갤] 여러분 뚱뚱하다고 가슴에도 지방이 껴있을줄 아시는데요 [327] ㅇㅇ갤로그로 이동합니다. 20:05 26167 313
142193 [싱갤] ㅈ소점심밥 먹고 매일마다 죽고싶은 사람.jpg [459] ㅇㅇ갤로그로 이동합니다. 19:55 34117 319
142191 [일갤] 일본 귀청소방 미미카키텐 세세한 방문기 [226] ㅇㅇ(1.238) 19:45 15220 110
142189 [야갤] 의외로 호감인 남자아이돌 [272] ㅇㅇ(211.58) 19:35 21015 355
142187 [새갤] ‘두살 박정희’가 3·1운동 진압?이런 수업해도 교육청 징계無 [358] Imperishable갤로그로 이동합니다. 19:25 10045 234
142183 [냥갤] ㄱㄷ) 가출했다가 캣맘한테 개복당한 노묘 [296] ㅇㅇ(106.101) 19:05 19291 186
142181 [리갤] 롤 생중계 금지 놓고 현장 기자들끼리 싸움 [430] ㅇㅇ(146.70) 18:55 24121 174
142179 [싱갤] 싱글벙글 재난상황 화폐대용 기호품들-1 [156] 할리베일리갤로그로 이동합니다. 18:50 13538 65
142178 [자갤] 신호위반했더니 폭발한 스쿠터 [302] ㅇㅇ(37.120) 18:45 18855 251
142176 [만갤] 오빠의 성기능 장애를 치료한 여동생 [309] ㅇㅇ(45.84) 18:40 44334 545
142175 [군갤] '美 수배령' 푸틴 측근 아들 도망…잡았다 놓친 이탈리아 난감 [157] ㄷㄷ갤로그로 이동합니다. 18:35 14087 99
142173 [카연] 친구들이랑 글램핑 갔다가 공포를 느꼈던 만화 [79] 박똥개갤로그로 이동합니다. 18:30 14423 149
142171 [중갤] 의외로 게임에 트랜스젠더가 나오면 생기는 일...JPG [206] 수플레갤로그로 이동합니다. 18:25 27323 172
142169 [힙갤] 역대 최악의 썩어빠진 국가기관.jpg [578] 신종야옹(118.235) 18:20 35487 715
142167 [해갤] 특이점이 온 코인 노래방 근황.jpg [291] ㅇㅇ(85.203) 18:15 32930 272
142164 [부갤] 대구에서 욕먹고 있는 한 아파트의 도색 [558] ㅇㅇ(45.92) 18:05 28318 182
142163 [자갤] 중국 전기차 브랜드의 야생의 거친 차량안전테스트를 보자 ㅋㅋ [323] ㅇㅇ(223.39) 18:01 11724 43
142161 [순갤] 속보)소방학교 학폭떴다 [292] ㅇㅇ(223.39) 17:55 18018 193
142159 [군갤] (공포) 존나 무서운 폭탄 [221] 리틀보이갤로그로 이동합니다. 17:50 20917 216
142158 [야갤] 반품한 고객 욕하는 유튜버쇼핑몰.JPG [639] ㅇㅇ(103.216) 17:45 29469 619
142156 [교갤] 몽골이 산 한국 중고버스 한글을 안지우는 이유 [262] ㅇㅇ갤로그로 이동합니다. 17:40 25419 348
142153 [컴갤] 실베간 컴퓨터 사기업소 고발 최신근황.jpg [322] ㅇㅇ(106.101) 17:30 25588 377
142152 [싱갤] 오싹오싹 냉혹한 자연의 세계 ..jpg [377] ㅇㅇ갤로그로 이동합니다. 17:25 33591 268
142149 [군갤] 군사지리 더 알기: 임진강 이북의 영토를 지키게 만든 후크고지 전투 [51] 울라불라갤로그로 이동합니다. 17:15 7598 67
142147 [부갤] [2023 봄 도쿄게임마켓] 참가 후기 2편 [16] 실버건갤로그로 이동합니다. 17:10 3307 17
142146 [해갤] WBC 사건 김광현 & 이용찬 공개사과.jpg [360] ㅇㅇ(180.68) 17:05 16400 230
142144 [X갤] 일본 아이돌이 출국 때마다 감사를 느끼는 이유 [300] ㅇㅇ(39.7) 17:00 25410 272
142143 [주갤] Blind) 파혼위기의 남자 [524] ㅇㅇ(146.70) 16:55 21800 473
142141 [나갤] 인플레이션과 리세션의 거의 모든것 : 노동시장과 베버리지 곡선 [89] 낭만숏충이갤로그로 이동합니다. 16:50 7347 69
142140 [기갤] 고딩엄빠로 보는 올바른 성교육이 필요한 이유 [639] ㅇㅇ(185.114) 16:45 34049 144
142138 [싱갤] 싱글벙글 최고령/최장기 브이로그 유튜버 근황 [79] 슬러시갤로그로 이동합니다. 16:40 21477 175
142137 [주갤] 부산 살해 피의자 23세 정유정 신상 공개 [1571] ㅇㅇ(39.7) 16:35 37461 1114
142135 [특갤] H 괌관련 영상 타 특부출신 반응 [137] ㅇㅇ갤로그로 이동합니다. 16:30 20501 337
142132 [컴갤] 사기로 난리난 컴퓨터 수리업체 [336] ㅇㅇ(176.113) 16:20 31581 651
142131 [싱갤] 싱글벙글 연하남이 최고인 이유 [377] 티바트알파메일갤로그로 이동합니다. 16:15 34961 75
142129 [인갤] 거상 게임 만들던 사람...드디어.... [261] ㅇㅇ(211.220) 16:10 26455 137
142128 [카연] 한국史 인물열전 [이징옥] [87] 사랑은다이아갤로그로 이동합니다. 16:05 6270 104
142125 [반갤] 현재 흑어공주 흥행및 차후예측 [412] PC는정신병갤로그로 이동합니다. 15:55 26392 394
142123 [우갤] (스압) 흑어공주 종결 리뷰.txt [365] 순수한변태갤로그로 이동합니다. 15:50 24854 500
142122 [P갤] 호주 여기저기 다니면서 돌아다녔던 오락실 정리해봄(리겜위주) [45] 펜스피너Sound갤로그로 이동합니다. 15:45 9109 47
142120 [로갤] 고스톱 친 3명 중 1명만 도박으로 처벌받은 이유 [377] ㅋㅋ(118.235) 15:40 21553 293
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2

힛(HIT)NEW

그때 그 힛

1/3