본문 바로가기
Game Design

확률 시스템을 기획하자.

by 게임혼 2007. 11. 2.

사용자 삽입 이미지

 

확률을 만들다 보면 어떤 아이템은 90% 어떤건 2% 어떤건 8%일 수 있다.

이러면 어떻게 해야 할까?

num = Rand(0,100) 이런식으로 0~100을 랜덤하게 뽑은 뒤.

 

if(num<90) 이면 90%이고

if(num>=90 &&  num<=92) 이면 2%이고... 이런식으로 하는건 비효율적이다.

 

그래서 for문과 결합한다. 이게 중요한 이유가 기획적으로 확률구조를 만드는 데 중요하기

때문이다.

 

상기와 같은 문제를 해결하기 위해.

 

num = Rand(0,100) 이런식으로 0~100을 랜덤하게 뽑은 뒤. num2 = 0 초기화한다.

그럼 for문으로..해당 몬스터가 떨굴 아이템의 확률을 배열로 만들고

여기선 예로서 item[] = {90,2,3} 이렇게 한다. 총합이 95이다. 나머지 5%는 꽝!?ㅋㅋ

 

for(int i=0;i<item.length;i++) // 배열 크기만큼 포문을 돌리자.

{

num2 += item[i]; // num2 에 아이템 값을 대입해서 처음엔 90 다음엔 92 95

if(num2<=num) // num2가 num보다 작으면

{

아이템은 item 배열의 i번째가 선택된 것이다.

}

}

이렇게 해서 확률에 따른 아이템 드랍을 간편하게 만들 수 있다.

프로그래밍의 이런 구조를 알고 있다면 확률 기획하는 데 도움이 될 것이다.

만약 item 배열이 90 10 20 이라면?

당연히 90, 10 까진 제대로 나오지만 20은 안나온다. 이런건 총합이 100%가 넘는 거니까

기획쪽에서 이런 오류는 하지 말아야 할 것이다. 그럼 디아블로 같은 곳에서 매직 찬스가 늘어나느

효과는 어떻게 할까? 그건 확률이 2개로 나뉘어지는 것이다. 아이템이 떨어질 확률과

어떤 아이템이 떨어질 확률이 되는 것이다. 당삼 아이템이 떨어질 확률을 높이면 된다.

 

내 모든 기획은 이런 확률 구조를 가진다. --;

 

www.gamehon.comwww.gamemotor.com

 

'Game Design' 카테고리의 다른 글

UI 기획은 과연..  (0) 2008.01.07
기획자로서 푸념  (0) 2007.12.03
포루크와 바람의 우산  (0) 2007.10.22
만화가의 사랑  (0) 2007.09.23
비혈의 오프너 -1- (구제목 : 오프너 앤드 클로저)  (0) 2007.07.31