목록KFGD (21)
신입 게임 개발자의 프로그래밍 일기
[본 글은 개인 공부를 위해서 작성하는 글이며, 제공하는 정보에 오류가 있을 수 있습니다. 만약 오류를 발견하신 분은 댓글 작성을 부탁드립니다.] 게임에서의 길찾기 포스팅 글들은 게임에서 어떻게 길찾기들이 수행되는 지에 대해 공부하며 작성한 글입니다. 작성자의 능력이 미흡하여 구현된 코드의 수준도 미흡할 수 있는 점 양해부탁드립니다. 본 포스팅에서 사용할 미로는 다음과 같습니다. 6행 6열의 셀들로 구성되어 있는 격자형(Grid) 미로이며 다음과 같은 특징들을 갖습니다. - 미로의 이동은 상, 하, 좌, 우로만 이동이 가능하며 대각선 이동은 불가능하다고 가정합니다. - 미로의 셀 사이에서의 이동 비용은 모두 동일하다고 가정합니다. 다익스트라(Dijkstra) 알고리즘 다익스트라 알고리즘은 이전 포스팅에서..
[본 글은 개인 공부를 위해서 작성하는 글이며, 제공하는 정보에 오류가 있을 수 있습니다. 만약 오류를 발견하신 분은 댓글 작성을 부탁드립니다.] 게임에서의 길찾기 포스팅 글들은 게임에서 어떻게 길찾기들이 수행되는 지에 대해 공부하며 작성한 글입니다. 작성자의 능력이 미흡하여 구현된 코드의 수준도 미흡할 수 있는 점 양해부탁드립니다. 본 포스팅에서 사용할 미로는 다음과 같습니다. 6행 6열의 셀들로 구성되어 있는 격자형(Grid) 미로이며 다음과 같은 특징들을 갖습니다. - 미로의 이동은 상, 하, 좌, 우로만 이동이 가능하며 대각선 이동은 불가능하다고 가정합니다. - 미로의 셀 사이에서의 이동 비용은 모두 동일하다고 가정합니다. 깊이 우선 탐색(Depth-First Search) DFS의 장점 - BF..
[본 글은 개인 공부를 위해서 작성하는 글이며, 제공하는 정보에 오류가 있을 수 있습니다. 만약 오류를 발견하신 분은 댓글 작성을 부탁드립니다.] 게임에서의 길찾기 포스팅 글들은 게임에서 어떻게 길찾기들이 수행되는 지에 대해 공부하며 작성한 글입니다. 작성자의 능력이 미흡하여 구현된 코드의 수준도 미흡할 수 있는 점 양해부탁드립니다. 본 포스팅에서 사용할 미로는 다음과 같습니다. 6행 6열의 셀들로 구성되어 있는 격자형(Grid) 미로이며 다음과 같은 특징들을 갖습니다. - 미로의 이동은 상, 하, 좌, 우로만 이동이 가능하며 대각선 이동은 불가능하다고 가정합니다. - 미로의 셀 사이에서의 이동 비용은 모두 동일하다고 가정합니다. 너비 우선 탐색(Breath-First Search) BFS의 장점 - 찾..
이전에 소프트웨어 스키닝 코드를 하드웨어 스키닝으로 바꾸려고 했던 적이 있었다. 실패했고, 원인을 찾을 시간이 없어서 다른 부분에서 최적화를 시도했다. 그리고 이번에 다시 시도하고 있는데, 구글링 중 실패한 이유의 실마리를 찾은 거 같다. http://www.setcombg.com/news/newsimages/D3D8b_bug_fix.htm D3DX Readme www.setcombg.com 위 사이트의 Mesh파트를 보면 아래와 같은 문장을 발견할 수 있다. ID3DXMesh::CloneMeshFVF now fails for meshes with D3DFVF_XYZRHW 이 문장을 보고 혹시나 했다. 전에 하드웨어 스키닝 코드에 도전하면서 기존 소프트웨어 스키닝 코드도 유지시키려고 ID3DXSkinIn..
[게시글 수정 내역] 2020-06-30 - 1. 전방선언필요 -> 타입 선언 필요로 수정 이 문제를 해결하는 방법에는 전방선언(Forward Declaration)과 Elaborated type specifier로 해결 가능 기존 코드들과 유사하도록 게시글에서는 Elaborated type specifier로 해결하였다. (게시글과 같은 코드를 stackoveflow C++ 개발자들은 Elaborated type specifier라고 부르고, Unreal Engine 포럼 개발자들은 inline forward declaration이라고도 부르는 것 같다.) 참고1: https://stackoverflow.com/questions/29580288/what-is-class-in-class-datatype-..
전역이 얼마남지 않은 시점에...정말 오랜만에 Visual Studio를 켰습니다.기본서부터 다시 보자는 의미로 책의 예시 코드들을 타이핑하던 중, 괜찮은 방식이 떠올라서 적어놓습니다.이 방식은 하나의 프로젝트에 책의 모든 예시코드를 작성하고픈 저와 같은 입문자들을 대상에게 추천합니다. 책에는 많은 예시코드들이 있습니다.특히 언어 입문서들에는 짧은 예시코드들이 수두룩하며저와 같은 입문자들 중 대다수가 아마 아래와 같은 방식들로 코드들을 작성해왔다고 생각합니다. 1. 대부분은 책에 있는 여러 소스코드들을 파일에 쓰고 지우고를 반복.ㄴ이렇게 하면 나중에 주석과 코드를 다시 볼 수 없다는 점과 코드가 삭제되니 성취감 혹은 달성감이 생기지가 않았습니다. 2. 클래스로 예시코드들을 재구성하여 작성.ㄴ클래스가 너무..
[C++ 입문자에서 벗어나기]Chapter_5: 포인터와 배열 이번 포스팅의 주제는 포인터와 1차원 배열입니다.기본적인 내용들은 생략하고 이것들에 대해 흔히 범할 수 있는 실수나 착각들에 대해서 이야기해보려고 합니다.이번 포스팅에서 다룰 질문들은 아래에 나열된 두가지입니다. Q1: 포인터와 1차원 배열은 완벽하게 바꾸어 사용할 수 있다?Q2: int (*pArr)[2]와 int *arr[2]의 차이는? (feat. right-left rule) [Q1: 포인터와 1차원 배열은 완벽하게 바꾸어 사용할 수 있다?] 소제목에서 추측할 수 있으시겠지만 포인터와 1차원 배열은 대부분의 경우에서 호환이 됩니다.하지만 이 둘에게는 분명한 차이가 존재합니다.설명을 위해 예시 코드를 보여드리고 시작하겠습니다. 위 코드는..
[C++ 입문자에서 벗어나기]Chapter_4: 메모리(Memory)#4 - 2 [new 재정의시 유의사항: 이름 가림] void* operator new(std::size_t count) throw(bad_alloc); void* operator new(std::size_t count, const std::nothrow_t&) throw(); void* operator new(std::size_t count, void* ptr) throw(); 이전 포스팅에서 C++ 표준에서 제공하는 new는 세가지 형태가 있다는 것을 알고 있으실 겁니다.만약 이 중 하나만을 재정의하고 나머지를 기존 형태 그대로 쓰고 싶은 경우, 혹은 기존에 제공하는 형태가 아닌 새로운 형태(다른 파라미터로 동작하는)의 new를 추가..