우연에 맡길 역할을 정하세요
우연은 영향 없는 시각적 변화를 고르거나, 동등한 경로 중 하나를 선택하거나, 큰 영향을 주는 보상을 결정할 수 있습니다. 무작위 사건으로 한 판이 끝날 수 있다면 어떤 위험인지 알리고 가능하면 신호나 선택 기회를 주세요. 풍경만 바뀐다면 설명은 거의 필요 없을 수 있습니다. 추첨을 구현하기 전에 플레이어가 무엇을 기대하는지 적어 보세요. 이해한 규칙 안에서 변화가 생길 때 놀라움도 즐거워집니다.
의미 있는 선택을 보호하세요
플레이어가 결과에 대응할 수 있는지 확인하세요. 피할 시간이 충분히 남았을 때 나타나는 무작위 장애물은 공정할 수 있습니다. 같은 장애물도 마지막 입력 기회가 지난 뒤 나타나면 부당하게 느껴집니다. 큰 반전이 의도된 설계가 아니라면 무작위 보상이 신중하게 플레이하는 가치를 없애지 않게 하세요. 보상을 반복해서 줄 때는 오랫동안 보상이 없거나 같은 결과가 중복되어도 플레이어 입장에서 받아들일 만한지 생각해 보세요.
분포와 인식을 별도로 테스트
테스트하는 동안 결과를 기록하고 관찰된 다양성을 의도한 분포와 비교하십시오. 단, 짧은 표본이 확률을 입증한다고 가정하지 마십시오. 플레이어에게 공정하다고 느꼈는지, 그리고 결과에 영향을 미친 것이 무엇이라고 생각하는지 물어보세요. 그것은 다른 질문입니다. 경험이 여전히 편향된 것처럼 느껴지더라도 구현은 목표와 일치할 수 있습니다. MDN은 JavaScript Math.random이 의사 난수 값을 반환하며 보안에 민감한 사용에는 적합하지 않다고 지적합니다. 게임 공정성과 보안은 별개의 문제입니다.
게임의 공정한 무작위성 관련 질문
무작위는 모든 플레이어에게 예측할 수 없음을 의미합니까?
아니요. 무작위 시스템에서도 플레이어는 패턴을 추측하거나 비슷한 결과가 연속되는 것을 알아챌 수 있습니다. 관련 규칙을 설명하고 여러 번 플레이할 때 결과가 어떻게 받아들여지는지 시험하세요.
게임 결과에 Math.random을 사용할 수 있나요?
일반적인 게임 변형에 대해 의사 난수 값을 제공할 수 있지만 MDN은 암호화 방식으로 안전하지 않다고 경고합니다. 보안에 민감한 결정에는 사용하지 마세요.
추가 읽을거리
오래된 정보를 발견하셨나요? 수정 사항 제보