유니티에서 ECS, Burst Compiler, Job System 사용해보신 분 계신가요? 기존 객체지향으로 만든 게임이 있는데, 최적화 이슈로 데이터 지향으로 리팩토링을 시도할까 합니다.
간단한 캐주얼 게임인데 아예 처음부터 다시만들지, 기존 코드를 수정할지.. 고민입니다. 뭐 비슷할 것 같긴 합니다만^^;
이번 추석 연휴중에 끝낼 수 있으면 좋겠습니다. 많은 고수분들의 조언 부탁드립니다.
감사합니다^^
- dc official App
캐주얼 게임인데 최적화 이슈면 코드를 고치는 게 낫지
DOTS는 대규모의 데이터, 연산을 돌리는데 최적화된건데 캐주얼 게임에 그런 양의 객체나 데이터가 있어보이진 않네 학습곡선도 꽤 있어서 지금 플젝에 하려는거면 비추
벽돌깨기인데 공이 300개가 넘어가면 문제라서 적합하다고 생각했는데 아닌가? - dc App
DOTS을 제외한 피직스 관련 최적화는 전부 시도한 상태고 S23 기기 기준 200개에서 16.66ms방어가 실패했던게 300개로 늘어났을 뿐이라서.. DOTS을 사용하면 8~40배의 성능개선을 보인다고 하더라고 - dc App
벽돌깨기면 dots없이 가능한 수준인데 영 못하겠으면 새로 파서 하는게나음
어제 새벽까지 이리 저리 만져봤는데 유니티 2021.3.16 쓰거든? physics2d에서 할 수 있는건 다 했다.. 큰 개선은 안되더라고.. 결국 DOTS을 하든 뭔간 해야할듯! 암튼 도와줘서 고마웡 - dc App
음 그런거라면 쓸만은 해보이는데 추석 안에 배워서 쓸 수가 있나 막무가내로 하면 될지도
300개도 사실 닷츠 쓰기엔 소규모인 것 같긴함 피직스 안 쓰고 스크립트로 처리하게하면 될거같은디 안대나
나도 스크립트로 하는걸로 다시 생각중ㅋㅋ - dc App
객체지향이랑 방식이 많이 달라서 후회할지도..
맞아.. 근데 이미 서비스중인 게임이라 유저들이 최적화 문제를 지적하고 있어서 해결하려고 이리저리 알아보구있오.. - dc App
솔직히 닷츠는 잡시스템+버.컴만으로도 충분히 성능 뽑아낼수 있고 아키텍쳐 다 뜯어내서 ecs까지 할거라면, 차라리 언렬을 쓰는게 더 나은 수준이라, 잡시스템+버.컴 조합으로 하는걸 추천함. 기존의 모노비헤이비어 구조 그대로라서 ecs에서 골치먹거나 머리 아파지는 타 모듈 붙이기도 문제없고, ecs가 다룰수 있는 량의 절반이라 그렇지, 만 단위가 넘어가는지라 애초에 이걸 다채우면 화면 자체가 안보일수준이라 굳이 ecs고집할필욘 없음. - dc App
나도 알아보니까 그렇더라고 ecs 쓰려면 아예 새로 만들어야해서.. 지금 physics2d를 fixedupdate로 쓰고있는데 스크립트로 빼서 새로 만들어야하나? - dc App
일단 프로파일링부터
아래에 프로파일링해서 어디가 문젠지 써뒀어.. 한번 봐죠 - dc App
500개까진 저사양 모바일로도 문제안됨 글만보면 추측성으로 물리문제라고 하는게 보이네
프로파일링 했고, 매우 짧은 텀을 두고 굉장히 좁은 곳에서 수백개가 반복적으로 바운스할 때 physics2d fixedupdate에서 findnewcontactstask에서 문제가 발생했음 - dc App
추석 중에는 절대 못할거임 S23에서 200개는 너무 적음 다른 부분에서 문제가 있을 듯
위 답글보고 그래두 부족한지 알려죠.. - dc App
프로파일러 찍어서 보여주고 (Timeline view로) 각 상황 잘보이게, 인게임에서도 뭘하려는건지 대략 어떤 상황인지 눈으로도 보여주면 좋겠네
노베이스 상태에서 코드를 dots로 리팩토링한다면, 지금 시작하면 크리스마스 때 될듯
오브젝트가 수백 단위면 그냥 oop에서 최적화 잘 해보고, 천단위 넘을 때부터 dots를 고려하십쇼
간단한 벽돌깨기라 1000줄밖에 안되긴해서 흠.. 뭐 천천히 시도해볼께용 지금 출시예정작 개발도 하고있어서 - dc App
dots는 일반 oop의 개발 시간의 3배 정도 든다고 생각하시면 됩니다. 익숙해지면 더 빠르거나 비슷해지긴 합니다.