묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
17:30 초 부근에 QueueUserWorkItem 테스트하는 부분에서
ThreadPool.SetMinThreads(1, 1); ThreadPool.SetMaxThreads(5, 5); for (int i = 0; i < 4; i++) ThreadPool.QueueUserWorkItem((obj) => { while (true) { } }); ThreadPool.QueueUserWorkItem(MainThread); for문 체크하실 때 5에서 4로 바꾸셨는데 저도 똑같이 했는데 출력이 안됩니다. 3이하로 내리니까 출력이 됩니다. 디버그로 쓰레드가 몇개 있는지 확인해봤는데 주 쓰레드 포함 5개밖에 없다고 뜹니다. 왜이럴까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ArraySegment관련 질문
6분쯤에 ArraySegment가 Struct라서 스택영역에 할당되고 BufferList에 Add할 때 복사되어 전달된다고 설명하셨는데 struct가 스택영역에 할당되려면 몇가지 조건이 있는 것으로 알고 있습니다. 예를들면 16바이트 미만이고 멤버변수로 class가 없어야한다 등등... 그런데 위의 조건과 상관없이 Rookiss님이 설명하신 내용대로 되는 이유가 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
AcceptAsync() 수행시 항상 오류...
안녕하세요 마지막 DummyClient에서 ServerCore로 계속해서 요청 보내는 부분에서 이상한 에러가 나서 문의드립니다. ServerCore 쪽에서는 RegisterAccept에서 pending이 True 로 반환되고, DummyClient에서는 Connection refused Exception이 발생하네요 ㅠ System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (61): Connection refused 192.168.35.35:7777 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) at DummyClient.Program.Main(String[] args) in /Users/hun/Projects/Server/DummyClient/Program.cs:line 28 혹시 의심될만한 부분이 있을까요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
강사님, 이동 동기화에 대한 질문 있습니다.
혹시, 이동 동기화에 대한 방법이 두 가지 있다고 하셨는데, 1) 서버에서 허락 패킷이 왔을 때 2) 클라이언트가 먼저 이동하고 있다가 서버에서 응답이 오면 보정(보간) 먼저, 2)은 배틀그라운드 게임이 제가 기억하기에 이동을 하다가 갑자기 순간적으로 뒤로 가는 현상이 발생하는데 이 방법을 사용한 것인가요?? --- 첫 번째 질문 1)의 경우에 대해서는 어떤 상황인지 잘 모르겠습니다. 혹시 예시가 있을까요?? --- 두 번째 질문 그리고, 제가 두달 전에 Unity의 WebGL 플랫폼을 사용하여 실시간 멀티플레이어 축구 게임을 만든 적이 있습니다. Unity Client + Node.JS로 만든 서버를 사용하였습니다. 저는 동기화에 대한 지식이 없었기에 생각해낸 방법이 Client에서는 숨겨진 '분신'을 만들어 절대 위치 패킷을 받으면 '분신'이 움직이고 실제로 보이는 캐릭터는 따라가도록 구현하였습니다. 그리고 서버에 보내는 좌표는 실제로 보이는 캐릭터의 좌표를 보냈습니다. (RagDoll Component를 사용하여서 다른 클라이언트와의 물리적 충돌이 활발하기 때문에 조금 늦게 모두 같이 이동시킬 방법을 생각하다가...) 물론 '분신'은 보이지 않고 Colider, Rigidbody도 없기 때문에 많이 애먹으면서 많은 런타임 버그들을 잡았었습니다. 혹시 이런 물리적 충돌이 많이 일어나는 경우의 실시간 멀티플레이어 게임들은 두 가지 동기화 방법 중 어떤 방법을 사용하나요? 또는 어떤 방법을 더 많이 사용하나요? --- 세 번째 질문 그리고 수업 너무 좋았습니다. 아직 더 배워야 겠다는 생각과 함께 뿌듯합니다. 감사합니다!! 답변부탁드리겠습니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Connect를 이용하여 여러소켓 생성후 문제점
안녕하세요 루키스님 정말 강의 도움 많이 받고 있어요 !!소켓을 10번 생성과함께 커넥트를 요청하는 부분에0.1초 딜레이를 주면 (*대부분*) 잘작동하더라구요 하지만, 저 딜레이를 빼면 아래 그림과같은 에러가 나와요! 저는 이것을 비동기에서 발생하는 문제점이라고 생각했습니다. 그래서 Receive에 _lock을 걸어서 실험도해봤지만여전히 같은 오류를 내고 있더라구요 혹시 이런 에러가 발생하는 부분의 가능성이나해결방법이 어떤게 있을까요? 딜레이를 주는경우대부분 잘되는것은 비동기 문제가 맞는걸까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
백그라운드/메인 쓰레드 그리고....
1. PackatQueue를 OnRecvcallback을 통해 거치게되면 유니티에서 사용되는 메인쓰레드로 사용할 수 있다는 얘기로 들리는데. 유니티에서 그렇게 작동하도록 만든것인가요? 즉 유니티 오브젝트와 서버를 연동시키려면 쓰레드는 무조건 큐(Push,Pop)를 거쳐서 와야한다? 라고 유니티 측에서 규칙을 정해둔거? 그리고 2. 전 강의에서 설명하셨을 수도 있는데 너무 많은게 지나가서 질문 드립니다... HandlePacket만으론 유니티와의 연동이 되지않은 걸로 보이는데 HandlePacket을 자동화해서 사용하는 이유가 있나요. 제가 이해한 바로는 1번에 해당하는 경우에만 유니티가 제대로 작동되는 걸로 보여져 HandlePacket은 뭘하는지 잘 모르겠습니다. 3. 기존에는 (유니티 연동 전) 백그라운드 풀에서 쓰레드를 뽑아와서 쓴다고 하셨는데.. 이 부분은 제가 잊은건지 모르겠지만.. 쓰레드 풀 자체를 어디서 생성해줬는지 기억이 가물가물합니다... 분명 첫수업시간 때 Task를 이용해 쓰레드 풀을 만드는 건 어렴풋이 기억이 나는데 그런 코드는 여기서 작성한 기억은 없고... 쓰레드 자체가 어디에서 왔는가에 대해 알려주실 수 있나요.. 메모하면서 진행해왔는데 찾기가 어렵네요. 4. 그리고 복습하는 도중에 알려주신 모든 부분을 응용해서 학습할 수 있게 해주신점 감사드립니다. 그런데 한가지 ThreadLocal을 이용한 최적화는 파이널 프로젝트에 응용한게 없는듯한데 파트 7정도 때에나 이런 것들을 한꺼번에 볼 수있을까요. 감사합니다. ---------------------------------------------------
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
궁금합니다
락의 기초에서 배웠던 lock함수를 써야할때와 스핀락을 써야할때가 어떻게 다른가요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Init 메서드
혹시 생성자 메서드를 사용하지 않고 Init 메서드를 만들어서 사용하는 특별한 이유가 있나요? 그냥 코딩 스타일인가요?
-
미해결R로 하는 네트워크 분석
LDA 이미지 저장
for (i in 8:12) { q_lda <- LDA(dtm, k=i) q_topics <- tidy(q_lda, matrix="beta") q_top_terms <- q_topics %>% group_by(topic) %>% top_n(15, beta) %>% ungroup() %>% arrange(topic, -beta) q_top_terms$term<-repair_encoding(q_top_terms$term) tau<-tapply(q_top_terms$term,q_top_terms$topic,table) png(paste0("nate",i,".png"),width=500,height = 500) q_top_terms %>% mutate(term=reorder(term, beta)) %>% ggplot(aes(term, beta, fill=factor(topic))) + geom_col(show.legend=FALSE) + facet_wrap(~ topic, scales="free") + coord_flip() + theme(axis.text.y=element_text(family="HYGothic-Extra")) dev.off() key<-c(sapply(tau,names)) key_list[[i]]<-key[!key %in% stw] } 이렇게 코드를 돌리면, 파일은 생기는데, 이미지는 저장되지 않습니다. 왜 그런건가요?
-
해결됨누구나 시작할 수 있는 네트워크 Step 1 (네트워크 모델)
마무리 Review
마무리 Review강의가 실행되지 않는데 문제가 생긴건가요?