타일 기반 게임에 벽을 구현하는 것과 관련된 메모를 작성하기 위해 오늘 시간을 보낸 후에 갑자기 상상했던 것처럼 간단하지 않다는 것을 깨달았습니다. 내 작업의 현재 단계가 실제로 벽 관련 코드를 작성하는 데 가깝지는 않지만 세 가지 다른 방법을 생각해 냈습니다. 지금은 어떤 아이디어가 가장 잘 작동하는지, 내가 놓친 것이 있는지 확실하지 않습니다.
중요 : 캐릭터 는 형태에 관계없이 벽이있는 타일 위에 서있을 수 있습니다.
세 가지 변형의 공통점 : 타일 맵은 단일 차원 std :: vector (또는 유사한) 기반 컨테이너에서 "유지"됩니다. 그 이유는 다른 질문에 대한 답변으로 (굉장히) 설명되어 있습니다.
벽으로 돌아 가기
A) 간단한 접근법.
여기서 멋진 것은 없습니다. 각 타일 컨테이너에는 문자뿐만 아니라 타일 내부 의 가장자리에 부착 된 하나 또는 여러 개의 벽 객체를 담을 수 있습니다 .
장점 : 구현이 쉽고 엔진의 변화가 없습니다. 단점 : 두 가지. 하나-내 머리에있을 수도 있지만 일부 조합은보기 흉하게 보입니다. 두 번째-이 접근법은 인접한 두 타일로 이중 벽을 만들 수 있습니다. 건축은 게임의 중요한 부분이 될 것이며, 이중 벽은 건축자가 게임 수단을 통해 벽의 재료를 업그레이드하는 것을 포기하고 기존 벽을 두 배로 늘려 내구성을 향상시킬 수 있습니다. 바람직하지 않습니다. 물론, 이중 벽을 금지하는 절차를 포함시킬 수는 있지만 느낌이 좋지 않습니다.
B) 똑똑한 (?) 접근.
플레이어들에게 맵 전체를 이중 벽으로 만드는 대신, 그들을 이길 것입니다. 모든 벽에는 내부에서 타일 가장자리에 붙어있는 두 개의 반쪽이 있습니다. 따라서 하나의 "벽 유닛"을 만들려면 두 개의 인접한 타일에 반월 오브젝트를 두 개 만들어야합니다.
장점 : 대칭입니다 !!! 또한 현재 엔진 사양을 크게 변경할 필요가 없습니다. 단점 : 더 많은 번거 로움, 더 많은 물건, 그리고 물론 "모자". 그림에서 볼 수 있듯이 코너는 기본적으로 "모자"개체를 외칩니다. 나는 실제로 그것을 시원합니다. 추가하기는 어렵지 않습니다. 안녕하세요, 이미 연결된 캡 4 개로 만들어진 얇은 기둥을 계획하고 있습니다. 단. 여전히 시야와 시선 문제에 대해 걱정하고 있습니다.
C) 총 분해 변형.
또는 게임 개체에 대한 별도의 컨테이너로 테두리와 모서리를 만들 수도 있습니다. 그냥 그렇게
장점 : 확실하지 않습니다. 글쎄요. 명확히. 단점 : 점검이 필요하다. 고맙게도 코드는 아니지만 현재의 게임 메카닉 사고 방식은 확실합니다. 이점은 분명하지 않습니다. 또한이 aprroach에는 이전의 두 가지보다 훨씬 많은 컨테이너가 필요 합니다. 인덱싱 수학도 약간의 고통이 될 것입니다.
여기 타일 사이에 벽을 만드는 세 가지 뚜렷한 방법이 있습니다. 다른 대안이 있다면 기꺼이 확인해 드리겠습니다. 내가 보지 못한 접근법에 대한 이점 / 하락이있는 경우 지적하십시오.