답변:
"단일 게임 세계 내에서 유지"에 대한 MMO 용어는 단일 샤드 입니다. 이브 온라인 은 모든 플레이어를 하나의 샤드로 채우는 유일한 MMO입니다.
운 좋게 그들은 그들이 어떻게하는지에 대한 매우 유익한 기사 를 출판 했습니다.
(출처 : gamasutra.com )
나쁜 소식입니다. EVE 온라인 기술은 일반적으로 적용 할 수 없습니다. 그들의 솔루션은 그들의 특정 장르와 구현에 절대적으로 맞춰져 있습니다.
참고 : 모든 EVE 온라인의 슈퍼 팬시 단일 샤드 네트워크에는 하나의 데이터베이스 를 사용 합니다. 분산 데이터베이스를위한 확장 가능하고 일관된 중간 정도의 실시간 솔루션을 설계 할 수 없었습니다.
어떻게했는지 읽어 보면 소유주 솔루션을 설계하는 데 도움이됩니다. 그러나 매우 어려운 문제 를 해결하려고합니다 .
게임 서버를 배포하는 대신 먼저 다른 길을 탐색하는 것이 좋습니다.
첫 번째 조치는 게임 서버에서 직접 데이터베이스 액세스를 분리하고 사용 특정 미들웨어를 사용하여 서버에 대한 데이터 (예 : XML, JSON)를 준비해야합니다. 이들은 많은 수의 데이터베이스를 처리 할 수 있으며 응용 프로그램 별 캐싱 옵션을 제공하는 것이 더욱 중요합니다. 가능한 모든 것을 캐시하고 필요할 때만 db를 잔소리하십시오. 시나리오에서 최상의 성능을 달성하기 위해 많은 작은 쿼리 대신 큰 반입을 거의하지 마십시오.
선택한 데이터베이스를 사용하면 사용 가능한 데이터베이스 리소스를 쉽게 확장하고 결과를 더 빠르게 제공 할 수있는 클러스터를 운영 할 수 있지만 많은 경험과 설정 및 유지 관리를위한 전담 데이터베이스 관리자가 필요합니다. 인디 예산도 마찬가지입니다.
게임 서버 관련 : 일반적인 전략은 각 서버가 게임 세계의 일부를 관리하는 여러 서버를 사용하는 것입니다. 각 사용자는 일반적으로 주변에서 일어나는 일만 알면되므로 세상을 지역별로 나누는 것이 좋습니다. 불행히도 폐쇄 구역과 플레이어로 구성된 세계 대신 경계가없는 열린 세계가있을 때 훨씬 복잡해집니다. 열린 세계가있는 경우, 플레이어를 원활한 방식으로 영역간에 이동시키는 방법과 서버 경계 근처의 영역을 동기화하는 방법이 필요합니다. 까다로운 문제입니다.
데이터베이스 관련 : SQL 데이터베이스는 일반적으로 확장 성이 떨어집니다. 배포 용으로 설계되지 않았습니다. 그러나 현재 여러 서버에 분산되도록 설계된 MongoDB 또는 Cassandra와 같은 새로운 NoSQL 데이터베이스 추세가 있습니다. 서버를 추가하기 만하면 용량을 훨씬 쉽게 추가 할 수 있습니다. 그렇다면 모든 대형 게임이 왜 그 게임으로 전환되지 않습니까? 때문에:
따라서 프로젝트가 이미 발전한 상태에서 다른 데이터베이스 솔루션으로 전환하면 큰 위험과 시간과 에너지를 많이 투자 할 수 있습니다.
아닙니다. 이것은 아직 해결되지 않은 매우 어려운 영역입니다.
나는 이것이 오래되었다는 것을 알고 있지만 ....
실제로 이것에 초점을 두 영역이 있습니다.
여러 서버에 응용 프로그램을 배포해야합니다. 여러 서버에 데이터베이스를 분산시켜야합니다.
그리고 둘 다에 대한 중복성이 있어야합니다.
이를위한 몇 가지 오픈 소스 솔루션이 있습니다. Farmville은 MemSQL / Couchbase를 사용하는 좋은 예입니다.