타일 ​​기반 게임에서 폐색되지 않은 타일 찾기


9

2D 타일 기반 게임을 작업 중이며 현재 2D 동등한 그림자 볼륨을 얻으려고합니다. 그림자를 드리울 표면을 찾는 데 문제가 있습니다. 게임의 어느 시점에서나 폐색되지 않은면 또는 전체 타일을 찾아야합니다.

내 질문은,이 타일 / 가장자리를 가능한 한 빨리 찾을 수 있습니까?

일반적인 시선 및 영향을받는 타일을 보여주는 이미지

답변:



2

이것은 완전한 대답은 아니지만 희망적으로 도움이 될 것입니다.

지도 / 타일이 정적 또는 동적으로 설정되어 있습니까? 정적 인 경우 오프라인 처리를 수행하고 가능한 한 사전 계산을 수행 하는 것이 좋습니다. 원하는 방식 (레이 캐스팅 또는 더 똑똑한 방식)으로 수행 할 수 있지만 레벨을 "굽기"하는 동안 모두 오프라인에서 발생하므로 매우 빠르게 만드는 것은 중요하지 않습니다. 각 지점에서 보이는 타일을 정확하게 미리 계산하거나 더 큰 영역과 각 영역에서 보이는 모든 타일을 만들 수 있습니다.

그런 다음 런타임시 보이는 타일에 대한 쿼리가 매우 간단하고 빠릅니다.

물론 동적으로 생성 된 레벨을 가지고 있다면 전혀 적용되지 않습니다 :-)


1

C # roguelike here에서 어떻게 구현했는지 볼 수 있습니다 . 코드는 고도로 최적화되지는 않았지만 나에게는 충분히 빠르며 (더 중요한 것은) 읽기가 쉬워야합니다. 기본적으로 한 번에 하나씩 작동하는 간단한 섀도 캐스팅 알고리즘을 수행합니다.


0

나는 당신이 어떤 플랫폼을 사용하고 있는지 잘 모르겠지만, 실제로 많은 주체가 없다면 당신의 라이트 캐스팅 엔티티 주위에 원을 성장시키기에 충분히 빠르지 않은 플랫폼을 생각할 수 없습니다. 서클 알고리즘에서 '플롯 팅'될 타일은 솔리드 타일이므로 빛을 차단합니다. 거기에서 당신은 막히거나 막히지 않는 원 세그먼트를 추적해야하기 때문에 약간 까다로울 것입니다. 그러나 그것은 내가 할 것입니다. 또 다른 옵션은 타일 해상도 공간에서 원으로 광선을 던지고 (매우 빠른) 각 타일이 단단한 타일에 닿을 때 멈추는 것입니다.


글쎄, 나는 주로 플래시와 자바 스크립트 게임을하고 있지만, 현재는 약간의 폭력이 일어나기 시작한다. 최적화 방법을 알아낼 수 있다면이 게임을 매우 매끄럽게 실행할 수 있습니다.
Ryan S

플래시에서 쉽게 수행 할 수 있어야하며, 무차별 대입이 최적화 될 수 있습니다. 또한 일반적으로 매 프레임마다 업데이트 할 필요가 없으므로 몇 개의 프레임에 대해 다음 상황을 미리 계산할 수 있습니다.
Kaj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.