goguelike의 시야범위 linesofsight 를 rework 했습니다.
By SeukWon Kang
기존의 코드가 상당히 지저분한 관계로 언젠가는 고쳐야지하고 생각하다가 좋은 알고리즘?이 떠올라 주말에 작업했습니다. 간단히 끝날것으로 생각했었는데 1차 함수의 수식을 대충 생각하고 작업한 부분에 버그가 있어서 주말 내내 머리 싸매고 고민하게 만들었습니다.
고생은 했고 또 실행 결과는 똑같지만 코드가 아주 깨끗해저서 꽤 만족스럽습니다.
내용은 캐릭터의 보는 능력을 시선이 통과하는 타일들이 방해 하는 것 을 계산 해서 어디 까지 볼 수 있는가 하는 것으로 타일과 시선이 겹치는 길이 * 타일의 시선 방해도 를 시선이 지나가는 전체 타일에 적용합니다. 이것을 모든 캐릭터가 이동 할때 마다 각각 계산 해야 해서 계산 시간이 어마무지하게 걸리기때문에 전체 타일 마다 계산된 시야를 캐싱하게 되어 있습니다. 이부분이 총 메모리 사용량의 상당 부분을 차지 합니다.