보드 게임은 게임 상태를 저장하는 복잡성 때문에 MongoDB와 같은 비 관계형 데이터베이스를 훌륭하게 사용할 수 있습니다.
이 옵션이 아닌 경우 (전체 Microsoft 스택을 사용한다고 가정 함) 데이터 저장 영역에 대한 관계형 접근을 피할 수 있습니다. 게임의 특성을 알지 못하면서 추측 할 수밖에 없습니다. 그렇기 때문에 나는 예를 들어 낙서를 사용할 것입니다. 이사회 덤프
당신은 boardState
테이블에 그대로 전체 보드의 상태를 저장할 수있는 모든 처리가 다음 처리 할 수
* * * o *
* w o r d
* * v * *
* * e * *
* * r * *
이 (5 × 5 비 규제 낙서 보드 :))와 같은 응용 프로그램 논리에 의해. 이 정보를 관계형으로 저장하려고한다면 데이터베이스 오버 헤드를 상상해보십시오! 낙서가 이야기하는 "이동"을 가지고 있지 않지만
이동 확인
이 어쨌든 데이터베이스를 피해야한다 무언가이다. 워드 검사, 보드 제한, 게임 논리 등과 같은 모든 프로세스는 응용 프로그램 계층에서 전적으로 처리해야합니다. 내가 당신이라면
응용 프로그램 구현
, 난 당신이 각각 Board
객체를 포함의 Game
클래스의 인스턴스를 갖는 거라고 경로에 계속 것입니다. 모든 것을 메모리에 저장하고 응용 프로그램 계층에서 필요한 모든 계산을 수행해야합니다 (게임을 나중에 저장하기 원하면 보드 상태, 게임 점수). 이때 데이터베이스에 덤프하십시오.
게임 논리에 대해 알지 못하는 사이에 나는 그것을 어떻게 처리 할 것인지 추측 할 수 없으므로 20,000 피트 아래로 내려다 볼 수 있습니다.
업데이트 : 새로운 정보에 근거하여
은, 난 그냥 메모리에 GUID 식별자와 GameCollection 클래스를로드 할 것입니다.colGames[GUID]
과 colGames[GUID].Board
의 보드를 통해 개별 게임에 액세스 할 수 있습니다. 게임이 끝나고 저장된 후에 모든 관련 정보를 데이터베이스에 저장하고 메모리에서 제거하십시오.
체스 게임입니다. FEN 문자열에 게임 상태를 저장하고 사용자 등급을 저장하는 등 기본 작업에만 SQL Server를 사용하려고합니다. 싱글 플레이 게임을 수행하는 데 문제가 없습니다. 그게 바로 간단한 문제입니다. 여러 사용자가 단일 서버에서 재생할 수 있도록합니다. 내가 만든 각 게임마다 보드 클래스를 소유해야한다는 것을 알고 있습니다. 잘 모르는 것은 보드 클래스의 인스턴스를 여러 개 독립적으로 만드는 방법입니다. –
새 정보에 대한 나의 답변이 업데이트되었습니다. –
하하. 진지하게. "복잡성이 복잡하기 때문에"? 당신은 복잡하지 않기 때문에 남자 야. – TomTom