질문 남겨주셔서 감사합니다. 막히면 언제든 무엇이든 자주 질문 던져주세요. 수학/과학이나 알고리즘과는 달리 업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다. 다시 말씀드리지만, 질문을 자주자주 남겨주세요. 저도 최대한 빠르게 회신 드리겠습니다. 당부드릴 두 가지가 있습니다. ① 가급적 구체적으로 설명해주세요. ② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ ==================================== 빈 화면이 보이는데 저만 그런걸까요? 다른 챕터들은 다 잘 나오는데 이 챕터만 안보이네요. 확인 부탁드리겠습니다.
[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" 이렇게 나타납니다.
재게시를 클릭하면 Reposts 부분과 count부분을 수정하고 unShift함수를 사용해서 pages[0]에 글정보를 추가하게 되는데 재게시를 클릭할 때 마다 pages[0]에 {user:{},Original:{}} 부분이 계속 추가되는게 맞나요 ? 인피니트쿼리는 한 페이지당 최대 10개의 객체를 받아오는 것으로 알고있는데 인피니트 쿼리랑은 상관 없는건가요 ?
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))로 사용할 공간만 잘라서 사용하는 것이 더 효율적인 것이 아닌가요? +추가 이 이유가 강의에서 말씀해주셨던 누군가가 이상한 값을 할당해 정확한 크기가 전달되지 않을 가능성이 있어서 남은 공간을 모두 확인하려는 의도일까요??
안녕하세요 강사님 강사님의 내용을 주석으로 남기고 싶어서 내용을 작성하고 저장하여 실행하면 페이지 상태가 무한로딩을 합니다. 이전 시간에 test.tsx 파일을 만들고 _app.tsx 파일에서 header 태그를 생성하는 시간에도 이와 비슷하게 주석을 사용하여 기록하고 저장하여 프로젝트를 실행하면 똑같이 무한로딩을 하게 됩니다. 저와 비슷한 사례가 많이 없어 chatGPT에 질문하여 얻은 답변으로는 node 버전과 관련이 있다고 하여 현재 버전 v20.18.1에서 v18으로 낮추기도 했지만 달라지지 않아 다시 원래 버전으로 돌려 놓은 상태 입니다. 이번이 두번째로 주석만 사용하면 이렇게 나타나는 현상인지 아니면 다른 설정이 필요한 것인지 잘 모르겠습니다.
안녕하세요! 강의 잘 듣고 있습니다! 다름이 아니라, 수강 중 여쭤볼게 있어 질문 드립니다..! 5:44초쯤에 app/api/auth/[...nextauth].ts 의 이 경로 폴더명들은 next-auth를 사용하려면 무조건 저 경로여야할까요? 예를들어, app/api/login/[...nextauth].ts 등 다른 경로는 불가능한가요? 꼭 /api/auth/[...nextauth]의 경로를 바라보도록 설계해야 하는지 궁금합니다!