[뒤끝팁] 요모조모 뜯어보세요! 멀티 캐릭터 예제 게임

안녕하세요, 개발자 여러분!
개발이 필요 없는 게임 서버, 뒤끝입니다😁

오늘 이야기할 내용은 ‘멀티 캐릭터 예제 게임’입니다. 지난번 소개 드렸던 멀티 캐릭터 기능을
더 잘 활용하고 싶은 분들을 위해 준비해 보았습니다
🎁

특히 멀티 캐릭터 계정을 통한 로그인은 기존에 구현하던 커스텀 로그인과 프로세스가 많이 다른데요!

커스텀 로그인과 멀티 캐릭터 계정 로그인 프로세스의 차이

위 이미지에서 확인할 수 있는 것처럼, 멀티 캐릭터 계정을 통한 로그인 프로세스는 더 복잡합니다. 그렇기 때문에, 이 기능을 활용할 예정이시라면? 예제 게임을 꼭 참고해 보시는 것을 추천드립니다.

그럼, 지금부터 ‘멀티 캐릭터 예제 게임’ 함께 알아볼까요?

💌 목차

*참고해 주세요!
멀티 캐릭터 기능에 대한 정보는 [업데이트] 한 계정에 캐릭터가 최대 20개? 멀티 캐릭터 기능 소개 글을 확인해 주시기 바랍니다.

1. 신(Scene) 단위로 훑어보는, 예제 게임 구성

✅ 공통 오브젝트 'GameManager'

GameManager는 모든 신에서 공통적으로 사용되는 오브젝트입니다. 

이 오브젝트는 모든 신에서 사용되는 만큼, 신이 넘어가도 초기화되거나 파괴되지 않는데요😊

				
					public class GameManager : MonoBehaviour {
    public static GameManager Instance = null;
    private void Awake() {
        if (Instance == null) {
            Instance  = this;
            DontDestroyOnLoad(this);
            
        } else {
            Destroy(gameObject);
        }
    }
}
				
			

뿐만 아니라, 오브젝트에 포함된 아래의 자식 객체들 또한 손상되지 않는다는 점을 특징으로 합니다.

▪ 뒤끝 서버와 통신하고 데이터를 캐싱하는 BackendManager
▪ 에러나 안내문 등을 최상위 UI로 띄워주는 AlertUI
▪ 뒤끝 서버 또는 비동기와 통신하는 동안 로딩 화면을 띄워주는 LoadingUI

✅ LoginScene

LoginScene은 사용자가 로그인을 수행하는 신입니다.  

해당 신에서는 아래와 같이 ‘멀티 캐릭터의 유저(계정) 회원가입’과 ‘로그인’ 기능을 구현하게 됩니다.

Login 씬

이 부분에서, 멀티 캐릭터를 사용하는 프로젝트와 그렇지 않은 프로젝트의 차이점이 드러나는데요😊

계정이 곧 캐릭터였던 일반 프로젝트와 달리, 멀티 캐릭터를 사용하는 프로젝트는 한 계정에 여러 캐릭터를 가질 수 있게 됩니다. 그렇기 때문에 멀티 캐릭터 프로젝트는 로그인과 닉네임 설정 단계가 분리됩니다.

위 이유로 이번 예제 게임도 유저가 로그인이나 회원가입을 성공하면, 즉시 다음 신으로 이동하도록 구현되어 있다는 점! 유의해 주시기 바랍니다😋

LoginUI내의 LoginUI.cs

해당 스크립트는 LoginUI 내부의, LoginUI.cs에서 확인할 수 있습니다.

✅ CharacterSelectScene

CharacterSelectScene 신은 이번 예제 게임에서 가장 핵심이 되는 부분으로, 크게  아래 두 가지 작업을 진행하게 됩니다. 

▪ 캐릭터 생성하기
▪ (멀티) 캐릭터 목록 불러오기

(멀티) 캐릭터 목록 불러오기

만약, 계정에 이미 생성된 캐릭터가 있다면? 아래와 같은 ‘캐릭터 목록’이 먼저 노출됩니다.

이번 멀티 캐릭터 예제 게임의 핵심 신이라고 할 수 있겠는데요😊
유저가 해당 신에 진입하자마자, 캐릭터 리스트를 불러와 List 형태로 저장하고 UI를 통해 보여줍니다.

이때 캐릭터 리스트를 불러오는 함수를 통해, 게임 정보 테이블도 함께 불러올 수 있습니다. 이를 활용하면 위와 같이, 캐릭터 목록 창에서 ‘캐릭터의 외모’나 ‘스텟’을 함께 표시할 수 있어요!

