월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
소스코드는 별도로 올려주시는 것인가요?
안녕하세요! 강의를 들으면서 타이핑을 할 수도 있으나 강의자료 내에는 PPT만 있더라고요. 혹시 소스코드를 따로 올려주시는 것인지 궁금합니다~
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Context-Swiching 파트 질문 드립니다.
1. 다양한 환경의 머신과 OS에서 발생하겠지만 Context-Swiching이 어느정도의 성능부하를 일으키는지 예시나 스트레스 테스트를 한 자료나 경험을 공유해주실 수 있으신가요. Context-Switching은 비용이 비싸다고 통상적으로 알고있는데요. 좀 더 가늠할 수 있는 자료나 경험이 있으신지 궁금합니다. 2. Context-Switching시 vtable의 교체가 일어나는 것은 코어가 담당하는 프로세스가 변경되었을때에 한정인지 궁금합니다. 동일 프로세스 내의 다른 쓰레드로 Context-Switching이 일어난 것이라면 vtable이 교체되지 않고 레지스터나 스택 메모리 정보(?) 정도만 교체가 일어나면 될 것 같습니다. 3. 코어의 갯수만큼 쓰레드를 사용한다고 해도 쓰레드들은 Context-Switching이 일어날 것 같은데요. 1번 코어에서 A 쓰레드가 동작하다 Context-Switching 후 2번 코어에서 동작하는 일들도 일어날 것 같습니다. 운영체제에서 기본적으로 돌아가는 다른 쓰레드들에 의해서도 Context-Switching이 일어날 것 같습니다. 쓰레드들은 정해진 작업시간이 지나면 잠들고 어느 코어에서 깨어나려고 할 것 같습니다. 제 생각에 코어와 쓰레드 갯수가 같을 때 1번 코어에만 A 쓰레드가 동작하게 할 수 있는 방법은 없는 것 같습니다. 그렇다면 얼마나 성능의 이득을 얻을 수 있을지 조금 의문이듭니다. 4. 최근 몇년간 Actor 모델이라고 해서 Tera등과 같은 서버에서 활용된 서버 디자인이 있다고 들었습니다. 향후 이 모델을 기반으로 게임 서버 디자인 및 컨텐츠 강의를 해주시면 안될지 궁금합니다. 제가 현재 강의를 듣고있는 상태인데 현재 C#, C++ MMO 서버 강의에 해당 서버 디자인이 적용되는 것일까요? Actor모델로 서버를 작성한 회사에서 일을하지 않는 한 해당 디자인과 같은 코어 성능을 최대한 활용하려 시도한 모델을 접하기 어려울 것 같아서 가능하다면 꼭 좀 부탁드리고 싶습니다. 제가 졸린 상태에서 쓴 글이라.. 양해 부탁드립니다. Context-Switching의 비용과 코어를 최대한 활용하려 시도한 Actor 모델에는 매우 관심이 있는데요. 이론적으로 실제 측정적으로 어느 정도의 성능의 이득이 있는지 궁금합니다. Context-Switching과 코어의 갯수만큼 쓰레드를 만들어 최대한 활용하는 주제에 대해서 관심이 많습니다. 앞으로도 질문에 대해 친절히 답변해 주시면 정말 감사드리겠습니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
FastLock에 대해 질문있습니다.
궁금증이 생겨서 그런데.. 강의에서 언급해 주신 FastLock의 좀 더 상세한 동작코드를 github등에 공유해주실 수 있으실까요? 아니면 수도코드나 좀 더 자세한 동작방식이 궁금합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
강의 내용 중 질문있습니다.
Interlocked 계열의 명령어를 사용했을 시, 사용하지 않았을 시 보다 몇 배 정도 느린지 궁금합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
멀티코어, 멀티쓰레드에서 캐시가 어떻게 복잡해지는지 궁금합니다.
멀티코어, 멀티쓰레드에서 캐시가 어떻게 복잡해지는지 궁금합니다. 강의 마지막에 복잡해진다고 하셨는데 조금 설명 좀 부탁드려도 될까욤..
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
멀티코어, 멀티쓰레드 환경에서 메모리 배리어 사용에 따른 각 코어의 캐시 메모리 동작이 궁금합니다.
멀티코어, 멀티쓰레드 환경에서 메모리 배리어를 사용함에 따라 메모리 가시성이 싱글 쓰레드 환경과는 어떻게 다른지 궁금합니다. 코어의 캐시메모리들이 어떤 규칙이나 방법으로 동기화가 일어나고 있는지 궁금합니다.
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
멀티테스킹과 멀티쓰레드 관계에 관하여 질문있습니다
멀티테스킹은 메모장, 그림판, 게임서버 프로그램을 실행할 때 cpu가 단일 코어라는 가정하에 시분할을 통해 메모장, 그림판 ,게임서버를 번갈아가며 실행시킨다고 이해하였습니다. (메모장 1초 / 그림판 1초 / 게임서버 1초) 질문1) 여기서 게임서버가 멀티쓰레드(2개) 환경이라고 가정한다면 "멀티테스킹"의 시분할을 통해 부여받은 시간(1초)을 또 시분할 하여 "멀티쓰레드"끼리 번갈아가며 실행시키는 것인가요? (쓰레드가 2개라면 0.5초 / 0.5초) (즉, 메모장 1초/그림판1초/게임서버쓰레드a 0.5초/게임서버쓰레드b 0.5초) 질문2) 아니면 "멀티테스킹"이 프로세스기준이 아닌 쓰레드마다 시분할적으로 동작하나요? (메모장1초/그림판1초/게임서버쓰레드a1초/게임서버쓰레드b1초) 읽어주셔서 감사합니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
MMORPG 말고도 다른 게임에서도 이 파트에서 설명해주신 코드로 그대로 사용이 가능한가요?
강의 너무 잘듣고 있습니다! 저도 다른 게임을 개발하면서 서버 관련 강의가 필요해 수강중인데요, 제가 하는 게임은 RPG같은 것이 아닌 미니게임 모음집 같은 게임을 제작 중입니다. 그런데 게임 서버를 하더라도 같은 코드로 진행을 해도되는지 궁금합니다
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
writeLock, writeUnlock, readLock, readUnlock 관련 질문입니다
수업 너무 잘 듣고 있어요! 이 부분은 이해가 잘 안갈거라고 말씀해주셔서 가볍게 보고 있는데도 조금이나마 이해를 해보자 몇 자 남겨봅니다. 0. writeLock, writeUnlock, readLock, readUnlock 이것들의 목적은 무엇일까요? 어떤 상황에서 사용할 수 있을까요? 1. 이해를 돕기 위한 다른 방법이 더있을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
서버 연동 관련 질문드립니다!
강의 너무 잘듣고 있어요! 다름이 아니라 제가 서버를 네이버 클라우드 플랫폼으로 연결해서 사용하려고 하는데, 지금 수업에 쓰는 코드처럼 조금씩 변경해서 사용하면 되는 건가요? 아니면 네이버클라우드플랫폼에서 제공하는대로 사용하면 되는건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
기본 세팅 질문드립니다!
수업 너무 잘듣고 있어요! 다만 하다보니 궁금점이 생기는데 저랑 쌤이랑 hello world! 출력하는 화면이 조금 다른 것 같은데 세팅문제인지 아니면 신경안써도 되는 건지 궁금해요!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
질문이 있습니다
서버를 전부 완성한 후 돌려보았는데 처음엔 잘 되다가 서버쪽에서 Recv에서 0byte를 받고 소켓이 끊기네요... 혹시 몰라서 코드도 전부 비교해 보았는데 별다른 이상을 못 찾았어요... 혹시 어떤 경우에 0byte를 받는지 알 수 있을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Connector.Connect 질문입니다.
클라에서 Connector를 통해서 연결시도를 할 때, Connector에게 endPoint를 전달합니다 Connector에서는 socket에 endPoint.AddressFamily를 전달하는데, 제가 생각하는 것은 IP주소 '만' 전달합니다. 뒤에 SocketAsyncEventArgs args 변수를 선언하고 args.RemoteEndPoint에 endPoint를 한 번 더 전달합니다. socket.ConnectAsync할 때 args를 전달합니다. 헷갈리는 부분은 endPoint를 두번 전달하는 것입니다. socket에는 IP주소'만' 들어있어서 포트번호를 모르니 args.RemoteEndPoint에 port번호 포함 주소를 다시 준 것 인가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Part 4 완료 후 코드리뷰 중 질문입니다.
OnRead함수의 역할은 args.BufferList에 연결된 RecvBuffer가 RecvAsync를 통해 받은 데이터의 사이즈와, RecvBuffer의 DataSize 프로퍼티에서 확인가능한 버퍼 내부의 해독 안 된 데이터의 사이즈를 비교하여 차이의 유무를 판단하는 것이라 이해했습니다. 그런데 OnWrite의 기능은 이해하기 어려운 것 같습니다. 간단하게나마 데이터 수신 후 오버플로우 체크용 함수로 이해는 했는데 정확한지를 모르겠네요
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
패킷을 조립하는 부분에서 제가 생각하는게 맞는지 잘 모르겠습니다. ㅜㅜ
친애하는 루키스님~ 바쁘신 와중에 매번 질문글을 올리게 되어 죄송합니다. ㅜㅜ 루키스님이 아주 친절하게 설명을 해주심에도 제가 제대로 이해를 하는 건가해서 이렇게 송구스럽게 글을 올리게 되었습니다. 클라에서 서버로 패킷을 보내게 되면 아래와 같은 과정을 거친다고 현재 생각을 하고 있는데요. 이 생각이 맞는 걸가요? 1. 클라에서 서버로 패킷이 날아온다. 2. 해당 클라에 대응하는 Session의 _recvBuffer에 차곡 차곡 쌓인다. 3. 패킷이 완전체([size(2)][packetId(2)][ ... ])가 될 때까지 일단 스킵을 한다. 4. 패킷이 완전체가 확인되면 OnRecvPacket()로 전달하고 전달한 패킷을 뺀 나머지 부분을 다시 찝어준다. 5. 이후 패킷이 완전체가 될 때까지 일단 스킵을 한다. 6. 패킷이 완전체가 확인되면 OnRecvPacket()로 전달하고 전달한 패킷을 뺀 나머지 부분을 다시 찝어준다 ......(반복)........ 이렇게 이해하고 있는게 맞는 걸까요?ㅜ 끊이지 않는 질문으로 괴롭혀서 죄송합니다... 루키스님 강의가 재밌어지는 만큼 궁금한 점도 쏙쏙 생겨나서 큰일입니다....
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
session 관련한 질문
안녕하세요 항상 강의 잘 보고 있습니다. Listener와 Connector에 대한 질문 입니다. 양쪽 모두 OnAcceptCompleted, OnConnectCompleted 로 _sessionFactory를 통해 session을 생성하고 start해주는데요, session을 하나 생성해서 그것을 통해 서로 주고받고 한다고 이해했는데 왜 new코드가 2개이지 하고 복습을 하던 차에 의문이 들었습니다. Connector에서나 Listener에서나 상호간에 연결된 socket을 통해 session을 생성하는 것이므로 하나의 session이 되는 것인지, 두 번 new 하므로 Connector session 하나, Listner session 하나 해서 총 2개의 session이 되는 것인지 아래 그림 과 같은 의문이 들어 질문 드립니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
수업에 사용된 ppt 파일 얻을 수 없을까요
필기를 수월하게 하고싶습니다 ㅜㅜ
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
이 부분은 어떻게 작동되는건가요?
제 역량이 좋지 못해서 자꾸 질문을 올리게 되네요. 항상 좋은 답변에 감사드립니다. 다름이 아니라 이 밑에 있는 코드부분에서 session.Send(Segment); 부분에 의문이 생겼습니다. 이게 결국 앞에서 만든 segment를 list serversession한테 보내서 그 리스트에 있는 serversession 들이 소켓을 통해서 서버한테 보낸다는 건데 이때 send는 session에 있는 함수인데 어떻게 이게 호출된건지 헷갈려서요. 고민끝에 내린 결론은 프로그램에 sessionmanager가 clientSession을 생성할때 거기서 참조되어 연결되었다고 내렸습니다. 이게 맞는 건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요!! 쓰레드와 프로세스의 차이
안녕하세요. 좋은 강의 감사합니다!!제가 프로세스와 쓰레드, 멀티프로세스, 멀티쓰레드를 정확히 구분짓지 못하는거 같아 이렇게 질문으로 남깁니다. 1. 제가 이해한 대로는 프로세스가 하나의 프로그램이고, 그 프로그램을 여러개 실행하면 멀티프로세스, 그리고 하나의 프로그램 안에 실행 역할을 해주는 쓰레드가 여러개가 있다면 멀티쓰레드라고 이해했습니다. 혹시 이게 맞을까요??2. 임계영역이라는게 서로 다른 쓰레드 또는 프로세스가 자원 공유하는걸 접근하는건데 분명 프로세스는 아예 다른 프로그램으로 각자 다른 메모리를 가지고 있는데 공유되는 자원이 있다는게 잘 이해가 안갑니다.. 그리고 컨테스 스위층은 서로 다른 프로세스에서 다른 프로세스를 실행할때 일어나는건가요?? 아니면 쓰레드에서 다른 쓰레드로 넘어갈때 일어나는건가요??.. 분명 컨테스트 스위층가 프로세스에서 프로세스로 이동하는것보다 공유하는 메모리가 있기 때문에 쓰레드에서 쓰레드로 이동하는게 더 빠르다고 들었습니다. 이 말도 머리에서 잘 그려지지 않네요... 이렇게 독립적으로만 개념을 이해하고 있고 이를 큰 그림으로 이어서 이해를 할려고하면 앞뒤가 안맞아서 이렇게 질문남깁니다.!!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
_onAcceptHandler.Invoke(args.AcceptSocket); 에 질문이 있습니다.
안녕하세요 복습 하면서 궁금한 점이 생겨서요 _onAcceptHandler.Invoke(args.AcceptSocket) 이 코드 부분을 통해 listener 에서 연결해준 대리자가 program 에 있는 OnAcceptHandler 라는 함수를 실행시켜서 대리자가 함수에 맞춰서 보내고 받는 것이라고 이해했습니다. 혹시 제가 이해한게 맞다면 처음 제가 쓴 문법이 어떻게 OnAcceptHandler를 실행시키는 건가요? 제가 생각하기에는 SocketAsyncEventArgs 와 관련이 있을 거 같은데 정확한 답을 알고 싶어서요. 혹시 마지막으로 session.Onconnected(args.AcceptSocket.RemoteEndpoint); 부분인데요 RemoteEndPoint를 왜 넣는 건가요? 앞에 endpoint는 네트워크 연결이라는 것을 알겠지만 이건 모르겠네요.....