이번에 작업한 것은 튜토리얼이다.
일전에 회사에서 튜토리얼 관련된 코드를 본적이 있었는데
아무런 생각과 대책없이 튜토리얼을 구현하면 이렇게도 구현할 수 있구나 싶었다.
온갖 조건문과 예외처리 코드가 스파게티처럼 꼬여있어서 새로운 스텝을 추가하기도 수정하기도 쉽지 않았던 기억이 있다.
아무튼 이런 저런 이유로 알기 쉽고 수정과 관리가 용이하게 구현하려 노력했다.
또 비디오나 스프라이트가 아닌, 사용자 반응형 튜토리얼을 구현하려 했다.
완벽하게 끝이 난것은 아니지만 정리해서 포스팅 해보겠다. ( 원래 리펙토링은 끝이 없기에.. )
먼저 관련 클래스는 3 가지로 나뉜다.
- TutorialManager
- TutorialStep
- TutorialHelper
간단하게 설명하자면 TutorialStep 이 모여 하나의 Tutorial이 된다.
예를들어 처음 플레이 하는 유저가 게임 방법에 대한 튜토리얼을 진행한다면
"BEGINER_TUTORIAL"이라는 Key를 사용하는 TUTORIAL 아래 1 ~ 3의 STEP이 추가된다.
Step 1. "시작버튼을 누르세요" 라는 메시지 박스 출력
Step 2. "화면을 터치하면 캐릭터가 움직입니다."라는 메시지 박스 출력
Step 3. 유저가 화면을 터치하면 캐릭터가 움직이고 "잘하셨습니다!!"라는 메시지 박스 출력
위와같은 방식으로 총 59 STEP으로 이루어진 BEGINER 튜토리얼을 구성했다.
또 설정 팝업에 추가하여 언제든 튜토리얼을 다시 할 수 있도록 하였다.