변화하는 세계를 가지는 MMORPG에 대해서 pidesa 04-04 조회 2,672 공감 1 29

*이 글은 미완입니다. 오늘 점심과 저녁에 걸쳐서 좀더 손보고 추가시키겠습니다.*

 

 

 

아래에 "자신이 변화 시킬 수 있는 것. 자신을 찾아오는 사건들" 이란 제목으로 쓴 글과 그 밑의 답글과 관련해서 또다른 글을 씁니다. 몇 분의 질문이나 반론에 답하는 형식이 될 것 같군요.

 

1. 아리랑피바람 - "한 사람이 게임 세계를 변화할 수 있는 컨텐츠는 스탠드 얼론에서나 가능한 이야기다."
   제리 - " 에피소드1을 진행중인 유저1과 에피소드10을 종료한 유저2 등등 무한에 가까운 다양한 옵션을 가진 유저에 대한 변수를 고려해야 하는데 그를 위해서는 '신' 정도의 능력을 가지고서 '제각각 다른 옵션을 가진 동접자 이상'의 대화 변수와 환경을 준비해야 하죠."

 

 이렇게 이야기하신 것은 MMORPG에서의 자유도를 주기 위한 방법으로 스탠드 얼론 RPG에서의 스토리 분기방식을 생각하고 계시기 때문이 아닌가 합니다. 물론 그런 것은 만들 수 없습니다.  한편의 잘 짜여진 영화같은 스토리를 전개하는 와중에 그 맥락을 유저가 마구 바꾼다는 것은 불가능합니다.

 

 하지만 여기서 말하는 세계를 바꾼다는 것은 잘 짜여진 장편 스토리의 분기점을 늘인다는 뜻이 아닙니다.

 

 일상생활처럼 전개되는 다양한 활동에서의 다양성과 가능성을 열자는 것입니다. 정치/경제/군사/언론 및 기타 다양한 활동을 통해 도시와 국가를 건설하거나 자연의 관리자가 되고, 뛰어난 언변을 구사하여 어떤 전략이나 군세로도 바꿀 수 없었던 PVP 전쟁의 판도를 바꾸는 등의 가능성을 연다는 것을 말하는 것이지요.

 

 이것이 가능한 것은 MMORPG가 특별한 속성을 가지고 있기 때문입니다. 즉 한정된 컴퓨터의 프로그램이 아니라 수백, 수천가지 반응을 보일 수 있는 '인간'이 존재하기 때문에 스텐드 얼론의 분기점 방식보다는 유저와 유저 사이의 관계의 다양성에 초점을 맞추는 프로그래밍이 가능하기 때문이지요.  

 

 2.toys - "유동성 있는 오브젝트들이 월드가 커질수록 방대해질테고 이러한 맵의 변화는 모두 서버 프로그램에 부하를 가중 시킬수 밖에 없습니다."

 

물론 그렇습니다. 하지만 최소화 할 수 있는 방법이 몇 가지 있습니다. (저는 전문 프로그래머가 아니라 스크립트만 조금 쓸줄 알다보니 전문 프로그램 용어를 알지 못합니다.)

 

- 군체 연산 : 비슷한 특성을 지닌 오브젝트들을 묶어 환경과의 반응을 연산합니다. 군체라고 불리우는 오브젝트의 묶음 덩어리만이 복잡한 명령(탄생/영향섭취/성장/사냥/죽음/건설)등을 계산한 다음, 최종 명령 수행은 군체 내의 한 오브젝트나 두 세 오브젝트에게만 지시합니다. 긴 스크립트를 모든 오브젝트에 다 적용시킬 필요 없이 한 맵에서 수십개 정도의 군체에만 복잡한 스크립트를 적용함으로서 연산을 최소화 시킬 수 있습니다.

 

[블랙엔 화이트에 나오는 이 엄청난 숫자의 군대도 개별적으로 상태를 연산한다면 얼마나 리소스를 잡아먹을지 앞이 캄캄하군요]

- 오브젝트의 대부분을 숨기고 필요한 때에만 존재시킴 : 들판에 떠도는 동물의 무리나 숲을 가득 메우고 있는 식물의 무리를 모두 다 실존하는 오브젝트로 만들 필요는 없습니다. 대부분은 군체 연산에서 머릿수로만 존재하면서 군체의 연산에만 계산되고, 실제로 필드에 구현되지 않도록 함으로서 연산을 줄일 수 있습니다.

 이 생물이나 오브젝트의 군체가 공격당해 수가 줄어들면 군체 연산에서 머릿수로만 존재하던 동물의 오브젝트가 실제 필드 내로 나오게 됩니다. 물론 이렇게 리젠되는 시간은 군체 연산에서 군체 섭취 영양이나 개체수, 환경의 적절함 등에 의해 달라지겠지요. 어쨌거나 유저는 계속 리젠되는 생물들을 보면서 "수가 많구나 '0'!" 라고 느끼게되고 점점 줄어드는 리젠속도를 보면서 "내가 동물을 잡고 있으니까 차츰 숫자가 줄어느는구나?! '0'" 라고 느낄수 있게 됩니다.

 

