2011-12-21 4 views
1

나는 여기에 조금 걸리고있다. 나와 나와 친구가 재미있는 2D 게임을 만들고 있습니다. 우리는 플레이가 보는 것을 제한하여 "코너"를 볼 수없는 "전쟁의 안개"를 구현하려고합니다. 그러나, 나는 플레이어가 움직일 때 픽셀이 각 프레임마다 바뀔 수있는 "그림자 맵"을 만드는 가장 좋은 방법을 찾아 내려고 노력하고 있습니다. 때때로 그림자지도는 1024x1024 크기로 큽니다. 우리는 LWJGL과 Slick을 사용하고 있습니다.각 프레임마다 큰 이미지를 렌더링하고 편집하는 가장 좋은 방법은 무엇입니까?

각 프레임마다 큰 이미지를 편집하고 렌더링하는 효율적인 방법이 있습니까?

나는이 사이트에서 다른 안개 질문을 봤지만 아무도 실제 렌더링 및 편집을 수행하는 방법을 언급하지 않습니다. Slick의 ImageBuffer를 사용해 보았습니다. 렌더링을 위해 이미지를 가져올 수있는 유일한 방법은 각 이미지에 새로운 Image 객체를 생성하여 이전 Image 객체가 삭제 된 경우에도 막대한 메모리 누수가 발생합니다.

답변

1

나는이 오래된 질문에 킥을주고 싶다. OP와이 주제에서 일어나는 다른 사람을위한 질문을 해결하기를 바란다. 최근에 같은 문제가 발생하여 솔루션을 개략적으로 설명하고자합니다. 내가 만든 2D 게임 엔진을 사용하고 있지만 OpenGL이나 JOGL을 사용하지 않았기 때문에이 경우 드로잉 방법이 매우 구체적이고 일반적이지는 않습니다. 특정 답변은 사용중인 시스템에 맞게 조정되어야합니다.

필자의 경우지도를 타일링했는데 일반적으로 크기는 X입니다. 캐릭터에 대한 공개 설정 (예 : visibilityRange = visionLength).

"내 모든"시선 "은 문자의 가운데에서 이동해야합니다.

초기 설치는 간단했지만 캐릭터의 범위를 벗어난 전쟁의 안개를 만들었습니다. 이것은 내 캐릭터 주위에 좋은 원을 만들었습니다. 거기에서 나는 모든 "시력 차단제"를 시력 반경 내에 위치시킬 것입니다. 두 줄을 매핑하고 (가장 왼쪽의 시각 측면, 가장 오른쪽의 시각 측면) 그 뒤의 모든 것을 가린다. 부분적으로 나는 무엇이든을 "반 비전"안개 전쟁의 할 것입니다. 여기에 거친 예는이 후 우연히 발견 어떤 게임 개발자를하는 데 도움이

P  X N N N 
     L L L N 
X X X X L L N 

희망 ...

P = 플레이어, X = 비전 차단제, L = 시력, N = 더 비전입니다.

+0

공유해 주셔서 감사합니다. 나는 내 솔루션이 매우 유사하다고 생각하지만, 내가 더 이상 무엇을했는지 기억하지 못한다. – Zachar543

0

이 답변이 다소 모호하지만 Pixel Buffer Objects를 사용해보십시오. 이것들은 픽셀 데이터를 효율적으로 조작하는 방법입니다.

관련 문제