블로그 이미지
지누구루

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2015. 1. 29. 13:53 공부

이번에 쓸 내용은 구지 게임 서버에 국한된 내용은 아니고,

여러 케이스에 적용되는 내용으로, 문장으로 표현하면

 

"수치에 의해서 계산가능한 단계 정보를 따로 저장할 것이냐, 아니며 계산해서 사용할 것이냐"

 

의 문제입니다.

 

(1) 경험치 수치

 

가장 먼저 생각할 수 있는 케이스는 바로 캐릭터의 "경험치"와 "레벨"의 관계입니다.

'총 경험치'를 저장하고, 총 경험치로 부터 레벨을 계산하는 방식이 있을수 있고,

레벨과, 현재 경험치를 저장하는 방식이 있을수 있습니다.

각 경우의 장단점을 간단히 보겠습니다.

 

[1] '총 경험치' 를 저장하고, 총 경험치로부터 레벨을 계산하는 방식

+ 장점

레벨이 따로 저장되지 않기 때문에, 캐릭터 정보의 저장 공간이 줄어듬.

경험치와 레벨이 맞지 않는 현상이 나타나지 않음

(경험치는 10렙 경험치인데 레벨은 9인 경우가 존재할 수 없음)

+ 단점

총 경험치를 저장하는 데이터 타입에 따라 한계값이 존재함(총 경험치가 INT MAX를 넘을수 없다던가)

경험치 테이블이 변경될 경우, 보정이 없으면 레벨 다운이나 레벨업 현상이 일어날 수 있음.

=> 반드시 보정이 필요하다.

경험치 보정이 필요한 경우, 다수의 데이터에 대해 쿼리만으로 해결 하기가 어렵다.

 

[2] '레벨'을 저장하고, 해당 레벨에서의 현재 경험치를 저장하는 방식

+ 장점

경험치 -> 레벨로 변환하는 과정이 없으므로 연산횟수가 약간 적다

DB에서 바로 레벨을 알아 보기 쉽다.

경험치 테이블이 변경될 경우, 레벨은 그대로 유지할 수 있다.

경험치 보정이 필요할 경우, 쿼리만으로 해결할수 있는 가능성이 있다.

+ 단점

경험치 총 획득량과 레벨이 맞지 않는 경우가 발생할 수 있다.

 

인데, 각각의 장단점이 있고, 각 단점을 보완할 수 있는 방법이 있기 때문에,

결국은 선택의 문제가 될 것 같습니다.

그리고 가장 개인적으로 가장 중요하다고 생각하는 점은

 "경험치 테이블이 변경되었을때 얼마나 지원해줄 것인가? "

와 "얼마나 자주 변경이 일어날 것인가" 가 중요한 결정 요소라고 생각합니다.

 

비슷한 상황이 경험치 이외의 곳에서도 필요한 경우가 있습니다.

경험치와는 상황이 다르면서, 비슷한 경우는 "스킬 포인트"가 있는 경우입니다.

 

[2] 스킬 포인트

스킬 포인트는, 레벨업 과정이나 다른 방법을 통해서 획득하고,

스킬을 배우거나, 더 강하게 만들거나(레벨업이나 강화) 할때 소모한다고 가정할 경우

MAX 스킬 포인트만 저장(이것 또한 계산에 의해서 얻을 수 있는 경우도 있습니다) 하고

남아 있는 스킬 포인트를 저장할 것인가?

아니면 현재의 스킬포인트 상태를 보고 -> 사용한 스킬 포인트를 확인 ->

남은 스킬 포인트를 계산하는 형태로 할 것인가?

를 결정해야 할 수도 있습니다.

 

사실 스킬포인트의 경우 더 어려운 점이 있는데,

일부 게임에서는 이 "스킬 포인트"를 아이템 사용 형식으로 더 늘려줄수 있기 때문입니다.

이 경우는 MAX 스킬포인트를 저장 하거나

해당 아이템 사용횟수를 저장해야 하는데, 이 부분의 구현도 여러가지 선택지를 가지게 됩니다.

 

이런 선택지에 영향을 주게 되는 요소는

결국 또 스킬 개편에 의해서 어느 부분이 어떻게 얼마나 자주 변경될것인가? 에 영향을 받게 됩니다.

1) 스킬을 배우거나, 강화할때 사용하는 스킬 포인트가 변경될 경우

2) 스킬 포인트 획득 수치의 변경

3) 스킬 포인트 지급 아이템의 조정에 의한 변경

등을 고려해 볼 수 있습니다.

 

만약 스킬 포인트를 20올려주는 아이템과 50 올려주는 아이템 두 종류가 있었는데,

만약 밸런스 조정에 의해서 이걸 각각 10과 20으로 변경했을때,

기존에 이 아이템을 사용한 유저들에 대한 보정은 어떻게 해줘야할까? 등등

아주 복잡한 선택지를 가지게 됩니다.

(던X 팀에 있을때 SP책 아이템이 있을때 이런 지옥을 겪었었지요..)

 

게다가, 만약 아이템 오류나, 다른 시스템상의 오류로 이런 아이템들이 복사되어 퍼지거나,

의도치 않게 많이 획득할 수 있는 방법이 유저에게 노출되어

일부 유저가 해당 아이템을 엄청 사용했다면,

이런 부분을 쉽게 찾아서 쉽게 보정할수 있는 방법까지도 미리 고려해야 합니다.

(경험치 책은 이정도 고민은 필요 없겠지요..)

("스킬 포인트를 올려주는 아이템을 만듭시다" 라는 한 마디가 미치는 파장이 이정도로 큽니다)

 

 

이런 부분들을 보았을 때,

수치로만 저장할 것인지, 일부분은 계산된 수치값을 저장할 것인지의 결정은 상당히 어렵고,

어떤 특징을 가지는지에 대한 확실한 이해가 필요합니다.

개인적으로 가장 중요한 것은 "어떤 부분이 어떤 범위로 변경될 것인지"에 대한 범위 결정이라고 생각합니다.

 

 

posted by 지누구루