- 분산 연산 : 맵 구역별로, 매 군체별로 시간대를 달리 잡아 연산을 분산하는 대신 매 연산값을 크게 잡음으로서 서버 부하를 줄일 수 있겠지요. 이런 쪽은 toys님이 더 잘 알고 계실테니 생략합니다.

 

- 오버롤로 볼 수 있는 정보 및 즉각 시각화되는 정보 줄임 : 맵에 존재하는 모든 존재의 정보를 유저가 마우스 오버롤이나 단지 그 지역으로 이동하는 것 만으로 검색할수 있도록 하는 것은 '편의성'에서 보자면 무척이나 유용하겠지만 전송량에 있어서는 악몽이겠지요. 유저가 모든 존재의 모든 정보를 마우스 오버롤로 검색하게 하는 것이 아니라 몇몇 정보들은 오버롤이 아니라 스킬을 사용할때에만 얻을 수 있도록 함으로서 전송량도 줄이고 유저에게 '탐험' 과 '조사'의 묘미를 줄 수도 있겠지요? (실시간 갱신되는 레이더보다 몇초마다 갱신되는 레이더가 전송량이 훨씬 적은 것 처럼...)

 

- NPC AI의 클라이언트 처리 : 유저가 조종 가능한 형태의 NPC(또는 펫)의 AI를 최대화 하기 위해서는 클라이언트가 AI의 세부적 기능을 기동시킬때 중요한 역할을 하도록 하면 서버의 연산을 줄일 수 있을 것입니다. 유저가 접속했을 때는 심즈의 심 수준의 AI가 동작할 것이고 유저가 접속하지 않은 상태에서는 최소한의 AI만 동작하겠지요.


지금 여기에 대해서는 '비접속하는 동안 작업 능력을 쌓아놓았다가 접속해서 사용할 시에 한꺼번에 방출' 이라는 쪽을 생각하고 있습니다. 개인적으로는 '선작업 후결정' 시스템이라고 부르고 있는데 유저가 살아있는 가상세계의 NPC 행동을 통제한다는 느낌을 주는 데에는 충분할것으로 보입니다.

 

 또한 유저가 접속하지 않은 상태에서 NPC가 일하는 모습에 대한 AI는 그 NPC의 작업구역에 접근한 다른 유저의 PC를 사용해서 처리하면 될 것 같고 작업구역 내에 어떤 유저도 접근하지 않았다면 굳이 NPC가 일하는 모습을 보이는 AI는 가동할 필요가 없겠지요. 유저가 접속하지 않은 상태에서도 보는 사람으로 하여금"저 NPC가 열심히 일하는 중이구나" 라고 느끼게 만들거나 나중에 접속한 유저로 하여금 "그 사이 내 NPC가 일을 열심히 했구나~" 하고 느끼게 만들 수 있다면 되는 것입니다.

 

- 하우징에서 복수의 유저당 한 건물을 같이 사용하면 이득을 보도록 설계함 : 이렇게 하면 전체 하우징이 차지하는 연산을 줄일수도 있고 건물만 많고 사람은 적은 마을이 되지 않게 만드는데에도 도움이 됩니다. 또한 건물은 유저가 접속하지 않을 시 유저가 조종하는 NPC의 행동 및 연산의 기점이 되어줌으로서 또다시 연산을 줄이는데 한 몫을 할 수 있습니다.

 

-유저가 관심을 기울이는 것에만 세부연산 : 자연적으로 자라서 단지 목재 채취용 정도로만 쓸 나무에 굳이 세부연산을 할 필요는 없겠지요. 그 나무가 천천히 자라든 갑자기 자라든 갑자기 꽃을 피우든 갑자기 말라죽든 유저에겐 별로 상관 없기 때문에 이런 나무들에는 군체연산을 사용합니다. 하지만 유저가 뽑아다가 자기 집 옆에 심은 정원수의 변화는 좀더 세부적으로 연산해야겠지요? 유저가 관심을 기울이고 있는 것이니까요. 그런 나무는 철에 맞춰 자라고 꽃을 피우고 열매를 맺어야 할것입니다. 들판에 무리지어다니는 양떼도 마찬가지로 간단한 연산으로 처리하고, 유저가 직접 기르는 짐승에 대해서는 자세한 연산을 사용함으로서 전체 연산량을 조절할수 있을 겁니다.

 

 등등 - 아이디어가 많습니다. 이 경우는 프로그래밍상의 필요와 한계가 기획을 변경하는 것이 되긴 하지만, 게임은 결국 프로그래밍을 통해 구현된다는 것을 생각하면 이런 피드백도 불가피하겠지요, toys님? ^ ^

 

