묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨고도 엔진(Godot Engine)을 통한 게임 개발 박치기!! - 기본 개념부터 실전 게임 제작까지 한방에!
안드로이드, iOS빌드
안녕하세요. 좋은 강의 잘듣고 있습니다. 혹시 안드로이드, iOS로 빌드하는 방법을알려주실 수 있을까요? 모바일 게임 제작 강의도 출시해주시면 열심히수강하도록 하겠습니다. 감사합니다.
-
해결됨고도 엔진(Godot Engine)을 통한 게임 개발 박치기!! - 기본 개념부터 실전 게임 제작까지 한방에!
우주선 회전
섹션5 이동에서 우주선을 회전시키는데 우주선이 대각선을 바라볼때 키보드를 떼면 스냅이 걸린 것 처럼 상하좌우 중 하나로 움직입니다. 그러니까 대각선으로 멈추질 못하고 위나 아래 왼쪽이나 오른쪽으로만 멈춥니다. 뭐가 문제일까요? 코드는 똑같습니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
스택 empty
안녕하세요stack empty 함수에 return size() > 0으로 하게되면 비어있으면 false가 나올텐데 의미가 반대로 사용된 것 아닌가요??🙃
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
섹션4 배열실습 질문입니다.
배열을 통해 콘솔에 5x5 맵을 표현하는 부분에서 while (true) {HANDLE output = ::GetStdHandle(STD_OUTPUT_HANDLE);COORD pos = { 0, 0 };::SetConsoleCursorPosition(output, pos); for (int y = 0; y < MAP_SIZE; y++) { for (int x = 0; x < MAP_SIZE; x++) { switch (GMap2D[y][x]) { case 0: cout << " □ "; break; case 1: cout << " ■ "; break; case 2: cout << " ● "; break; } } cout << endl; } }위와 같이 메인에 함수에 축약해서 코드를 짜놓았습니다. (실제로 헤더와 추가 cpp에서 도는것을 질문하기 쉽게 축약한것이라 실제 구동에는 차이가 없는것 같습니다.)위 코드에서 궁금한 부분이 2가지 생겼습니다.위 부분에서 while true로 돌고 있는데 무엇때문에 한번만 출력되는지 궁금합니다.위 코드를 작성하게 되면 다른 코드를 작성했을 때 콘솔창에 나타나는 "~~~~ 코드와 함게 종료되었습니다.... ~~~ 이 창을 닫으려면 아무 키나 누르세요.." 와 같은 프로그램의 끝을 알리는 자동 구문도 안뜨더군요.위 두 가지가 궁금합니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
섹션3 '파일분할' 강의 질문입니다.
Helper.h 헤더파일에서 void Test, void Test2 는선언만 하고 Helper.cpp에서 초기화 한 뒤GameCoding.cpp 메인에서 바로 사용이 가능했는데,int GTest 는 왜 extern을 붙여줘야하는건가요?? 실험해보니 extern 안붙여주니 사용이 안되던데 함수형과 변수형에서 차이가 나는건가요?
-
해결됨고도 엔진(Godot Engine)을 통한 게임 개발 박치기!! - 기본 개념부터 실전 게임 제작까지 한방에!
시그널 - 자식에서 부모노드로 접근
훌륭한 강의 잘 보고 있습니다~! 감사합니다. ● 의문점:시그널 강의 결론은,"자식 노드쪽에서 부모 노드 쪽을 접근할 때 시그널을 사용하라" 입니다.헌데 강의의 예시를 살펴보면부모 씬의 스크립트(game .gd) 에서 시그널을 선언하고, 그 시그널을 부모 씬의 스크립트 함수와 연결하고, 부모 씬의 함수가 발동되고 있는데요그럼 그냥 부모 씬에서 모든 것이 이루어지는 것이지 자식 쪽에서 부모를 접근하는 것으로 보기가 어려웠습니다.뭔가 자식 쪽 시그널이 발동되면부모의 함수가 호출되는 상황이어야 할 것 같은데시그널로 이게 가능한지요?
-
미해결게임 엔진을 지탱하는 게임 수학
투영 관련하여 정말 궁금한 점이 있어 질문 드립니다.
정육면체에 투영 행렬을 적용하고 좌우로 이동해봤을 때 당연하게도 뒷면과 앞면의 격차가 점점 벌어짐에 따라 측면이 점점 길어져보이는 왜곡 현상이 있습니다. 이러한 부분은 정상적인 것이 맞는지, 실무에서 이를 어떻게 해결하는지 정말 궁금합니다.
-
해결됨게임 개발을 위한 수학 (PART 1)
수학공부에 대하여
이제 막 게임 프로그래밍을 배우기 시작한 학생입니다비 전공자 라서 열심히 해야겠다는 생각을 가지고유튜브 강의나 책 등 으로 공부를 하고 있는데공부를 하다 보니 이차함수 , 삼각비 , 삼각함수 , 백터등 수학이 굉장히 많이 필요하다고 들어서잠시 코딩 공부보다 수학을 먼저 공부 하는 중 입니다 하지만 수학에 대한 이해가 너무 안되어서 지금 막막한 상태인데 예를들어 이차함수에 대한 정의이런공식이 있다 이정도만 이해해도 프로그래밍을 하는데 문제가 없을까요? 아니면 저런 공식으로랜덤 문제가 나왔을때 풀수있는 실력 까지 될 정도로공부를 해야되나요? 수학이 너무 어려워서 질문 드립니다
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
Defines.h의 DECLARE_SINGLE관련 질문입니다.
모든 싱글톤 객체들을 DECLARE_SINGLE와 같은 형태로 define하여 편하게 작업하고 있는데 이는 cpp파일에 전역에 TimeManager* TimeManager::s_instance = nullptr;와 같은 형태로 정의 해놓지 않으면 작동이 되지 않습니다.하지만 영상속엔 이런 내용이 없는데 따로 설정 방법이 있는건가요 ?
-
해결됨고도 엔진(Godot Engine)을 통한 게임 개발 박치기!! - 기본 개념부터 실전 게임 제작까지 한방에!
섹션2 규칙의 필요성 부분에서 Godot 4 Function Chaining 이란?
get_tree().get_root() 이렇게 코드 작성하는데,get_tree().root 와 결과는 같은지요?? 같다면 어떤차이가 있는지?? 유니티 엔진에서도 닷 (.) 를 이용한 " 객체. 메서드 " 형식은 사용되는데.. 메서드 ().메서드 ().메서드 () godot 4에서는 자주 사용되는거 같아서 검색해서 찾아본결과 Function Chaining 이라고 하는데.. 좀 자세한 설명 부탁드립니다..^^
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
세션8 우선순위 큐 pop함수의 Predicate 적용 관련 질문이 있습니다.
pop 함수를 보면 if (right < (int)_heap.size() && predicate(heap[next], _heap[right]))인 left와의 비교에서 나온 결과 값을 비교하는 부분에만 predicate를 적용하였는데 위에 left와 비교하는 부분은 둘 중 더 큰 값을 next에 넣는게 목적인 코드입니다.더 작은값을 찾을때 문제가 생길 수 있을것이라 생각이 되는데 문제가 생기지 않아 의문점이 생겨 질문 드립니다.left쪽엔 predicate 비교를 하지 않아도 되는 이유가 무엇일까요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
섹션9 함수 포인터 관련 질문입니다.
영상 초반 내용을 보면 using FuncPtr = void();는 잘 사용하지 않는 문법이라고 하고, 뒤이어 나오는using FuncPtr = void(*)();와 같은 형식을 자주 사용한다고 했는데 동일하게 동작한다면 오히려 앞쪽이 더 편한 것 아닌가요? (*)를 추가하는 이유가 단순히 포인터임을 표시해주기 위함 인가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
[DirectXTex LNK2019 에러]
(참고)실습 환경: 윈도우 11 Pro 24H2 26100.3194 DirectXTex 라이브러리를 다운받아 DirectXTex_Desktop_2022 솔루션을 Debug, Release 모드로 각각 빌드하여 강의 영상과 동일하게 아래와 같은 디렉토리 구조로 파일을 배치하였습니다.LibraryIncludeDirectXTexDirectXTex.hDirectXTex.inlLibDirectXTexDirectXTex.libDirectXTexD.lib 그리고 Engine 정적 라이브러리 프로젝트의 EnginePCH.h 파일에#include <DirectXTex/DirectXTex.h> #include <DirectXTex/DirectXTex.inl> #pragma comment(lib, "d3d12") #pragma comment(lib, "dxgi") #pragma comment(lib, "dxguid") #pragma comment(lib, "d3dcompiler") #ifdef _DEBUG #pragma comment(lib, "DirectXTex\\DirectXTexD.lib") #else #pragma comment(lib, "DirectXTex\\DirectXTex.lib") #endif위와 같이 추가하였고, 디렉터리 경로 또한 설정 완료된 상황입니다.Engine 프로젝트에는모든 구성 x64 포함 디렉터리: $(SolutionDir)Library\Include\Client 프로젝트에는모든 구성 x64 포함 디렉터리: $(SolutionDir)Library\Include\, $(SolutionDir)Engine\모든 구성 x64 라이브러리 디렉터리: $(SolutionDir)Library\Lib\, $(SolutionDir)Output\ 이런 상황에서 Engine 정적 라이브러리를 빌드하면 통과하나, Client 프로젝트를 빌드하면 DirectXTex 의 두 함수 DirectX::CreateTexture, DirectX::PrepareUpload 에 대해 LNK2019 에러가 발생합니다. 경로 설정이나 lib 파일 설정 등등을 몇 번이나 확인했는데도 어디서 문제가 생기는 지 확인이 안되네요... 올려주신 강의 자료 프로젝트와 1:1로 비교해도 어디가 문제인지 발견이 안되는데, 어디를 점검해보면 될 까요...?
-
미해결게임 수학의 이해
수업 관련 질문입니다!
게임에서 보여지는 3차원 공간은 실제로는 4차원 공간으로 구성되어 있다고 들었습니다!그런데, 제가 이해한 것이 맞는 지 잘 몰라서 질문을 남깁니다!"현실 세계에서 게임 속 3차원 공간의 물체를 바라볼 때, 그 안의 게임(가상 공간)은 4차원으로 구성되어 있다"가 맞을까요?감사합니다.
-
미해결게임 엔진을 지탱하는 게임 수학
반지름이 r인 경우에 cos^2θ+sin^2θ = 1 검증
제가 이해하기로는 반지름이 r일 때 (r · cosθ)^2 + (r · sinθ)^2 = r^2 이라는 것 같은데 교수님이 써 주신 공식에는 r^2 cos^θ 라고 표기되어 있습니다!오타인 듯 하여 수정이 필요해보입니다.
-
해결됨고도 엔진(Godot Engine)을 통한 게임 개발 박치기!! - 기본 개념부터 실전 게임 제작까지 한방에!
웨이브 핸들러 섹션에서 Custom Resource
웨이브 핸들러 셕센에서 Custom Resource 부분이 유니티 엔진 스크립터블 오브젝트 개념과 비슷하다고 봐도 되는지요?? ^^
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
exercise_A 번 문제 해결방법에 대한 질문.
디버깅 참고 답안의 exercise_A 번 문제에서 knight (Knignt*형) 의 포인터 주소를 넘겨주는 이중포인터로 작성해서 해결?(일단 터지지는 않았습니다) 했는데 이런 방법은 안되는 건가요?
-
해결됨고도 엔진(Godot Engine)을 통한 게임 개발 박치기!! - 기본 개념부터 실전 게임 제작까지 한방에!
ObjectHandler 에서
ObjectHandler / ObjectHandler.gd 파일에서 무기발사 구현하는 코드에서 instance.setup_weapon(dir, speed) 에서 방향벡터와 스피드 관련 해서 함수 호출하고 add(obj: Node2D, g_position: Vector2, dir: Vector2) 에서 dir (방향벡터)를 다시 rotation 에 대입하는지 좀 이해가 안됩니다..설명부탁드립니다..^^ 아래는 해당 소스코드입니다. instance.setup_weapon(dir, speed) call_deferred("add", instance, pos, dir) func add(obj: Node2D, g_position: Vector2, dir: Vector2) -> void: add_child(obj) obj.global_position = g_position obj.rotation = Vector2.RIGHT.angle_to(dir)
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
[강의명: virtual 소멸자] 자식 클래스의 소멸자에도 virtual 을 붙이시는 이유가 궁금합니다
#include <iostream> using namespace std; class Player { public: Player() { cout << "Player()" << endl; } virtual ~Player() { cout << "~Player()" << endl; } }; class Pet { }; class Archer : public Player { public: Archer() { cout << "Archer()" << endl; _pet = new Pet(); } virtual ~Archer() { cout << "~Archer()" << endl; delete _pet; } public: Pet* _pet; }; int main() { Player* archer = new Archer(); delete archer; } 영상 내용에서 자식클래스의 소멸자에도 virtual 을 붙이셨는데 부모 클래스의 소멸자에만 붙여도 자식 클래스의 소멸자가 잘 호출이 됩니다. 그래서 GPT를 통해 둘 다 붙이는게 좋은지 부모 클래스에만 붙이는게 좋은지 질문해봤는데 부모 클래스에만 붙여도 문제가 없다고 답변을 받았습니다. 근데 루키스님께서 둘 다 붙이는 이유가 분명 있으실탠데 그 이유가 궁금합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
UI 랜더링이 이해가 안되어 질문드립니다
수업내용을 놓쳤을 수도 있는데 어디를 놓친건지 몰라서 질문드립니다기본적인 default object들과 UI object들의 랜더링을원근투영과 직교투영을 이용하는 내용은 이해가 되나둘 다 동일한 z버퍼를 사용하는걸로 아는데 그러면 투영변환의 인자 값에 상관없이 랜더링 파이프라인에서 z버퍼로 인하여 서로가 가려져야 한다고 생각했는데정상적으로 출력이 되어 왜 그런지가 궁금합니다.