확률을 만들다 보면 어떤 아이템은 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 |