-
Java Web Game 개발 가이드(5)Java Web Game 개발 가이드 2010. 2. 3. 10:35
게임의 기초 초안 잡기
웹 게임의 제작기법 1
웹 게임의 제작기법1 에서는 구체적인 구현 수준의 코딩 스킬을 다루지 않습니다. 이 곳에서는 게임의 근간이 되는 Map 시스템과 영지 시스템, 건물이나 인프라 성격의 데이터들을 표현하는 방식 혹은 확장하는 방식에 대해 논의해 보겠습니다.
먼저 모든 설계의 기본적인 분류는 장르로 통하게 됩니다. 자신이 원하는 장르를 선택해야 합니다.
- RTS – 실시간 전략 시뮬레이션을 말하며 실시간으로 이루어지는 전장과 요소들을 이용 혹은 파괴하여 목적을 달성하는 게임
- RPG – 역할을 갖는 플레이어는 일정한 시나리오를 따라 목적된 바를 이루기 위해 노력하는 게임.
- SRPG – 시뮬레이션 롤 플레잉 게임의 이름에서 보듯 가상화된 세계관을 구현하고 그 위에서 가상전쟁 혹은 가상화 전략전을 치루며 원하는 바를 이루기 위해 노력하는 게임.
- TRPG – Table RPG 게임인 이 장르는 상상력을 동원하여 Table에 둘러 앉아 즐기는 던전 앤 드래곤(TRPG)와 같은 게임을 말함.
- MUD – 웹의 텍스트 형 기반 게임을 말함. 80년대 초기부터 유행하기 시작했으나 근래는 크게 찾아보기 힘듬.
- AVG – 어드벤쳐 장르는 어떤 모혐적인 시나리오를 탐구하고 가상경험을 위해 플레이 하는 유형의 장르.
- 연애, 육성 AGV – 가상연애, 가상 육성 시뮬레이션 게임인 이런 장르는 고정 매니아 층이 존재한다.
기본적인 장르의 분류는 더욱 많지만 웹 게임에서 소화 하기 가장 무난한 장르는 위와 같으며 때로는 위의 장르들이 합쳐지거나 변형되기도 합니다. 또한 웹 게임의 특성상 실시간의 특성이 많이 붙기 때문에 장르의 모호성을 갖게 되기도 합니다.
2010년 현재 인기 있는 웹 게임의 장르는 실시간 시뮬레이션 RPG의 성격을 많이 갖습니다. 이런 게임들의 특성은 대부분 영지를 소유하고 영지를 발전시켜 침략을 하는 영지 발전형 RPG입니다. 웹 이라는 특성과 잘 어울리기도 하고 쉽게 몰입하기도 좋기 때문에 선택하는 장르입니다. 먼저 예를 들기 위해 필자가 선택한 농업 발전형 시뮬레이션 게임 정도라 칭하기 좋은 농업 경영 게임은 아무래도 TRPG 정도가 적당할 듯 합니다.
모든 장르에 대한 구현 설계를 설명하는 것은 많은 어려움이 따르므로 가장 확장성도 좋고 다양한 시스템을 채용하기 쉬운 RPG 장르를 이용하여 글을 진행 하려 합니다.
먼저 장르가 정해 지면 구현 시점을 정해야 합니다. 시점에는 소설처럼 1인칭, 3인칭, 전능한 시점 게임에 해당 합니다. 또 다시 이곳에서 "게임을 만드는데 소설은 또 왜 나와!" 라며 열을 내시는 분이 있을 수 있습니다. 하지만 소설을 읽어보면 각 시점에 대해 글의 느낌과 몰입 감이 전혀 다르다는 것을 알 수 있습니다. 단순히 아무런 느낌 없는 무미건조한 전투만을 수행하는 게임은 쉽게 흥미가 떨어집니다. 앞으로 웹 게임이라는 장르는 지금의 웹 3.0을 뛰어넘어 무궁한 발전을 거듭할 것 입니다. 엄청난 발전 속도 속에서 치열하고 경쟁적인 웹 게임들은 더욱 발전할 것이고 결국 이 웹 게임의 장르는 비디오 게임처럼 종합예술 장르까지 오를 것 입니다. 게임의 즐거움은 오로지 전쟁과 약탈에만 있지 않습니다. 즐거움을 탐구하는 커뮤니티 속에도 있고 귀를 즐겁게 하는 재치 있는 사운드 처리에도 있으며, 무언가를 꾸준히 키워가고 가꾸는 육성 속에서도 찾을 수 있습니다. 어떤 사람은 아름다운 스토리와 슬픈 게임 속 이야기 속에 매료 되어 계속 즐기는 사람도 있습니다. 이런 모든 영리하고 합리적인 사람들은 1인칭과 3인칭을 일관성 없이 드나들며 짬뽕 국물에 볶음밥을 말아 먹는 식의 게임 에 진저리를 칩니다. 말이 길어 졌지만 다음 표를 보면 차이점을 쉽게 알 수 있을 것입니다.
분류 / 시점
1인칭
3인칭
전지 전능
운용
케릭터자기 자신
자신을 대신하는
아바타부대단위
행동 범위
철저히 주관적인 시점. 자신의 시야 및 정보 이외는 모두 숨겨져 있으며 직접 정보를 수집하며 다녀야 함.
어느 정도 객관적인 시각이라 지나왔던 곳의 정보가 오픈 된다던가 아바타가 수행 했던 히스토리 기록들도 볼 수 있다.
모든 부대원 구성원의 시야가 공유되며 종합된 정보를 이용하여 좀더 전문적인 2차 3차 적인 유추 정보를 이용할 수 있는 툴이 제공된다.
시나리오
예시모든 주민은 들으라. XX국의 XX군이 승리하였다. 앞으로 너희들은 XX국으로 세금을 내야 할 것이다.
마을의 게시판에 XX군이 승리하여 앞으로 물가가 폭등 한다는 기사가 쓰여 있다.
XX군대가 XX군대에게 승리하였습니다. XX국의 세율이 0.29% 상승합니다.
시나리오의 진행, 전투의 수행, 위치의 이동 등 모든 부분에 걸쳐 이 시점에 대한 룰이 지켜지면 그 세계관의 느낌을 잘 유지할 수 있습니다. 게임에 매료되는 첫 번째 단계는 눈에서 시작 되겠지만 결국 그 매력은 빠져드는 세계관에 어울리는 "느낌" 으로 이어진다는 걸 알아야 합니다.
하지만 거의 모든 웹 게임이 채택하는 시점은 전지 전능한 시점에서 부대를 컨트롤 하고, 종합적인 데이터를 뽑고 적군으로 파병을 보내는 등의 시스템을 채택 합니다. 몰입감을 유지할 수 있을 확률이 높고 플레이어의 종합적인 능력을 극대화 시켜서 운용된다는 점은 좋지만 너무도 많은 게임이 채택하므로 그다지 신선하지 않은 졸작이 되어 버릴 가능성이 있습니다. 게다가 시나리오의 진행에 대해 나와는 별로 관련 없는 듯한 시스템적인 시나리오의 흐름에 대한 느낌 밖에 줄 수 없습니다.(위의 시나리오 예시 참조) 하지만 가장 많은 정보를 오픈 하고 다룰 수 있으며 또한 많은 사람들이 만들어 보려 하는 시점이라는 지극히 필자의 주관적인 생각에 따라 전지 전능한 시점의 영지 발전, 확장형 영농 TRPG 웹 게임(짓고 보니 참 길군요.)을 기준으로 글을 진행 합니다.
참으로 설정해야 할 것이 많지요? 하지만 전체적으로 봤을 때 아직 알아야 할 것이 더욱 많은 듯합니다. 하지만 포기하지 말고 힘 내세요. 우린 일주일 만에 뚝딱 만들 수 있는 웹 게임을 기대하진 않았지 않았나요?
이제 게임의 전체적인 성격이 정해 졌다면 컨텐츠를 이용하여 가상 세계를 구축해야 합니다. 가상 세계를 구축하기 위해 영지와 맵 시스템을 구성해야 합니다. 벌써 다 머릿속에 있다구요? 그럼 그냥 다음 장으로 넘어가셔도 될 듯 합니다. 어쨌든 시간은 아낄수록 좋은 것이니까요.
영지란 자신의 마을을 말합니다. 자신이 발전시키려는 영지는 다수일 수 있으며 종족이나 부족이 다를 수 있습니다. 또한 산업화의 정도도 다를 수 있습니다. 한 가지 집고 넘어 가자면 개발 방법론에 따르면 현재 다루고 있는 주제는 게임의 분석 및 설계 단계 입니다. 나중에 구현 시를 아주 고려안 할 수는 없지만 논리적으로 잘 구조화된 설계는 구현을 쉽게 해 줍니다. 만약 화면의 이미지가 마구 변화 한다고 해도 눈에 현혹되지 말고 그 내부적으로는 결국 해당하는 데이터를 화면에 표현한 것 뿐이라 생각하면 됩니다. 내가 표현하기 위한 데이터가 데이터 베이스에 잘 추상화 되어 설계 되었고, 시대와 종족정보에 맞는 건물의 이름, 스킨정보, 유닛의 id 값들을 잘 가져온다면 눈에 보이는 화려한 이미지들은 전혀 문제 될 것이 없다는 것 입니다.
다시 각설하고 영지의 표현 방법과 건설 방법에 따른 형식에 답은 없습니다. 다만 개발자가 플레이어에게 가장 효율적이고 재미있게 정보를 전달 해 주면 그만 이지요. 이런 영지의 발전에 따른 이미지 처리는 기술적으로 모두 가능하다 생각하고 설계자의 마음껏 표현을 하시면 됩니다. 아래는 필자가 생각한 영지의 표현 방법입니다.
꼭 영지를 저런 방식으로 표현 할 필요는 없습니다. 모든 것은 디자인과 관련된 사항이기 때문에 이는 나중에 표현의 방법을 변경하기 매우 쉽습니다. 지금은 데이터의 구조에 대한 설계를 하는 중이기 때문에 적절한 표현의 방식을 머릿속에 한번 정도 그리고 있다면 그만 입니다. 중요한 것은 건물과 시대, 부족 효과를 모두 포함하는 데이터의 설계를 고려 하여야 합니다.
영지 데이터 추상화
데이터를 추상화 하는 모든 과정은 게임 내 녹여내고 싶은 컨텐츠의 필요에 의해 발생합니다. 따라서 게임 내의 컨텐츠가 복잡하고 많을수록 주의 깊고 오랜 시간 고려해야 합니다. 다음은 필자의 미니 게임 영농 RPG 게임의 영지 데이터의 추상화 과정의 하나 입니다.
▶ 지역별 특성이 존재함.
-- 대도시 근교는 기술적으로 지리적 긍정 효과가 있으며 운송비가 덜 발생 하지만 유지비가 높고 부동산이 비싸다.
-- 지방 쪽으로 위치가 이동 할수록 기술수준에 대한 긍정 효과가 적고 운송비가 많이 들지만 유지비용과 부동산이 싸다.
▶ 토질의 특성이 존재함.
-- 토질에 질소, 인이 많이 포함된 기름진 땅은 특정 작물에게 소출의 긍정 효과가 발생한다.
-- 토질에 자갈이 많고 모래가 많으면 물 빠짐이 심해 옥수수 같은 작물을 심어야 한다.
▶ 전과 밭, 임야가 나누어져 있음.
-- 전과 밭은 전환 비용이 발생하며 전은 쌀, 보리 등의 곡식 생산이 가능하며 밭은 기타 밭 농사 작물이 가능하다.
-- 임야는 건물을 지을 수 있으며 건설하는 건물의 종류에 따라 영지에 미치는 영향이 다르다.
▶ 인구와 생산량, 유지비, 부동산 비용이 존재함.
-- 각 영지의 제곱미터 당 필요 인구 수 가 존재하며, 그에 따른 유지비, 부동산 비용이 다르다.
-- 소출이 적고 유지비가 높으면 버려지는 땅이 될 수 있지만 형질 변경을 통한 부동산 대박을 노려볼 수 있다.
위의 데이터를 기초로 분류별 2차 추상화 과정입니다. 좀더 많은 과정을 거친 후 데이터 베이스에 테이블 화 되어 생성 되겠지만 영농 RPG의 예를 통해 이해를 도울 수 있습니다.
운송요금 데이터
각 운송 수단별 거리 별 운임 요금 데이터 리스트
토질 요소 데이터
질소, 인, 마그네슘, 염소 등의 데이터
토질 요소 영향 데이터
질소-감자, 쌀, 양파; 인-모든 작물; 마그네슘-파프리카, 양파 등
전, 밭 토질변경 비용
(세금 비용 코드 데이터로 통합 가능)
전-밭:800, 밭-임야:500, 전-임야:99999(불가능) 등등
건물 정보 리스트
별장, 주택, 아파트, 민가, 풍차, 나무(각 건물 별 가격 및 재료가 다르다)
사용자별 건물 정보 리스트
구입 가격, 구입 날자, 저당 여부, 파괴 여부, 수리한 날자 등
작물 데이터
파, 양파, 마늘, 보리, 쌀, 등등등(작물이 필요로 하는 요소에 대한 키가 있어야 한다.
더 많은 데이터 들이 필요에 따라 도출 될 수 있습니다. 위의 과정을 보고 이해 할 수 있나요? 데이터의 추상화 과정은 논리적으로 구성을 해야 하기 때문에 많은 경험을 필요로 하지만 원래 모든 일이 첫술에 배부를 수 없듯 자신의 게임을 계속 발전 시켜 나가시기 바랍니다. 이 추상화 과정에서 많은 시행 착오를 겪는데 그 이유는 계속적으로 좋은 아이디어가 생겨나고 새로이 컨텐츠를 추가할 때 이 추상화가 견고 하지 않다면 근본을 뒤 흔드는 재 추상화의 과정을 겪어야 합니다. 대부분 그러한 이유로 구현의 단계 보다 설계 기간을 늘려 잡습니다.
보통 이 추상화의 단계에서 데이터 베이스의 설계를 함께 하는 것이 빠르겠지만 기초 지도 설계에 관해 먼저 진행 해 보도록 하겠습니다.
지도 데이터 추상화
이곳까지 읽어 오셨다면 개발의 환경을 설정 하고, 기초적인 코딩법도 알고, 게임을 개발하는데 기본적인 소양이 있으며 데이터를 다루는데 약간의 감 정도를 얻으셨으리라 생각 합니다. 이어서 이 지도 데이터의 추상화를 진행하는 동안에는 사용자가 5000명 몇 만 명으로 늘어날 경우에 대한 시뮬레이션을 그려 볼 수 있을 것입니다.
여타 다양한 웹 게임들에서도 이 지도에 대한 구현은 매우 다양하게 되어 있는 것을 볼 수 있습니다. 우리나라 지도, 세계지도, 강을 중심으로 위아래로 무한한 공간, 새로이 창조한 지도, 단순한 원형 플레이어 밀집 구조 등등. 이 모든 구조들의 목적은 한 가지 입니다. 플레이어들에게 실시간에 걸맞는 직접적인 물리적 공간을 제공 함으로서 그 변화를 시각적으로 보여주고 대처 할 수 있도록 하기 위함이지요. 하지만 이런 지도 자체가 존재하지 않는 경우도 많이 있습니다. 모 회사의 예전의 어떤 게임은 그냥 존재하는 모든 플레이어를 지도 없이 리스트로 보여주고 직접적으로 그 플레이어를 공격하도록 구성해 둔 것이지요. 뭐 어떤 방식이든 자신이 타인에게 실시간으로 영향을 미친다는 사실은 변하지 않습니다.
이 지도개발 역시 추상화 없이는 개발을 진행하지 못합니다. 물론 이 추상화는 요구사항이 있어야 함으로 자신의 머릿속에 있는 요구사항들을 토대로 추상화를 진행해 봅니다. 다음은 필자의 지도 데이터를 표현한 것입니다.
- 모든 지역은 이미 토질, 토양 데이터로 설정이 되어 있으며 모든 플레이어는 기본적인 영지(10*10)를 회원가입과 동시에 할당 받는다.
- 어떤 영지에서 시작 하든 플레이어의 자유지만 한 지도에 일정 토지 이상이 남아 있어야 참여 가능하고 넘는 플레이어는 서버를 증설하여 늘려 나간다.
- 서버 임계 토지 크기는 서버 내 존재하는 토지의 60%가 소유주가 존재하면 서버를 고를 수 없도록 한다.
- 서버 내의 플레이어들은 서로간의 영지를 먹기 위한 영농을 하며 공격적인 투자로 상대방의 토지를 매입할 수 있다. 더 값싸고 질 좋은 생산을 하는 플레이어가 살아 남는 구조로 설계 되어야 한다.
간략하게 생각나는 분석을 나열 해 보았습니다. 이 데이터를 다시 2단계 추상화를 진행해 봅니다.
지도 토질데이터
지도의 구역별 토질 리스트.
지도 토양데이터
지도의 구역별 토양 리스트
서버 리스트
각 서버 별 현재 임계치, 서버 명, 서버 아이디, 서버 환경요소
지도 특성 데이터
이 지도의 전역 국세정보, 동-서양 구분, 기후 등.
플레이어 정보
사용자의 이름, 아이디, 전화번호, 별명, 등등
플레이어 토지정보
플레이어가 소유한 토지 정보, 매입가격, 대출비률 등등
토지 지형효과 데이터
강을 낀 곳의 운송효과 상승, 산지에 따른 운송효과 하락, 들에서는 배수가 좋음, 등등
더 많이 나올 수 있지만 이 정도로 2단계 추상화를 진행해 보았습니다. 저는 이 지도를 우리나라 지도로 이용 하기로 하였습니다. 우리나라 지도를 형상화 해 두고 플레이어들은 이 지형의 곳곳에 자리를 잡겠지요.
실 플레이어들이 자리를 잡는 전체 지도의 개념을 개발 할 시에는 몇 가지를 고려해야 합니다.
- 플레이어들이 너무 한곳에 집중될 만한 순 조건만이 집중된 지역이 없어야 한다.
- 랭커 플레이어들이 악의적인 저 레벨 플레이어 지역에 위치할 수 있는 요소가 없어야 한다.
- 플레이어들의 밀집으로 인한 게임 내 영지 컨텐츠의 부족이 없도록 충분히 넓게 설정한다.
자 어떤가요. 어려운가요? 처음에는 조금 어려울 수도 있지만 웹 실무에서는 이보다 훨씬 많고 복잡한 데이터를 다룬답니다. 이런 데이터를 다루는 일은 거의 1명이나 2명 이서 몇 달간 진행해 나가는 경우가 많습니다. 개념을 잘 잡고 경험을 쌓으면 그래도 무난히 해 나갈 수 있을 것입니다.
'Java Web Game 개발 가이드' 카테고리의 다른 글
Java Web Game 개발 가이드(7) (0) 2010.02.03 Java Web Game 개발 가이드(6) (0) 2010.02.03 Java Web Game 개발 가이드(4) (0) 2010.02.03 Java Web Game 개발 가이드(3) (0) 2010.01.23 Java Web Game 개발 가이드(2) (2) 2010.01.22