월 22,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의 수강 관련 질문입니다~
OT 내용 설명 중에 C# 강의에서 다루었던 내용들은 중복해서 다루지않고 추가적인 내용을 알려주신다고 하셨는데 해당 C++ 언리얼 강의 커리큘럼을 모두 따라가려면 이전 강의인 C# 유니티 강의를 수강한 뒤에 봐야 이해가 될까요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
자료구조 힙과 메모리 힙
안녕하세요. 강사님 덕분에 구멍 뚫려있던 C++ 지식을 채워나가고 있는 수강생1입니다. 강의를 듣던 도중 질문이 생겨 올립니다. 자료구조 힙과 메모리의 힙 영역이 다르다는건 알겠는데 왜 메모리의 힙 영역이 왜힙(heap)이라고 불리는지 궁금합니다. 메모리의 스택 영역과 힙 영역은 해당 이름 처럼 다른 구조로 저장이 되는건가요? 감사합니다!
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
완강하고 난 뒤...
선생님 감사합니다! 덕분에 좋은 강의 완강 했습니다. C# Unity 강의 때도 항상 완강 후에 감사 인사를 전하고 싶었으나 인프런 시스템 적으로 강의 중간에 리뷰 올리라고 해서 급하게 올리고 다시 강의 집중하느라 여기에다가라도 올리고 싶었어요...저는 게임 분야가 아닌 자동화 분야에서 비전과 공장 자동화를 담당하고 있습니다.이쪽 분야는 PLC도 다루어야 하고 Vision도 기초적으로 알아야 하고 Robot 좌표 체계도 공부해야 하다보니 컴퓨터 프로그래밍 지식은 늘릴 시간이 별로 없었습니다. 운좋게 게임 만들기를 취미 삼아 시작하면서 선생님 강의 미리보기로 듣자마자 이 강의는 진짜 내 실력을 높여주겠구나 하는게 딱 느껴지더라구요. 커리큘럼 보고 정말 배울게 많다는 것을 알게 되었고 그리구 나서 선생님께서 가르친 내용들을 모두 Notion에 정리해서 정말 제 실력으로 만들었어요.정리하면 강의 듣는거에 비해 시간이 두배 이상 걸리더라구요...(비록 시간없어서 그 뒤에 실제로 게임을 만들어보진 않았지만.. ㅋㅋㅋ)서버 만들기할 때도 고생해서 배우고 여자친구와 카페가서 공부하고 스터디카페가서도 같이 공부하고 ...(맨날 같이 있을 때 공부만 한다고 투덜대요...)선생님 목소리를 이제 200시간 이상 들으니 정말 곁에 있는 사람마냥 정든 거 같아요. 또 이렇게 감사 인사 전하고자 하는 이유는 Minor한 C++보다 Python과 같은 기초 과목들을 촬영하는 것이 선생님한테 경제적으로 더 도움이 될텐데, (또 여태 어떤거 하실 지 고민하시는 모습도 보았고) 남들이 거의 하지 않는 강의 48시간이나 찍으시는 모습 보고 너무 감동했습니다... 저는 사실 리뷰를 거의 안올리는 편인데 (배민도 맛있어서 리뷰 올린다고 해놓고 항상 까먹고 안올림...)저 같이 꼭 게임을 만드는 포지션이 아니더라도 도움을 받고 있다는 사람도 있다는 사실과선생님 지치시지 않고 완강 찍는 날까지 힘내주십사하고 굽신굽신하면서 질문칸에 리뷰 올려용~~앞으로는 완찍(완강 찍기) 힘내주세요 하고 리뷰에 올릴게용~ ㅎㅎㅎ 성공해서 제자, 스승으로서 언젠가 뵙고 싶습니다. :)사장님 되면 만나주실거죵?~화이팅이에요 쌤! 아래는 정리한거 인증~~ ㅎㅎ
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
코드 질문
v[6] 의 값이 77이라 11로 나눠 떨어지는데 왜 ans값이 안변하는 건지 잘 이해가 안갑니다. 이 케이스 처럼 어떤때는 작동안하고 어떤때는 잘 작동하는데, 코드의 어느 부분이 잘못된 걸까요?
- [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
서버팀에 계셨던분이..
삭제된 글입니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의 외적인 질문인데
선생님 화면처럼 함수 주황색 변수 노란색으로 색 변경을 하려면 어떻게 해야하나요 그게 더 가독성이 좋아보여서용
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
디버그 콘솔 실행 오류 질문
빌드까진 실행이 되는데 실행하려고 하면 사진과 같은 오류가 발생합니다. 끄고 다시 실행하면 정상적으로 실행 되긴 하는데 다른 파일도 이런 오류가 발생해서 왜 발생하는지 이유를 알고싶습니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의 내용 질문
강의 22분 50초 내용입니다. 어셈블리에서 00CE2091 test eax, eax 부분이 이해가 안가네요. test에 해당하는 키워드쪽을 위아래 살펴보면 어셈블리 문법들이 적혀있는데 아마도 test는 그 정해진 키워드를 말하는건 아니고 저희가 만든 변수를 의미할것 같은데, test eax eax를 어떻게 해석해야하나요? 제가 생각한 어셈블리는 test가 아니라 cmp고 eax는 0이 되어야 할것 같습니다. cmp eax, 0 이랄까요. 그러면 뭔가 명확한데 왜 저렇게 나오는지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
맥에서 실행할 때 에러
맥북에서도 c++을 쓸 일이 있어서 vscode를 깔고 파일을 다운받아 cpp_study 파일에서 빌드를 실행했는데 사진과 같은 에러가 발생하네요 ㅠㅠ 구글링을 해봐도 vscode가 비주얼 스튜디오랑은 많이 다른것 같아서 설정을 어찌 바꿔야 할 지 모르겠는데 혹시 알고계신다면 알려주시면 감사하겠습니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
bp관련 질문입니다.
스택에서 함수를 2개쓴다 가정하고 1번함수 이전bp값을 BP에 저장하고 2번함수로 넘어가서 2번함수의 이전bp값을 또 저장할때 BP에 넣는데 이러면 1번함수의 BP값을 에 2번함수의 BP값으로 덮어씌우는데 그러면 1번함수의 BP값이 소실되어 1번함수의 스택프레임 공간을 모르는게 아닌가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
reserve 구현부
reserve 구현하실때 newData를 동적할당 하신다음에 delete[]를 해줘야 메모리누수가 안날것 같은데 이렇게 하는게 맞겠죠??
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의 영상중에 이해가 안되는 부분이 있어 질문드립니다.
안녕하세요 algorithm 강의와 람다 강의를 듣고 이해가 안되는 점이 있어 질문드립니다. 1번 질문) algorithm 강의 29:28 부분에 185번째 줄 bool operator()(int n) 이라고 되어있고 191번째줄 vector<int>::iterator it = std::remove_if(v.begin(),v.end(),IsOdd()); 되어있는데 여기서 궁금한게 185번째 줄에는 IsOdd 객체의 bool operator()(int n) 함수가 매개변수 int n을 대입하도록 되어있는데 191번째 줄에는 IsOdd()만 되어있고 int n을 대입한 부분이 없는거 같은데 어떻게 컴파일러는 int n을 판단하는지 궁금합니다 ------------------------------------------------------------------------ 2번 질문) 람다 강의 18:23초 부분에 100번째 줄 auto findByItemLambda = [=](Item& item) { return item._itemId == itemId; } 105번째 줄 auto findIt = std::find_if(v.begin(), v.end(), findByItemIdLambda); 라고 써져있는데 여기서 궁금한점이 100번째줄 람다의 매개변수인 Item& item을 전달해준 부분이 없는거 같은데 어떻게 105번째 줄에서 findByItemIdLambda만 전달해서 findByItemIdLambda의 람다함수의 매개변수인 Item& item을 어떻게 컴파일러가 알 수 있는지 궁금합니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의에서 템플릿 특수화를 할때
강의에서 템플릿 특수화를 할때 Knight* 이나 Knight&와 같은 참조 타입이 아닌 객체 그대로를 받은 이유가 있을까요?? 호출할때 더 많은 메모리를 차지하지 않나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
안녕하세요 선생님 다음 강의인 dx12 x 게임수학 에 관하여 && 쉐이더에 관하여 질문 드리겠습니다.
그래픽스 프로그래밍 즉, 쉐이더라는 것은 어렴풋이 감은 오겠는데, 정확히 우리가 무엇을 하는 것인지 여쭙습니다. 선생님 께서는 클라이언트 프로그래머 + 서버 프로그래머 지망생들을 위한 강의를 하시는데 질문 1 ) TA라는 직군이 있잖습니까? 그래픽스는 언리얼로 따지면 텍스쳐 이미지를 통해서 머터리얼을 만드는 작업이라고 보면 될텐데, 왜 굳이 TA라는 직군이 있는데도 불구하고 우리가 이것마져도 알아야 하는지 궁금합니다. 언리얼 컨텐츠 플머 라고 한다면 우리는 그래픽스 지식을 가지고 무엇을 하게 되는 건가요? 때에 따라서 머터리얼 제작하는 것으로 투입이 되나요? 질문 2) 구글을 뒤지다가 유니티는 쉐이더 코드를 코딩으로 할 수 있는 걸로 알고 있습니다. 블로그도 있고, 그런데 언리얼은 어디에도 쉐이더 코드를 만지는 곳이 없습니다. 머터리얼로 그냥 선 잇고 조합해서 만지는 것 밖에 없습니다 왜 유니티는 비쥬얼 스튜디오로 쉐이더 코드를 손 볼 때가 있고 언리얼은 아예 막혀있는지 그래서 머터리얼로 작업을 해야하는지 궁금합니다. 질문 3) 그래픽스 지식이 최적화와 관련이 있나요? 관련이 있다면 이 다음 수업에서도 다루어 주시나요?? 최적화최적화 그러는데 언리얼 최적화를 검색하면 뭐 툴을 이용해서 값 조절하고 그러는 것밖에없는데 언리얼 엔진 유튜브 에서 강연하는 것도 있기는 한데 그것도 언리얼 툴을 통해서 어느 부분이 성능을 더 잡아먹는지 확인하는 것 같은데 프로파일링인가? 아무튼 그래픽스 -> 최적화가 관련이 있다면 이 부분도 다루어 주시는 지 궁극적인 질문) TA라는 직군이 있는데 클라가 그래픽스 지식을 익혀서 어디서 써먹는지 궁금합니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
배열의 이름이 포인터로 변환되는 조건?
강의에서 "배열의 이름은 배열의 시작 주소값을 가지는 TYPE*형 포인터로 쉽게 변환 가능"이라고 하셨는데요! 이건 C++에서 배열이름에 []가 붙지 않은채로 배열 이름만 덩그러니 놓여있을 때만 컴파일러가 포인터로 변환해준다는 말씀이신가요??? 특정 상황에서는 변환되지 않을 수도 있나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
안녕하세요! virtual 소멸자에 대해서 질문드려요!
안녕하세요. 좋은 강의 항상 감사드립니다. 덕분에 C# 부터 시작해서 C++까지 즐겁게 배우고 있는 중입니다. :) 다름이 아니라 질문드리고 싶은건 상위 클래스 소멸자에 virtual을 붙이지 않았을 때 메모리 Leak이 발생하는 지 테스트를 진행했는데 crtdbg를 사용해서 메모리 누수 체크를 해보니 누수된 메모리가 나오지 않았습니다.그래서 성능 프로파일러에서 힙 프로파일링 옵션을 켠 뒤에 두 상황에 대해서 아래의 사진과 같이 비교를 해봤을 때 동일한 결과가 나왔습니다. 이 상황에서 메모리 누수가 발생하지 않는 것인지못찾아내고 있는 것인지 궁금합니다! #include <iostream> #include <iomanip> #include <crtdbg.h> #if _DEBUG #define new new(_NORMAL_BLOCK,__FILE__,__LINE__) #define malloc_d(s) _malloc_dbg(s, _NORMAL_BLOCK,__FILE__,__LINE__) #endif using namespace std; class Item { public: Item() { cout << "Item()" << endl; } Item(const Item& item) { cout << "Item(const Item& item)" << endl; } Item(int itemType) { cout << "Item(int itemType)" << endl; _itemType = itemType; } // 상위 개념에는 virtual을 붙여야 함 ~Item() { cout << "~Item()" << endl; } public: int _itemType = 0; int _itemDbId = 0; char _dummy[4096] = {}; // 이런 저런 정보들로 인해 비대해진 데이터라 가정 }; enum ItemType { IT_WEAPON = 1, IT_ARMOR = 2, }; class Weapon : public Item { public: Weapon() : Item(IT_WEAPON) { cout << "Weapon()" << endl; _attack = rand() % 1000; } ~Weapon() { cout << "~Weapon()" << endl; } public: int _attack = 0; }; class Armor : public Item { public: Armor() : Item(IT_ARMOR) { cout << "Armor()" << endl; } ~Armor() { cout << "~Armor()" << endl; } public: int _defence = 0; }; int main() { // 1번 스냅샷 Item* inventory[20] = {}; srand(time(nullptr)); for (int i = 0; i < 20; i++) { int randValue = rand() % 2; // 0~1 switch (randValue) { case 0: inventory[i] = new Weapon(); break; case 1: inventory[i] = new Armor(); break; } } for (int i = 0; i < 20; i++) { Item* item = inventory[i]; // 포인터 사용할 때는 항상 null 체크 필수 if (item == nullptr) continue; if (item->_itemType == IT_WEAPON) { Weapon* weapon = (Weapon*)item; cout << "Weapon Damage : " << weapon->_attack << endl; } } // 2번 스냅샷 for (int i = 0; i < 20; i++) { Item* item = inventory[i]; if (item == nullptr) continue; delete item; } // crt 메모리 체크 : 메모리 Leak이 발생할 시 출력창에 표기 됨 _CrtDumpMemoryLeaks(); // 3번 스냅샷 return 0; } virtual을 사용한 경우 virtual을 사용하지 않은 경우
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의 외적인 질문 몇개 드려도 될까요?
선생님 강의를 들으면서 게임 개발자취업을 목표로 공부를 하고있는데 몇가지 궁금한게 생겨서 질문드립니다 취업을위해 어떤걸 준비해야하는지 검색을 해보니 자료구조, 알고리즘, 서버 프로그래밍, STL, 뭐 등등 다 알아야하는데 학교에서 배우지도않은 뭔 처음 들어보는것들이 엄청 많더라구요 근데 사람들은 다 알아야 한다하고;; 혹시 어떤식으로 준비를 하면 좋을까요 아니면 개발자에게 필요한 역량이 검색을해도 너무 추상적으로나와서 혹시좀 구체적으로 어떤게 필요한지 알려주시면 감사하겠습니다! 테라만6년을 해서 크래프입사를 인생목표로 삼고있는데 혹시 꿀팁같은게 있을런지요...
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
깊은복사 복사생성자호출
멤버변수에 포인터변수가있으면, 객체를 복사 생성자든 대입연산자든 복사가 이루어질때 (디폴트 생성자,연산자일때) 똑같은 주소값을 가지고 가르키기에 문제가 발생하고, 깊은 복사 (새로 복사 생성자, 대입연산자를 만들어줌)를 만들어주고, 새로 동적할당시키는건 이해했습니다. 근데 마지막에 깊은복사 new Pet 동적할당할때 Pet의 복사 생성자를 왜 호출하는지 궁금합니다. 기본생성자를 호출해도 똑같이 동작하는데 의미의 차이일까요? 새로 동적할당하여 새로운 메모리를 할당받고, 원본 knight가 가진 pet의 멤버(만약 pet의 멤버가 존재했다면)의 값은 복사하여 전달한다. 라는 개념으로 보면 되나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
포인터 산술연산질문있습니다!
int number = 1; int* ptr = 1; *ptr += 1; 이것을 실행하고 메모리를 봐봤습니다. 주소는 정상적으로 이동했는데 실제 number가 있는 주소는 변하지않더라구요. 포인터연산은 실제 값이있는 위치에는 영향이 없는건가요??
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
포인터와 배열
설명을 잘 해주셔서 포인터와 배열의 차이점은 이해하였습니다! 그런데 말씀해주신 것처럼 C++ 문법에서 "배열이름은 바구니 모음의 시작주소를 나타낸다!"는 것으로 인해 "배열이름을 포인터와 똑같이 활용할 수 있게 되었다?"라고 이해해도 되나요? 이 부분에서 조금 헷갈렸습니다...