3. 아스파 - "유저의 액션에 의해 변화하는 세계, 유저를 찾아오는 세계의 흐름이라는 것은 기술적인 가능성 보다는 수십만명의 주인공들을 상대로 하나의 이야기를 전달하는 방식에 있어서의 기획적 측면에서 효용성을 검토해야 하지 않을까 하는 생각입니다."

 

 예. 하나의 장대하고 멋진 이야기를 모든 유저들에게 맛보이기 위한 방식으로는 부적절합니다. 그런 쪽으로는 생각하고 있지 않습니다. 그러나 비교적 일상적이고 평범해 보이는 일들이 모여 나중에 그 사람만의 스토리가 되도록 하는 - 이브나 울온, 세컨드라이프 등에서 보여지는 방식으로서는 적절합니다. 

 

 예를 들어  몬스터를 때려잡았더니 그 몬스터의 수가 줄거나 몬스터의 무리가 다른 쪽으로 이주해버려서 그 땅에서는 찾기 힘들어졌다든가, 땅에 씨앗을 심고 가꾸었더니 몇주 후에는 장대하고 아름다운 숲이 생겼다든가, 나중에는 그 숲에 엘프들이 찾아와서 작은 마을을 이루고 심심찮게 소소한 퀘스트들을 준다든가 하는 종류의 변화가 가능한 세계는 충분히 만들 수 있습니다.

 

 

4. Kamru - "유저가 사용하는 PC가 로그아웃 하기 전 행동 루틴을 설정하면 로그아웃 후에 PC가 NPC가 되는 것"

 

저도 처음에는 이 방식을 생각했습니다. 하지만 곧 여기엔 무리가 따른다는 생각이 들었습니다.

 

 여러가지 이유가 있지만 주로 "영웅이고자 하는 유저들의 심리상" 힘든 문제입니다. 대부분의 유저들은 자신이 멋진 역할을 하기를 바랍니다. 더 높은 자유도에 대해서는 힘써 부르짖으면서도 힘들고 어렵고 보상은 적고 맨날 고생만하는 역할 - NPC들의 역할을 직접 하길 바라지는 않습니다.

 

 예를 들어 RPG에서는 "괴물/악당에게 잡혀간 XXX를 구출해라" 라는 시나리오 패턴이 자주 있습니다만 MMORPG에서 PC가 NPC 역할을 하게 만드는 방식으로는 이런 시나리오나 퀘스트를 줄 수가 없지요. 몬스터에게 잡혀간 PC의 경우 - 게임도 못하고 우리 안에서 누가 구해줄 때 까지 게임도 계속 기다려야만 할텐데, 그런 수모를 돈 내고 겪고 싶은 플레이어가 있단 말입니까? -ㅅ-;;

 

[탑안의 공주는 물론 로맨스지만 탑 안에 같혀있고 싶은 플레이어는 없을겁니다.]

 

 게다가 유저가 경제를 구축하는 시스템에서 세계가 리얼해지고 가변적이 되어갈수록 '단순노동' 의 비중이 많이 커지게 됩니다. 유저는 이 단순노동을 반복하기보다는 단순노동에 대한 결정권을 가지는 쪽을 좋아합니다. 

 

그렇기 때문에 우리에게 '대속자'가 필요합니다.'0'b!(거창합니다. 대.속.자♥)

 

또는 '노예' 가 필요할지도 모릅니다.OTL(단어 바꿨을 뿐인데 이 추락감이란...;;)

 

 우리의 PC를 대신해서 우리의 지시에 따라 산과 들을 개간하고, 망치와 모루를 두들기고, 매일 매일 먹는 끼니를 준비해줄 NPC가 필요합니다. 집을 지키고 도시를 활발하게 걸어다니고 말을 걸면 그날의 기분에 따라 가벼운 인삿말 정도는 건넬 줄 알고, 물건을 팔아오기도 하고 짐을 져주기도 할 NPC. 때로는 오크 무리와 용감히 맞써 싸우다 부상당한 몸이 되어 쓰러진채 발견되어주기도 하고 때로는 마왕에게 붙들려가서 "용사님~살려줘요♥"를 외쳐주기도 할 NPC가 필요한 것입니다.

 

 각 계정당 하나씩만 존재하게 될 이 '조종 가능한 NPC'의 이름을 아직 무엇으로 할지는 생각이 잘 안나는군요. 슬레이브케릭터? 인권협회에서 딴지 걸겁니다. 파트너? 풍류공작소에서 오리지널리티를 걸고 소송들어오겠지요. 서브캐릭터? 평범하긴 하지만 뭐 나쁘진 않네요. 패밀리? 꼭 가족관계를 걸고 오손도손 해야하는 것도 아니잖아요 -3-a

 

 음...이런 캐릭터 이름 적당히 생각나시는 것 없나요? 0ㅅ0a

COOL: 2 BAD: 1
  • 페이스북 공유
  • 트위터 공유
pidesa | Lv. 19
포인트: 11,178
T-Coin: 167
댓글 0
에러
시간
[비밀글] 누구누구님께 삭제된 글입니다 블라인드된 게시물입니다 내용 보기 댓글을 로딩중이거나 로딩에 실패하였습니다.
등록된 댓글이 없습니다.
댓글 쓰기

전체 목록