추가로 해당 신에서는 아래 기능들도 함께 구현하게 됩니다.

▪ 내 캐릭터 리스트 불러오기
▪ 캐릭터 생성
▪ 캐릭터 삭제
▪ 캐릭터를 선택하여 로그인(게임 시작)
▪ 계정 로그아웃
▪ 계정 탈퇴

캐릭터 생성하기

캐릭터 생성 단계에서는 위와 같이 닉네임과 캐릭터의 초기 데이터를 설정할 수 있습니다. 

여기서 설정한 초기 데이터가 캐릭터에 등록되는 과정은 아래와 같습니다.
(데이터 저장을 위해서는 로그인이 필수이기 때문에, 아래와 같은 추가 프로세스가 필요해요😁)

① 캐릭터 생성 후 리턴되는 uuid와 inDate를 획득합니다.
② 획득한 uuid와 inDate로 캐릭터 로그인을 합니다.
③ 캐릭터의 모양, 색상, 직업 등 초기 제이터를 USER_PROFILE 테이블에 새로 등록합니다.
④ 등록의 성공 여부와 관계없이 로그아웃하고, 다시 캐릭터 리스트 화면으로 돌아갑니다.
⑤ 캐릭터 리스트를 다시 불러와 표시하거나, 캐릭터 생성에서 사용된 데이터를 캐싱하여 List에 추가합니다.
⑥-① 데이터 등록에 성공하면, 캐릭터 선택 창에서 데이터를 표시합니다.
⑥-② 데이터 등록에 실패하면, 로그인 이후 다시 데이터 초깃값을 세팅하도록 캐릭터 생성 창 UI를 표시합니다.

CharacterSelectUI.cs와 CharacterCreateUI.cs

캐릭터 선택 UI는 CharacterSelectUI.cs, 캐릭터 생성 UI는 CharacterCreateUI.cs에서 확인할 수 있습니다.

✅ InGameScene

InGameScene은 캐릭터 로그인 이후, 게임 정보 데이터를 수정할 수 있는 InGame 신입니다.

로그인 후 게임 정보 데이터를 수정할 수 있는 씬

해당 신에 진입하면, 특정 테이블의 데이터를 위와 같이 불러와 수정할 수 있으며, 
수정 과정은 아래와 같습니다.

① InGameScene에서 데이터 수정 및 저장
② 로그아웃 시도
③ 성공하면 CharacterSelect 신으로 이동 (CharacterSelect 신은 위에서 다루었던 내용입니다😁)
④ CharacterSelect 신에서 초기화가 진행되며, 캐릭터 리스트를 불러올 때 수정된 데이터를 표시

인 게임 UI는 InGameUI 오브젝트의 InGameUI.cs에서 확인할 수 있습니다.

2. 따라 하기 전, 참고해 주세요!

1. 본 예제 게임의 모든 UI 스크립트에는 뒤끝 함수를 직접 호출하는 로직이 존재하지 않습니다.
전역으로 사용 가능한 BaxkendManager.cs에서 모든 뒤끝 함수를 관리하고 있으며, 해당 클래스를 통해 뒤끝 함수를 호출할 수 있습니다.

2. BackendManager에서 UI가 요청했을 때, 성공 여부와 에러 정보만 반환합니다.

3. 캐릭터 로그인, 캐릭터 삭제, 유저(계정) 회원 가입과 같은 기능은 bool 값을 사용하여 프로세스 진행 여부를 구성할 수 있습니다.

4. 반면에 캐릭터 리스트 불러오기와 같이, 추가 정보가 필요한 요청의 경우는 BackendManager에서 요청이 오면 결과를 캐싱합니다.

5. UI는 성공 여부가 true인 경우, 위 4번의 BackendManager에 캐싱 된 데이터를 사용하여 구현됩니다.

여기까지, 오늘은 ‘멀티 캐릭터 예제 게임’의 구성과, 프로세스를 함께 알아보았는데요😊

이번 예제 게임의 코드를 활용하면, 보다 빠른 게임 개발이 가능하실 것으로 예상됩니다!
자유롭게 연구하고, 뜯어보시면서 만들고 싶었던 게임을 개발하시는 데 보탬이 된다면 좋겠습니다.

늘 알차고 도움이 되는 소식으로 찾아뵙겠습니다.
감사합니다! 💌

0

댓글