Balancing difficulty and score

이 예제는 ChimpWorks 개발, VooDoo 퍼블리싱의 Stack Jump(애플앱스토어, 구글플레이)를 기반으로 합니다.

스택 점프에서 당신은 가장 높은 건물을 건설해야 합니다. 위에서 블록을 떨어뜨리는 대신 블록이 미끄러져 들어올 때 캐릭터가 공중으로 점프해야 합니다. 점프 타이밍이 중요합니다. 너무 일찍 또는 늦게 점프하면 기절하고 게임이 종료됩니다.

분석

  • 코어 메커닉: 점프해서 블록을 쌓고 타워를 건설합니다.

  • 스코어 시스템: 블록을 완벽하게 정렬하면 더 높은 점수를 받습니다. 계속해서 완벽하게 점프하면 점프 횟수를 곱한 높은 콤보 점수를 받습니다. 불완전한 점프는 콤보 점수를 리셋합니다.

  • 패배 조건: 점프에 실패합니다.

빌딩 쌓기, 점프 다이어그램

코어 메커닉: 블록 위로 점프하기

플레이 버튼을 클릭해 동작을 관찰하세요.

  1. 소스 (삼각형 모양 컴포넌트)가 매 초마다 블록을 생성합니다.

  2. 플레이어가 점프하는 동작은 게이트(◇)에 의해 표현됩니다.

  3. 점프 게이트는 성공(Successful) 또는 실패(Failed) 풀로 분배됩니다.

  4. 이는 점프(Jump) 게이트로부터 나가는 실패(Failed) 및 성공(Successful) 리소스 커넥션에 의해 수행됩니다. 이 플레이어의 실패할 확률은 5%이고 성공할 확률은 95%입니다.

  5. 실패(Failed)와 성공(Successful) 풀이 점프(Jump) 게이트로부터 전달된 리소스를 모읍니다.

다이어그램의 모든 노드는 각 스텝에 따라 동기화되어 상태를 변경합니다.

1 스텝 = 1 플레이어 액션 또는,
1 스텝 = 1 코어 루프 또는,
1 스텝 = 1 게임

이 예제에서 1 스텝은 블록 한 개가 생성되는 것을 의미합니다.

속도: 다이어그램의 실행 속도를 조절합니다. 기본값은 1 스텝/초 입니다. 이 값을 줄이면 속도가 빨라집니다. 숫자를 늘려 시간을 느리게 만들 수 있습니다.

따라서 스택 점프에서 블록 생성 속도를 올리고 싶다면 실행 속도를 변경하면 됩니다.

패배조건: 점프에 실패

플레이 버튼을 클릭해 동작을 관찰하세요.

  1. 게임오버 컴포넌트로 향하는 실패(Failed) 풀로부터 나온 점선(상태 커넥션)이 실패한 점프를 계속해서 확인합니다.

  2. 에 “>0”인 리소스가 있으면 게임오버 컴포넌트가 활성화됩니다.

  3. 게임오버 컴포넌트는 종료조건입니다. 트리거 되면 다이어그램 실행이 종료됩니다.

머시네이션즈 다이어그램의 상태(The State)는 노드 간의 리소스 분포를 나타냅니다. 자원이 재분배되면 다이어그램 및 시스템의 상태가 변경됩니다.

점수 계산

플레이 버튼을 눌러보세요.

  1. 성공적인 점프는 노멀(Normal) 또는 퍼펙트(Perfect) 중 하나입니다. 그래서 이전 다이어그램에서 성공한 점프 리소스를 저장한 풀이 게이트로 바뀌었습니다.

  2. 이전의 성공, 실패 게이트와 마찬가지로 성공(Successful) 게이트는 노멀(Normal) 또는 퍼펙트(Perfect)로 리소스를 보냅니다.

  3. 플레이어가 노멀과 퍼펙트 둘 중 하나가 되도록 했습니다. 이는 게이트 밖으로 나가는 리소스 커넥션의 확률에 기반합니다.

  4. 노멀 점프 한 번은 1점입니다.

  5. 노멀 점프 리소스가 풀에 들어갈 때 활성화(Activate) 스테이트 커넥션은 점수(Point) 소스를 활성화합니다. 이는 1점을 생성해 노멀 점프 포인트(Normal Jump Points) 풀에 저장됩니다.

