66,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결이득우의 꼭 배워야하는 게임 알고리즘
쿼드트리 구현 강의자료에 포함된 LQNode의 GetQuads함수에 궁금한 점이 있습니다.
LooseQuadTree의 Query함수 호출 시 겹칠 가능성이 있는 모든 LQNode를 수집할 때 일부 결과가 누락된 것으로 판단되어서 문의합니다.강의 자료의 Query함수의 기능이 틀린 내용인지, 아래 내용이 옳은지 그리고 더 최적화된 로직이 있는지 궁금합니다.public LQNode(LQuadtree tree, LQNode parent, Bounds bounds, int depth) { _tree = tree; _parent = parent; _bounds = bounds; _looseBounds = new Bounds(bounds.center, bounds.size * tree._constantK); _depth = depth; } private List<LQNodeIndex> GetQuads(Bounds bounds) { List<LQNodeIndex> quads = new List<LQNodeIndex>(); if (_children[(int)LQNodeIndex.UPPERLEFT]._looseBounds.Intersects(bounds)) { quads.Add(LQNodeIndex.UPPERLEFT); } if (_children[(int)LQNodeIndex.UPPERRIGHT]._looseBounds.Intersects(bounds)) { quads.Add(LQNodeIndex.UPPERRIGHT); } if (_children[(int)LQNodeIndex.LOWERRIGHT]._looseBounds.Intersects(bounds)) { quads.Add(LQNodeIndex.LOWERRIGHT); } if (_children[(int)LQNodeIndex.LOWERLEFT]._looseBounds.Intersects(bounds)) { quads.Add(LQNodeIndex.LOWERLEFT); } return quads; }
- 미해결이득우의 꼭 배워야하는 게임 알고리즘
A* 알고리즘에 대해 질문있습니다!
이 강의를 보고, 직접 게임에 적용해보고 싶어서 다시 강의를 수강하며 공부 중인 학생입니다.맵을 만들다보면, 강의처럼 한개의 plane이 아닌 여러개의 plane 또는 오브젝트들이 바닥에 놓여질 텐데 grid를 어떻게 나눠야하는지에 대한 질문입니다!처음에는 2차원 배열로 두고, 그리드를 xOffset,yOffest에 의해 row와 col을 증가시키는 방식을 사용했습니다. 하지만, 코드를 수정하고 생각하는 과정에서 머리가 꼬여버렸습니다ㅜㅜ..두번째로는 하나의 큰 plane을 아래에 두고, 다양한 사이즈와 모양의 plane을 두는 방식을 생각하는 중입니다. 제 주변에 게임 개발자가 없어 이렇게 질문 글을 올립니다. 혹시, 실제 게임 개발시에 a* 알고리즘을 사용한다면 어떤 방식으로 그리드를 나누는지 알 수 있을까요? 알려주신다면 정말 감사합니다!
- 미해결이득우의 꼭 배워야하는 게임 알고리즘
움직이는 물체에 대한 쿼드, KD트리 효율 질문
강의 잘들었습니다 😊😊 강의를 들으면서 한가지 의문이 생겼는데요 쿼드트리나 KD트리를 이용하면 다수의 물체에 대한충돌체크에 쓰이면 좋을거 같다는 생각을 했습니다. 강의에서는 고정된 물체에 대해서 트리를 구축하고 질의(Query)를 실행하는데요 만약 물체가 움직이게 된다면 위치값이 계속바뀌닌까 이 알고리즘을 사용할수 없을수도 있을거 같았습니다. 움직일때마다 트리를 재구축 해줘야하닌까 더 비효율적이지 않을까요?? 움직이는 다수의 물체에 대해 충돌체크를 하려면쿼드트리를 사용하고 물체가 이동할때마다트리 노드가 들고있는 물체 목록을 옮겨 다니는 로직을 만들어야 할까요?
- 미해결이득우의 꼭 배워야하는 게임 알고리즘
BSP트리를 활용한 렌더링 순서 관련 질문
안녕하세요, 강사님. BSP트리를 활용한 렌더링 순서에 대해서 설명해주시는 부분에 있어서 궁금한 점이 있어 여쭈어보고자 합니다. 다음 예시에서 플레이어가 평면 F로 분할된 공간의 양의 공간에 있을 때, 음의 공간의 폴리곤부터 먼저 렌더링을 해야한다고 설명해주셨습니다(10:13~). 그런데 단순하게 생각하면 플레이어 입장에서 보여지는 부분부터 순서대로 렌더링 되어야 하는 것이 아닌가 하는 생각이 들었습니다. 예를 들어 F앞면 - A1 - B - C1 / G앞면 - A2 - D1 / H앞면 - D4 - C2 / D3 와 같은 순서처럼 말입니다. 렌더링 순서는 사실 크게 중요하지 않은 것인지, 그게 아니라면 해당 예시와 같이 플레이어 입장에서는 보이지 않는 영역인 음의 공간의 폴리곤부터 먼저 렌더링하는 이유(성능적인 부분)가 특별히 있는 것인지 궁금합니다.
- 미해결이득우의 꼭 배워야하는 게임 알고리즘
쿼드트리 삽입 프로그램 실행 예시 질문
안녕하세요, 강사님. 5강 코드트리의 구현 강좌 초반부에서 삽입 예시를 설명해주신 부분에서 의아한 부분이 있어 여쭈어보고자 합니다. 첫 번째 삽입 예시의 Depth를 설명해주실 때, Depth를 4라고 말씀해주셨는데, 5가 아닌가 생각이 들었습니다.이후 세 번째 삽입 예시의 Depth를 설명해주실 때, 첫 번째 삽입 예시보다 한 단계 작게 삽입이 이루어지는 예시일 때도 Depth를 4라고 말씀하셔서, 어느 부분이 맞는 것인지 궁금합니다.
- 미해결이득우의 꼭 배워야하는 게임 알고리즘
알고리즘 확인(?) 질문
아직 아리까리해서 확인 질문드립니다 ㅜㅜ... 강의 예시 부분에서 주황색영역(AABB체크할 영역)에 포함되는 노드를 찾아 검사대상에 올리는데요. 깊이3 쿼드트리 노드 85개 전체를 돌면서 주황생영역이 포함된 노드를 찾게 되는 것일까요? 그런다음 검사대상인 노드만 돌면서 노드에 등록된 물체에 대해 AABB충돌체크를 진행 하게 되는걸까요?
- 미해결이득우의 꼭 배워야하는 게임 알고리즘
우선순위큐로 구현시
최적화전 코드에 openSet에 이미 전에 계산한 중복노드가 있다면 낮은값일때 값을 바꿔주는 부분이 있었는데요. 우선순위큐에서 pop을하면 어차피 최소값을 보장하닌까 우선순위큐로 교체해준다면 굳이 바꿔줄 필요가 없겠지요?
- 미해결이득우의 꼭 배워야하는 게임 알고리즘
19:35 리스트와 이진힙의 구조비교
리스트의 경우 메모리가 분산 될수 있고 이진힙은 고정된 배열을 사용할수 있기 때문에 알고리즘에서 파악할수 없는 캐시 효과를 부과적으로 누릴수 있다. 이부분에대해 추가적인 설명을 해주실 수 있을까요?? 잘 이해가 가지 않습니다...
- 해결됨이득우의 꼭 배워야하는 게임 알고리즘
depth 구할 때 floor로 처리하면 -1이 사라지는 과정이 잘 모르겠어요.
결국엔 log(2, x) -1 = floor ( log(2,x) ) 라는 것 같아 보이는데.. 이 수식이 잘 이해가 안 가는 것 같아요....
- 미해결이득우의 꼭 배워야하는 게임 알고리즘
GetQuads가 out of area를 체크 할 수 있는건가요??
_bounds가 노드의 영역일텐데 _bound.center와의 비교는 방향을 구하기는 하지만 영역을 완전히 넘어가는지는 체크 못하지 않나 싶어서 질문드렸습니다...