월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Session #2강의 듣다가 궁금한점이 있어서 질문드려요
처음에 send할때 sendArgs 동적 할당해서 보내다가 부하때문에 sendArgs멤버로 하나 만들어서 그걸 재사용하는걸로 변경 하시고 다음 send가 있으면 이전에 보낸 send가 OnComplete되어야지 다음 send를 보내잖아요 이렇게 하면 보내는 send는 많고 OnComeplete처리가 느리면 대기하는 패킷이 큐에 계속 쌓일 수도 있을 것같은데 sendArgs를 미리 할당을 많이 한다음 풀링방식으로 가져온다음 이전에 보냈떤 send가 comeplete가 되었든 안되었든 상관없이 바로바로 SendAsnyc호출 해주면 문제가 되나요? SendAsnyc호출을 바로바로 해주면 받는쪽에서 왠지 뭉쳐서 받을 것같아서 그럼 더 효율이 나오지 않을까 생각해봤어요. 이전에 보낸 Send가 완료가 되고나서 다음 send를 보내면 받는쪽에서는 뭉쳐서 받질않을 거잖아요..? 만약 실시간으로 많은 양의 send를 보내는 서버라면 어떤 방식이 좋을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
싱글게임 -> 멀티게임
어떤 멀티게임을 만들려고 할때 싱글게임인것을 멀티게임으로 바꾸는 작업이 편한가요 아니면 아에 처음부터 멀티작업을 하면서 작업하는게 편한가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
버퍼와 패킷의 차이점
Q1. 버퍼는 우체통(데이터를 받을 공간사이즈) 이라고 비유하면 패킷은 편지(주고받을 데이터)에 해당되는건가요? 제가 이해하고 있는게 맞는지 모르겠네요 -------------------------------------------- Q2. 입력버퍼의 크기를 초과하는 분량의 데이터전송은 발생하지 않는다가 tcp통신인걸로 알고있는데 소켓1에서 받는사이즈보다 소켓2에서 주는 데이터사이즈가 크면 데이터를 잘라서 처리하는건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
소켓과 세션
소켓과 세션의 차이를 모르겠습니다. 소켓은 휴대폰에 비유를 하자면 세션은 뭔가요? 그리고 네트워크이론강의때에 손님,문지기,대리인이 필요하다고 말씀하셨는데 대리인이 왜필요한건지 모르겠어요 고로 문지기만 있어도 서로 소통이 잘 되지않나요? 똑같은말인데 소통하는데에 있어서 소켓이 두개만있으면 되지 왜 대리인까지 소켓을만들어서 3개의 소켓을쓰는지 모르겠습니다.
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
19:00 쯤 Player를 찾고 로그를 남기는 테스트에서
19:00 쯤 Player를 찾고 로그를 남기는 테스트에서 chatPacket.chat를 로그로 남긴 후에 GameObject를 Find할 때 메인 쓰레드에서 사용하라는 예외가 발생합니다. 혹시 제가 잘못 작업했나 해서 올려두신 자료를 받아서 해보아도 똑같이 try catch에서 넘어가질 못하네요 유니티 버전 2021.1.0b1에서 안되서 2019.4.17f1까지 낮춰봤는데도 안됩니다. 무언가를 빠트린거 같은데 찾기가 힘드네요 혹시 조언좀 해주실 수 있을까요
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ip설정오류
서버테스트를 해볼려고 아이피를 127.0.0.1로 설정하면 정상작동하는데 저의 공용ip를 쓰면 extendedsocketexception이 throw 됐다고 뜨는데 뭐가 문제일까요? ..포트포워딩 dmz설정해봤는데도 안되네요.. 와이파이를 쓰고있는 노트북에서는 서버가 안열리는것이 정상인가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
c# gc문제
안녕하세요. c# 서버강의가 있어서 구매한 사람입니다. c#은 gc때문에 실제 게임서버에서는 잘 사용하지 않는 다고 알고 있습니다. 강사님께서는 c#의 gc로 인한 서버 멈춤현상을 회피하는 방법을 알고 계신지요
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
게임에서의 활용
크게 나누자면 멀티쓰레드, 네트워크, 패킷 이렇게 강의가 세 섹션으로 나눠져있는데 제가 이해한 각각의 게임에서의 작동하는 의미는 패킷은 클라에서 어떤 스킬을 쓰면 그 패킷을 보내고 서버에서 받고 나머지 클라한테 뿌려주고, 네트워크는 받은 패킷을 분석하고 나머지 클라한테 뿌려주는 우체국같은 느낌이고 [Q1]멀티쓰레드는 어디서 어떻게 게임에서 활용하는지 잘 모르겠어요 [Q2]위에 제가 설명한 부분이 제대로 이해하고 있는지도 잘모르겠구요
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
언어 활용 질문
어떤 앱을 구현할때, 서버를 구현 할 때도 많은 class 에서 엄청 다양한 메소드를 가져다가 쓰는데 이 모든걸 어떻게 알고 사용하는지가 궁금해요. 음..그니까 내가 이렇게 이렇게 굴러가는 알고리즘으로 프로그램을 만들고싶다했을때 어느걸 using해야되고 어떤 객체를 쓸지 어떻게 알 수 있는건가요? 예를들어서 Socket을 사용한다했을때 소켓안에 들어있는 모든 기능들이 있고 결국엔 그 기능들을 조합해서 프로그램을 만드는것이잖아요. 내가 원하게 프로그램을 동작할려면 어쨋든 다양한 지식들을 알고 조합해야될텐데 그 양이 엄청 방대하잖아요 근데 그 수많은 양을 다 머리속에 집어넣을수도 없는거고,, 다시 한번 정리하자면 이론적인(강의에서 나오는 식당,택배등설명)것을 알아도 실제 구현할때 어떤 메소드들을 사용해야하는지 어떻게 알아내는것인지 궁금합니다 //제 생각이 제대로 전달되었을지는 잘 모르겠네요.. Rookiss님은 이러한 문제들을 어떻게 해결하셨는지 궁금해요 오로지 많이 데이터축적과 경험이 답인건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
맥북 구동
수업자료 서버 프로젝트를 맥북에서 구동시켜도 아무 문제 없을까요? 그리고 맥북에서 수업자료를 열면 파일들이 안보이는데 원래 그런것인가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Task 란 개념
Task 는 ThreadPool(단기알바들)중에서 한명이 작업을 오래 처리할때 그 한명한테 어떤 작업을 줄지 명령을 내려주는 개념 맞나요? 이것이 맞다면 ThreadPool과 Task는 어떻게보면 한쌍인가요? 제가 이해한것이 맞는지 잘 모르겠어요
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
모바일, os 클라 질문
(모바일과 모바일) (윈도우와 맥) (PC와 모바일)등 다양한 환경이 존재하는데 이것을 다 서버에 연결시킬려면 어떤 다른 네트워크이론이 필요한가요? 아니면 서버를 구동한뒤 유니티에서 다 다른 환경 빌드를 한뒤 서버를 접속하면 정상적으로 동작이되나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
서버 쪽은 어떻게 공부해야할지 궁금합니다
어느덧 Part.4도 종강(?)을 앞두고 있습니다. 낯선 개념들이 잔뜩 등장해서인지 1,2,3에 비해 확연히 어려웠는데요, 그나마 강사님의 강의력 덕에 어려운 내용도 비교적 쉽게 이해할 수 있었습니다. 끝날때쯤 되니 궁금한게, 서버쪽은 연습을 어떻게 해야 할 지 모르겠습니다. 기존 파트들은 자료구조나 알고리즘은 백준에서 알고리즘 문제들을 풀어보면서, 유니티는 해당 프레임워크를 이용해 게임 하나를 개발해보면서 배운 내용들에 어느정도 익숙해졌습니다. 그런데 서버는 일단 따라하긴 했는데 처음부터 구현하라고 하면 어떻게 시작할 지 엄두가 안 납니다. 혹 다른 방식으로 구현되어 있으면 코드 읽기도 힘들 것 같아요. 이대로 파트5로 넘어갔다간 MMORPG 실습때쯤 지금 배운 내용을 잊어버리지는 않을지 걱정입니다. 이대로 다음 파트로 넘어가도 될 지 모르겠네요. 서버 프로그래밍에 익숙해지려면 어떤 식으로 연습하면 좋을지 조언을 구하고 싶습니다. 연말 잘 보내시고, 새해에도 좋은 일만 가득하길 바랍니다 :)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
RemoteEndPoint , UserToken 질문있습니다.
[Session #3 강의] public void Init(IPEndPoint endPoint, Func<Session> sessionFactory) { SocketAsyncEventArgs args = new SocketAsyncEventArgs(); args.Completed += new EventHandler<SocketAsyncEventArgs>(OnAcceptCompleted); RegisterAccept(args); } void RegisterAccept(SocketAsyncEventArgs args) { args.AcceptSocket = null; } [Connector 강의] public void Connect(IPEndPoint endPoint, Func<Session> sessionFactory) { Socket socket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); args.Completed += OnConnectCompleted; args.RemoteEndPoint = endPoint; // ★★★ args.UserToken = socket; // ★★★ RegisterConnect(args); } void RegisterConnect(SocketAsyncEventArgs args) { Socket socket = args.UserToken as Socket; if (socket == null) return; } [질문 1] ① args.Completed += new EventHandler<SocketAsyncEventArgs>(OnAcceptCompleted); ② args.Completed += OnConnectCompleted; 이벤트 핸들러를 연결하는 ① 번과 ②번 방식에 차이점이 있나요? 왜 ②번에서는 new EventHandler<SocketAsyncEventArgs> 제외하셨는지 궁금합니다. [질문 2] MSDN을 참고해서 RemoteEndPoint : 데이터를 보낼 endPoint를 지정할 수 있다. UserToken : 연결된 사용자를 가져온다. 는 것을 알았습니다. 그럼 아래 두 코드는 다음과 같이 해석하면 되나요? args.RemoteEndPoint = endPoint; args.UserToken = socket; 일단 endPoint(ip주소와 포트번호)를 지정 후, socket을 대입하는 것은 args의 AddressFamily, SocketType, ProtocolType을 지정해준다고 생각하면 될까요?
- [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
뮤텍스
삭제된 글입니다
- [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
운영체제 개념
삭제된 글입니다
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
1분 41초 가량 질문
저는 Hello Thread!먼저 뜨는데 뭐가 문제인가요??
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
반복문 내에 있는 buff 변수의 생성 및 유지?에 관해서 질문있습니다.
선생님 안녕하세요. 밑에 별표 되어 있는 부분에 buff가 지역변수이기 때문에 반복문이 매번 실행될 때마다 새로 만들어지는 것으로 알고 있었습니다. 하지만 매번 반복문이 실행될 때마다 새로 만들어진다면 ArraySegment가 buff에 있는 것을 가리키는데 이때 새로 만들어진다면 buff의 원본 데이터가 삭제되고 다시 만들어지기 때문에 기존에 ArraySegment가 가리키는 것은 없어진다고 생각됩니다. 그래서 혹시나 해서 예제 코드를 만들어서 직접 확인해보았습니다. void RegisterSend() { while (_sendQueue.Count > 0) { byte[] buff = _sendQueue.Dequeue(); // ★★★ _pendingList.Add(new ArraySegment<byte>(buff, 0, buff.Length)); } // 코드 생략 } ■■■■■■■ 예제 코드 ■■■■■■■ static void Main(string[] args) { unsafe { int* pointer; int* pointer2; Queue<int> _sendQueue = new Queue<int>(); for (int i = 0; i < 3; i++) { _sendQueue.Enqueue(i); } for (int i = 0; i < 3; i++) { int var = _sendQueue.Dequeue(); pointer = &var; Console.WriteLine($"{var}, {(int)pointer}"); } } } [출력] 0, 11923652 1, 11923652 2, 11923652 하지만 예상과는 다르게 예제 코드를 보시면 var의 메모리 주소가 11923652로 동일하게 나오는데 그러면 반복문이 실행될 때마다 int var 변수가 새로 생성되는 것이 아니라 계속 재사용하는 것인가요? 질문을 정리하면 [질문 1] 예제 코드에서 반복문이 실행될 때마다 int var 변수가 새로 생성되는 것이 아니라 계속 재사용하는 것인가요? [질문 2] 만약 재사용이 아니고 새로 생성된다면 ArraySegment가 buff에 있는 것을 가리키는데 이때 반복횟수가 바뀔 때마다 buff가 새로 만들어진다면 기존에 있던 buff에 있는 원본 데이터가 삭제되는데 ArraySegment가 가리키고 있는 buff에 있는 데이터가 없어지는데 이것을 BufferList에 저장하는 것이 가능한가요? 매번 좋은 답변 감사드립니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ArraySegment, Span, ReadOnlySpan 차이점
선생님 안녕하세요! Serialization 1강부터 Span<T>를 사용하셨는데 ArraySegment<T>와 Span<T>는 동일하게 원본 배열의 일부분을 찝어내는 것 같은데 혹시 다른 차이점이 있어서 Span<T>를 사용하신 것 가요? MSDN에서 Span<T>를 찾아봤지만 어려워서 무슨 말인지 이해를 하지 못했습니다..... 그리고 굳이 ReadOnlySpan<T>을 사용하는 이유도 궁금합니다. 질문을 정리하면 [질문 1] ArraySegment와 Span.Slice는 동일하게 원본 배열의 일부분을 찝어주는 역할을 수행하는 것 같은데 어떤 차이점 때문에 Span을 사용하셨는지 궁금합니다. [질문 2] ReadOnlySpan<T>은 Span의 getter인 것 같은데 굳이 만든(?) 혹은 사용하는 이유를 잘 모르겠습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
강의자료는 어디에서 다운받을 수 있을까요?
강의자료를 찾고 싶은데 어디서 찾을 수 있을까요