스테이트 커넥션은 다이어그램 구성요소의 상태에 영향을 주는데 사용합니다.

공식의 *은 트리거라고 부릅니다.

트리거는 일반적으로 상태 변경에 반응하거나 변경을 수행하는데 사용합니다.

퍼펙트 점프 스코어 시스템

  1. 퍼펙트 점프 점수는 퍼펙트(Perfect) 풀에 모입니다.

  2. 플레이어가 연속으로 퍼펙트 점프를 더 많이 할수록 더 높은 점수 배율이 적용됩니다.

  3. 퍼펙트 점프를 해서 퍼펙트 점프 리소스가 퍼펙트(Prefect) 풀에 도달하면 활성화(Activate) 스테이트 커넥션이 포인트(Points) 소스를 활성화합니다.

  4. 소스에서 퍼펙트 점프 포인트(Perfect Jump Points) 풀로 가는 리소스 커넥션이 0입니다.

  5. 여기가 점수 배율(multiplier) 스테이트 커넥션이 들어오는 곳입니다. 퍼펙트 리소스 풀에 있는 리소스 수를 입력받아 레지스터 공식 floor((1+sqrt(1+8*multiplier))/2)multiplier 부분을 채웁니다.

  6. 위 수식의 결과는 소스에서 생성되는 포인트(Points) 리소스의 갯수를 설정하는 리소스 커넥션의 0에 설정됩니다.

머시네이션즈에서 레지스터는 다이어그램의 노드 또는 스텝 실행 중 사용자의 입력으로부터 오는 리소스에 기반해 노드의 상태를 변경하거나 리소스의 흐름에 영향을 미치는데 사용합니다.

레지스터의 Formula 필드는 math.js 라이브러리 함수를 지원합니다.

위에서 floor(x)는 Perfect Jump Score의 값을 반올림해 항상 정수가 되도록 합니다.

퍼펙트 점프 배율 초기화

Reset Multiplier 드레인 (역삼각형)은 노멀(Normal) 점프를 할 때 활성화됩니다. 이렇게 하면 Perfect 풀에 있던 모든 리소스가 소모됩니다. (리소스 커넥션의 공식이 드레인으로 나가는데 유의) 이는 다시 퍼펙트 점프를 할 때까지 점수 배율을 초기화합니다.

드레인으로 들어가는 리소스는 게임 경제에서 영구적으로 제거됩니다.

전체 점수

자. 이제 마지막입니다. 플레이를 눌러보세요.

점수(Score) 레지스터는 각 풀에 저장된 노멀 점프 포인트(Normal Jump Points)와 퍼펙트 점프 포인트(Perfect Jump Points)를 합산해 보여줍니다.

다이어그램 개선

모델이 최초 구상에 도달하려면 밸런스를 맞춰야 합니다.

다디어그램을 플레이 할 때마다 각 노드는 데이터 포인트를 생성합니다. 풀과 레지스터는 차트에 표시할 수 있으므로 변화 과정을 시각화 할 수 있습니다.

스택 점프의 최종 모델에서 이미 스코어 레지스터를 차트에 추가했습니다. 플레이를 누르고 우리가 설정한 변수를 고려해 게임 중 플레이어의 점수가 어떻게 변해 가는지 확인해 보세요.

오른쪽 위에 ‘Add to my Machinations’ 버튼이 있습니다. 이 버튼을 클릭하면 위 다이어그램의 복사본이 내 머시네이션즈 계정에 추가되어 더 강력한 시뮬레이션을 수행할 수 있습니다. 버튼을 클릭한 다음 계속해 보세요.

계정에 다이어그램을 추가하면 배치 플레이를 할 수 있습니다. 배치 플레이는 생성한 시스템을 여러번 실행할 수 있습니다. 배치 플레이는 인터랙티브 플레이나 스텝 앤 플레이와 달리 서버에서 수행되므로 브라우저가 느려지지 않습니다.

