질문 남겨주셔서 감사합니다. 막히면 언제든 무엇이든 자주 질문 던져주세요. 수학/과학이나 알고리즘과는 달리 업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다. 다시 말씀드리지만, 질문을 자주자주 남겨주세요. 저도 최대한 빠르게 회신 드리겠습니다. 당부드릴 두 가지가 있습니다. ① 가급적 구체적으로 설명해주세요. ② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ ==================================== 빈 화면이 보이는데 저만 그런걸까요? 다른 챕터들은 다 잘 나오는데 이 챕터만 안보이네요. 확인 부탁드리겠습니다.
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요 루키스님? 토이 프로젝트 개요 파트 7을 기반으로 3D 환경에서 Zone없이 위치 동기화 정도로 간단한 게임을 만들어 포트폴리오 만들려고 합니다. 유니티에서 3D캡슐을 플레이어라고 하고, Move패킷에 목표 좌표 찍어서 transform.position 변경시키면서 스르륵 이동하는 방식으로 데드레커닝 비슷하게 흉내 내고 있습니다. 문제 - 스트레스 테스트 얼추 위치 동기화를 마치고 스트레스 테스트를 하고 있는데, 파트4 마지막 스트레스 테스트에서 더미 500명은 거뜬했었는데, 제가 파트7 기반으로 한 프로젝트는 더미 100명부터 버벅 거리더라구요. 문제 분석 - 왜 파트4는 더미 500까지 버텼는데 제거는 100명도? 뭐가 다른가 곰곰히 뜯어보니, 파트4에서는 패킷 모아보내기를 통해 500명이 초당 4번, 총 2000번 정도를 처리하는 반면, (Send만 세었다고 하면) 제 프로젝트 는 패킷 모아보내기가 안되는지 100명이 초당 4번, 총 40000번 (브로드캐스트 400 * 100명) 정도 코스트가 발생하는게 원인이라고 짐작하고 있습니다. 더해서 파트7의 마지막도 패킷 Send도 찍어보니, O(N^2)인 것을 확인하여 질문 드리게 되었습니다. (플레이어 4명이 입장 시키고 한명 움직이면 초당 약 10번, 4명이니까 40번 발생하는 것을 확인). 질문 드립니다. Q1. 파트 4의 패킷 모아보내기는 더미클라이언트들이 같은 프로젝트 안의 공동 큐를 사용해 Send 됐기 때문에 가능했던 부분으로 이해되는데 맞을까요? Q2. 파트7을 기반으로 했다면 100명도 버거운게 맞을까요? Q3. Q2이 맞다면 500명의 부하를 버틸 수 있게 할 수 있는 조언 주실 수 있을까요? 더미 클라 500이 아닌, 실제 500명이 붙었을 때를 가정하고 싶습니다. 패킷을 이렇게 모아보내면 된다.. 등의 아이디어 레벨로라도 조언을 기대하고 있습니다. 물론 파트9에서 존단위 처리 등의 더 상위기법을 알려주시지만, 파트7의 범위 내에서 500명의 스트레스 테스트도 가능하게 하고 싶습니다. 나름 분석하고 질문 드리고 있는데 그냥 제가 뭐 잘못 건드려서 100명도 렉걸리는거 같아서 질문하면서 좀 민망하네요..ㅎㅎ 답변 미리 감사합니다! 회사를 골라 가는 사람으로 성장하겠습니다.
안녕하세요! 메인퀘의 KillTheEliteGerm 퀘스트와 서브퀘의 KillTheNormalGerm 퀘스트가 둘 다 활성화되어 있을 때, NormalGerm을 죽이면 KillTheNormalGerm퀘스트의 카운트만 올라가는데, EliteGerm을 죽이면 두 퀘스트(Kill Elite,Kill Normal)가 모두 카운트가 올라가는 문제가 있어 질문드립니다! Elite를 죽일때 IsTarget() 디버깅을 해보니 서로 다른 타겟을 비교하고 있음에도 Any에서 true를 반환하여 Normal일때도 IsTarget조건문을 통과해 ReceiveReport를 호출하더라구요. 관련된 로직을 마지막 강의의 완성 코드와 비교해봤는데 달라보이는건 없는 것 같아 답을 찾지 못하여 질문드립니다. 왜 그러는지 조언해주실 수 있을까요? ㅠㅠ
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 이 지점에서 sort_values를 했는데 소팅 시 기본값으로 ascending 오름차순(1->5) 나오는 것을 정확히 설명해 주지 않으셨고, 왜냐하면 그 결과 오름차순이 나왔어요. 그런데 원하는 것은 내림차순 descending (5->1)이라고 하셨는데 정작 코드는 ascending(오름차순)으로 적어서 실행했는데 신기하게 내림차순이 정렬되었습니다. 전 이 지점 이해 못했습니다. 설명 바랍니다.
안녕하세요 강의 정말 잘 듣고있습니다! 다름이 아니라 기존에는 잘 작동되었던 mmdetection 다운이 갑자기 안되서 말씀드립니다. 열심히 구글링해봤는데 안나와서 여기에 올려봅니다. torch와 torchvision 설치시에 error가 발생합니다. 여기서 발생하는 error는 pip depency에러가 아닙니다. 최종적으로 mmdet.apis 호출에 error가 발생합니다. 에러 내용은 import error로 "ImportError: libcudart.so .11.0: cannot open shared object file: No such file or directory" 이렇게 나타납니다.
ServerSession 클래스의 Write 함수의 일부입니다. // 최종적으로 패킷의 크기를 할당하기 위한 공간 확보 count += sizeof(ushort); success &= BitConverter.TryWriteBytes(s.Slice(count, s.Length - count), this.packetId); count += sizeof(ushort); success &= BitConverter.TryWriteBytes(s.Slice(count, s.Length - count), this.playerId); count += sizeof(long); BitConverter.TryWriteBytes(s.Slice(count, s.Length - count), this.packetId); 와 같이 스팬을 자를 때 왜 s.Length - count로 count 부터 남은 공간을 전부 자르는 건가요? ushort 크기를 사용할 것이기에 s.Slice(count, sizeof(ushort))로 사용할 공간만 잘라서 사용하는 것이 더 효율적인 것이 아닌가요? +추가 이 이유가 강의에서 말씀해주셨던 누군가가 이상한 값을 할당해 정확한 크기가 전달되지 않을 가능성이 있어서 남은 공간을 모두 확인하려는 의도일까요??
아래와 같은 에러가 발생했습니다. 비슷한 질문의 답글을 확인하여 아래내용도 다시 봤지만 수정잘 되어 있고, 컨테이너 디렉토리내 common 폴더와 파일 여부를 확인하였는데도 똑같은 오류가 납니다. docker-compose.yaml volumes 항목 수정 컨테이너에 들어가서 plugins 디렉토리 연결이 잘 되었는지 확인
로딩 씬에서 DB 데이터 로드 완료 후 Main 씬 전환 시 Spawner의 OnReady 이벤트가 작동하지 않습니다. 디버깅을 통해 StageManager의 OnReady와 OnPlay 호출 시점을 확인해 보았는데, OnReady가 먼저 호출되는 것을 확인하였으나, Spawner에서는 OnReady 함수가 작동하지 않아 발생하는 문제로 확인됩니다. 이렇듯 연결은 잘 해놓았으나, 작동하지 않는데, 하루종일 디버깅하며 찾아보는데 도저히 진도가 빠지지 않아 요청드립니다. https://github.com/sangmoki/IdleHero_RPG 깃허브 링크도 같이 첨부 드립니다 !
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 강의 내용을 질문할 경우 몇분 몇초의 내용에 대한 것인지 반드시 기재 부탁드립니다. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강사님. 텍스트 또는 문장의 벡터화 -> 벡터화된 데이터셋을 Train/Test로 나눔 -> 회귀 또는 분류모델을 훈련 및 검증 -> best pram(gridsearchCV)를 통해서 보다 정확도를 높임 - > ??? 이 이후에 과정에서 궁금합니다. 훈련과 검증이 완료된 모델을 저장하고 이를 메서드화(def) 한 이후 텍스트 분류라면 분류하고자 하는 DF의 컬럼을 apply lambda로 해서 분류를 하는 파생컬럼을 만든 다던지 그렇게 진행하는 것인가요?