묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
Static UserManager um을 포인터로 만들어서 리턴 하면 안되는 이유가 궁금합니다.
아래의 코드와 같이 포인터로 변수를 만들어줘서 넘겨주면 AddUser() 함수를 부를때 '_userCount' 올려주는 변수에서 '액세스 위반 this가 nullptr 입니다.' 라고 뜹니다.그 이유가 객체를 생성해 주지 않았기 때문에 'nullptr'이 생성 되는 건가요? 이해가 잘 되지 않는 부분이 static 함수를 부를 때 변수를 초기화 되어 전역 변수로 사용되는데, 포인터는 객체가 생성되지 않는 것 같더라구요.그래서 new UserManager( ) 를 통해 동적 할당을 하니 객체가 하나씩 생기는 문제가 발생하고, static 메모리와 동적 할당 되는 메모리 위치(?), 특성(?)이 달라서 생기는 문제인가 싶습니다.public: UserManager() :_userCount(0) {} static UserManager* GetInstance() { static UserManager* um = new UserManager(); um->_userCount = 0; return um; } 주저리 주저리 궁금한 내용을 적다보니 제대로 설명했는지 모르겠네요... ㅡㅜ 답변해 주신다면 감사하겠습니다. 혹시 몰라 _userCount를 생성자로 초기화 시켜줬습니다.class UserManager { public: UserManager() :_userCount(0) {} static UserManager* GetInstance() { static UserManager* um = nullptr; return um; } public: void AddUser() { _userCount++; } int GetUserCount() { return _userCount; } private: int _userCount = 0; };
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
리소스 파일 경로
강사님 혹시 제 코드와 강사님 코드를 비교하려고 파일을 다운받았는데요 리소스파일 이미지 경로가 틀려서 확인을 못하는데 혹시 어디서 변경할 수 있는지 알 수 있을까요? 오류는 계속 이렇게 뜹니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
TCP 연결 종료과정 TIME_WAIT
TCP 연결 종료과정에서 (4-way handshaking), TIME_WAIT 를 최대한 줄이기 위해서 client가 active 하게 종료를 하자고 하는건 이해를 했습니다. 그러면 server 입장에서는 TIME_WAIT가 없는데 socket 회수를 언제하는지 궁금합니다. client 의 마지막 ack를 받고 바로 socket 회수를 하나요? 그러면 client도 server에게 마지막 ack를 보내면서 바로 socket 회수를 하면될텐데 TIME_WAIT의 존재의의가 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
데디케이티드 서버 관련 질문
안녕하세요, 강의 관련 질문은 아니지만 궁금한 점이 생겨 질문 올립니다. 개인 프로젝트로 TPS 생존 게임을 제작하려 합니다. 한 경기에 10명 내외의 클라이언트가 접속할 예정입니다.언리얼 엔진에서 제공하는 리슨 서버와 데디케이티드 서버 중 어떤 방식이 알맞을까요?만약 데디케이티드 서버가 알맞다면 리슨 서버에서 구현했던 if(Hasauthority()) 등의 로직들은 제거해주면 되는 것인가요? 만약 데디케이티드 서버로 구성하면 어디서 클라이언트의 데이터 검증을 하게 되는지 등 리슨 서버와 어떻게 다르게 구성해야 하는지 잘 와닿지가 않습니다. characterplayer.cpp 등에 작성한 코드 자체가 서버 로직임과 동시에 클라이언트 로직인 것인지.. 인터넷에는 데디 서버를 구축하는 방법만 나와 있어서 여쭈어 봅니다. ++) 그리고 게임을 제작할 때 BP와 C++을 혼용해도 상관 없을까요? 강의는 전부 C++로 진행되어서 웬만하면 C++로 제작할 예정이지만, BP를 혼용하여 사용하는 것에 있어서 주의점 등이 있는지 궁금합니다.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강연장 부탁드립니다..!
안녕하세요. 최근 취뽀하고 다시 AWS를 만질일이 생겨 공부하려고 하는데 수강 기간이 거의 끝나가네요.송구스럽지만 수강 기간 연장을 요청 드립니다.감사합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
패킷을 만들 때 사용되는 IP, PORT 정보가 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]웹 브라우저 요청 흐름에 대해 제가 이해한 순서입니다.요청이 들어오면 DNS에서 조회해 IP, PORT를 얻는다.IP, PORT를 바탕으로 HTTP 요청 메시지를 생성한다. TCP/IP 패킷을 생성하여 서버로 전달한다.(전송계층에서 PORT 정보 추가, 인터넷계층에서 IP 정보 추가)이 과정에서 TCP/IP 패킷을 생성할 때의 IP 주소와 PORT 번호는 어디서 가져오는지 의문이 들었는데요, 1번 DNS에서 조회해 얻은 IP, PORT를 각각 전송계층, 인터넷계층에서 헤더 값으로 추가해주는 것인가요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
knight 기본생성자
knight에 기타 생성자를 만들어 주면, 기본 생성자를 사용 할 수 없다고 했는데, 새로운 knight를 만들어 주어 기본 생성자를 이용하니깐 잘 만들어 지더라구요.제가 잘 못 이해 하는걸까요?같은 객체일 경우 기본 생성자가 실행이 안된다는 말씀 일까요?새로운 객체면 상관 없는거구요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
UE MMO 콘텐츠 구현은 언제쯤 출시 예정이실까요?
C# 서버 듣고 돈이 안아까워서C++서버랑 게임도 붙여보고 싶습니다.UE MMO 콘텐츠 구현은 언제쯤 출시 예정이실까요?올해 말까진 출시됐으면 좋겠는뎅
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
데디케이티드 서버 개발 문의
현재는 리슨 서버로 개발하고 있어서 서버 클라 코드가 동시에 들어가지만데디케이티드 서버 개발은 서버 코드만 있으면 되기 때문에 더 편리하다 라고 하셨는데이게 머릿속에 잘 그려 지지가 않습니다 ㅠ 데디케이티드 서버 개발 방식이라는게아예 프로젝트를 분리해서 서버와 클라를 구분해서 개발 하는 것으로 생각 해야 할까요?(예를 들어 캐릭터 액터의 경우를 보면 같은 이름의 ABCharacter.h & cpp 파일이 있지만 안의 내용은 다르게 (어떤건 같은 내용) 되어 있다고 생각해야 할까요?)아니면 프로퍼티 리플리케이션의 경우는 콜백으로 OnRep_ 함수가 클라이언트 측에서만 실행 할 수 있는 걸로 나오는데, 이렇게 되면 애초에 서버 클라가 분리된 형태로 볼 수 있고, 이를 기반으로 프로퍼티를 바꾸는건 서버 코드, OnRep_ 콜백 함수는 클라이언트 코드 로 해서 각 파트가 개발 하는 방식이 데디케이티드 서버 개발 방식일까요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
[문자열] 강의 부분에서 StrCpy함수 포인터로 구현 하는 부분 질문 있습니다.
글로 질문은 처음이라 두서 없을 수 있다는 부분 양해 부탁 드립니다. char* StrCpy(char dest, char src) 함수에서 char * ret = dest; 선언을 통해 기존 원본 위치값을 저장해 주는것은 알겠는데,while문이 다 돌고 나서 'dest'의 값을 확인해 보면 문자열이 없는 것을 데이터를 확인 하여 알았습니다.그 이유가 'dest++'을 통해 포인터의 시작 위치 값을 변경해 주어서 값이 없는 주소 부분을 가르키기 때문에 'dest'의 데이터가 아무것도 없는 것이 맞을까요? 그렇기 때문에 원본 데이터에는 정상적으로 들어있고,함수내에서 'dest'의 주소 시작점이 뒤로 밀려나 데이터가 없다고 판단해도 되는지 궁금합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Queue가 비어있을 때, TryPop 질문입니다.
shared_ptr<T> TryPop() { // [data][data][ ] // [head][tail] CountedNodePtr oldHead = _head.load(); while (true) { // 참조권 획득 (externalCount를 현시점 기준 +1 한 애가 이김) IncreaseExternalCount(_head, oldHead); Node* ptr = oldHead.ptr; if (ptr == _tail.load().ptr) { ptr->ReleaseRef(); return shared_ptr<T>(); } // 소유권 획득 (head = ptr->next) if (_head.compare_exchange_strong(oldHead, ptr->next)) { T* res = ptr->data.load(); // exchange(nullptr); 로 하면 버그 있음! FreeExternalCount(oldHead); return shared_ptr<T>(res); } ptr->ReleaseRef(); } } static void IncreaseExternalCount(atomic<CountedNodePtr>& counter, CountedNodePtr& oldCounter) { while (true) { CountedNodePtr newCounter = oldCounter; newCounter.externalCount++; if (counter.compare_exchange_strong(oldCounter, newCounter)) { oldCounter.externalCount = newCounter.externalCount; break; } } }void ReleaseRef() { NodeCounter oldCounter = count.load(); while (true) { NodeCounter newCounter = oldCounter; newCounter.internalCount--; // 끼어들 수 있음 if (count.compare_exchange_strong(oldCounter, newCounter)) { if (newCounter.internalCount == 0 && newCounter.externalCountRemaining == 0) delete this; break; } } }TryPop을 할 때는 ExternalCount를 증가시키는데head와 tail이 같을 경우에는 internal 카운트를 감소시키고 return 합니다.만약 push가 없고 pop만 반복된다면, ExternalCount는 계속 증가하고internalCount는 계속 감소하는것같은데 맞나요? externalCount 와 internalCount가 일정해야하는게 옳은 결과값 같아서 질문합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
vector 생성시 메모리 참조 오류가 납니다
stomp allocator를 적용한 vector를 생성시에 내부에서 아래와 같이 1바이트를 할당하는데 그이후에 쓰기 액세스 오류가 발생합니다.memory, allocator파일 그대로 받아서 넣어도 동일합니다 ㅠ
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
서브넷 마스크 (0.0.0.0)
안녕하세요. 널널한 개발자님만약 서브넷 마스크를 0.0.0.0으로 설정하면 network ID가 모두 동일한 것으로 취급될 텐데이 경우 네트워크 통신 효율이 나빠지는 건가요? 추가로 서브넷 마스크를 0.0.0.0으로 설정하면 PC로 들어오는 모든 패킷을 수신 받을 수 있게 되나요?감사합니다.
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
움직임 리플리케이션
안녕하세요, 그러면 Listen Server로 저희 예제를 작동시킬 때 CharacterMovementComponent에서 자동으로 캐릭터 네트워크 움직임들을 앞서 살펴본 소스코드의 과정을 통해 보완 및 이동 시켜주고 있다고 보면 되는거겠죠? 그런 것 같지만 확인차 질문드려봅니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Lock-Free Stack #3 compare_exchange_strong 사용이유
void IncreaseHeadCount(CountedNodePtr& oldCounter) { while (true) { CountedNodePtr newCounter = oldCounter; ++newCounter.externalCount; // 카운터가 정상적으로 1 증가할때까지 실행 if (_head.compare_exchange_strong(oldCounter,newCounter)) { oldCounter.externalCount = newCounter.externalCount; break; } } } while의 조건문에는 언제나 compare_exchange_weak를 사용했는데while문 내부의 if에는 compare_exchange_strong을 사용한 이유가 궁금합니다.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
Aws 엔드포인트의 종류
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. https://docs.aws.amazon.com/ko_kr/general/latest/gr/rande.html#view-service-endpoints이 엔드포인트는 VPC 엔드포인트와 같은건가요? 다른건가요?다르다면 이렇게 이해해도 될까요? 서비스엔드포인트-Custom vpc가 없는 서비스를 생성할때 디폴트로 생성되는 인터넷 기반의 서비스 진입지점 vpc엔드포인트-서비스 엔드포인트를 인터넷 통신없이 접속하기 위해 추가로 생성하는 서비스 진입지점. private ip를 갖는 eni와 연결.한 vpc 안에 여러 개의 엔드포인트(ex s3 sts kms sagemaker lambda apig/w등)를 생성하는 경우 여러개의 eni 필요함 만약에 vpc endpoint를 공통계정에 통합하면 어떻게 되는건가요? 공통계정의 vpc endpoint는 dns역할을 하고 세부 서비스는 각각의 상세 서비스로 가나요??ex endpoint *.vpce.kms.aws.amazon.com common account
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
WriteLock이 Empty_Flag일때만 가능하다면...
a스레드에서 ReadLock 사용하고b스레드에서 WriteLock을 사용하면 대기가 되는데(Empty_Flag가 아니니깐)ReadLock은 Write_Mask만 없으면 계속 들어올 수 있으니끝임없이 ReadLock이 발생된다면 대기 중인 b스레드는 언제 WriteLock이 진행되나요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
REST API 와 RESTful API에 대해
안녕하세요 강사님,항상 유익한 강의들 감사합니다.강사님 강의들로 인해 많은 걸 배우고 있어요.수업을 듣던 중 한가지 궁금한 점이 있어 글을 남깁니다.RESTful API 는 강사님의 설명 덕분에 너무 잘 알겠는데.. REST API 는 무엇인가요? 그리고 RESTful API 와 REST API 의 차이점이 무엇인가요? 항상 감사합니다. Best regards,Minji Kim
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
강의 연장 요청 드립니다
안녕하세요 강사님우선 좋은 강의 감사드립니다수업 진도를 많이 못나간 상황이여서요 혹시 강의 연장 가능할까요?감사합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
컨트롤 uri 질문있습니다
컨트롤 URI라는 것 자체가 하나의 "uri 작명 방법론"(?) 인 거죠?? 가독성을 위해 최대한 명사 중심으로 하되, 정 안된다면 동사를 넣어도 된다는 것이 컨트롤 uri 설계라고 이해했는데 맞는걸까요 ???