월 66,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
질문이 있습니다.
이 방법의 한계로 이미 만들어진 클래스 대상으로 사용 불가를 이유로 들어주셨는데요 외부 라이브러리를 사용하더라도 헤더파일과 라이브러리가 있기 때문에 외부 라이브러리에서 특정 클래스(Ex. RefCountable)를 상속해서 사용해주세요 가 가능하지 않나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
struct OverlappedEx질문
안녕하세요 루키스 강사님 저가 C++ 기본강의 중 타입변환 부분도 같이 들으면서 보고있었는데 갑자기 여기서 깨달음을 얻어서 제가 이해한게 맞는지 여쭤봅니다 13:20 여기서 OverlappedEx구조체를 만들면서 WSAOVERLAPPED를 넘겨주기 전에, 이걸 구조체 하나를 생성해서 맨 앞으로 옮긴 이유가 OverlappedEx의 맨 처음 주소가 WSAOVERLAPPED로 오게 해서 나중에 구조체 형변환을 통해 접근 가능하도록 어찌보면 편법을 쓴거같은데 저가 이해한게 맞나요? 그리고 위 사실이 맞다면 IOCP로 보낼수 있는 데이터는 총 두가지 1. 소켓을 IOCP에 등록할 때 넣는 Key값(Session....) 2. OverlappedEx에 있는 event외 각종 정보들(WSAOVERLAPPED, type ....) 여 여기서 2가 가능한 이유는 구조체 첫 주소가 결국 첫번째 변수를 가리키는 것이고, 다음 변수들은 첫주소를 구조체로 변환만 하면 접근 가능하므로 약간의 편법을 쓴 것이다?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
promise 질문있습니다
마지막 쯤에 "결과물을 promise를 통해 future로 받는다."라고 하셨는데, 여기서 결과물이란게 헷갈립니다. 그래서 제가 이해한게 맞는지 확인하고 싶습니다. 저는 "쓰레드에서 실행한 함수의 결과물을 promise를 통해 future로 받는다"로 이해했는데 맞을까요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요. 좋은 강의 너무나 감사합니다!
먼저 이런 좋은 강의 남겨주셔서 너무나 감사드립니다. 1. DirectX를 조금 더 깊게 공부하고 싶은데 11과 12중에 어떤것을 배우면 될까요?? 2. 일하는 시간대가 학원과 시간대가 안맞아서 그런데 DirectX 를 공부할 수 있는 책이나 온라인 강의 추천해주시면 정말정말 감사하겠습니다! 3. 혹시 DirectX에 대한 정보를 얻을 수 있는 커뮤니티가 있을까요?? 4. 그리고 Node.js를 배우는데 책이나 온라인강의 추천해주시면 감사하겠습니다!
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
패킷 직렬화 관련 질문입니다.
패킷 직렬화 강의에서 >>, << 연산자를 오버로딩하여 구조체에 직접 쓰고 읽기가 가능했는데 이렇게 클래스나 구조체 등을 바이트 스트림 형태로 누른것만 직렬화라 부르나요? 패킷 직렬화 강의 전의 서버 클라 간 데이터 송수신 과정(단순 문자열 송수신) 직렬화가 아닌것인지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
CreateSession 질문드립니다
SessionRef session = _service->CreateSession() SessionRef Service::CreateSession() { SessionRef session = _sessionFactory(); session->SetService(shared_from_this()); if (_iocpCore->Register(session) == false) return nullptr; return session; } iocpcore->Register로 가게되는데 AcceptEx 진행전이여서 Socket등록이 되어 있지 않을텐데 bool IocpCore::Register(IocpObjectRef iocpObject) { return ::CreateIoCompletionPort(iocpObject->GetHandle(), _iocpHandle, /*key*/0, 0); } 를통해서 IOCP등록이 어떻게 가능한지를 잘모르겠습니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
connect 질문
안녕하세요 루키스 강사님 connect를 바로 성공한다는 보장 없는 상황인데, 심지어 논블로킹이라 그냥 통과해서 connect가 SOCKET_ERROR를 낼 수 있고 이 에러는, connect도중이라면 WSAEWOULDBLOCK일 것이니 이런 경우는 continue를 통해 시간 벌어주고, continue로 한번 돌았다면 다시 연결되는 것이니 WSAISCONN 상태가 될 것이므로 break로 빠져준다 제가 이해한 게 맞나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Lock과 interupt관련 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 1. 만약 A thread에서 오래걸리는 함수에 mutex lock을 잡아두고 time slice나 각종 인터럽트 핸들링을 통해서 컨텍스트 스위치가 일어나게 되고, 다른 모든 쓰레드가 A thread가 lock 잡아둔 그 함수 내부의 공유변수를 갖다 쓰고 싶어서 mutex_lock.lock()을 호출하기 위해 기다리는 상황이라면, OS 스케쥴러를 통해서 리소스가 넘어가도 모든 다른 쓰레드가 mutex_lock.lock()이 되지 않아 cpu 리소스를 받자 마자 바로 yield하고 A thread로 다시 돌아오게 되는건가요? 2. (1과 비슷한 질문이긴 하지만..궁금해서요ㅠㅠ) spin lock이 아닌 그냥 mutex lock을 썼을 때, B라는 다른 thread가 해당 mutex 변수를 가지고 lock 걸었으면, A thread는 mutex_lock.lock()을 호출하는 구문을 실행하는 부분에서 바로 cpu리소스를 반환하게 되나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
데드락 질문드립니다
밑에 질문에서 실무 프로젝트에서는 딱히 데드락을 탐지하는 코드는 넣지 않는다고 하셨는데 면접때는 데드락을 해결하는 방법에서 영상과 같은 코드단계의 해결방법을 묻는건지 아니면 보통 운영체제에서 말하는 데드락 해결방법(예방,회피,검출,회복..)같은걸 물어보는지 궁금합니다. 포트폴리오를 만들때는 생각보다 락을 잡을일이 많지는 않아서 여쭤봅니다. 다음주 면접인데 공부할게 너무많ㄴ네요..
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
소켓생성개수 추가 질문
https://www.inflearn.com/questions/335499 위 소켓 생성 갯수 관련 질문에서 포트 수가 제한적이라 서버 여는 건 제한이 있고 클라이언트는 메모리/IO/CPU가 버티는 한 무수히 많은 수가 접속가능햇다고 하셧습니다. https://www.sysnet.pe.kr/2/0/12350 https://okky.kr/article/425253 근데 여기에서는 또 제한이 있다는 식으로 말하는데 제가 잘못이해하고잇는건지 궁금합니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
BroadCast 관련 질문입니다.
1. 해당 예제에서 만약 클라와 서버가 5개의 세션을 맺었을 경우 클라에서 BroadCast로 서버에 1,2,3,4,5 세션에 보낼 경우 서버쪽에서 각 세션마다 Room에 있는 멤버에게 BroadCast를 해주게 됩니다. 그럼 결국 클라가 자기 자신이 1번 메세지를 보내면 서버로부터 5번 받는 구조 아닌가요? 2. VirtualAlloc 함수의 메모리 할당 영역은 힙맞나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
오버로딩 new
오버로딩 new가 궁금합니다 매개변수로 타입 size_t인데 어떻게 생성자로 new Knight()가 받아지는건가요? 디어셈블리에서도 해당 크기가 받아지는데 그 부분이 왜그런지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Casting 과련 질문입니다
선생님 강의를 수강중인 학생입니다. 상속관계에서 캐스팅시 업캐스팅 다운캐스팅에 상관없이 reinterpret_cast 또는 static_cast, static_pointer_cast를 사용하시는데 dynamic_cast를 사용하시는 것은 거의 보지 못하였습니다. 제 기억으론 아마 한번도 못본거 같은데요... 1. 상속관계에 있는 클래스간 dynamic_cast를 사용하라는 말이 있는데 잘 사용안하시는 이유가 있나요? (제가 놓친 부분이 있을 수도 있으니 양해부탁드립니다.) 2. 상속관계 캐스팅시 업캐스팅은 비교적 안전하니 비용이 적게드는 static_cast, 다운캐스팅은 위험하니 dynamic_cast를 사용하는 것은 어떤가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
왜 DeleteNodes() 만 static method 인가요?
static method는 인스턴스 없이 클래스 이름만으로도 메서드를 부를 수 있게 해주는 걸로 알고 있는데, DeleteNodes()를 그런 식으로 사용할 이유는 없어 보여서 의도가 궁금합니다!
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
VirtualFree 함수 질문입니다.
Release 함수에서 baseAddress를 구할때 [ <------offset-----------> [ 할당영역 ]] 0 -------------------------↑address 4095 만약 page가 1개만 할당되었을 경우 offset을 구하려면 위와 같이 0~4096 주소 범위라면 address 값 자체가 3000이면 address%page_size =3000 이고 address -3000=0 으로 baseAdress를 구하는 것은 이해가 되는데 막상 데이터를 보면 address는 8바이트의 임의의 숫자입니다. 0~4095,4096~8191 과 같이 주소값 자체가 PageSize로 나타나는 것이 아닌데 address%page_size 가 offset을 나타내는게 가능한가요? baseAddress부터는 4096씩 할당 받는다해도 이전의 주소가 임의의 값 아닌가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
pyinstaller가 설치되어있는데
pyinstaller가 설치되어있는데 배치파일돌릴떄 인식을 못하네요..
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
RW락 질문입니다.
강의 재미있게 듣고있는 학생입니다. 질문이 있어서 질문드립니다.. 1. (lockThreadId == LThreadId) 이게 거짓이면 lockThreadId는 항상 0이 맞나요? 2. WriteLock이나 ReadLock에서 expected를 정의하는 부분이 while문 밖으로 나가도 상관이 없을까요? 감사합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
소켓프로그래밍 질문드립니다.
현재 락프리까지 듣고 소켓프로그래밍이 궁금해서 바로 넘어 왔는데 현재 게임서버쪽이 ws2에러가 재정의 에러가 나서 질문드립니다. 현재 msdn으로가서 오타도 확인하고 안되서 루키스님의 소스도 복붙했는데 제 visual에서 에러가 발생하는데 혹시 threadmaanager 강의쪽에서 추가하신 것이 있어서 그런건가요? 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
스마트 포인터 삭제
제가 스마트포인터를 해제를 잘못해줫는지 세션이 소멸이 안됩니다. 추적을 하고싶은데 어떻게 추적하는지를 모르겠습니다.세션쪽 코드만 컨트롤 cv로 가지고와도 세션 소멸자 호출이안되네요 ㅜㅜ
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
AcceptEx 질문있습니다.
AcceptEx가 실패가 나는 경우 즉 , AcceptEx호출 자체가 false가 나고, 이때 GetlastErrror가 WSA_IO_PENDING이 아닌경우나 , AcceptEx의 호출로 IOCP 에서 Pending중일때 모종의 이유로 GQCS에서 AcceptEx pending에 대한 실패가 리턴되는경우 listen socket이 close되었거나, 어찌되었든 더이상 유저를 받지못하는 상황일 수 있는데 이럴때 서버에 강제로 CRASH를 내도록 해도 될것같은데, 혹시 이렇게 하면 안될 이유가 있을까요?? (AcceptEx를 호출할때 close된 session 소켓을 전달하는 경우는 없고, AcceptEx의 호출결과로 IOCP 유저접속을 대기중인상태(Pending)일때 session socket이 close되거나 session이 삭제되는 일은 일체 없다고 가정합니다. 물론 listen socket은 닫힐 수 있지만, listensocket이 닫히면, 서버를 유지시켜줄 이유가 없다고 생각되긴 합니다.)