묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
공부 방향에 질문이 있습니다!
원래는 1년 전에 졸작을 만들기 위해 이 강좌를 참고하다가, 당시 수준으론 어려워서 대신 C# 강좌를 통해 유니티를 연동한 멀티플레이 VR 게임 졸작을 완성했습니다. 그러다가 이제 졸작 발표가 끝나고 현재 이 강좌를 보고 있는 중인데, 다만 오랜만에 찾아보니 [게임 프로그래머 입문 올인원]이라는게 있길래 같이 보는 중입니다. 그렇게 두 강좌를 같이 참고해서 보다 보니 이 강좌에서는[게임 프로그래머 입문 올인원] 에선 나오지 않는 여러 디테일한 내용들이 많은 걸 알 수 있었습니다. 일단 졸작에서 C# 서버를 만들어본 덕분인지 MSDN 문서를 참고하면 대충 강좌를 보지 않아도 서버 틀은 만들 수 있게 되었는데, 사실 이 강좌에서 나오는 디테일한 내용들은 여전히 머리가 빙빙 도는 상황입니다. 정확히 말하면 [게임 프로그래머 입문 올인원]의 서버는 어느정도 혼자 할 수 있을거 같은데,이 강좌에서 나오는 디테일한 내용을 혼자 채워넣으려고 하면 힘들다고 해야 할까요. 당장 데드락 사이클을 체크하는 내용만 봐도 알고리즘 공부를 다시 해야 한다는 걸 느끼는 중입니다. 원래 코테용으로 bfs나 dfs를 나름 공부하기는 했지만, 지금 지식으로는 저런 내용을 혼자 만드는 건 엄두가 나질 않습니다. 아무튼 감사하게도 일단 루키스님의 강좌가 있으니 지금은 이걸 보면서 공부하면 되는 것인데, 나중에 취업을 하면 강좌에 나오지 않은 다른 디테일한 내용들은 어떻게 공부를 해야 하는 걸까요? C# 강좌의 마지막에서 나오는 여러 기법들이나 해킹 관련 이슈의 대처법 같은 건 지금처럼 혼자 만든다고 터득할 수 있는게 아닐텐데 말입니다.아니면 취업후에도 따로 학원을 다녀야 하는 걸까요?만약 다닌다면 학원에서 어느정도의 내용을 배울 수 있는 건가요? 루키스님 강좌를 들어보면 중간에 서버 학원에 대한 간략한 언급들이 있던데 말입니다.일단 다음 학기를 마지막으로 졸업인지라, 이번에는 언리얼 포트폴리오 제작을 위해, 다음 강좌가 나오기 전까지 혼자 언리얼이랑 서버 연동을 도전해보는 것도 좋아보여서 해보는 중에 의문이 들어 질문드립니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
페이지 질문
메모리를 페이지 단위로 관리하신다고 하셨는데VirtualAlloc을 통해서 int를 따로 2번을 요청하게 되면 위에 그림처럼 int가 연속적으로 배치되는게 아니라 페이지 단위만큼 떨어지게 메모리가 배치가 되는건가요??만약에 저렇게 배치가 된다면 size를 그대로 넣지 않고 직접 구해서 넣는 이유가 뭔가요??
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
DNS cache에 관하여
선생님! DNS 수업 중에 말씀하신 DNS Cache를 확인해보고 싶어서 봤더니 www.naver.com에 해당하는건 안보이는데 이건 어떻게 된걸까요? 제가 네이버에 접속 후 $ipconfig /displaydns를 했는데 알 수 없는 이상한 이름의 도메인이 뜨네요.
-
미해결아두이노와 떠나는 사물인터넷 여행 - 아두이노 입문부터 IoT 중급까지!
하드웨어 연결을 무한시도합니다
드라이버, CH341(CH340드라이버를 설치하라고 되어있는데 수업 자료에 있는건 341입니다.), 포트 재연결, 다른 포트 연결, 재부팅까지 다해봤는데 포트도 이상이 없고 드라이버 재설치까지 해봐도 안됩니다. 자꾸 하드웨어와 연결을 시도하고 있습니다 라는 문구만 무한반복중이며 일단 강의 내용은 아주 간단한 것 같아 넘어가고 싶지만 연결 자체가 안되면 이후 강의분을 진행할 수 없을 것 같아 질문드립니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Event Vs Condition_Variable
제목 그대로 Event와 Condition_variable의 차이가 단순히 Kernel 이냐 User Level이냐의 차이인지가 궁금합니다. CV에서는 조건을 추가해서 코드상으로 봤을 때, 깔금해지는 것은 알겠는데Event와 동일하게 Producer에서 Notify_one을 실행 하더라도 Consumer에서 바로 Lock을 잡지 못한다면 Producer가 한 번더 실행될 거같은데 이부분은 제가 이해를 못한건지 잘 모르겠습니다. 정리 -> cv를 이용해서 notify_one함수를 호출해도Producer에서 바로 Lock잡아버리는 상황이 발생하지 않나라는것. cv 장점 : 코드가 깔끔해지고, User_Level에서 동작한다. 다른것은 Event와 동일하다? 라고만 이해하면 되는지 궁금합니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
각 계층별 식별자가 필요한 이유가 궁금합니다
L2계층 식별자는 MAC주소, L3계층 식별자는 IP주소, L4계층 식별자는 PORT번호이다를 외우는것까지는 좋았는데짧은 제 식견으로는 저 구분자가 모두 필요한건가 하는 생각이 듭니다운영체제 내부적으로 저 식별자들을 이용하는건가요?혹시 참고할만한 자료나 어떤걸 공부해야할지 알려주시면 감사하겠습니다
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
서버 ip를 모르는 경우
클라이언트가 소켓열어서 tcp통신을 하려고 할 때아예 서버와 연결된적이 없어 서버 ip를 모르는 경우에는 어떻게 하나요>??
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제 1~3 질문
강사님 안녕하세요! 하단의 정성스러운 답변 감사드립니다!현업에는 있지만 Devops가 아니라 물어볼데가 많지 않아, 궁금한것 및 확인하고 싶은것을 정리해서 여쭙습니다... 한번 혼자 찾아보고 이해한되는것을 정리하였습니다. 감사합니다! (질문 뒤에 있는 표시가 "실전문제 - 문제번호에" 해당합니다.) 1.CloudFront는 보통 S3 버킷 앞에 많이 사용되는걸까요? 찾아보니 그런 것 같아서요! (1-2)2.AWS Elastic Beanstalk이 운영 오버헤드가 많이 발생한다는 것을 어떤식으로 알 수가 있는거죠? 그냥 단순히 외워야 할까요..? 그리고 AWS Elastic Beanstalk에서 Lambda 함수를 직접 실행하는건 불가능한게 맞나요? (1-6)3.변경 사항이 발생하는 즉시 새 콘 텐츠를 반환하는 강력한 일관성이라는 말이 결국에는 S3보다 EFS가 더 빠르다는 말씀이신거죠? (1-13)4.CloudFront에서 고 가용성을 위해 오리진 그룹을 통한 장애 조치 기능을 제공하기에 Route 53을 사용할 필요 없다고 나와 있는데, 그럼, CloudFront가 없으면 해당 기능을 적용하기 위해서는 Route53을 무조건 사용해야 하나요? (1-16)5.콘텐츠를 가능한 한 빨리 전 세계 사용자에게 제공해야 되기 때문에, CloudFront가 더 적합한 솔루션인건가요? Amazon Route 53 지리적 위치 라우팅 정책도 해당 기능이 가능하는지만, CloudFront가 더 적합한거죠? (1-19)6.CloudFront는 항상 Public에 있는 것이 맞죠? (2-5)7.정적 자산을 CloudFront로 이동할 수 없는건 이해가 되는데, D에서 정적 자산을 Amazon S3로 이동 Auto Scaling이 활성화된 Amazon Elastic Container Service(Amazon ECS) 컨테이너로 애플리케이션 이동 데이터베이스를 Amazon RDS로 이동하여 다중 AZ 배포가 맞는게 이해가 안됩니다. 문제가 컨테이너랑 관련이 있는지요? (3-20)8.다른 가용 영역에 다른 EC2 인스턴스를 오리진 그룹의 일부로 구성한다는 말이 이해가 되지 않습니다 이 말은 오리진 그룹에 속한 EC2 인스턴스가 여러 가용 영역에 분산되어 있는걸까요? . (3-27)9.D에서 Amazon Route 53 가중 라우팅 정책 생성 리전에서 사용자 수가 가장 많은 EC2 인스턴스에 가장 높은 가중치를 부여하도록 라우팅 정책을 구성이 아니라 가장 낮은 가중치를 부여하도록 하면 해당 질문에 맞는 답일까요? (3-30)
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
소켓 ,TCP/IP 프로토콜
소켓 역시 TCP/IP 프로토콜(커널 구성요소)에 대한 추상화된 인터페이스 (장치)파일이기 때문입니다위 말을 아래처럼 이해해도 될까요??소켓이 인터페이스이고 그걸 구현한객체(?) 중 하나가TCP/IP 프로토콜이다
-
미해결아두이노와 떠나는 사물인터넷 여행 - 아두이노 입문부터 IoT 중급까지!
서보 모터가 작동하지 않습니다.
영상 설명대로 케이블 연결까지 완료하고 uploading 까지 되었는데 서보 모터가 작동하지 않습니다.
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요 Client 를 WinAPI Project로 붙여보려고 하는데
Client의 생성된 Window창 x를 누르면 윈도우 창이 종료되지 않고 Client에서 굳이 Console창을 열어 마우스로 x를 눌러야지만 닫기는데 원인을 못찾겠습니다.. 혹시 짐작갈만한 원인이 있을까요?예상으론 Thread가 Join상태에서 끝나질 않아 발생하는 현상같은데 그럼 강제로 Thread로 생성해뒀던 무한Loop를 강제로 종료하는 방법을 작성해야할까요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
쓰레드매니저 질문
... void ThreadManager::Launch(function<void(void)> callback) { LockGuard guard(_lock); _threads.push_back(thread([=]() { InitTLS(); callback(); DestroyTLS(); })); } ... --------------------------------------------- int main() { for (int32 i = 0; i < 5; i++) { GThreadManager->Launch(ThreadMain); } GThreadManager->Join(); }쓰레드 매니저 예제 코드의 일부인데요, 위 코드에서 다음과 같이 InitTLS();GThreadManager->Join();두 곳에 브레이크 포인트를 걸었는데 신기하게 Join에 먼저 브레이크가 걸리네요. Launch 함수가 순차적으로 실행되고 메인함수의 반복문을 빠져 나온다음에 Join이 걸릴거 같은데요.Launch 함수가 쓰레드 함수라면 그럴 수 있겠지만 ThreadManager 자체는 쓰레드가 아닌데 왜 그런 것인가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요. xdelete 관련 질문이 있습니다.
아래코드에서 xdelete에서 굳이 소멸자를 호출해줘야 하는 이유?가 궁금합니다.강의내용이 new, delete 함수를 재정의해서 사용하는거라서 명시적으로 xdelete를 사용하기 때문에 Knight 소멸자에 객체를 해제하는 코드가 없는것 같은데, 그렇다면 굳이 소멸자를 호출하지 않아도 되지않나요?만약 소멸자에 객체를 해제하는 코드를 구현해 놓는다면 사실상 free를 두번하는거지 않나 싶어서요. template<typename Type> void xdelete(Type* obj) { obj->~Type(); xrelease(obj); }
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
TCP/IP 통신 및 포트에 대한 질문
3 way handshake 과정이 완료되면 서버와 클라이언트가 연결된 상태이므로데이터(HTTP 메시지)가 담긴 패킷을 주고받게 된다. 이때 TCP 계층에선 데이터가 성공적으로 전송/수신됐는지 등을 검증한다고 배웠는데요. 그럼 3way handshake나 수신받은 패킷의 헤더들을 단계별로 확인한 뒤 실제 데이터를 소켓으로 전달하는 작업은 운영체제 관여 하에 이뤄지나요? 클라이언트 애플리케이션은 남은 포트 중 랜덤으로 할당받고(port=0),서버는 80 등으로 미리 지정해서 포트를 받는데 그러면 해당 프로세스의 포트가 정해지는 시점은 소켓을 생성할 때인가요? 프로세스 한개당 반드시 하나의 포트만 할당되나요? (ex: 포트 두개를 바인딩하고서버 소켓을 두개 연다, 한 클라이언트 프로세스가 여러 로컬 포트를 할당받을 수 있다 등이 가능한지..)실제 여러 포트를 할당받을 수 있다면 어떻게 활용되는지 궁금합니다.일반적으로 웹 서비스는 웹 서버(80 포트)와 WAS(8080 포트)로 구성하여웹 서버가 처리하지 못하는 요청은 WAS로 위임한다고 했는데, 웹 서버와 WAS 간 연결에도 http 통신을 사용한다면 웹 서버 프로세스는 기존 80 포트로 바인딩된 소켓을 생성해서 통신하는 것인가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
연결이 유지가 된 상태에서의 자원 소비,
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요! 재밌게 보고 있습니다.50초쯤에 클라1,2,3이 하나의 서버에 연결이 되었을 때, 자원의 소모가 계속하여 발생한다고 하셨는데, 이때 클라쪽에서 요청이 없다면 어떤 소모가 서버쪽에서 발생하고 있는지가 궁금해 질문드려봅니다..! 그리고 TCP/IP로 대부분 통신을 한다고 하셨는데, HTTP 프로토콜을 사용하게 된다면 어떠한 동작에 의해 비연결성으로 바뀌는 건지요??
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
네트워크 통신에 관한 질문...
안녕하세요...!현재 게임 서버 포폴을 만들고 있는데요.TCP 서버와 UDP 서버 두 개를 운영합니다.제 IP는 공인 IP를 사용하고친구는 사설 IP를 사용합니다.TCP 통신을 할 때는 서로 문제가 없었습니다.근데 UDP 통신을 사용하니 제 쪽으로 패킷이 수신이 되는데 제가 (사설 IP 쪽으로) 보내는 패킷은 상대방이 수신이 안됩니다 ㅠㅠ...저는 IP 때문에 문제가 발생하는 것 같은데 혹시 이유가 뭔지 여쭤봐도 될까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
[에러 공유] disposeed object
args.connectedSocket을 socket으로 줄여쓰고 싶어서 이렇게 코드를 짜면 계속 disposed object 에러가 난다. 해결법 : socket변수를 따로 만들지 말고 루키스 선생님의 코드처럼 그냥 args에서 connectsocket을 가져와야된다. https://stackoverflow.com/questions/71450166/when-is-an-object-disposed-if-it-uses-using-and-it-is-being-used-in-a-few-meth 영어가 미숙해서 정확히 이해는 못했지만 { }를 나갔다가 오면 문제가 생기는 듯하다
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Reader-Writer Lock 질문
동일한 쓰레드 내에서 WriteLock을 잡은 상태에서 ReadLock도 잡을 수 있는 것은 이해를 했습니다.그래서 한 쓰레드가 WriteLock도 잡고 ReadLock도 잡은 상태에서 WriteLock를 통해 데이터 수정을 한다면 ReadLock에서는 수정이 되기 전에 데이터를 읽게 되는 것이 아닌가요??예를 들면, WriteLock에서 잡은 데이터가 1이고 그 후에 ReadLock을 잡으면 Read부분에서는 1에 데이터를 읽는데 이 상태에서 WriteLock에서 1에 데이터를 2로 수정을 한다면 ReadLock에서 잡은 데이터가 2로 수정이 안되지 않나요??
-
해결됨20년 경력자의 알기쉬운 컴퓨터네트워크
엔드포인트에 아이피 할당은 어떻게 하나요
세션계층들어가니깐 엔드포인트들이 갑자기 다. 아이피가 부여되어있네요
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
비주얼 스튜디오 질문입니다.
루키스님께서 해주시는 강의 귀에 쏙쏙 들어와서 항상 감사의 말을 먼저 드립니다. 루키스님의 강의 중 터미널 창이 매우 깔끔하게 촘촘히 박혀있으신데 제 터미널창은 세로로 길쭉하여 결국 코드에 TILE뒤 << " "; 이런 식으로 억지로 띄워썼습니다.혹시 이 방법 말고도 다른 방법이 있으신지 견식을 여쭙고자 합니다.가르쳐 주신다면 정말 감사하겠습니다.