메뉴 건너뛰기

XpressEngine

동방크롤 잡설 - 시야처리

2018.06.06 16:28

개발자 조회 수:50

동방크롤을 만들면서 여러가지 기술적인 문제나 아이디어 정리잡담

 

로그라이크 전반에 통용되는 이야기도 많을듯

 

 

구현할때 상당히 적당히 만들었기때문에 반성회같은 느낌으로 진행 예정

 

-----------------------------------------------------------------------------------

 

동방크롤을 가장 처음만들면서 제일 처음 시작한건 역시 시야 처리

 

 

로그라이크들은 다양한 시야처리법이 있어서 따로 시야처리 안하거나 방에 대한 시야만 가진다던지 여러가지 방식이 있지만

 

역시 돌죽을 표방한 게임으로 시야처리 방식은 돌죽처럼하기로 함

 

 

단순하게 생각하면 특정 위치까지 경로를 확인해서 그 사이에 벽과 같은 장애물이 있으면 시야가 가려진다란 심플한 생각으로 진행되었음

 

1.png      2.png

< 처음 구현된 모습이 왼쪽, 수정된것이 오른쪽 >

 

하지만 막상 구현해보니 약간 어색함을 느꼈는데 처음 구현된 모습이 왼쪽이었음

 

저것도 나쁘다고 보는건 아니지만 돌죽과 가장 큰 차이점은 돌죽은 해당 위치로 보는 경로가 막혀있어도 약간씩 경로가 틀어져서 도착할 수 있다면 보이는 걸로 되어있었다.

 

어쨌든 이 방식으로 하면 1칸 정도는 막혀있어도 어떻게 보느냐에 따라 보인다는 점

 

실제로 구현할때는 이를 위해서 5가지의 근사값을 구하는 방법을  정의하여 5가지의 경로로 해당 위치를 판별했다.

 

3.png

 

약간 꼼수같은 방법이긴했지만 이것만으로도 꽤 돌죽과 비슷하게 넓은 시야를 보는 것이 가능해졌다.

 

이래저래 남아있는 문제가 없진않는데 어느정도 돌죽과 비슷해졌으므로 통과(이는 이후에 사격 경로 문제로 이어지긴한다.)

 

시야는 움직일때마다 시야판정을 다시 처리하는 방식으로 진행되었음. 일일이 모든 시야를 재처리하는게 생각보단 부하가 그렇게 크지않아서 따로 최적화는 하고있지않음

 

개발도중 돌죽에서 사각형 시야를 채택해서 따라할까 생각은 했지만 귀찮아서 포기했다.