내일배움캠프/프로젝트

팀 프로젝트 - 퍼즐 정보 관련 인터페이스화

서보훈 2024. 12. 23. 21:00

퍼즐의 정답을 전달하는 메서드를 인터페이스화 하여 확장성을 늘려주었습니다.

public interface INetworkPuzzle
{
    public void SetPuzzleByNetwork(int[] hintNumbers);
}

public class NetworkPuzzleRepeater : NetworkBehaviour
{
    //...생략

    [ClientRpc]
    public void SynchronizePuzzle1ClientRpc(int[] numbers, int puzzleIndex)
    {
        //TODO : 게임 매니저 싱글톤에 Puzzle 올려서 퍼즐에 이 내용 넣어주고 작동시키기
        INetworkPuzzle puzzle = (INetworkPuzzle)PuzzleManager.Instance.subPuzzleList[puzzleIndex];
        puzzle.SetPuzzleByNetwork(numbers);
    }
}

public class Puzzle1 : Puzzle, INetworkPuzzle
{
    //...생략
    //다시 시작하거나 라운드를 통과하였을 때 리스트를 다시 배정하는 코드
    private void SetRound()
    {
        //...생략

        if(isNetwork)
        {
            int[] ints = numbers.ToArray();
            GameManager.Instance.repeater.SynchronizePuzzle1ServerRpc(ints, listIndex);
            Debug.Log("힌트 송신");
        }
    }
    
    //...생략

    public void SetPuzzleByNetwork(int[] numbers)
    {
        if (GameManager.Instance.networkGameManager.StudentId == NetworkManager.Singleton.LocalClientId) return;
        Debug.Log("힌트 수신");

        for(int i = 0; i < numbers.Length; i++)
        {
            Activatables.Add(Alters[numbers[i]]);
            Observables.Add(candles[numbers[i]]);
        }

        StartHintCoroutine();
    }
}

 

이후 추가할 퍼즐의 정답 정보를 int 리스트, 혹은 int 배열로 보낼 수 있다고 가정할경우 인터페이스를 통해 퍼즐의 정답 설정 메서드에 접근하면 확장성을 확보할 수 있다는 판단하에 메서드를 인터페이스화 하여 결과를 수신할 수 있게 해주었습니다.

 

이후, 인터페이스에 퍼즐의 성공, 실패시 사용할 메서드를 추가하여 퍼즐과 관련된 내용을 인터페이스를 통해 전달할 수 있도록 만들어줄 예정입니다.

 

오늘은 중간 발표로 인해 내용이 짧습니다.

중간 발표 결과 받은 피드백은 이렇습니다.

 

  1. 유저입장에서 컨셉을 알아보기 힘들다. 스토리 라인을 보여줄 방법을 찾는것이 좋아보인다.
  2. 멀티플레이의 경우 면접관이 테스트를 진행하기 힘들수 있다. 리드미나 다른 방법을 통해 면접관에게 게임을 어필할 방법을 만들어주어야한다.
  3. 현재 발표내용에 기술스택 관련 내용이 미비하다, 이 내용 역시 리드미에 적어주어야한다.
  4. 개발적으로만 설계되어 유저들에게 친화적이지 않다. 유저가 게임에 더 잘 접근할 방법을 주어야한다.

현재 게임 진행에 필요한 UI가 제작되지 않은 상태이다보니 여러모로 접근성이 떨어진다고 생각하고 있기 때문에, 퍼즐 결과 전달등의 내용을 마무리하면 UI를 본격적으로 제작해주어야 할 것 같습니다.

 

또한, 스토리라인을 보여줄만한 내용을 고민중입니다.

현재로써는 게임 시작후, 간단하게 자신이 무슨 역할인지, 어떤 플레이를 해야하는지 텍스트로 보여주는 방법을 사용하면 어느정도 스토리를 알려줄 수 있다고 생각하고 있습니다.