[게임 프로그래머 입문 올인원] 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; };
안녕하세요, 언리얼 엔진을 공부하다가 게임 개발의 기초부터 공부하고 싶어서 게임 수학 수업을 듣고 있는 학생입니다. 10장을 공부하다 오일러 각을 활용한 회전 행렬을 만드는 과정에서 의문점이 있어 질문 드립니다. 오일러 각을 통해 세 개의 축으로 3번 회전할 때, 축을 기준 삼는 방식은 1, 2번 중에 어떤 것인가요? ex) z->x->y 축 순으로 회전한다고 할 때, 고정된 좌표계 상 z축 기준 회전 -> 동일한 좌표계 상 x축 기준 회전 -> 동일한 좌표계 상 y축 기준 회전. (밑의 이미지처럼)고정된 좌표계 상 z축 기준 회전 -> 앞선 회전으로 인해 새로 정의된 x축 기준 회전 -> 앞선 회전들로 인해 새로 정의된 y축 기준 회전.
환의 공리 3번에 덧셈과 곱셈 연산은 분배 법칙을 만족한다. 를 덧셈과 곱셈간의 연산은 분배 법칙을 만족한다 로 바꾸는게 조금 더 자연스러울 것 같습니다. 위의 문장은 덧셈, 곱셈의 개별적인 연산이 분배 법칙을 만족한다고 인식 될 수도 있다고 생각해서 아래 문장이 더 자연스러운 것 같습니다.
[게임 프로그래머 입문 올인원] 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++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 리소스를 보면 groundColor라고 디퓨즈텍스쳐가 있는데 왜 적용이 안되는건가요?
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요 선생님, 강의 열심히 듣고 있습니다. 17주차 온라인 게임 개론에서 수업자료 받아서 실행시켜 보았는데, 아래와 같은 에러가 발생합니다ㅠㅠ 처음에 CollisionManager와 UI included 되어 있어서 컴파일 에러나는 거 때문에 그 부분만 include 된거 삭제하였고 다른거는 하나도 건들지 않았는데도 저런 에러가 뜨네요.. 각 오류에 해당하는 line의 코드는 아래와 같습니다. 구글에 찾아봐도 해결 방법을 모르겠네요.. 도움 주시면 감사 드리겠습니다!
안녕하세요, 해당 강의를 듣고 난 후 조금 더 수학 지식을 쌓기 위해 '이득우의 게임수학' 책으로 공부하고 있는 취준생입니다. 제가 수학 지식이 얇아서 이해에 어려운 부분이 있어 질문 드립니다. 619p. ~ 624p. 에 걸쳐서 부모 월드 + 내 로컬을 이용한 내 월드 트랜스폼 구하기 부모 월드 + 내 월드를 이용한 내 로컬 트랜스폼 구하기 내용이 있는데, 여기서 왜 Scale, Rotation, Translation을 따로 구하는지 궁금합니다. 제가 생각을 해보았는데, 모델링 행렬끼리 곱해서 구해버리면 T * R * S * T * R * S 순서로 곱해져서, Rotation과 Scale의 경우가 제대로 계산되지 않기 때문인 것인가요? ex) 1의 경우 내 로컬 Transform의 Scale은 부모 Scale 내 로컬 Scale, Rotation은 부모 Quat * 내 로컬 Quat 이어야 하는데, 내 월드 트랜스폼을 구하기 위해 각 트랜스폼에서 구한 모델링 행렬끼리 곱해서 구해버리면 중간에 다른 연산이 들어간 상태에서 Scale, Rotation이 구해진다?
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
for (int i = 0; i < v mesh.size(); ++i) { _shader->SetPipelineState(); core->GetCmdList()->IASetVertexBuffers(0,1,&_v_mesh[i]->GetVertexView()); core->GetCmdList()->IASetIndexBuffer(&_v_mesh[i]->GetIndexView()); _transform->Update(); core->GetTableHeap()->BindTexture(_texture->GetCpuHandle(), SRV_REGISTER::t0); core->GetTableHeap()->CommitTable(); core->GetCmdList()->DrawIndexedInstanced(_v_mesh[i]->GetIndexCount(), 1, 0, 0, 0); } DX11 버전에서 제공해주신 모델 탱크 를 로딩하려고Assimp 를 사용하였는데 , vmesh 사이즈가 12이라 12번 계속 반복해주는 코드를 작성하였는데 _v_mesh[0] 번째 정보만 바인딩되는데 문제가뭘까요..