[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
마지막 업로드 파일 기준으로 메모리 릭이 발생되는데요. 서버가 열리지 않았을땐 발생하지 않아서 서버와 연결하는 부분인것 같았고 구글 프로토퍼프때문인가 싶어 검색하여 게임 소멸자에 google::protobuf::ShutdownProtobufLibrary(); 이 구문을 추가했더니 조금 릭이 줄긴했지만 여전히 메모리 릭이 발생합니다. 게임세션이나 서비스가 상호참조되어 스마트 포인터가 해제가 안되나 해서 열심히 찾아봤지만 그부분 문제가 아닌것 같더라구요.. 어느 부분에서 발생하고 어떻게 고쳐야 하는지 알려주시면 감사하겠습니다.
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요! 이동할 때 서버에 움직여도 되는지 묻고, 대답이 오면 그때 움직이는 방식으로 만든다고 했을 때, SetDir, SetState같은 것들도 위와 같은 방식을 취하는 게 좋을까요? 이동은 선 보고 후 허락이 오면 이동하는 방식, SetDir과 SetState는 강의에서처럼 먼저 Set하고 서버에 보고하는 방식으로 코드를 짰는데 이게 뭔가 흐름이 꼬이는 부분이 있는 것 같아요. 두 개를 하나의 방식으로 통일하는 게 좋을지, 보통 선 보고 후 허락이 오면 이동하는 방식을 취할 때 SetDir, SetState같은 것들도 똑같이 허락이 오면 바뀌는 방식으로 하는지 궁금합니다. 감사합니다. 강의 잘 보고 있습니다!
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의자료에 있는 bmp이미지 파일은 정상적으로 잘 출력이 됩니다. 다만, 다른 bmp파일로 출력을 할 경우 이미지로드에 실패합니다. 파일을 보니 출력되지 않는 bmp파일의 경우 비트심도가 32이고 강의자료에있는 bmp파일의 경우 24인 것을 확인하고 비트심도를 동일하게 24로 변경했는데도 출력이 되지않습니다. 정확한 원인이 궁금하여 질문드립니다. 항상 좋은 강의 감사드립니다.
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
루키스님 강의 잘 듣고 여러가지 연동을 시도해서 컨텐츠를 만드는 중인데요 지금은 데이터나 오브젝트들이 많지 않아서 별 문제가 없는데 나중에 3d 포폴도 이걸 기반으로 만들고 싶어서 멀티쓰레드를 사용해야할 정도는 어느정도 되야하는지가 궁긍합니다. 그리고 마지막에 aws 에 서버 올리시는 부분을 잠깐 언급해주셨는데 c++서버강의엔 그런부분이 없는것 같아 그부분 강의 예정이 있는지도, 아니면 관련 자료나 공부를 어떻게 해야하는지도 궁급합니다
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
아래의 코드와 같이 포인터로 변수를 만들어줘서 넘겨주면 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 & 게임 서버
knight에 기타 생성자를 만들어 주면, 기본 생성자를 사용 할 수 없다고 했는데, 새로운 knight를 만들어 주어 기본 생성자를 이용하니깐 잘 만들어 지더라구요. 제가 잘 못 이해 하는걸까요? 같은 객체일 경우 기본 생성자가 실행이 안된다는 말씀 일까요? 새로운 객체면 상관 없는거구요?
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
글로 질문은 처음이라 두서 없을 수 있다는 부분 양해 부탁 드립니다. char* StrCpy(char dest, char src) 함수에서 char * ret = dest; 선언을 통해 기존 원본 위치값을 저장해 주는것은 알겠는데, while문이 다 돌고 나서 'dest'의 값을 확인해 보면 문자열이 없는 것을 데이터를 확인 하여 알았습니다. 그 이유가 'dest++'을 통해 포인터의 시작 위치 값을 변경해 주어서 값이 없는 주소 부분을 가르키기 때문에 'dest'의 데이터가 아무것도 없는 것이 맞을까요? 그렇기 때문에 원본 데이터에는 정상적으로 들어있고, 함수내에서 'dest'의 주소 시작점이 뒤로 밀려나 데이터가 없다고 판단해도 되는지 궁금합니다.
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요 선생님, 강의 열심히 듣고 있습니다. 17주차 온라인 게임 개론에서 수업자료 받아서 실행시켜 보았는데, 아래와 같은 에러가 발생합니다ㅠㅠ 처음에 CollisionManager와 UI included 되어 있어서 컴파일 에러나는 거 때문에 그 부분만 include 된거 삭제하였고 다른거는 하나도 건들지 않았는데도 저런 에러가 뜨네요.. 각 오류에 해당하는 line의 코드는 아래와 같습니다. 구글에 찾아봐도 해결 방법을 모르겠네요.. 도움 주시면 감사 드리겠습니다!
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의를 보다보면 미로맵 제작 같이 다운로드가 안되는 코드를 올려주신 다는 말씀을 하시는데 혹시 코드는 어디서 다운 받을 수 있을까요?
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요 선생님 ㅜㅜ 선생님 코드 짜시는거 보면 막 새로운 클래스를 생성하시구 나서 막 Types.h, enums.h Defines.h에 정의되어있는 것들을 그냥 입력해도 아무 에러가 안 뜨던데 저는 그것들 #include 안해주면 정의 안되어있는거 쓴다구 겁나 꼽주는데 따로 설정법이 있는건가요,,? ㅜㅜ
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
루키스님 항상 좋은 강의 감사합니다. 정말 잘 듣고 있는데요. 다름이 아니라 이 강의가 끝나고 윈도우API 포폴좀 만들면서 새로운 강의를 들을 생각입니다. DirectX를 들을라고 하는데 강사님의 DirectX 강의가 2개가 있더라고요 1. [게임 프로그래머 도약반] DirectX11 입문, 2. [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12 이렇게 두개중에 어떤걸 들어야 하는지 궁금증이 생겨서 질문드립니다. 지금 강의가 끝난 후에 어떤 걸 들어야 맞는건지 여쭤보고 싶어서 질문 남깁니다. 또 두개를 전부 들어야 한다면 어떤 거 먼저 듣는 것을 추천하는지 궁금합니다.
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요 선생님, 강의 열심히 듣고 있습니다! 먼저 질문부터 말씀 드리자면, 벡터A X 벡터B일 때, 벡터 B가 시계방향에 있음에도 왜 코드에서는 외적(Cross)값이 양수가 나오는지 궁금합니다! 벡터 외적으로 벡터들 간의 상대적인 위치(시계/반시계) 구하는 방법 공부하는데, 잘 이해가 되지 않아 구글이나 다른 자료를 통하여 벡터 외적 쪽을 추가적으로 공부하였습니다. 2차원 평면 상에서 하기와 같이 벡터a x 벡터b 를 했을 때, 양수가 나오면 벡터b는 벡터a에 대해 '반시계'방향으로 있으며, 음수가 나오면 벡터b는 벡터a에 대해 '시계'방향으로 나온다고 설명 되어 있으며, 다른 자료들을 찾아봐도 다 위와 같이 나와있더라구요. (출처 : https://bowbowbow.tistory.com/14 ) 다만 강의 코드에서는 아래와 같이 몬스터가 바라보는 방향(lookDir)벡터에서 몬스터에서 마우스로의 방향(MonsterToMousedir)을 외적 계산하였을 때, 이때 마우스 방향이 몬스터 기준으로 오른쪽('시계방향')으로 있으면 cross 값이 음수가 나와야 하지 않나 싶은데 실제로는 cross 값이 양수가 나오더라구요. 강의에서도 cross값이 0미만(음수)일 때는 반시계 방향이 있게 되므로 이때 값 보정을 위해 angle에 360-angle 처리하는 것으로 나와 있는 것으로 보니 반시계 방향일 때 음수가 되는 것이 맞는 것 같기는 한데,, 왜 이 코드에서는 양수가 나오는지 궁금합니다. 수학적 지식이 너무 없어서 그런가 암만 코드를 봐도 왜 이렇게 되는지 잘 이해가 안 되네요ㅠ 도움 주시면 감사 드리겠습니다
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
강의 39분쯤 그림판을 켜서 설명해주시는 부분에서 accept 또한 iocp 흐름을 따라 낚싯대를 다시 던져줘야 한다고 설명해 주셨는데요, Listener의 accept가 왜 다시 호출되어야 하는지가 잘 이해가 안됩니다. 한번 연결된 후에 작업이 완료되고 기존의 클라이언트가 여전히 연결되었는지 재확인 하는 과정인가요?