2024년 8월 16일 금요일 개발일지 / 유저 테스트 후, 게임 개선하기

2024. 8. 16. 21:32나의 개발자 기록/본 캠프 개발 일지

2024년 8월 16일 금요일


What I did yesterday : 게임 완성하기 + 유저 테스트 하기

 

 

수요일 날 새벽 2시까지 하는 등 최대한 많이 작업했지만, 부족한 점이나 빌드하고 나서의 버그 때문에 어제도 오전 10시 반쯤에 들어가서 작업을 시작했습니다. 팀원 분 한 분이 들어와서 버그를 고치고 계셨고, 저는 구글 시트 중에 MAP 데이터가 비어있어서 맵이 돌아갈 수 있게 조건에 맞는 값을 입력해서 넣었습니다. 일단 임시로 넣는 데이터다 보니 캐릭터나 몬스터 등등 밸런스가 제대로 안 잡혀 있었습니다.

 

 

임시로 밸런스를 얼추 맞춘 다음에 저는 스테이지 별로 배경음악이 바뀌게 끔 만들어 보았습니다. 사운드 매니저를 만들었을 때, 배경음악이 자연스럽게 바뀌도록 코루틴을 사용하여 Fade On Out을 만들어 놨었고, 이것을 사용하여 스테이지 버튼이 있는 곳에 Rcode를 분석해서 각 스테이지 별 테마에 맞는 노래를 적용시켰습니다. 배경 음악 변경 기능을 만들던 도중에 다른 팀원 분이 오셔서 밸런스 부분을 담당해 주셨고, 캐릭터와 몬스터 로직을 계산해서 밸런스를 맞춰주셨습니다.

 

 

그다음에 빌드하고 이것저것 테스트하다가 효과음 사운드가 제대로 바뀌지 않는 문제힐러의 애니메이션 문제가 생겼는데, 사운드의 경우 체크해보니까 해결했던 문제였는데, 어디선가 사운드 매니저가 초기 상태로 바뀌었고, 힐러 애니메이션은 힐 하자마자 바로 Idle 상태로 전환되어서 생긴 문제였습니다. 일단 사운드는 해결 했던 사항이라 바로 추가해 주고, 하는 김에 Sound Source도 10개를 넘지 않도록 제어를 해주었고, 힐러 문제의 경우에는 Heal 애니메이션 이벤트를 만들어서 해결하였습니다.

 

 

저녁 이후에는 한 분이 트레일러 영상을 만드시고, 셋이서 유저 테스트 용 설문지를 만들었고, 트레일러 영상이 완성되고 나서 유저 테스트를 시작하게 됐습니다!


What I did today : 게임 개선하기

 

오늘은 하루 사이에 온 버그 및 피드백, 개선 사항에 대해서 구현하고 고치는 시간을 가졌습니다. 약 세 분이서 피드백을 남겨주셨는데, 1 스테이지에서 한 마리를 흘리면 게임 진행이 안 되는 문제가 있었습니다. 이거는 구글 시트에 몬스터의 수 입력이 잘 못 되어 있어서 일어났던 문제라 바로 고칠 수 있었습니다.

 

 

일단은 각자 맡았던 부분에 피드백 수정을 진행하셨고, 저는 뷰 캐릭터의 저장이 계정마다 저장되는 것이 아니라 게임 자체 저장이 되어 있어서 이 부분을 수정했습니다. 이론상 기존 저장 하는 방식이라 같을줄 알고, 뷰 캐릭터의 Sprite를 받아와서 저장해보는데, 알고 보니까 Sprite는 파일 자체를 저장해야 하더군요. 그래서 이것도 Rcode로 되어 있으니까 String으로 Rcode를 받아와서 재구성했습니다.

 

 

처음에는 잘 될 줄 알았는데, 바꾼 로직에도 잘 안되었고, 왜 그런가 봤더니 기존에 있던 PlayerPrefs 로직이 동작하고 있어서 바뀌질 않았더군요. 그래서 이 부분을 바꾸고 적용하니까 잘 바뀌었습니다. 그리고 이걸 테스트하면서 로그아웃 저장이 제대로 안 되는 문제가 있었는데, 이 부분도 고치다 보니까 시간을 많이 잡아먹어버렸습니다.

 

 

남은 시간에는 어떤 버그에 대해 팀원분들이랑 어떻게 고칠지 이야기를 하거나 튜토리얼 시스템 같은 굵직한 거는 어떻게 할지 의견을 모았지만, 다들 어제 쉬는데도 불구하고 열심히 만드셨기도 하고, 내일 주말이니까 쉬엄쉬엄 하자고 해서 TIL을 쓰면서 오늘 하루를 마무리했습니다.


면접 질문 대비 : 제네릭이란 무엇인가요?
public class GenericList<T>
{
    private T[] items;
    private int count;

    public void Add(T item)
    {
        items[count++] = item;
    }

    public T Get(int index)
    {
        return items[index];
    }
}

// 사용 예시
GenericList<int> intList = new GenericList<int>();
intList.Add(1);
int value = intList.Get(0);

 

제네릭(Generic)클래스메서드에 타입 매개변수를 사용하여, 데이터 타입에 의존하지 않는 코드를 작성할 수 있게 합니다. 제네릭을 사용하면 컴파일 시간에 타입을 지정할 수 있어 타입 안전성을 높이고, 코드의 재사용성을 향상할 수 있습니다.