10게임 점수 예측

배치 플레이(Batch Plays) 드랍다운메뉴에서 100을 선택하고 배치 플레이 버튼을 클릭하세요.

오케스트레이터는 다이어그램을 재생하고 서버로부터 데이터를 받아 표시하기 시작합니다. 100번의 배치 플레이가 끝나면 아래 그림과 비슷한 차트가 나타납니다.

통찰

  1. 100게임 중 가장 높은 점수는 176점, 가장 높은 빌딩의 높이는 99블록. (1 스텝 당 1 블록일 때)

  2. 플레이어는 일반적으로 한 게임 당 30-40블록을 쌓습니다.

지표 분석(in-depth analysis)를 사용하면 더 심층적인 분석을 할 수 있습니다. (유료 기능)

차트 툴의 오른쪽 위에 있는 Indicators > Mean Average; Min value; Max value를 클릭하세요,

그래프의 밀도가 가장 높은 곳에서 플레이어는 최대 67점, 최소 47점, 평균 54점에 도달합니다.

같은 다이어그램과 같은 확률로 시뮬레이션 하더라도 결과가 위와 약간 다를 수 있습니다. 머시네이션즈는 다이어그램을 재생하는 동안 각 작업에 랜덤 계산을 수행하기 때문입니다.

다른 플레이어 타입을 시뮬레이션 하기

이 예제를 시작할 때 몇 가지 가정을 했습니다. 첫째는 플레이어의 스킬에 대한 것입니다. 이는 실패와 성공 확률로 변환됩니다. 우리는 플레이어가 95%의 확률로 점프에 성공할 거라고 가정했습니다. 이는 숙달된 플레이어에게는 사실일 수 있습니다. 하지만 초보자에게는 어떻게 나타날까요?

다이어그램에서 실패성공 비율을 각각 25%와 75%로 변경합니다.

이전에 수행한 10회 배치 플레이 오른쪽에 있는 점 세개 메뉴에서 차트에 표시를 선택 취소합니다.

새 변수를 사용해 100번 배치 플레이를 수행합니다.

보다 숙련된 플레이어와 비교해 초보자의 통계는 어떻게 보입니까?

다이어그램에서 수행된 모든 배치 플레이는 플레이 히스토리에 저장됩니다. 다이어그램을 변경할 때마다 새로운 배치 플레이 세트가 목록에 나타납니다. 수행한 시뮬레이션과 결과를 명확히 기록하기 위해 이름을 바꿀 수 있습니다.

플레이어의 유형을 살펴보고 있으므로 이 두 가지를 고급 및 초보 플레이어라고 하겠습니다.

다른 모든 유형의 시뮬레이션과 마찬가지로 모델에서 더 많은 배치 플레이를 수행할수록 결과가 더 정확해집니다.

과제

수익화 시스템 도입

스택 점프는 배너 광고와 강제 동영상 재생, 광고가 없는 프리미엄 버전, 보상형 동영상인 두번째 기회 메커니즘의 세 가지 방식으로 수익을 창출합니다.

위 예제에서 ‘두번째 기회’ 메커니즘을 어떻게 모델링하고 게임 플레이 다이어그램에 연결할 수 있을까요?

힌트

  1. ‘두번째 기회’는 게임 당 한 번만 부여됩니다. 우선 실패할 때 부여되눈 ‘두번째 기회’ 메커니즘을 구현하기 위해 다이어그램의 실패 분기를 확장하는 방법을 파악합니다.

  2. 방법을 파악했다면 이번에는 ‘두번째 기회’ 제공을 어떻게 중단할 수 있습니까? 게임오버 노드를 트리거 할 두 번째 조건일까요?

챌린지 시스템 도입

스택 점프에는 각각 레벨 12개가 있는 4가지 유형의 챌린지가 있습니다. 이들은 연습용으로 사용됩니다.

  1. 머시네이션즈에서 이들을 어떻게 모델링할까요?

  2. 챌린지 완료 수준이 플레이어의 스킬을 향상시킨다는 점을 고려할 때 실패, 성공 매개변수에 영향을 미치는 시스템을 어떻게 구현할까요?