게임 컨텐츠를 저장하기 위해 데이터베이스를 사용해야합니까? [닫은]


16

SFML을 사용하여 C ++로 작성된 2D 게임이 있습니다. 파일이나 데이터베이스에 줄 / 항목 / 행을 추가하여 항목이나 엔터티와 같은 콘텐츠를 쉽게 추가 할 수있는 방식으로 게임을 확장 가능하게 만들고 싶습니다.

프로그램으로 컴파일 할 필요가 없지만 런타임에 읽고 쓸 수있는 것을 찾고 있습니다. 데이터베이스를 사용하는 것이 언제 적절한가요?


1
필요 사항을 더 명확히하십시오. 데이터베이스는 매우 빠르지 만 매우 복잡합니다. 정말 속도가 필요합니까? 왜 텍스트 파일을 사용하지 않습니까? 벤치 마크를 실행 했습니까?
Anko

당신은 얼마나 많은 아이템을 가지고 있습니까? 백만 이상입니까? 그것은 텍스트 파일보다 데이터베이스를 사용하는 것을 고려할 임계 값에 관한 것입니다.
Philipp

데이터베이스가 너무 과도하다고 말하면 일종의 정의 목록을 사용하십시오. 아마도 평범한 텍스트 일 ​​것입니다. XML 또는 JSON을 고려하십시오.
Hugo Zink

1
XML 또는 JSON도 권장합니다. XML은 사람이 읽을 수 있기 때문에 XML을 선호하지만 JSON도 좋은 선택입니다.
Draco18s는 더 이상 SE

데이터 시스템이나 게임에서 어떻게 구현되는지에 대해 많은 지식을 가지고 있다고 주장하지는 않지만 Microsoft는 많은 간단한 응용 프로그램 (많은 것이없는 응용 프로그램)에 마이크로 데이터베이스 구현을 사용하는 경향이 있다고 말할 것입니다 데이터 또는 데이터베이스 외부의 요구가 있지만 "관계"등이있는 경향이 있습니다. 사용 편의성을 염두에 두는 한 이치에 맞을 수 있습니다. (잘못된 아이디어 : 데이터 정확성을 요구하는 초 정형화 된 XML 네임 스페이스 사용)
Katana314

답변:


26

데이터베이스가 필요한 경우에만 데이터베이스를 사용하십시오. 그건:

  • 복잡한 쿼리를 자주 수행해야하는 경우
  • 복잡한 데이터 관계가있는 경우
  • 데이터가 커서 메모리에 적합하지 않은 경우

게임 데이터가 이러한 조건 중 하나를 만족하면 데이터베이스를 사용하면 도움이 될 수 있습니다. 이것들은 흔하지 않으며 아마도 그것들을 만족시키지 못할 것입니다. 그렇다면 SQLite 또는 실행중인 서버가 필요하지 않고 라이브러리 일뿐이라는 비슷한 아이디어가 있습니다.

그렇지 않으면 시작시 파일을 사용하고 메모리에 데이터를로드하십시오. 게임을 수정 가능하게하려면 게임의 디렉토리와 모드의 디렉토리 모두에서이 데이터를로드하고 충돌하는 정보를 병합하는 방법을 정의하십시오.

또한이 경우 해당주의 데이터베이스를 사용, 그것은 모두 당신과 개조 '개발자는 여전히 게임을 할 때 부하를 초기 데이터를 읽고 데이터베이스를 구성하는 파일을 사용하는 혜택을 누릴 수 있습니다. 이 데이터베이스의 잠재적 크기가 크지 않은 경우 (즉, 수십 MiB 이상) 인 메모리 데이터베이스를 사용할 수 있습니다.이 데이터베이스 는 SQLite :memory:에서 데이터베이스 경로로 지정하여 가능 합니다 .


3
SQLite귀하의 요구가 "복잡하거나"거대하지 않더라도을 고려하는 것이 매우 두 번째 입니다. 실제로 작고 내장 된 무언가를 사용하면 데이터베이스를 손쉽게 사용할 수있는 데에는 많은 이유가 있습니다.
wjl

또한 모바일 플랫폼은 데이터베이스를 사용하여 일부 정보를 저장합니다. 안드로이드는 SQLite를 사용합니다. 즉, 모바일 플랫폼에 대한 대부분의 작업이 이미 완료되었습니다 (데이터 처리 측면에서). 또한 SQLite를 설치하고 SQLite 데이터를 편집하는 것은 정말 쉽습니다 ( SQLite Studio 와 같은 프로그램 사용 ). SQLite를 사용하는 경우 V3을 사용하는 것이 가장 좋습니다. 그러나 그 외에는 주목하십시오!
Ismael Miguel

@wjl : 동의, 정규화 및 참조 무결성 제약의 이점은 작은 게임 데이터 세트의 경우에도 그만한 가치가 있습니다. (이제 SQLite가 적절한 참조 무결성 제약 조건을 수행하는 것이 그렇게 고통스럽지 않다면 ...)
Mason Wheeler

이것은 관계형 데이터베이스 사용에 대한 논쟁 입니다. 간단한 인덱스 키-값 저장소는 여전히 가치가 있습니다.
Mark

1
@Mark 게임에서 키-값 저장소를 사용하려면 메모리에 해시 맵 또는 이와 유사한 것이있을 수 있습니다.
Darkhogg

5

나는 게임 개발을 위해 MongoDB를 정말 좋아하고 성능이 뛰어나며 유연하고 사용하기 쉽고 json 기반입니다.

NoSQL Arch이기 때문에 컬렉션에 필요한 모든 필드를 추가 할 수 있으므로 게임과 같은 "동적"환경에 매우 적합합니다.

엿봄 줘 .

어떤 종류의 MMO Turn 기반 전략 게임을 개발하고 있다면 아마도 CouchDB 에 대해 읽어야 할 것입니다 .NoSQL 데이터베이스는 버전 관리 시스템이 정말 좋습니다.


좋은 대답이 아닙니다. 문제는 "어떤 데이터베이스를 사용해야 하는가"가 아니라 "데이터베이스를 전혀 사용해야 하는가"였습니다.
uliwitness

1

CastleDB는 나중에 데이터베이스를 JSON 파일로 변환하는 편집기이기 때문에 좋은 옵션입니다. 나는 평문 파일이 최고라고 말하는 많은 답변을 보았으므로 CastleDB는 아마도 두 세계에서 최고 일 것입니다.


나쁜 대답은 아니지만 질문을 놓칩니다. 문제는 "어떤 데이터베이스를 사용해야 하는가"가 아니라 "데이터베이스를 전혀 사용해야 하는가"였습니다.
uliwitness
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.