개별연산은 적어도 너무 많은 서로다른 종류의 프리팹을 사용해야하고, 화면밖에도 너무 연산할게 많다보니 좀 느려진다.
객체가 너무 많은건지 버벅거리더라. 프레임 60프레임 방어는 하긴 했는데, 뭐 더 성능을 높힐수 있는 세팅같은거 없을까? pc 60프레임이면 모바일 그 이하일수 있다는거니까, 144까진 올리려고 하는데
- dc official App
댓글 38
장르는 슈팅장르고, rigidbody가 필요해서 리지드바디로 움직임. 추적 ai 업뎃 주기는 각 녀석들 마다 1초에 한번꼴로 업뎃하게 만들었고, - dc App
익명(furryparty)2024-09-21 23:25:00
답글
내가 얘네를 스테틱화 시킨걸 억지로 움직였냐한거면 그건또 아니고. - dc App
익명(furryparty)2024-09-21 23:26:00
언리얼 쓰라고 일장연설을 하더니 너 뭐하냐?...
ㅇㅇ 1(221.162)2024-09-21 23:25:00
답글
언리얼 쓰라고 누가 일장연설을해? 유니티 언리얼 써야할곳 비교했을뿐이지. 페이퍼2d에서 2d하긴 좀 그렇잖아 - dc App
익명(furryparty)2024-09-21 23:26:00
답글
언리얼로 갈아타긴 이정도 프로젝트에 갈아탈순없는 수준이고. 결국 왠만해선 유니티에서 성능 세팅하는게 좋은 습관인데, 이게 잘 안잡힌다 - dc App
익명(furryparty)2024-09-21 23:28:00
답글
니가 허수 씹분탕이라는건 둘째치고 개발자는 문제를 저렇게 두루뭉술하게 설명하지 않아
연산이 복잡하지 않다 -> 복잡하다는 기준이 대체? 객체가 많다 -> 많다는 기준이 대체? 60프레임 방어 -> 이건 또 어디서 나온 기준?
지금 니가 갈겨놓은건 문제를 해결하기 위해 상황을 공유한게 아니고 아무 알맹이없는 넋두리만 쓴거임
ㅇㅇ 1(221.162)2024-09-21 23:31:00
답글
아, 그른가?
그럼 대충,
1. 연산: 딱히 수학적 연산은 없음. 걍 주인공 캐릭터 위치지점으로 move하라는 연산을 내릴뿐임(얘넨 장애물, 적군동료에 부딪히지 않으니 주인공말고 벽이랑 처리할 필요 없음)
2. 대략 탄막까지 합하면 2~5천개정도 최대로 나옴. 솔직히 어찌저찌 처리할 수준이라 생각하는데 이런 결과가 나와서 나도 당황중.
3. 60프레임 방어는 내가 플레이어 입장에서 플레이 했을때, 필요한 30프레임 이상을 넉넉히 생각했을때 필요한 안정적으로 즐기기 위한 경계선이지. 근데 2d 게임이니까 좀더 높은 144프레임은 얻고 싶은거고. 모바일로 포팅했을때 떨어질 성능도 계산에 넣어야하니까.
4. 그외: urp사용중이고, 몇개는 쉐이더 그래프 연결해야할게 있어서 쉐이더 쓰고 있음, - dc App
익명(furryparty)2024-09-21 23:39:00
답글
이펙트부분도 좀 많이 넣은 감이 있고. - dc App
익명(furryparty)2024-09-21 23:39:00
답글
진짜 기초적으로 배우는 성능향상팁들은 다 해봤는데 뭔가 버스트 팍뛰는곳들때문에 유저가 플레이할때 눈치챌영역까지 갈까봐 효율화중 - dc App
익명(furryparty)2024-09-21 23:41:00
음.. 더 자세히 알아야겠는데 어떤 상황에서 프레임이 떨어지는지..
211214(tomatoss)2024-09-21 23:27:00
답글
가끔 그래픽 부분에서 버스트 되는데, 버스트되는부분이 보스가 스킬써서 갑자기 빵-!하고 게임속의 오브젝트가 많아지는 부분에서 버스트됨. 그리고 매커니즘이 좀 복잡하게 짠 애들때 메인스레드가 갑자기 턱-!하고 막히는데, 왜 막히는건지 모르겠더라. 프로파일러 돌려봐도 인스턴싱을 안한것도 아니고, 스테틱을 해놓은것도 아닌데 - dc App
익명(furryparty)2024-09-21 23:31:00
답글
2d라이트를 좀 많이 쓰긴했는데, 그것때문만은 아닌거 같고, 각 애니메이션들이 배칭연산이 안되는거 같은데 - dc App
익명(furryparty)2024-09-21 23:32:00
답글
2d를 배칭시키려고 안간힘 쓰는중임. 스프라이트 아틀러스로 세트로 만들었는데 뭘 내가 잘못한건지....ui로 각 몬스터를 보여주는 부분도 좀 턱-!하고 밀려. 이부분도 배칭으로 해결해야할듯 - dc App
익명(furryparty)2024-09-21 23:33:00
답글
풀링을 한 건데도 그럼? 오브젝트 수를 줄여도 마찬가지임? 라이트 수를 줄여도 마찬가지임? 배치는 몇 나옴?
211214(tomatoss)2024-09-21 23:37:00
답글
배치가 골치임. 배치가 1천개 이하로 떨어지지 않아. 스프라이트 아틀라스로 한개로 만들었는데, 배칭이 드라마틱하게 떨어져야 정상인데 안떨어지고, 그려지는 순서때문에 배칭이 안이뤄진다는 사람도 있는데, 인스턴스 풀링으로 그려지는게 순서가 꼬이는건 이상하고. - dc App
익명(furryparty)2024-09-21 23:44:00
답글
애초에 라이트도 아이템에서 번쩍~번쩍~하는 동안과, 가끔 자체발광 몬스터가 나오는 동안 붙여지는거라 7개 이상은 나오질 않음 - dc App
익명(furryparty)2024-09-21 23:45:00
답글
오브젝트가 5천개? 내 영역이 아니군 ㄷㄷ
211214(tomatoss)2024-09-21 23:47:00
답글
ecs나 잡시스템 쓸만큼은 아직 아니고, 애초에 수학적 연산이 없으니 잡시스템을 쓰는게 오히려 오버 엔지니어링, 잘못하면 얘네 쓴다고 이것저것 코드를 작성하는게 더 성능에영향줄텐데. 일단 이것들이라도 시도해보려고 - dc App
익명(furryparty)2024-09-21 23:48:00
답글
cpu 문제는 아닌거 같아. cpu는 내가 어찌저찌 하면 될듯? 하거든 - dc App
익명(furryparty)2024-09-21 23:49:00
GPU병목? CPU? 가장 시간을 많이 먹는 부분은 어디? 문제에 대한 정보가 너무 부족함
ㅇㅇ 2(218.233)2024-09-21 23:37:00
답글
그게 번갈아서 나타남. 그래도 더 많이 나타나는 부분은 gpu임. 화면밖에서 그리는것들도 많아서 생기는거 같음. cpu문제는 내가 어찌저찌 잡을수 있는 수준들임 - dc App
익명(furryparty)2024-09-21 23:43:00
답글
gpu부분의 문제는 대부분 배칭과 셋패스콜때문인걸 아는데, 내가 머티리얼을 그렇게 많이 쓰진 않았음. 현재까지 6개정도만 이펙팅 용도로 만들었는데, 얘네가 왜 이러는지 - dc App
그치? 이 순서에서 어디선가 꼬일만한 부분이 있었나봐. 그걸 찾는수 밖에 없나...고마워. 정독하고 개추누를게 - dc App
익명(furryparty)2024-09-21 23:50:00
답글
정말 감사. 그려지는 srp배처 넣어보니 성능이 튀어오르더라. gpu 인스턴싱 쓰면 srp배처를 꺼야해서 껐는데, 얘네둘이 바꾸니 성능이 튀는거 체감된다. 셋패콜을 떨구긴 했는데, 이러면 배칭자체는 안주는데, 이걸 어찌해볼까 고민할생각임 - dc App
익명(furryparty)2024-09-22 00:03:00
답글
하지만 성능은 100프레임 방어 성공! - dc App
익명(furryparty)2024-09-22 00:04:00
답글
211214(tomatoss)2024-09-22 00:07:00
모두고마워. 밑에분이 나눈 정보글보고 해보고 안되면 다시 올게. - dc App
익명(furryparty)2024-09-21 23:51:00
URP 쓰면 SRP Batcher가 작동하고 있는지 확인해봐. 그게 제대로 작동 하고 있다면 배치수는 1000이든 5000으로 높더라도 frame debugger에서 한번에 그려져. 만약 SRP Batcher말고 GPU instancing을 쓴다면 현재 배치 수는 좀 문제가 있음.
ㅇㅇ 3(211.63)2024-09-21 23:52:00
답글
응응, 밑에 분 게시글에도 srp배처 설정해보라고 하시더라. gpu 인스턴싱은 일단 꺼보고, srp로 먼저 해보려고. ㄱㅅㄱㅅ. 큰도움이 됐어. - dc App
익명(furryparty)2024-09-21 23:59:00
답글
SRP batcher는 Material이 달라도 같은 셰이더를 쓰면 효과가 있는거라서 set pass call을 줄이도록 노력하고, GPU instancing은 같은 Material을 쓸때 효과가 있는거라서 Batch를 줄여야해.
ㅇㅇ 3(211.63)2024-09-22 00:11:00
Polycount 랑 Frame Debugger 내용 알려주면 더 용이하게 파악 가능할 듯 위에 보니까 Rigidbody 는 따로 문제 없는 것 같은데. Occlusion culling 쓰고 있음? 그것만 해도 카메라에 안 잡히면 렌더링 안해서 Polycount 확 줄텐데.
라라루라(hwi7586)2024-09-22 00:06:00
답글
ㅇㅇ물론 최우선 고려사항이니까. 컬링류는 다 시도해보고 글쓴거. 하지만 아랫분 방법대로 해결했음. - dc App
익명(furryparty)2024-09-22 00:09:00
답글
위에 분 말씀 하신 것처럼 Batching 쓰는 건 동일 Material 을 가진 Object 에 대해 일괄적으로 적용하는 걸로 알고 있는데 Static Batching 이랑 Dynamic Batching 구분해서 살펴봐도 좋을 듯.
라라루라(hwi7586)2024-09-22 00:09:00
답글
ㅇㅎ 이미 해결했노
라라루라(hwi7586)2024-09-22 00:09:00
답글
그래도 감사. 한번더 체크해보려고 - dc App
익명(furryparty)2024-09-22 00:11:00
답글
오쓰! 위의 내 말이랑 걍 다른 문제인 듯! 211.63 친구가 잘 얘기해 준 것 같아
라라루라(hwi7586)2024-09-22 00:18:00
답글
얄팍한 지식 조금 더하면 GPU Instancing 은 mesh / material 이 공통점을 띄는 것을 합쳐서, vertices 와 transform 을 파악해 그것을 그리는 것을 한번의 draw call로 처리하는 걸로 알고 있어서. 둘 중 하나 써야 한다면 SRP Batcher 가 낫지 않을까 싶긴 하네
장르는 슈팅장르고, rigidbody가 필요해서 리지드바디로 움직임. 추적 ai 업뎃 주기는 각 녀석들 마다 1초에 한번꼴로 업뎃하게 만들었고, - dc App
내가 얘네를 스테틱화 시킨걸 억지로 움직였냐한거면 그건또 아니고. - dc App
언리얼 쓰라고 일장연설을 하더니 너 뭐하냐?...
언리얼 쓰라고 누가 일장연설을해? 유니티 언리얼 써야할곳 비교했을뿐이지. 페이퍼2d에서 2d하긴 좀 그렇잖아 - dc App
언리얼로 갈아타긴 이정도 프로젝트에 갈아탈순없는 수준이고. 결국 왠만해선 유니티에서 성능 세팅하는게 좋은 습관인데, 이게 잘 안잡힌다 - dc App
니가 허수 씹분탕이라는건 둘째치고 개발자는 문제를 저렇게 두루뭉술하게 설명하지 않아 연산이 복잡하지 않다 -> 복잡하다는 기준이 대체? 객체가 많다 -> 많다는 기준이 대체? 60프레임 방어 -> 이건 또 어디서 나온 기준? 지금 니가 갈겨놓은건 문제를 해결하기 위해 상황을 공유한게 아니고 아무 알맹이없는 넋두리만 쓴거임
아, 그른가? 그럼 대충, 1. 연산: 딱히 수학적 연산은 없음. 걍 주인공 캐릭터 위치지점으로 move하라는 연산을 내릴뿐임(얘넨 장애물, 적군동료에 부딪히지 않으니 주인공말고 벽이랑 처리할 필요 없음) 2. 대략 탄막까지 합하면 2~5천개정도 최대로 나옴. 솔직히 어찌저찌 처리할 수준이라 생각하는데 이런 결과가 나와서 나도 당황중. 3. 60프레임 방어는 내가 플레이어 입장에서 플레이 했을때, 필요한 30프레임 이상을 넉넉히 생각했을때 필요한 안정적으로 즐기기 위한 경계선이지. 근데 2d 게임이니까 좀더 높은 144프레임은 얻고 싶은거고. 모바일로 포팅했을때 떨어질 성능도 계산에 넣어야하니까. 4. 그외: urp사용중이고, 몇개는 쉐이더 그래프 연결해야할게 있어서 쉐이더 쓰고 있음, - dc App
이펙트부분도 좀 많이 넣은 감이 있고. - dc App
진짜 기초적으로 배우는 성능향상팁들은 다 해봤는데 뭔가 버스트 팍뛰는곳들때문에 유저가 플레이할때 눈치챌영역까지 갈까봐 효율화중 - dc App
음.. 더 자세히 알아야겠는데 어떤 상황에서 프레임이 떨어지는지..
가끔 그래픽 부분에서 버스트 되는데, 버스트되는부분이 보스가 스킬써서 갑자기 빵-!하고 게임속의 오브젝트가 많아지는 부분에서 버스트됨. 그리고 매커니즘이 좀 복잡하게 짠 애들때 메인스레드가 갑자기 턱-!하고 막히는데, 왜 막히는건지 모르겠더라. 프로파일러 돌려봐도 인스턴싱을 안한것도 아니고, 스테틱을 해놓은것도 아닌데 - dc App
2d라이트를 좀 많이 쓰긴했는데, 그것때문만은 아닌거 같고, 각 애니메이션들이 배칭연산이 안되는거 같은데 - dc App
2d를 배칭시키려고 안간힘 쓰는중임. 스프라이트 아틀러스로 세트로 만들었는데 뭘 내가 잘못한건지....ui로 각 몬스터를 보여주는 부분도 좀 턱-!하고 밀려. 이부분도 배칭으로 해결해야할듯 - dc App
풀링을 한 건데도 그럼? 오브젝트 수를 줄여도 마찬가지임? 라이트 수를 줄여도 마찬가지임? 배치는 몇 나옴?
배치가 골치임. 배치가 1천개 이하로 떨어지지 않아. 스프라이트 아틀라스로 한개로 만들었는데, 배칭이 드라마틱하게 떨어져야 정상인데 안떨어지고, 그려지는 순서때문에 배칭이 안이뤄진다는 사람도 있는데, 인스턴스 풀링으로 그려지는게 순서가 꼬이는건 이상하고. - dc App
애초에 라이트도 아이템에서 번쩍~번쩍~하는 동안과, 가끔 자체발광 몬스터가 나오는 동안 붙여지는거라 7개 이상은 나오질 않음 - dc App
오브젝트가 5천개? 내 영역이 아니군 ㄷㄷ
ecs나 잡시스템 쓸만큼은 아직 아니고, 애초에 수학적 연산이 없으니 잡시스템을 쓰는게 오히려 오버 엔지니어링, 잘못하면 얘네 쓴다고 이것저것 코드를 작성하는게 더 성능에영향줄텐데. 일단 이것들이라도 시도해보려고 - dc App
cpu 문제는 아닌거 같아. cpu는 내가 어찌저찌 하면 될듯? 하거든 - dc App
GPU병목? CPU? 가장 시간을 많이 먹는 부분은 어디? 문제에 대한 정보가 너무 부족함
그게 번갈아서 나타남. 그래도 더 많이 나타나는 부분은 gpu임. 화면밖에서 그리는것들도 많아서 생기는거 같음. cpu문제는 내가 어찌저찌 잡을수 있는 수준들임 - dc App
gpu부분의 문제는 대부분 배칭과 셋패스콜때문인걸 아는데, 내가 머티리얼을 그렇게 많이 쓰진 않았음. 현재까지 6개정도만 이펙팅 용도로 만들었는데, 얘네가 왜 이러는지 - dc App
그려지는 순서 꼬여있으면 배칭 안되는거 맞음.
https://m.dcinside.com/board/game_dev/69564
내가
예전에 썼던글인데, 프레임 디버거 부분을 참고해서 확인해봐
그치? 이 순서에서 어디선가 꼬일만한 부분이 있었나봐. 그걸 찾는수 밖에 없나...고마워. 정독하고 개추누를게 - dc App
정말 감사. 그려지는 srp배처 넣어보니 성능이 튀어오르더라. gpu 인스턴싱 쓰면 srp배처를 꺼야해서 껐는데, 얘네둘이 바꾸니 성능이 튀는거 체감된다. 셋패콜을 떨구긴 했는데, 이러면 배칭자체는 안주는데, 이걸 어찌해볼까 고민할생각임 - dc App
하지만 성능은 100프레임 방어 성공! - dc App
모두고마워. 밑에분이 나눈 정보글보고 해보고 안되면 다시 올게. - dc App
URP 쓰면 SRP Batcher가 작동하고 있는지 확인해봐. 그게 제대로 작동 하고 있다면 배치수는 1000이든 5000으로 높더라도 frame debugger에서 한번에 그려져. 만약 SRP Batcher말고 GPU instancing을 쓴다면 현재 배치 수는 좀 문제가 있음.
응응, 밑에 분 게시글에도 srp배처 설정해보라고 하시더라. gpu 인스턴싱은 일단 꺼보고, srp로 먼저 해보려고. ㄱㅅㄱㅅ. 큰도움이 됐어. - dc App
SRP batcher는 Material이 달라도 같은 셰이더를 쓰면 효과가 있는거라서 set pass call을 줄이도록 노력하고, GPU instancing은 같은 Material을 쓸때 효과가 있는거라서 Batch를 줄여야해.
Polycount 랑 Frame Debugger 내용 알려주면 더 용이하게 파악 가능할 듯 위에 보니까 Rigidbody 는 따로 문제 없는 것 같은데. Occlusion culling 쓰고 있음? 그것만 해도 카메라에 안 잡히면 렌더링 안해서 Polycount 확 줄텐데.
ㅇㅇ물론 최우선 고려사항이니까. 컬링류는 다 시도해보고 글쓴거. 하지만 아랫분 방법대로 해결했음. - dc App
위에 분 말씀 하신 것처럼 Batching 쓰는 건 동일 Material 을 가진 Object 에 대해 일괄적으로 적용하는 걸로 알고 있는데 Static Batching 이랑 Dynamic Batching 구분해서 살펴봐도 좋을 듯.
ㅇㅎ 이미 해결했노
그래도 감사. 한번더 체크해보려고 - dc App
오쓰! 위의 내 말이랑 걍 다른 문제인 듯! 211.63 친구가 잘 얘기해 준 것 같아
얄팍한 지식 조금 더하면 GPU Instancing 은 mesh / material 이 공통점을 띄는 것을 합쳐서, vertices 와 transform 을 파악해 그것을 그리는 것을 한번의 draw call로 처리하는 걸로 알고 있어서. 둘 중 하나 써야 한다면 SRP Batcher 가 낫지 않을까 싶긴 하네