로그인

회원가입 | ID/PW 찾기

연재

[게임DB] 1화. 게임 DB가 뭔가요?

큐브리드 장정철 과장의 알기 쉬운 게임 DB 이야기

2007-08-02 10:56:15

안녕하세요? 저는 국산 DBMS(Database Management System) 큐브리드(CUBRID) 개발팀의 정철입니다. 앞으로 몇 차례에 걸쳐서 디스이즈게임 독자 분들과 DB와 게임 DB에 관한 이야기를 할 수 있게 되어 매우 기쁩니다.

 

다만, 글 쓰는 재주가 워낙 일천해서 걱정이 앞서는군요. 비록 부족한 내용이지만, 많은 관심과 의견을 부탁 드리겠습니다. ^^; 그럼 첫 번째 이야기로 게임DB란 무엇인가부터 시작해 보겠습니다.


 

 

 

첫 번째 시간이니까 게임 DB란 무엇일까?라는 주제로 얘기해 볼까 합니다. 게임 DB라는 건 말 그대로 풀어보면, 게임에서 사용하는 데이터 베이스(DB)를 의미합니다.

 

여기서 게임이란 온라인게임이 될 수도 있고 패키지게임일 수도 있으며, 심지어는 TRPG같은 오프라인 게임이 될 수도 있습니다. 이런 각 게임들이 모두 가지고 있는 것 중에 하나가 바로 DB라는 요소입니다.

 

DB란 무엇인가?

 

우선, 게임 DB라는 특수한 분야에 대해 얘기하기 앞서, DB란 무엇인가부터 얘기를 해야 할 것 같습니다.

 

 

사전적 의미의 DB 즉 데이터베이스에 대한 정의 입니다. 도대체 무슨 말인지 정확하게 파악하기가 힘드네요.(역시 사전은 어려운 것 같습니다. ^^;)

 

데이터베이스(Database)는 그 내용을 쉽게 접근하여 처리하고 갱신할 수 있도록 구성된 데이터의 집합체이다.

 

용어에 대한 정의를 내리는 곳에서 이야기하는 데이터베이스의 정의입니다. 사전적 의미보다는 조금 낫지만 여전히 어렵죠.

 

하지만, 두 개의 정의에서 모두 얘기하고 있는 공통점이 있습니다. , 맞습니다. DB 즉 데이터베이스는 데이터의 집합체(유기적으로 결합하든 어쨌든)라는 겁니다. 이 말을 쉽게 풀이하면, 데이터(자료)를 모아둔 것 입니다.

 

개념적인 정의와는 별개로 제가 사람들에게 데이터베이스를 얘기할 때, 보통 현실의(3차원) 세계를 평면의(2차원) 공간으로 표현한 것이라는 말을 자주 사용합니다.

 

간단하게 예를 들자면, 전화번호 수첩, 명함첩, 장부 같은 것들도 결국 하나의 데이터베이스가 되는 겁니다. 그런데, 이런 데이터들의 집합이 작거나 직접적으로 사용하는 사람과 관련이 있을 경우는 접근성이 좋았습니다.

 

(삽화: onesound) 

 

하지만 날이 갈 수록 데이터는 쌓이는데, 정작 필요해서 찾을 때는 시간이 너무 오래 걸리죠.

 

그래서 컴퓨터를 이용해서 저장과 검색을 쉽게 만들어 놓은 것이 우리가 현재 간단하게 DB라고 부르는 DBMS(Database Management System)입니다. 결국 이번에 이야기할 것은 DB가 아닌 DBMS인 것입니다.

 

 

앞서 말한 바와 같이 모든 게임은 DB라는 요소를 가지고 있습니다. 심지어는 테이블에서 즐기는 보드 게임도 DB를 갖고 있습니다. 그것이 시스템적인(컴퓨터에 저장되는) 것이든지 아니든지 상관은 없습니다.

 

스코어를 기록하는 행위도 결국은 데이터의 집합이고, 순위, 게임의 도구, 아이템 등 모두가 데이터의 집합체입니다.

 

이런 광범위한 의미의 데이터베이스에서 조금 범위를 줄여서 컴퓨터 게임이라는 장르에서 살펴 본다면, 온라인 게임이든 패키지 게임이든 캐릭터, 아이템, 스코어, 랭킹의 모든 것이 데이터 베이스입니다.

 

