묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
세션 = 유저, 서버
세션은 user 또는 연결되는 서버라 생각하면 될까요? 세션 하나당 user나 서버 연결 하나 라고 생각하면 될까요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Completion Port모델 질문드립니다.
IOCP강의를 듣고 실습을 하는 중에 이상현상?이 생겨서 질문 드립니다. 정상적으로 실행되거나 밑에 현상이 생기거나 반복이 되고 있는데 뭐가 문제일까요... 코드는 올려주신것과 똑같습니다! 1) accept만 뜨고 client connected가 안뜨는 경우 (클라에서 송신은 계속 하고있다.) 2) server에서 break point를 잡고 실행하면 client connected도 잘뜨고 수신도 잘합니다. (처음 한두번은 800, 200 이렇게 한꺼번에 데이터를 수신합니다.) 3) 다시 break point를 해제하면 1번과 같은 상황이거나, 정상적으로 처음부터 100씩 수신받는 상황이 랜덤으로 발생
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
StompAllocator에서 Release 함수 구현시.. Offset을 다시 원래 위치로 복구 해줄 필요가 있나요??
StompAllocator에서, void StompAllocator::Dealloc(void* p) { // 이건 Offset을 처리해줄 필요없지만... 그래도 모르니... int64 addressNo = reinterpret_cast<int64>(p); addressNo &= 0xffffffffffff1000; ::VirtualFree((void*)addressNo, 0, MEM_RELEASE); } 이런식으로 페이지 끝단에 위치했던 p를 다시 페이지 시작 지점으로 offset을 지정 해줄 필요가 있나요?? VirtualFree 는 p가 존재하는 페이지 전부를 해지시켜주는데 해당 페이지 끝단에 있던, 시작주소에 있던.. 그 페이지가 날라가는건 똑같은걸로 아는데요 ㅠㅠ
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
coreMacro xalloc 관련 질문입니다.
제가 현재 비주얼스튜디오 2019를 사용하고 있습니다. macro에 xalloc이라고 작성하면 오류가 나서 Xalloc으로 이름을 변경하고 사용하니깐 빌드가 잘 되더라구요. 혹시 이름 변경하고 실습을 진행해도 될지 질문드립니다!
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Type변환이 가능 하다는 기준에 대해서 질문드립니다.
강의를 듣다가 확신이 없어서 질문드립니다. 타입변환을 할 때 가능한지를 판단하는 기준이 각각의 클래스 사이즈를 보고 판단하는 것이 맞나요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
스레드에 대해서 여쭤보고 싶습니다.
스레드마다 개별적으로 코어를 할당받아 자신이 관리하는 영역을 실행하도록 하니 실제로는 하나의 프로그램이지만 실행흐름으로 본다면 다른 프로그램인 것같이 보는게 맞는걸까요 ?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
LNK2019와 LNK2001 에러
LNK2001과 LNK2019가 대량 발생합니다. 프로토 버퍼 라이브러리 문제인가 싶어서 다른 강의에 있는 라이브러리를 옮겨 보고, 프로토 버퍼 솔루션열어서 라이브러리를 다시 빌드해서 교체도 해보았으나 마찬가지입니다.
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
coreMacro.h 에 define xalloc을 할 경우
CoreMacro.h 에서 xalloc을 define해줄 때 std::ios_base에서 xalloc이라는 이름의 함수가 있어서 오류가 나는 것 같습니다. 올려주신 코드를 내려받아서 빌드해봐도 같은 오류가 생기던데 뭔가 다른 문제가 있어서 오류가 계속 생기는 것일까요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
컨텍스트 스위칭에 관해서 질문이 있습니다.
하나의 프로그램은 기본적으로 하나의 스레드를 가지고 있지요. 해당 스레드가 실제로 코어를 할당받아 코드를 실행한다고 알고있습니다. 선점형 운영체제인 윈도우에서는 어쩔 수 없이 타임 슬라이스 만큼 스레드에 CPU 코어를 할당하고 회수해 간다는 것으로 알고있는데요. 그렇다면 스레드는 현재까지 실행한 코드 프로그램 카운터와 같은 다양한 레지스터 값을 저장하는 자료구조 정도로 이해하는 것이 옳은것인지요 ? 각 프로그램 마다 코드를 실행하는 스레드에서 각 코어를 할당받았을 때 실행해야 할 주소 번지를 저장하고 있어야 되니까 이렇게 추론을 해봤는데... 어떻게 접근하는게 옳은지 알고싶습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
빌드 에러
프로젝트 다운받아서 실행시키면 위와 같은 에러가 발생합니다. pre-build event 때문에 발생한 에러인가 싶어서 pre-build event를 없애면 아래와 같은 에러가 발생합니다. 서버 코어 라이브러리는 정상적으로 빌드 되는것을 확인했습니다.
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
원자적 연산 질문
atomic연산에 한해, 모든 쓰레드가 동일 객체에 대해서 동일한 수정 순서를 관찰하는 말이.. 0,2,3,39,9,10,7 순서로 다중쓰레드를 이용해서 바뀔 A데이터가 있을때 마지막 A데이터를 이용했을때가 2인상황에서 몇프레임지난후 현재상황에서 A데이터를 변경해준 쓰레드들중 마지막에 9라는 값을 넣어줬주고 A데이터의 값을확인하면 무조건 9라는 값이 나오는것이 아닌 2이후 3,39,9중 하나가 나올수있다는 건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
mutex 라이브러리는 busy waiting이 기본인가요?
제목과 같습니다. mutex 라이브러리를 이용한 강의 내용의 mutex m은 기본적으로 busy waiting이라고 말할 수 있나요? 뒷 강의 내용에서 나오는 mutex 변수를 Spinlock 구조로 되어있다고 이해해도 문제가 없는걸까요? (강의내용 11분 50초경) 이번 강의에서 t1과 t2가 Push를 하게 될때, 만약 t1이 lock을 붙잡고 있으면, t2는 Context Switching 이라거나 Event 방식으로 기다리지 않고 Busy waiting 하는것인지 궁금해서 문의 남깁니다. 제가 구글링을 통해 찾아본 해외 자료 느낌에서는 윈도우 환경과 VS에서 코딩하는 경우 Busy waiting을 하지 않는것처럼 나오는데, 만약 그렇다면 이것이 뒷 강의에서 설명하는 Lock 구현 방식중 2번의 Context Switching인건지 3번의 Event 방식인지도 궁금합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
send 에 lock걸어 주는 것에 질문있습니다.
wsasend가 멀티쓰레드환경을 보장하지 않아 lock을 걸어준다고 하셨는데 어떤부분을 보장하지 않는 건가요? 버퍼문제라면 혹시 이번 수업의 코드는 임시로 event마다 독립적인 버퍼를 가지게 했으니 lock을 안걸어주어도 되나요? wsarecv 는 멀티쓰레드환경에서 문제가 발생하지 않나요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
future에서 deferred를 사용하는이유
future타입을 deferred로 하면 future를 get하는 시점에 future에 바인딩된 함수를 호출한다는건데 그냥 get하는 시점에 해당함수를 바로호출하면 되는거 아닌가요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
WSAWaitForMultipleEvents 에 대해 약간 궁금한 것이 있습니다.
조금 이해를 못한 부분이 있습니다. while문을 돌면서 WSAWaitForMultipleEvents에 도달했을 때 timeout 조건을 WSA_INFINITE로 걸게 되면 이 지점에서 block되는 것과 같아지나요? 그러면 비동기 논블락 소켓을 사용하는 이점이 사라지게 되는 것인지 문득 궁금해졌습니다. 더불어서 혹시 취업 특강은 다음 주에 나오는걸까요..? ㅎㅎ
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
GSessionManager관련 생성 순서에 문제가있는것같습니다
GSessionManager를 전역변수로 추가하면서 allocator한 초기화(pool)가 안된 상태로 session의 set stl할당을 시도하게되어 문제가되는것 같습니다. 다만 Stomp allocator를 사용하는경우는 pool을사용하지않아 잠재적문제가있음에도 넘어가고있는것같아요. 따라서 세션매니져생성시점이 CoreGlobal이 초기회된뒤여야할것 같습니다
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
TypeConversion 부분 관련
위의 내용이 필요 없을 것 같아서 지워보았는데 에러가 발생하네요. 바로 위에있는 class TypeConversion 내부에도 존재하는 것을 외부에 추가로 선언해야 에러가 발생하지 않는 이유가 무엇인가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
InterlockedCompareExchange64관련 문의드려요
안녕하세요. 아래 InterlocekdCompared64로 설명해주신 부분들은 실제로 사용된다면 아래와 같이 수정되어야 할것 같은데 맞나요? while (::InterlockedCompareExchange64((int64*)&header->next, (int64)entry, (int64)entry->next) == 0) { } ==> while (::InterlockedCompareExchange64((int64*)&header->next, (int64)entry, (int64)entry->next) != entry) { entry->next = header->next; }
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
16바이트 정렬이라 마지막 4자리가 0000이라는건 무슨 뜻인가요?
삭제된 글입니다
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
질문있습니다
queue와 stack을 헤더파일에 구현을 해놓으셨는데 이런 자료구조?객체 같은경우는 cpp파일이 아닌 헤더파일에 구현을 하는게 일반적인 가요? 그리고 lockguard 객체는 lock을 잡지 못하였을때 spinlock형식으로 작동하나요?