월 66,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ReleaseRef 질문이 있습니다!
WraightRef wraight(new Wraight());wraight->ReleaseRef();wraight = nullptr;wraight 에 nullptr을 넣어서 ReleaseRef가 수행하는 도중에 위처럼 (중간에 개입)을 써 놓은 부분에서 다른 WraightRef가 wraight를 참조를 시도한다면 reftCount는 0이 되지만_refCount는 1이 되어서 delete this가 실행이 되면 문제가 발생하지 않나요??
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
API 종속에서 자유로워지기
강의 초반부에 windows.h같은 헤더를 사용하게 되면 추후 바꿔야 될 부분이 많아 표준인 thread를 사용한다고 하셨습니다.강의가 window os기반으로 구성되어 있고, 제가 window os는 잘 사용해 보지 않아 막연한 걱정이 있는데, 그럼 window에서 작동하는 IOCP로 서버 구성시, 추후 리눅스로 옮겨갈때 epoll로 바꿔주는 과정에도 엄청한 자원이 소모되지 않나요? 현업에서는 대부분 window os로 서버를 구성하나요? epoll에 대해서도 꼭 공부가 필요한지, IOCP에 비해 중요도가 떨어지는지도 궁금합니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
코어와 쓰레드의 매핑관계가 잘 이해가 가지 않습니다.
10:30부근에 말씀하시는 내용을 들어보면,쓰레드의 개수 = 코어의 개수 일때 가장 이상적이라고 하셨습니다.CPU가 4코어일때 하나의 프로세스(MMO서버)에 4개의 쓰레드가 가장 이상적이라는 의미인가요?멀티코어 프로세서에서 같은 프로세스여도 서로 다른 쓰레드이면 각 코어마다 같은 프로세스의 서로 다른 쓰레드 작업이 가능하다. 이게 가능한 이유는 유저모드 쓰레드가 아닌 커널 모드 쓰레드 이기 때문이다.제가 이해한 위 내용이 맞는지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
강의 내용 깃허브 또는 블로그 정리 관련 질문
안녕하세요.강의 들은 내용을 전반적으로 깃허브에 정리하려고 합니다.강의 캡쳐본이나 강의 예시 코드를 정리하고 작성을 하면서 이해하는 방식으로 학습하려고 하는데, 공개된 공간에 출처를 남긴 후 강의 캡쳐본이나 예시 코드를 함께 작성하여 정리해도 되는 지 여쭤봅니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
shared_ptr을 사용해도 되지만 소멸자에서 pool에 있는 애들을
shared_ptr을 사용하는 이유가 Pop한 오브젝트나 메모리 청크를 반납하지 않을까봐 걱정되어서라고 이해했습니다.그런데 MemoryPool 클래스 소멸자에 이미 풀에 있던 애들을 모두 메모리 해제해주고 있는데 이것을 굳이 걱정할 필요가 있는지 궁금합니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
파트 6 서버연동에 대해 질문합니다.
파트4에서는 5장에서 간단하게 다루고 파트 6에서 연동에 대해서 제대로 다루는 것으로 알고 있는데 혹시 파트 6는 언제 나올까요?부트캠프로 하신다고 하셨는데 제가 대학생이라 부트캠프를 참가할 여력이 안되는데혹시 온라인 강의로는 언제 공개될까요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
서버 분산 처리 에 대해서는 혹시 다룰 예정이 없으신가요?
게임서버만 제작하셨는데 DB 서버나 채널 등등 scale-up 관련으로 혹시 다룰 생각 없으신가요? 그리고 다른 질문에서 "나머지 MMO 컨텐츠는 추후 실전 부트캠프 강의에서나 다룰 생각입니다."이렇게 대답해주신거를 들었는데 부트캠프 강의 일정은 혹시 언제쯤 가능할지 알수 있을까요?끝으로 좋은강의 너무 감사합니다 다른 강의도 너무 잘듣고 있습니다.,
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
강의 7:42 에 해당하는 내용에 대해서 질문입니다
안녕하세요. 강의 7:42 부분에 대해서 질문이 있습니다.말씀해주신 내용처럼 _popCount 가 1인지 체크하고 oldHead를 delete 하는 사이에 다른 쓰레드에서 TryPop() 함수를 참조하게 되는 상황이 헷갈리는데요. 만약 1번 쓰레드가 TryDelete 함수 내부에서 oldHead를 delete 했는데, 2번 쓰레드가 compare_exchange_weak 함수를 콜하게 된다면 이미 지워버린 oldHead 에 대해서 참조를 하게되는 상황이 문제가 될 듯 하여 질문드립니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
언리얼엔진과 IOCP 서버 연동시
서버에서 언리얼엔진의 네비메시나 비헤이비어트리 같은건 사용을 할 수 없나요?아니면 언리얼엔진 내부 코드를 분석하고 뜯어와서 C++서버에 이식을 하는건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
멀티스레드 프로그래밍에서 디버깅하면서 문제 추적하려면 어떻게 해야하나요?
멀티스레드 병렬 프로그래밍은 싱글 스레드와 다르게 디버깅하기가 매우 까다롭더라구요 ㅠㅠI/O 출력을 하거나 로그 파일로 따로 빼서 로깅을 확인하는건 싱글스레드까지만 가능하고 멀티스레드에서는 별 도움이 되지 못하더라구요이 외에 다른 방법으로는 디버깅 모드로 실행 시 문제가 발생했을 때, memory를 확인하면서 역추적하면서 문제를 해결하는 방법밖에 떠오르질 않는데, 이 방법이 맞을까요?예를 들면 여러 스레드를 실행하면서 call 횟수, 작업하는 변수의 주소값, 수행 시간 등을 list에 저장한 다음에 조사식에 해당 list를 끌어와서 확인해보려고 하는데...현업에서는 멀티스레드 로깅 및 문제 역추적할 때 어떤 방법을 사용하나요..?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
C++ 인스펙터 기능 문의드립니다.
C#개발을 주로 개발하는 개발자입니다. C#만가지고는 안될 것 같아서 C++을 공부하고있는데 함수나 변수 뒤에 . 찍어서 어떤 기능이 있는지 보여주는 인스펙터 기능이 C#에 비해 너무 불편해서 혹시 편리한 어떤게 있는지 궁굼해서 문의 드렸습니다. ㅠ ;빠진 부분도 오류가 안나와서 함참찾아야하는게 너무힘들어요 ㅠ .찍어도 나올 때도 있고 안나올때도있고 ㅠ 어렵습니다.!
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요! 서버 연결 관련 질문드리고 싶은게 있습니다!
안녕하세요 강사님!강사님의 수업을 듣고 서버를 넣은 개인 포폴을 제작 중인 학생입니다서버와 클라이언트 연결문제가 있어서 질문드리고 싶은게 있습니다 같은 공간에서의 서버와 클라 연결에서는 문제가 없습니다 하지만 다른 공간에서 연결이 되지않는 문제가 있습니다 기본 게이트웨이가 다르면 연결이 되지 않는것 같아요 그래서 하마치 같은 프로그램을 사용하면 연결이 됩니다.. 이런 문제는 라우팅이 안돼서 발생하는 문제인가요? 제가 수업에서 놓친부분이 있는건지.. 이런 문제는 어떻게 해결할 수 있을까요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
연산자 정렬시 어떤 단축키를 이용하시는건가요?
31분쯤에 operator를 정렬 해줄때 어떤 단축키나 설정을 눌러서 하시는걸까요? 그리고 보통 이런 패턴으로 정렬을 많이 하시나요 업무에서?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
AcceptEx, ConnectEx 사용에 도움을 받고 싶습니다.
안녕하세요,비동기, 논블록 환경의 IOCP 서버를 구현하고 있습니다.문제는 AcceptEx, ConnectEx 호출 후 GetQueudCompletionStatus 를 호출하면 정상적으로 TRUE 의 값이 출력됩니다.하지만 서버에서 AcceptEx 를 호출하고, 완료 통보를 받았다면 서버가 클라이언트 소켓을 받아야 하는데 정상적으로 처리 되지 않는거 같습니다. 위 문제에 대한 코드에서 어떻게 해결 방안을 받거나 선생님의 도움을 받을 수 있을까요?왜냐하면 AcceptEx -> GetQueudCompletionStatus -> setsockopt 에서 AcceptEx 에 들어오는 소켓의 옵션을 설정해 주어야 한다고 마이크로 소프트 공식 문서에 써져 있는 것을 확인했습니다.하지만 옵션을 바꿔주기 전에 accept 소켓이 연결되어야 하는 상태인데 WSAENOTCONN 의 오류를 반환 받았습니다.하단 링크는 구글 드라이브 공유 링크입니다.문제가 있는 솔루션입니다.참고한 문서들은,소켓 오류 : https://learn.microsoft.com/ko-kr/windows/win32/winsock/windows-sockets-error-codes-2Github C 로 구현한 IOCP 비동기 논블록 서버 : https://github.com/YDYDWang/libiocpsocket/blob/master/sock.c#L335기본적인 IOCP 내용 블로그 : https://narakit.tistory.com/m/category/Computer%20Science%20%EA%B8%B0%EB%B3%B8%20%EC%A7%80%EC%8B%9D/%EC%86%8C%EC%BC%93%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8DAccpetEx 에 대한 마이크로 공식문서 : https://learn.microsoft.com/en-us/windows/win32/api/mswsock/nf-mswsock-acceptexLink : https://drive.google.com/file/d/1s8na3xe-o5nPPb8W6xuLMdl27XRfNChQ/view?usp=drive_link감사합니다 :)
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Unreal과 연동
안녕하세요. 감사하게도, 좋은 서버 강의 잘들었습니다.끝으로 교육해주신 서버소스를Unreal엔진에 연동하기위해서 참고할 자료나 가이드가 있을지 여쭙고자 질문 남겨드립니다.확인 한번 부탁드리겠습니다. 감사합니다. 김준한 드림.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
DBConnectionPool 소멸자에서 오류가 발생합니다..
왜 오류가 발생하는지 이해가 가질 않습니다.GameServer.cpp에서 db내용 넣는부분과 추출하는부분만 확인하려고 return 0; 을해서 바로 빠져나왔는데요 DBConnectionPool이 소멸되는 시점에 Clear 해주는데 이때 WRITE_LOCK을잡으려하는데 Lock이 없어지는 거같습니다 코드 그대로 복사해봐도 동일한 오류가 나오는데 이유가 있을까요? main에서 return을 중간에해서 종료하는건 지금만든 서버 에서는 할필요가 없을거 같긴한데요 찝찝한 느낌이 있어서 질문 드립니다..
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
30 : 10 서비스로 서버를 뛰운다는게 어떤 말인가요?
다른 외부의 요청으로 서버를 뛰우게 된다는 말로 이해하면 될까요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
volatile bool ready 질문입니다
main쪽 ready=false로 둔 상태에서 t1을 먼저 만드는데,t1이 생성된 후t2가 만들어지기전에 ready를 true로 하지말아줘 이런 목적일까요??쓰레드 생성 후 ready = true를 무시하고 바로 ready에 true를 넣으면 어떤문제가 발생하는 걸까요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요. part5계획은 언제정도 일까요??
생각중인 시기가 있는지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
25:27 C_LOGIN패킷에서 Lock을 잡을 필요가 없나요?
게임세션의 _players 에 푸쉬백을 해주고 있는데요 여러스레드가 동시에 푸쉬백을 할 수 있지 않나요? WRITE_LOCK을 잡아줘야 하는것 아닌가요??