컴퓨터 게임의 모든 기본 자료들은 결국 데이터의 집합체, 즉 데이터베이스에서 가져오는 것이며, 진행하면서 획득하게 되는 모든 자료들은 데이터베이스에 저장되어 관리가 됩니다.

 

예를 들어 <스타크래프트>의 맵이 저장되어 있는 것도 데이터베이스이며, <디아블로> 싱글플레이의 캐릭터, 캐릭터의 모든 능력치와 아이템, 게임상의 모든 아이템의 목록과 정보가 있는것도 데이터베이스입니다.

 

그래서 모든 패키지 게임의 치트(Cheat) 프로그램이나 핵(hack) 프로그램들이 정보를 조작하는 것이 가능한 것은 모든 자료가 개인 컴퓨터의 데이터베이스에 저장되어 있고, 그 데이터베이스에 대한 접근이 가능하기 때문입니다.

 

치트나 핵 프로그램들은 해당 게임의 데이터베이스 구조를 파악하여, 직접적으로 데이터베이스내의 자료를 원하는 형태로 변경시키는 기능을 제공하고, 이를 사용해 데이터베이스의 자료를 직접 조작해서 게임을 원하는 모습으로 변화시킬 수 있게 되는 것입니다.

 

 

 

 

범위를 최종 목표에 맞춰서 더 좁혀볼까요? 이번 회에서 말하고자 하는 온라인게임, 그 중에서도 특히 MMORPG는 단연 데이터베이스에 대한 의존도가 높은 게임 장르입니다.

 

MMORPG는 사실 화면에 보이는 모든 것이 데이터베이스에 기반을 두고 있다고 말해도 과언이 아닙니다.

 

게임에 접속하기 위한 계정부터 시작해서 캐릭터, 아이템, 능력치, 최종적으로 캐릭터가 로그아웃을 한 순간의 상태, 위치 등 모든 일련의 데이터가 전부 DBMS에 저장되어 있고, 그것을 기반으로 게임이 진행이 되기 때문에 결국 MMORPG는 게임 자체가 데이터베이스를 근간으로 하고 있다는 결론에 도달 하게 됩니다.

 

보통의 온라인 게임은 다음과 같은 구조를 가지고 있습니다.

 

1. 게이머가 게임 클라이언트를 실행시키면 클라이언트는 먼저 게임의 로그인 서버에서 접속해서 게이머로부터 계정 정보를 입력 받아 로그인 서버로 전송하고, 로그인 서버는 전송 받은 계정정보를 데이터베이스에 질의를 해서 계정 정보가 정확한지 확인합니다.

 

2. 계정 정보가 일치하면, 게임 서버를 선택할 수 있도록 합니다. 선택한 게임 서버에 접속을 합니다.

 

3. 게임 서버에 접속이 되면, 게임 서버는 사용자의 계정 정보를 가지고 사용자의 캐릭터에 대한 정보를 데이터베이스에 질의하여 가져오고, 클라이언트로 전송합니다.

 

4. 게이머는 자신의 캐릭터중 하나를 선택하여 게임을 시작하거나 캐릭터가 없을 경우 새로운 캐릭터를 생성하여 게임을 시작합니다.

 

5. 게이머가 새로운 캐릭터를 생성했다면, 게임서버는 데이터베이스에 새로운 캐릭터에 대한 정보를 입력합니다.

 

6. 게이머가 선택한 캐릭터에 대한 정보레벨, 능력치, 소유하고 있는 아이템, 퀘스트 정보, 위치등 - 를 데이터베이스로 부터 읽어 들여 게임을 시작합니다.

 

7. 게이머가 게임을 진행하면서 바뀌는 정보 - 경험치, 능력치, 아이템 거래, 퀘스트 진행 사항, 캐릭터의 위치 정보등 - 를 게임서버가 적절한 시점에 데이터베이스에 기록을 합니다.

 

위와 같은 일련의 작업들이 게임을 하는 동안 알게 모르게 일어나는 데이터베이스와 연관된 일들입니다.

 

게임 서버의 구조.

 

 

클라이언트가 직접적으로 데이터베이스에 대한 작업을 하진 않지만, 게임서버와 클라이언트 사이에 일어나는 중요한 모든 일들은 게임서버가 데이터베이스에서 읽어 오거나, 데이터베이스에 기록을 하고, 그 데이터 위에서 게임상의 모든 행위들이 이루어 지고 있습니다. 

 

