-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
여러발의 탱크 구현 질문이 있습니다.
20.03.18 23:54 작성 조회수 159
0
교수님 깃을 fork해서 multi bullet 구현을 해보았습니다.
unique_ptr를 이용해서 구역을 벗어나면 해당 unique_ptr를 reset해서 delete하게 구현했습니다. 구현간에 궁금한 점이 있습니다.
질문 1)
화면을 벗어났는지 범위를 체크하는함수를 isOutMap으로 구현했는데 Game2D Class의 width와 height와는 다른 단위(?)를 가진 것 같아서 할 수 없이 매직넘버를 어림잡아 넣게되었습니다. 어떤 값을 참고해서 범위를 재지정해야할가요?
OpenGL만의 그려지는 단위가 따로 있나요?
의문 1)
unique_ptr를 한정된 개수로 모아놓은 vector<unique_ptr<MyBullet>> bullets 으로 총알을 모아놓고 재활용하고 있습니다. 이렇게 렌더링하는 부분에서 반복문을 통해서 하나씩 비어있는지 체크하는 방식이 맞는 방식일가요?
답변을 작성해보세요.
2
홍정모
지식공유자2020.03.19
flyweight와는 다른데, 메모리 풀이 사실 최적화 중에서도 가장 까다로운 축에 속합니다. 게임 엔진 관련 서적에서 종종 다룹니다. 꾸준히 공부해나가시다 보면 확 뚫리는 날이옵니다. 특히 자료구조 알고리즘 공부도 슬슬 준비하시면 좋겠습니다.
2
2
홍정모
지식공유자2020.03.19
보통 코드를 봐드리기는 어려운데 질문이 잘 정리되어 있어서 대답해드리기가 편하네요.
질문 1) 벗어났는지 체크하는 부분은 눈으로 봤을 때 이상하지 않은가가 1차적인 기준이 될거고 총알이 엄청나게 많아서 속도에 부담이 될 정도라면 조금이라도 빨리 없어지게 하는게 이익이겠지요. 정확하게 계산해본다면 물체가 완전히 벗어났을 때 랜더링 되지 않도록 결정해야겠지요. 스케일은 정의하기 나름입니다. 보통은 현실 좌표계와 비슷하게 맞춥니다. 사람 키가 대강 1이나 2 사이에 오게 한다든지.
의문 1) 일단 알고리즘에서 여러가지 더 효율적인 기술들을 배우게 되고 그것들을 응용해서 더 효율적인 메모리 풀(memory pool)을 만들 수 있습니다.
0
답변 4