[UE5] 노노그램 플레이 중 피드백에 관해서 - 2
이전 글에서 이어진다.
https://mstone8370.tistory.com/7
[UE5] 노노그램 플레이 중 피드백에 관해서 - 1
노노그램 게임들을 해보면 퍼즐을 푸는 중에 칸을 어떻게 채웠는지에 대한 다양한 방식의 피드백을 준다. 몇 가지를 정리해보면 1. 피드백이 없음. 퍼즐을 완료했다는것만 알려주고, 그 외의 모
mstone8370.tistory.com
아래의 이미지에 있는 10개의 예시를 하나씩 분석한다.
각 예시에 있는 것은 왼쪽부터 힌트, 칸, 블럭 정보다.
게임 화면에 나타나는것은 힌트와 칸이고, 블럭 정보는 한 줄의 칸들을 분석해서 블럭으로 구분한 결과다.
블럭 정보에 나타난 숫자는 블럭의 길이이고, 대괄호는 해당하는 블럭이 줄의 어느쪽 끝에 연결되어있는지를 표현한 것이다.
대괄호가 두개 붙어있으면 그 블럭은 줄의 한쪽 끝이라는 뜻이다.
빨간색으로 써진 블럭은 어느쪽에도 연결되지 않아서 검사를 하지 않게되는 블럭이다.
검사를 하지 않는 블럭이지만 존재한다는 것은 알고있어야한다.
1.
가장 기본적인 예시다.
줄의 어느쪽이든지 한쪽 끝에 붙어있는 블럭만 검사한다.
하지만 두번째 줄과 세번째 줄처럼 블럭의 개수가 힌트의 개수와 같으며, 각 블럭의 크기가 힌트와 모두 같다면, 그 줄의 모든 힌트는 맞았다고 처리해야한다.
블럭이 연결되지 않았어도 모든 블럭이 힌트에 맞기 때문에 이 상태에서 더이상 칸을 채우지 않도록 플레이어에게 알려줘야하기 때문이다.
이러한 경우는 앞으로 나올 다양한 경우보다 우선시되어야한다.
2.
줄의 어느쪽 끝에 붙어있는 블럭만 검사한 결과다.
하지만 마지막 줄은 블럭이 양쪽 끝에 연결되어있어서 두 힌트에 모두 해당하는 블럭이 되었고, 모호함이 발생했다.
이런 경우 모든 힌트를 틀린 것으로 처리한다.
3.
모호함이 발생한 또 다른 예시다.
첫번째 줄의 경우에는 두 블럭 다 줄의 끝에 연결되어있다.
하지만 그 방향이 다르므로 두 블럭은 구분된다.
따라서 0, 2번째 힌트는 맞다는 것을 확실히 알 수 있다.
두번째 줄은 모호함이 발생했다.
세번째 줄은 힌트의 수가 충분히 많기 때문에 구분이 되고, 블럭에 해당할 가능성이 있는 힌트들은 맞았다고 표현한다.
4.
이전에 봤던 것과는 약간 다른 경우다.
첫번째 줄과 두번째 줄은 세번째 줄 처럼 하나의 블럭만 존재하고 모호함이 발생했다.
하지만 블럭이 줄의 한쪽 끝에 해당하므로 이 블럭이 어느 힌트에 해당하는지 명확하게 구분할 수 있다.
모호함이 발생해서 모두 틀린 것으로 처리한 다음에 블럭이 줄의 한쪽 끝에 해당하는지 검사하면 될 것이다.
마지막 줄은 두 힌트의 길이가 다르므로 블럭이 어느 힌트에 해당하는지 명확하게 구분할 수 있다.
5.
이번에는 힌트보다 블럭이 더 많은 경우다.
첫번째 줄의 경우에는 2번 블럭은 분리되어있으므로 검사를 하지 않게 된다.
나머지 네개의 블럭만 검사를 하는데 이 블럭들은 모두 해당하는 힌트와 일치한 길이를 가지고있다.
그렇다면 네개의 힌트가 모두 맞다고 처리되는데 블럭의 상황을 보면 그렇지 않다.
블럭이 힌트의 개수보다 더 많으며 검사를 하지 않는 블럭이 있다면 발생할 수 있는 상황이다.
이런 경우 모두 맞았을리는 없으므로 모두 틀린것으로 처리한다.
두번째 둘의 경우에는 다섯개의 블럭 모두 검사를 한다.
그렇게되면 힌트가 블럭에 할당될 때 하나의 힌트가 두개의 블럭을 가리키게 된다.
검사 순서를 따라가면서 하나씩 보겠다.
먼저 왼쪽에 연결된 블럭부터 검사한다.
0번 블럭은 왼쪽에 연결되었고, 0번 힌트에 해당하며, 길이가 일치한다.
1번 블럭은 왼쪽에 연결되었고, 1번 힌트에 해당하며, 길이가 일치한다.
2번 블럭은 왼쪽에 연결되었고, 2번 힌트에 해당하며, 길이가 일치한다.
3번 블럭은 왼쪽에 연결되지 않았으므로 왼쪽 검사를 끝낸다.
마지막 블럭인 4번 블럭은 오른쪽에 연결되었으므로 오른쪽 검사를 시작한다.
4번 블럭은 오른쪽에 연결되었고, 3번 힌트에 해당하며, 길이가 일치한다.
3번 블럭은 오른쪽에 연결되었고, 2번 힌트에 해당하며, 길이가 일치한다.
이 때 이 힌트는 이미 맞은것으로 되어있으므로, 이미 다른 블럭에 할당되어있는 힌트라는 뜻이다.
그렇다면 블럭의 개수가 힌트보다 많은 경우라는것을 알 수 있고, 모든 힌트를 틀린 것으로 처리하고 끝낸다.
모두 틀리게 처리하지 않으면 모든 힌트가 맞은 것으로 표시되므로 플레이어가 현재 상태가 모두 맞은 상태라고 오해할 수 있기 때문이다.
마지막 줄의 경우에는 검사 결과 1번 힌트가 틀렸다는것을 알 수 있다.
이 검사 결과를 그대로 플레이어에게 전달해줘도 플레이어는 1번 힌트와 관련된 부분이 잘못되었다는 것을 알 수 있다.
그러면 자연스럽게 1번 블럭 근처가 잘못되었다는 것을 알게 되므로 모든 힌트를 틀렸다고 처리할 이유가 없다.
맞은 부분은 맞았는걸 알려줘야 플레이어 입장에서도 어딜 집중적으로 봐야하는지 알게 되므로 편하다.
6.
첫번째 줄의 0번 힌트는 0번 블럭, 1번 힌트는 2번 블럭, 2번 힌트는 3번 블럭에 해당한다.
그리고 모든 힌트가 맞은것으로 처리 될 것이다.
하지만 블럭의 개수가 힌트의 개수를 초과하므로 모든 힌트를 틀린것으로 처리한다.
0번 블럭은 줄의 한쪽 끝에 해당하지만 모호한 블럭이나 모호한 힌트가 아니기에 모호성 검사 대상이 아니며, 틀린 것으로 처리된다.
두번째 줄은 0번 힌트가 0번 블럭에 해당한다는 전제로 검사를 했지만 블럭의 길이가 달라 틀렸으므로 힌트가 블럭에 할당되지 않는다.
이어서 오른쪽에서 시작하는 검사를 한 결과 0번 힌트는 틀린 상태고 1, 2번 힌트는 맞은 상태다.
이대로 플레이어에게 전달해줘도 플레이어는 0번 힌트와 관련된 블럭들을 볼 것이므로 의도는 충분히 전달된다.
세번째 줄은 1번 힌트가 1, 2번 블럭에 할당되므로 모호한 상황이 된다.
이런 경우 모두 틀린것으로 처리한다.
규칙이 어느정도 정리된듯하니 여기서부터는 간단하게 설명하겠다.
7.
첫번째 줄은 두 힌트 다 맞은것으로 처리됐지만, 블럭의 개수가 힌트의 개수를 초과해서 모두 틀린 것으로 처리한다.
두번째 줄은 0번 블럭이 0번 힌트와 다르므로 0번 힌트는 어느 블럭에도 할당되지 않는다.
그리고 1번 힌트는 2번 블럭과 길이가 일치하므로 블럭에 할당이 되었다.
0번 힌트가 틀렸으니 플레이어는 그 부분을 확인할 것이다.
세번째 줄은 1번 블럭이 검사를 건너 뛰고 0, 2번 힌트는 해당하는 블럭에 할당되었다.
8.
첫번째와 두번째 줄은 모든 힌트가 블럭에 할당되며 모두 맞는것으로 처리되지만, 블럭의 개수가 힌트의 개수를 초과하므로 모두 틀린 것으로 처리된다.
세번째 줄부터는 블럭이 끊어졌거나 힌트와 크기가 다른 이유로 할당되지 않은 힌트가 있기 때문에 결과가 그대로 전달된 경우다.
9.
이건 이전에 모호함을 설명할때 사용된 예시다.
첫번째와 두번째 줄은 모호함이 발생한 경우고, 세번째 줄은 구분이 되는 경우다.
10.
첫번째 줄은 힌트에 반복되는 패턴대로 블럭이 채워져있어서 모호함이 발생했다.
하지만 두번째 줄과 세번째 줄은 구분이 되는 경우다.
검사를 해야하는 블럭인지, 모호한 상황인지, 플레이어가 오해할 수 있는 정보인지를 구분할 수 있으면 대부분의 경우에는 의도대로 잘 전달 되는듯 하다.
다음 글에는 이 검사 방식을 어떻게 구현했는지에 대해 설명하겠다.