0

나는 크리켓 관리자 통계 게임을 만들고 있습니다. 나는 볼 - 바이 - 볼 시뮬레이션을 만들어야한다. 게임/볼 결과는 플레이어 통계 및 날씨 또는 선택된 전략과 같은 기타 외부 요소의 영향을받습니다.크리켓 상태 도구

저는 게임의 대부분이 내게 들리는 소리가 들리는 상태 기계로 구현 될 수 있다고 읽었습니다. 그러나 나는 크리켓에서 초보자이기 때문에이 게임을 상태 머신으로 상상하지 못했습니다 .

볼을 상태 기계 또는 경기 또는 플레이어 또는 모두로 설정해야합니까? 3 또한이 상태 시스템을 (이벤트를 통해) 어떻게 조정할 것인지 잘 모르겠습니다.

또한 상태와 전환을 식별하는 데 어려움을 겪고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

1

첫 번째 단계로 볼 결과에 대한 크리켓 및 모델 규칙을 따라 이전 볼이 주어진 볼에 미치는 영향을 요약해야합니다.

그런 다음 추적 할 항목과 상태를 나타내는 데 편리하게 사용할 수 있는지 여부를 식별하십시오. 예를 들어 통계는 대개 FSM으로 추적하기가 쉽지 않습니다.

이러한 정보를 염두에두고 모델을 만들 수 있어야합니다. 추적해야 할 정보는 상태 시스템이거나 특정 상태의 내부 값일 수 있습니다. 볼 사이의 상호 작용은 한 컴퓨터에서 다른 컴퓨터로 전환하는 전환 및 이벤트를 지정합니다.

3

크리켓 매니저 게임은 플레이어의 통계 (볼링 스킬/경험, 타자의 스킬/경험치, 수비/윙킹 스탯 등)에 따라 볼에 의한 공을 시뮬레이트합니다. 및 기타 관련 변수. 내 이해 에서이 크리켓 경기의 시각적 인 표현보다는 알고리즘 엔진의 더 많은 것입니다.

이제 질문에 대답하기 전에, 나는 당신이 FSM을 올바른 방법으로보고 있다고 생각하지 않습니다. FSM은 평생 동안 어느 시점에서나 실행 가능한 여러 상태 중 하나에 있도록 설계된 코드 조각입니다. 각 상태는 일반적으로 다른 업데이트 루틴을 가질 수 있습니다. 또한 각 상태는 사전 정의 된 트리거/이벤트에 따라 다른 상태로 전환 할 수 있습니다. 이해해야 할 것은 동일한 주체에 대해 서로 다른 동작을 구현한다는 것입니다.

이제 "대부분의 게임은 상태 시스템이 아니라 상태 시스템의 전체 둥지"로 구현 될 수 있습니다. 게임의 여러 관리자 클래스, 렌더러, 게임 플레이 객체, 메뉴 시스템 등은 모두 자체 상태 시스템에서 작동합니다. 이 예제의 목적을 위해 게임 캐릭터, 예를 들어 권투 선수를 상상해보십시오. 'CBoxer'(?) 클래스에서 찾을 수있는 일부 주에서는 'Blocking', 'TakingHit', 'Dodge', RightUpper ','LeftHook '등이 있습니다.

FSM은 더 많은 설계 구성 요소입니다. 즉, 문제의 해결책을 구상하는 방법입니다. 반드시 사용하지 않아도됩니다. 당신은 상태 머신 (나는 생각한다 :)없이 완전한 게임을 만들 수 있었다. 그러나 FSM은 코드 디자인을 매우 직관적이고 직관적으로 만들어 주며, 알맞은 규모의 프로젝트에서 코드를 찾지 않는 것이 솔직히 어렵습니다.

직장에서 FSM의 일부 코드 샘플을 살펴 보는 것이 좋습니다. 배후에 아이디어가 있으면 어디서나 사용할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 게임은 덜 시각적이며 더 많은 텍스트를 기반으로합니다. 나는 공을 위해 하나, 선수를 위해 하나, 게임을 위해서 하나씩 상태 기계를 전부 필요로한다는 것을 깨달았다.그러나 나는 FSM을위한 오케스트레이터가 필요하다는 것을 깨달았으며 아마 전체 게임 논리가 거기에 상주하게 될 것입니다. 또 다른 우려는 FMS가 거의 가치가 없다는 점에서 거의 주를 보유하지 않을 것이라는 점입니다. 게임의 워크 플로는 순차적 인 상태 머신과 상태 머신 사이의 어딘가에 위치합니다. 나에게 그것은 순차적으로 더 자연스럽게 느껴진다. (연주 된 공의 고리) – Zapacila

+0

"FMS는 보람이없는 시점에 FMS가 거의 없을 것이다." - 그게 게임에 대한 당신의 설명에서 생각한 것입니다. 게임 객체의 update() 함수에서 간단한 switch-case 블록은 단순한 상태 머신으로도 기능 할 수 있다는 것을 명심하십시오 (관련 코드가 심각하게 작을 경우에만 이것을 제안합니다). Btw, 내 친구는 [여기] (http://hitwicket.com/)에서 확인해야하는 웹 기반 크리켓 관리 게임을 만들었습니다. 그것에게 가라. 머리 속의 아이디어를 미세하게 조정하는 데 도움이 될 것입니다. – FeignMan

+0

당신에게 제안 해 주셔서 감사합니다 :) – Zapacila