월 66,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
object에서 staic 함수의 목적이 궁급합니다
Pop / Push /MakeShared 와 같은 함수들을 static으로 따로 분리하는 이유가 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
컨텐츠 코드를 자식클래스로 분리하는 이유가 무엇인가요?
Server를 대표하는 ServerSession, Client를 대표하는 GameSession등으로 나누었고 내부에 네트워킹 이후에 이루어지는 동작들(OnRecv, OnConnect, OnSend, OnDisconnect 등) 으로 코드를 분리하셨는데 혹시 이렇게 나눈 이유나 효과가 무엇인지 알수있을까요? 실제로 다른 IOCP코드를 보니 이렇게 나눈 코드가 정말 많더라구여, 그 이유나 효과에 대해서 감이 잘 안와 질문 여쭤봅니당
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
언리얼 클라와 실습 IOCP 서버를 연동하는 법을 알고 싶습니다.
안녕하세요 선생님, 자체 제작한 IOCP서버와 언리얼 엔진으로 만든 클라의 연결법을 배우고 싶어 이번 강의을 구매하게 되었습니다. 제가 전에 구현 해봤던 SFML을 이용한 간단한 2D게임은 기존의 클라이언트 소스에 서버와 비슷한 방법으로 소켓을 선언 후connect/send / recv 하는것으로 서버와 통신이 가능 하였습니다. 하지만 언리얼 기반 클라에 경우 따로 서버 기능도 가지고 있으며 기존 c++ 코딩 스타일과는 다른 구조를 가지고 있어 어디서 클라이언트 소켓을 선언하고 연결해야할지 감이 잘 안옵니다. 때문에 혹시 강의 내에 iocp 서버 실습 코드와 언리얼 엔진으로 만든 클라을 연결 하는 내용이 강의에 나오는 지 궁금하여 문의 남깁니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
여러 클라이언트 연결 상태에서의 질문이 있습니다.
만약 클라이언트 10대가 서버에 다음과 같이 연결된 상태라 가정하고 [A][][][][][][][][][B] A,B가 끊임없이 서버에 데이터를 넘긴다고 가정했을 때 WSAWaitForMultipleEvent는 이벤트가 발생한 첫번째 주소만 반환한다 하면, 수업 코드에서는 [A]만 계속해서 처리가 되고 [B]는 영원히 처리가 안되는 문제가 발생할 거 같습니다. 이벤트가 발생했을 때 추가로 발생한 다른 이벤트에 대한 처리는 안 해줘도 무관한 것인가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
메모리 테이블 질문드립니다
vector<MemoryPool*> _pools; // 메모리 크기 <-> 메모리 풀 // 0(1) 빠르게 찾기 위한 테이블 MemoryPool* _poolTable[MAX_ALLOC_SIZE + 1]; 이부분에서 결국에 _pools도 = pool을 할당하고 _poolTable도 크기에 맞게 = pool로 할당하면 _poolTable로 통합해서 사용하면 안되는지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Boost asio 강의가 너무 듣싶습니다ㅠ
루키스님 안녕하세요 ~! Boost 라이브러리 강의도 개설해 주시면 듣고싶습니다~! 책도 시중에 나온게 없더라구요... 특히 asio 부분 강의해주시면 얼마라도 듣고 싶습니다ㅠ
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
락프리큐의 oldTail = _tail.exchange(dummy) 의 의미
안녕하세요. 강의 정말 도움 많이 되고 있습니다.그래서 빠짐없이 가져갈려고 노력 중이에요! 질문 본론으로, oldTail 자체가 이미 이전 _tail을 지니고 있는데,왜 저 부분에서 다시한번 oldTail = _tail을 받는지 모르겠습니다.제 생각이 맞다면 exchange 없이 store로도 되야하는데,메모리가 줄줄 새더라고요.. ㅠㅠ(2푸쉬,3팝 테스팅)락프리큐는 10번 넘게보고, 현재 마지막으로 논리대로 재구현 해보는 중이고,,이것만 이해되면 넘어갈 수 있습니다 ㅠㅠ..
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
크기에 대해 질문이 있습니다
페이징의 최소단위가 4KB로 알려주셨습니다 그럼 클래스의 변수가 아무리 많다고 해도 1000Byte가 넘기 힘들 것 같습니다 그상태에서 최소 페이징단위인 4094Byte를 계속 할당하는 방식으로 하면 말씀하신대로 존재하지 않는 메모리는 쉽게 잡을 수 있지만 메모리 낭비가 너무 심한 것 같습니다 제가 계산을 잘못한 것인지 아니면 생각하는 방향성이 잘못된것인지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Protobuf 관련 질문입니다 !
요즘 실무에서 Protobuf 를 많이 사용하는 추세라고 말씀하셨는데, 게임 개발 기준으로 Json 직렬화를 사용하고 있는 서버, 클라이언트에서Protobuf 를 사용 할 경우 얻을수 있는 장점이 무엇인가요 ? 차이가 많이 나나요 ?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
코드 작성 방식에 따른 강사님의 의견이 궁금합니다!
recvBuffer에서 Clear 함수의 경우 OnRead()이후 반드시 호출해주게 됩니다. 그렇기때문에 OnRead()안에 넣는것도 좋은방법이 아닐까? 생각했는데요. 다만 반대로 생각해보면 OnRead() 또한 결국 ProcessRecv에서만 사용하기때문에 이 부분에만 Clear()을 호출해주면 되기 때문에 코드 가독성 부분에서는 밖에 빼주는것이 이득인가? 하는 생각이 들었습니다. OnRead() 라는 함수 이름 자체에 clear한다는 의미는 없으니까요. 강의에서는 밖에다 작성하셨는데 이런 관점에서 봤을때 어느쪽이 더 괜찮아 보이시나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
u8 한글 문자열 관련 질문 드립니다 !
안녕하세요 추후 강의 출시 기다리다가 제가 언리얼과 서버와 연동작업을 공부 중입니다. 현재 Protobuf 송/수 신 등 작업처리 중인데 ClientPacketHandler.cpp 부분에서 S_LOGIN 패킷에서 auto player = loginPkt.add_players(); player->set_name(u8"DB에서긁어온이름2"); 이부분의 u8 스트링이 언리얼에서는 L"DB??????????????????????????????2" 로 수신이 되는데.. 어떤방식으로 처리해야 할까요 ? 조언 부탁드립니다 !
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
강사님 궁금한 점이 하나 더 생겼습니다..
네트워크를 공부할 때 TCP 연결을 종료하는 4way 핸드셰이크 과정에서 클라이언트는 TIME_WAIT 상태에서 2MSL 만큼 기다렸다가 FIN이 다시 오지 않으면 CLOSED 상태로 이전되어 연결이 종료되는 것으로 알고 있습니다. 2MSL만큼 기다리는 이유는 서버의 FIN을 기다리는 이유도 있지만 동일한 클라-서버의 연결이 바로 재성립되는 것을 방지하여 이전의 세그먼트가 흘러 들어가지 않도록 한다고 배웠는데 이것이 맞는지 궁금합니다. 그런데 이번 강의에서와 같이 SO_REUSEADDR을 지정한다면 위에서 말한 문제.. 예를 들어 이전의 연결에서 발생된 세그먼트가 흘러 들어가는 등의 문제가 발생하지 않는지 정말 궁금합니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Key를 통해 넘겨주는것과 OVERLAPPED를 통해 넘겨주는것의 차이가 있나요?
iocp에서 CreateIOCompletionPort에 Key값에 우리가 원하는 값을 넘겨서 이후에 받을 수 있고, WSASend/Recv에서도 우리가 확장한 Overlapped를 넘겨서 처리할수 있다고 하셨는데 둘의 차이가 있나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
궁금한 점이 있습니다.
AcceptEx, ConnectEx 같은 함수를 그냥 바로 호출하지 않고 굳이 멤버로 포인터를 가지고 있는 이유가 무엇인지 너무 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
질문드립니다
강의를 진행하던중 이러한 현상이생겨 질문드립니다. 코드작성중 template를 사용할시대부분의 내부데이터또는 함수의 자동완성기능이 작동하지 않습니다. 예로 Node까지는 정상작동되나 이후 .으로 접근하려하면 불능이 되어버립니다. 또한 오류도 잡지못하며 빌드를 해도 정상적인 오류표시가 되지않습니다. 강의에서는 정상적으로 작동하는것 같은데 설정문제인가요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Stomp Allocator 사용시 메모리 누수 확인 질문
기존 new를 사용할 때는 진입점에 다음 코드를 입력하면 프로그램 종료시 다음과 같이 메모리 누수를 확인할 수 있었는데요 Stomp Allocator 사용 시에는 위 방법으로 누수 확인이 불가능해져서, 이 방식에서는 어떻게 메모리 누수를 확인할 수 있는지 여쭤보고 싶습니다. 기존 new 가 Crt Allocator을 통해 할당을 받기에 위 Crt 방식으로 누수를 확인할 수 있었던 거면, 저희가 구현한 Stomp Allocator 전용으로 누수 확인 코드를 따로 작성해 줘서 확인해야 하는 걸까요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
구현 방식에 대한 질문입니다.
거대한 데이터를 복사해 가기 위한 Read를 하는 상황에서 Read가 끊임없이 발생한다고 한다면 write에서 전혀 잡을 수 없을것 같습니다. writeLock에서 먼저 락을 잡을때 다른 writeLock이랑만(추가로 ReadLock들이 잠깐 쓰는동안만) 경합을 벌이고 이후 다른 Readlock들이 나갈때까지 기다려주는식의 코드는 어떤가요? 대부분 상황에서는 그런 경우가 거의 없는편인가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
수업을 들으면서 궁금한 부분이 있습니다.
수업을 듣다보니, 느끼는 것은 for문을 사용하면서 int32 로 사용을 하는데, 혹시 그것에 대한 이유가 있을까요??
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
OS별 게임서버
게임 서버를 구축할 때, 윈도우와 리눅스 등 여러 OS를 기반으로 만들 수 있을 텐데, 각각의 장단점이랄까, (구현 관점에서) 공통점-차이점에 대해 설명해주실 수 있나요? 1) 플스5, 엑박과 같은 플랫폼에서 구동되는 게임의 서버, 2) 리눅스 서버를 기반으로 하는 윈도우 게임(?)/모바일 게임 등의 여러 종류의 게임 서버를 생각해 보았는데, 각 게임이 어떤 기준으로 서버가 가동될 OS를 선택하는 지, 궁금해서 질문드립니다 감사합니다!
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
WriteLock 함수의 desired값 초기화 관련 질문
WriteLock() 의 desired변수 초기화할때 LThreadId << 16 연산으로 인해 앞 16비트가 0이라는것이 보장되는데도 WRITE_THREAD_MASK로 &연산을 해준것은 가독성 때문이 맞을까요?