본문 바로가기
게임 프로그래밍/게임개발 중급

게임개발 중급(95) - Monster Killer(57)

by jyppro 2024. 9. 5.

Monster Killer

 

데이터 베이스 사용 및 연결

이제 기존에 PlayerPrefs를 통해 게임 내에서만 관리하던 데이터를 데이터베이스를 통해 관리하도록 바꾸겠습니다. 사용하는 데이터베이스는 파이어베이스를 사용하게 되었습니다.

 

GameManager

가장 먼저, 데이터베이스와 연동을 시키기 위해서는 기존에 플레이어의 데이터를 관리, 사용하던 GameManager를 정리할 필요가 있습니다. GameManager는 싱글톤 인스턴스로 게임에서의 플레이어의 모든 데이터를 관장하는 역할을 하고 있으며, 데이터와 관련된 기능도 일부 담당하고 있습니다. 기존에 데이터와 관련 없는 함수가 작성되어 있다면 다른 곳으로 옮겨주고, 필요없는 내용을 걷어내는 과정을 거쳤습니다.

플레이어-데이터

 

더 많은 데이터가 존재하지만, 일단 지금은 데이터베이스와 연동 시키는 것이 중요하기 때문에 연동시킬 데이터를 묶어 PlayerData로 만들어 줍니다.

 

파이어베이스와-연결

 

그리고 Json 파일 형식의 코드와 함께 위와 같은 스크립트를 통해 파이어베이스와 게임 내 데이터를 연결시켜 줍니다. 데이터베이스 부분은 제 담당이 아니기 때문에 더 자세하게 알려드릴 수 없습니다.

 

현재 구현된 방식으로 설명드리면, 사용자가 웹페이지를 통해 회원가입을 하고, 게임을 시작하여 게임 내 존재하는 로그인 씬에서 ID와 Password를 입력하고 Enter 버튼을 통해 로그인을 하면 해당 사용자의 데이터베이스에 저장되어 있는 데이터를 가져와 GameManager에 세팅해주는 방식입니다.

 

하지만 웹에서 회원가입 및 게임 접속 그리고 게임에서 로그인을 하는 방식이 불편하다고 생각되어 추후 변경할 예정입니다. 아마 웹에서 회원가입, 로그인 그리고 게임시작 버튼을 통해 게임에 접속하는 방식으로 바뀔 것 같습니다.

 

변경점

이제 데이터베이스를 사용하여 플레이어의 데이터를 사용하기 때문에 GameManager에 임의의 값을 넣어줄 필요가 없습니다. 하지만 에디터에서 게임의 각종 기능을 테스트 해보기 위해서는 여전히 GameManager에 값을 세팅하여 플레이 해야 합니다.

 

최적화

파이어베이스 세팅을 하면서 여러 번 빌드를 하여 테스트하는 과정을 거쳤는데, 그 과정 속에서 문제가 발견되었습니다. 바로 빌드 파일의 용량이 너무 커서 200MB 제한이 걸려있던 테스트 웹페이지에 올릴 수 없었던 문제입니다. 이 외에도 같이 작업을 하는 팀원의 컴퓨터에서 게임이 느리게 실행되는 일도 있었지만 이 일은 팀원 컴퓨터의 설정에 문제가 있었던 것으로 판명이 났습니다. 하지만 여전히 테스트에 불편함을 겪기도 하고 어차피 마무리 과정에서 최적화를 진행해야 하기 때문에 이번에 최적화도 하기로 마음을 먹었습니다.

 

이번에 진행한 최적화는 1차 최적화이기 때문에 복잡한 부분은 건들지 않았습니다. 가장 기본적으로 할 수 있는 텍스처 최대 해상도 제한을 1024로 통일시키고, 압축 포맷을 DXT로 변경하였습니다. 그리고 WebGL에서 특별하게 해주면 좋은 최적화가 있다는 정보를 추가로 알게 되었습니다.

크런치

 

이 부분에서 Use Crunch Compression 입니다. 

 

 

WebGL 프로젝트 빌드 및 실행 - Unity 매뉴얼

WebGL 프로젝트를 빌드하면 Unity에서 다음 파일이 있는 폴더를 만듭니다.

docs.unity.cn

 

위 유니티 공식문서에서 빌드 세팅과 관련된 최적화에 대한 내용을 더 자세히 살펴볼 수 있습니다.

 

이외에도 사용하지 않는 에셋들을 정리하는 등의 1차 최적화 과정을 거쳐 기존에 310MB의 빌드 파일 용량이 현재는 57.9MB로 줄어든 모습을 확인할 수 있었습니다.

줄어든-용량

 

<NEXT>

이제 데이터 세팅도 얼추 끝났으니, 마지막으로 남은 콘텐츠 개발을 해야 합니다. 바로 보스 모드입니다. 각 스테이지별로 다르게 존재하는 10마리의 보스를 세팅하고 구현해보겠습니다. 감사합니다.