결론적으로 말하면 게이머가 즐기고 있는 온라인 게임의 세계는 겉보기에는 그래픽적인 요소에 의해 구성되어진 것처럼 보이지만, 사실상 이 그래픽적인 요소는 바로 데이터베이스에 기초하여 만들어지고 있고, 그 데이터베이스에 저장된 정보에 의해 존재하고 생명을 부여 받아 온라인 게임은 살아숨쉬고 있는 것입니다.

 

이처럼 데이터베이스는 게이머가 직접적으로 느끼지는 못하지만, 게임의 초석을 이루는 가장 중요한 요소 중의 하나입니다.

 

지금까지 데이터베이스가 무엇이며, 게임과 데이터베이스의 관계에 대해서 알아보았습니다. 다음 회에는 "만일, 게임에서 DB가 없다면?" 이라는 흥미로운(^^;) 주제로 다시 찾아 뵙도록 하겠습니다.

 

 

※ DB의 이해를 돕기위한 이야기

 

이해를 돕기 위해 옛날 이야기를 꺼내야 할 것 같습니다. 최초에 컴퓨터는 계산을 위한 존재였습니다.

 

최초의 전자식 컴퓨터였던 에니악(오른쪽 사진)은 제 2차 세계대전에서 탄도 계산을 위해 사용되었습니다. 당시에는 데이터를 저장하는 것과는 거리가 멀었죠.

 

실제로 개인용 컴퓨터(PC)가 보급되고 나서 사무용 컴퓨터로서의 가치가 높아지게 된 이유는 바로 데이터 저장과 보존 능력, 그리고 접근성(검색) 때문이 이었습니다.

 

전설적인 애플 사의 APPLE II가 사무용 컴퓨터로 폭발적인 인기를 얻은 원동력은 바로 비지캘크라는 최초의 스프레드 쉬트(엑셀과 같은 프로그램류)를 사용할 수 있었기 때문이죠.

 

이것은 쉽게 데이터를 행과 열로 나누어 쌓도록 하고 행과 열을 연관 짓고, 그 관계를 가지고 계산을 수행 할 수 있는 기능을 제공했습니다. 바로 유기적인 결합이 여기서는 행과 열에 의한 구분이었죠. 혁신적인 변화였고, 기업들은 열광했습니다.

 

사실 지금도 대부분의 회사에서는 엑셀만 있으면 모든 것이 가능하다는 말이 있을 정도니까요. 하지만 대용량의 데이터를 다루게 되면서 본격적인 DBMS의 시대로 접어들게 됩니다.

 

그 유명하신 IBM DB/2와 오라클사의 오라클 등 RDBMS라는 것이 등장을 하게 되었죠.

 

앞서 말한 바와 같이 3차원의 세계를 2차원의 공간으로 표현하다 보니 하나의 3차원 개체를 표현하기 위해서 두 개 이상의 2차원 공간이 필요했고, 2차원 공간들과의 관계를 정의 하는 데서 비롯한 것이 바로 관계형 데이터베이스 관리 시스템(RDBMS)입니다.

 

그러나 이렇게 관계를 정의하는 것 만으로는 3차원의 세계를 2차원의 공간에 표현하는데 한계를 느끼기 시작하면서 3차원의 사물을 개개의 객체(혹은 개체)로 인지하고 객체를 표현할 수 있는 방법을 고안하게 됩니다.

 

이것이 바로 현재 큐브리드가 지향하고 있는 객체 관계형 데이터베이스 관리 시스템(ORDBMS) 입니다.

 

이는 기존의 관계형 데이터베이스 시스템의 기능을 포함하고 있으면서도 객체를 지원하여 보다 직관적으로 데이터베이스를 구축할 수 있는 방법을 제공하고 있습니다. 또한, 프로그래머들에게 친숙한 객체지향 프로그래밍(OOP)과도 일맥 상통합니다.

 

그리고 현재 일반적으로 사람들은 잘 느끼지 못하지만 컴퓨터 앞에 있는 순간, 데이터베이스가 없는 세상은 없습니다. 눈에 보이지 않더라도, 눈에 보이는 세상을 구현하는 근간은 데이터베이스입니다. 게임이라는 세상도 예외일 수는 없습니다.

 

 

  • [게임DB] 1화. 게임 DB가 뭔가요?

  • [게임DB] 2화. 만일 게임에 DB가 없다면?

  • [게임DB] 정기점검과 게임DB