[QA지식정보]/QA 지식

[지식/경험] 게임 구조

딩딩QA 2022. 3. 3. 00:05
728x90
반응형

 

 

 

 

안녕하세요.

 

딩딩입니다!

 

이번 포스팅은 게임 구조에 대한 개념을 말씀드리려고 합니다.

 

(업무를 할 때 이러한 구조에 대해서 알고 있으면, 이슈를 판단할 때 좀 더 빠른 접근이 가능합니다!)

 

 


 

게임의 구조란?
 

 

 

대부분 모바일 게임은 비슷한 구조를 가지고 있습니다.

규모에 따라서 각 부서별 및 회사가 담당하는 부분이 다르거나 프로세스 적으로는 다를 수 있지만, 전반적인 구조는 비슷합니다. (인디게임 제외)

구조의 각 부분을 크게 구분을 지으면 아래와 같습니다.

(모바일 빌드로 빌드 하기 전의 상태입니다.)

 

 

1. 서버

2. 클라이언트

3. 데이터베이스

4. 데이터

5. 외부(운영툴/관리툴/웹 페이지)

 

[게임 구조]

 

 

서버

 

클라이언트들이 접속할 수 있는 서버입니다.

개발이나 테스트 중에 개인이 실행할 수 있는 개인 서버가 있고, 프로세스에 따라 별도의 특정 팀이 관리하는 공용 서버가 존재합니다.

라이브 서버의 경우 회사 내 별도의 서버실과 같은 별도의 장소에서 구동되며, 관련 보안 및 관리를 진행합니다.

 

사내에서 테스트할 수 있는 서버는 별도로 실행할 수 있도록 구성되어 있습니다. 공용 서버, 개인 서버 등 프로젝트에 맞게 구성.

(큰 회사들 혹은 퍼블리싱 회사의 경우 라이브 서버를 회사 내 서버실에서 TPM 직군이 별도로 관리합니다.)

 

- 서버와 DB와 연동되어 있습니다. 보통은 1:1연동이 맞지만, 프로젝트에 따라서 하나에 DB에 여러 서버가 물려있기도 합니다.

- 최초 서버 실행 시 DB 정보, 게임 데이터를 불러옵니다.

 

 

 

클라이언트

 

게임의 구성물을 담고 있습니다.

직접적으로 프로젝트를 실행하고 진행할 수 있는 프로젝트 파일입니다.

엔진에 따라 유니티, 언리얼, cocos-2dx 등으로 나누어지며 에디터 환경으로 실행됩니다.

 

- 코드 및 스크립트 파일

- 리소스, 에셋(모델링/이미지/애니메이션/텍스처/머트리얼)

- 사운드(BGM/효과음)

- FX(이펙트)

- 데이터

- 기타 파일들

 

 

 

 

데이터베이스

 

데이터를 담고 있는 데이터 베이스입니다. (Data Base : 편의상 DB라고 표현을 많이합니다.)

게임에서 사용되는 데이터를 담고 있으며, 1:1로 서버와 묶어 있는 경우가 맞지만 여러 서버에서 데이터 베이스를 함께 물려 있는 경우도 있습니다.

(라이브 데이터 베이스의 경우 서버 실과 함께 별도로 관리가 됩니다.)

 

 

 

 

데이터

 

기획자가 만든 테이블(엑셀)을 추출해서 만드는 데이터입니다.

Json, XML, CSV 파일들이며 추출한 데이터는 서버, 클라이언트 폴더에 동일하게 추출됩니다.

(두 개의 데이터 값이 다른 경우에는 서버가 죽거나 게임을 강제 종료하는 경우도 있습니다.)

 

게임에서 사용되는 모든 수치부터 사용되는 값들은 데이터로 구성되어 관리되며,

하드코딩(데이터를 직접 코드에서 선언) 하는 경우는 거의 없습니다. 몇몇 바뀌지 않는 값들을 하드코딩하는 경우도 간혹 있기도 하며, 보통 작은 규모의 게임은 데이터 관리를 안 하는 경우도 있습니다. (ex 교내 프로젝트)

 

데이터는 최초에 서버 및 클라이언트를 실행할 때 전체 불러오기를 합니다.

그래서 데이터를 바꿔서 테스트를 하는 경우 데이터를 다시 불러오기 위해서 서버 및 클라이언트를 재 실행해 주어야 합니다.

 

 

 

 

 

외부툴

 

1. 운영툴

- DB에 접근해서 해당 값을 바꾸어서 게임 내 적용을 할 수 있도록 보조하는 툴입니다.

특정 계정 조회, 아이템 지급, 콘텐츠 On/Off 등을 서버를 직접 만지는 것이 아닌 DB 내 값을 바꾸어주어서 인 게임에 적용되도록 할 수 있습니다.

 

2. 관리툴

- CDN 패치나 점검 배너, 푸시, 유저 킥, 화이트리스트 등록 등을 게임 내 컨트롤이 가능하도록 별도로 기능을 분리 시켜놓은 관리 툴입니다.

툴 형태로 만들어서 관리하는 형태도 있고 모듈 형태로 게임에 추가되어서 별도의 웹에서 운영툴 처럼 관리할 수 있는 형태도 있습니다.

 

3. 웹 페이지

- 주로 별도의 URL을 통해서 인 게임 버튼과 연동되어 있습니다.

일반적인 이벤트 팝업 외 웹페이지 뷰어 형태로 별도로 노출되도록 구현되어 있고 공지사항이나 이벤트를 웹 페이지 형태로 빼놓는 경우도 있습니다. 해당 부분은 프로젝트 내 개발자가 진행한다기보다 웹페이지 관련 개발 웹 개발팀이 따로 있는 경우도 있으며, 프로젝트 내 개발팀과 커뮤니케이션하며 진행합니다.

 

 

 

 


 

이번 포스팅은 게임 구조에 대한 전반적인 내용을 한번 적어보았습니다.

이슈가 발생했을 때 대부분 데이터 실수로 인해 나오는 경우가 많지만,

그래도 구조를 알아두면 이슈가 발생하는 부분을 대략적으로 유추할 수 있습니다!

 

 

 

728x90
반응형