문제

의 종류는 시뮬레이션 게임이 나는 마음에서는 종류는 당신이 구축하는 일에 다양한 위치 및 작업자/수송을 연결하는 이러한 위치.

가 정착 시리즈입니다.

가정하자 나는 원하지 않는 그 순간에, 나는 생각한 관리할 수 있습니다.

그래서 나의 의심은 다음과 같습니다:

  1. 해야 하는 모든 엔터티 클래스고 각각의 하나는 실?
  2. 해야 엔터티를 그룹화할 목록의 내부 클래스고 각각의 하나는 실?

는 경우에는 1 구현,그것은 매우 어려울 것에서 실행 저렴한 스펙 기계 및 잘 조절되지 않에 대한 더 많은 포인트를 수집합니다.

는 경우에는 구현 2,그것은 더 나은 자원의 측면에서 그러나...

어떻게 그룹 엔터티?

  1. 클래스에 대한 집에서 일반 및 가는 인터페이스 목록을 관리하는가?
  2. 클래스가 있는 특정 그룹의 주택과 오브젝트 리스트를 확인할 수도 있을 관리하는가?

그리고 무엇을 실?

  1. 어야 나는 단순한 주요 게임 루프?
  2. 어야 나는 스레드를 각 클래스 그룹?
  3. 어떻게 작업자/수송에 맞추십니까?
도움이 되었습니까?

해결책

정상적인 접근 방식을 사용하지 않는 스레딩에서 모든지만,오히려 구현합체로 상태-기계입니다.다음 mainloop 다음과 같습니다:

 while( 1 )
{
    foreach( entity in entlist )
    {
        entity->update();
    }

    render();
}

다른 팁

MMORPG 게임 온라인 이브를 사용 stackless python 고 배우는 모델을 에뮬레이트 스레드당 entity 이 없는 시스템 자원했다.

체크 아웃이드에 대한 자세한 내용:http://harkal.sylphis3d.com/2005/08/10/multithreaded-game-scripting-with-stackless-python/

저는 당신만 원하는 하나의 스레드를 실행하는 게임 논리입니다.여러 쓰레드지 않을 속도,아무것도만 코드를 확인합니다.는 주요 게임 루프에 완벽하게 괜찮지만,일들이 다소 난이도가면 이 게임은 멀티 플레이가 있습니다.

나는 비트에 대한 혼란의 일부는 당신의 질문에 관련된 클래스입니다.는 경우로,좋아하는 클래스가 있는 각 유형의 집(돼지 농장,풍차,etc.)파생부터 일반적인 추상적인 기본 클래스 House.당신이 저장한 모든 집에서 게임하는 세계의 목록에 있는 주택입니다.

를 사용하는 방법에 대해 생각 얼랑입니다.와 얼랑 당신을 생성할 수 있는 더 많은 프로세스(=스레드 라)정상적인 시스템 thread.더 그것이 의미하는 경우 시스템은 밤에 충분히 좋은,다른 노드를 추가.

또 다른 대안이 될 것입 stackless python(거나 현재의 파이썬은 대체)으로,그것은 또한 지원이 어떤 종류의 lightweightthread 는 것은 매우 시원한 게임 엔진이 있습니다.이브는 온라인 사용을 위해 그것을 서버에 있습니다.그러나지 않지만,배포할 수 있는 쉽게 얻을 수 있습니다.

면서 대답하여@마이크 F 은 주로 정확한 당신을 부담해야 하는 마음에 반복을 통해 엔터티 foreach 사이클을 만들기 위해 평가하게 결정은 원하지 않는 부작용이 나타납니다.다른 한편으로 도입,실 열을 위한 잠재력 heisenbugs 과 동시성 문제,그래서 가장 좋은 방법을 보았고 사용에 의존한 두 가지 사이클:첫 번째 수업에서 에이전트/노동자 기반으로 이전 상태로 두 번째 사이클을 구성 행동의 결과 및 업데이트 상태를 시뮬레이션입니다.가능성을 피하기 위해 바이어스에서,각 주기 평가 순서가 존재합니다.이 BTW 확 parallel 평가 따라하는 동기화에서 각 주기의 끝.

나는 것을 방지하기 위해 별도의 클래스를 위해 각각 엔터티를하기 때문에 그 당신은 당신은 상황 하거나 반복되는 코드에 대한 공유 기능을,또는 당신은 펑키한 상속 트리입니다.

내가 주장되는 당신이 원하는 것은 하나의 클래스 및 객체 기능을 가진으로 구성됩니다.내가 본 문서에 블로그에 대해 이야기하기는 매우 개념에서 RTS 기다리라 생각했지 투어 디자인 패턴을 누군가가 쓰.

를 사용하여 방문 패턴을 생성 스레드는 각 개체에서의 DoEvents(의 부족을 위해 더 나은 워드)방법을 말하는 각 개체는 무엇을 할 것이 주어진다.동기화 실의 끝에서 당신의 루프가 원하지 않기 때문에 일부 개체를 가진 복잡한 논리는 여전히 그것의 일을 하에서 다시 반복할 때 현실에서 그것을 파괴되었고 다섯 개의 루프 전입니다.

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