문제

게임 프로그래밍을 다시 시작하겠습니다.10년 전에 나는 qbasic에서 게임을 만들고 있었고 그 이후로 어떤 게임 프로그래밍도 해본 적이 없어서 꽤 녹슬었습니다.저는 항상 프로그래밍을 해왔고 지금은 웹 개발자/DBA/관리자입니다.질문이 여러개 있는데 포스팅당 하나로 제한하겠습니다.

제가 작업하고 있는 게임은 매우 큰 세계가 될 것입니다.좀 그럴거에요. URW, 하지만 훨씬 더 넓은 세계이고 'RPG'에 더 가깝습니다.

제가 결정하려고 노력한 것은 지도를 배치하고 저장하고 액세스하는 가장 좋은 방법이 무엇인지였습니다.나는 sqlite를 사용하여 데이터를 저장하는 아이디어를 생각했습니다.그런 다음 sqlite db를 게임의 저장 파일로 사용할 수도 있습니다. 멋지고 쉽습니다.

이 문제를 해결하는 방법이나 다른 저장 방법에 대한 아이디어가 있는 사람이 있나요?

내 게임에 대한 요구 사항은 다음과 같습니다.

  • 게임 세계에서 발견하려면 완전한 무작위 액세스가 필요합니다(NPC, 괴물, 동물은 모두 항상 활성화됩니다).
  • 저는 Stackless Python 3.1을 사용하고 있습니다. 많은 작업을 수행하지 않는 한 옵션이 상당히 제한되어 있습니다.
  • 매우 넓은 세계를 처리할 수 있어야 합니다.
  • 동시성 지원은 장점이 될 수 있지만 필요하지는 않을 것 같습니다.
도움이 되었습니까?

해결책

외부 요인으로 인해 강제로 사용하지 않는 한 관계형 데이터베이스를 함부로 다루지 마십시오.

파이썬을 보세요 pickle, 선반.

Shelve는 빠르고 확장성이 뛰어납니다.Python과 Python이 아닌 표현 간의 지저분한 변환을 제거합니다.


편집하다.

더 중요한 조언.기술 선택에 얽매이지 마십시오.위치, 아이템, 캐릭터, 규칙 등을 얻으세요.에게 일하다.파이썬에서.최대한 간단하고 정확하게.

핵심 모델, 정확성 및 사물을 증명하기 위한 기본 기능 외에는 뇌의 단 하나의 칼로리도 소모하지 마십시오. 일하다.

실제로 사용할 수 있는 모델이 있으면 공장, 정교한 단위 테스트를 통해 연습한 다음 기술을 선택할 수 있습니다.

모델이 있으면 이를 수백만 위치까지 의미 있게 확장하고 어떤 종류의 스토리지가 필요한지 확인할 수 있습니다.모델은 변경할 수 없습니다. 이것이 애플리케이션의 핵심입니다.액세스 계층과 지속성 계층만 변경하여 성능을 조정할 수 있습니다.

다른 팁

당신이 요구하는 것은 일종의 것 같습니다 공간 인덱스.매우 큰 2D 게임의 경우 쿼드트리.Quadtree는 넓은 지역이 있고 활동이 해당 지역의 특정 지역에서 발생하는 경향이 있을 때 잘 작동합니다. 이는 대부분의 RPG 유형 게임의 경우입니다.스토리지 요구 사항을 낮게 유지하고 충돌 감지 속도도 높일 수 있습니다.

게임을 저장하는 경우 플레이어 및 몬스터 통계와 같은 정보가 자주 변경되는 것이 걱정된다면 데이터베이스에 저장할 수 있습니다.실제 레벨 레이아웃의 경우 게임에 맞는 바이너리 파일 형식을 사용하는 것이 좋습니다.일반적으로 레벨 레이아웃에서 수행해야 하는 데이터베이스 유형 쿼리는 많지 않으며 자신만의 형식을 사용하여 훌륭한 최적화를 수행할 수 있습니다.쿼드트리와 같은 형식을 데이터베이스에 저장하는 방법을 모르겠습니다(가능하다고 확신하지만).

나는 많은 양의 데이터를 저장하기 위해 비관계형 데이터베이스를 사용하고 있습니다.64비트 하드웨어에서 작업할 수 있는 경우 몽고DB 그것으로 파이썬 드라이버 정말 좋습니다.Stackless에서도 이것이 괜찮은지 모르겠지만 가능합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top