작성
·
53
0
역시 게임 로직을 단일 쓰레드 하나가 처리하려고 하다보니 제 PC환경에서는 몬스터가 300마리 플레이어가 300마리 때부터 엄청나게 느리거나 잡큐가 밀려서 패킷이 안올때도 있는데요. 역시 AStar가 가장 무거운 함수이더라구요.
일단 300,300도 UpdateMove를 async함수로 만들어서 PathFind하는 부분만 Task await로 던지는 식으로 함수 수정하고 멀티 쓰레드 환경에서 새롭게 크래쉬나는 부분들은 널체크 및 lock으로 안정성을 올려놨더니 일단 크래쉬는 안나는것 같습니다만...
그래도 너무 궁금한것은 제 cpu가 인텔 i7-14700k인데, 루키스님환경에서는 1000명도 버티던데 왜이렇게 차이가 나는 건지 모르겠습니다. 단일 쓰레드가 약한 모델이라서 그런건지...혹시 촬영당시 cpu사양이 어떤 제품으로 사용하셨을지 궁금합니다 ㅠㅠ...
답변 2
0
디버깅 하다가 새로 알게된 사실이 있어서 공유 남깁니다... 뭔가 혼란 드린거 같아서 ㅠㅠ.. 일단 i7 14세대와 i9 12세대의 단일 쓰레드 성능은 거의 비슷하거나 오히려 i7 14세대가 좋았습니다.. 그래서 결론적으로 CPU스펙 차이가 문제가 아니었고, 진짜 문제는 PathFiind함수 내부를 잘 들여다 보니까
// 너무 멀면 스킵
if (Math.Abs(pos.Y - next.Y) + Math.Abs(pos.X - next.X) > maxDist)
continue;
이 부분이 빠져있어서 온맵을 다 뒤지고 있어서 느리게 동작하고 있었습니다... 저는 제가 직접 영상보면서 코드를 따라치고있어서 이부분 누락이 있었네요. 공유 남깁니다!
0
오 역시 환경이 달랐군요.. 실력이 최고이시다보니 장비도 최고를 사용하시는군요ㅎㅎ! i9이랑 i7 차이를 좀 봐야겠네요 ㅎㅎ..답변감사합니다!