2009-05-04 3 views
3

간단한 2 차원 게임을 만들고 기본 아키텍처를 설계하는 좋은 방법을 제안 할 수 있는지 궁금합니다.기본 게임 Archecture Question

게임은 매우 간단합니다. 화면에는 촬영, 이동 및 히트 감지를 수행하는 많은 유형의 장치가 있습니다. 화면이 확대/축소되고 화면 측면에 메뉴 UI 막대가 있습니다.

지금이 아키텍처는 다음과 같습니다

Load a "stage". 
Load a UI. 
Have the stage and UI pass references to each other. 
Load a camera, feed it the "stage" as a parameter. Display on screen what the camera is told to "see" 

Main Loop { 
if (gameIsActive){ 
    stage.update() 
    ui.update() 
    camera.updateAndRedraw() 
    } 
}else{ 
    if (!ui.pauseGame()){ 
     gameIsActive=true 
    } 

if(ui.pauseGame()){ 
    gameIsActive=false 
} 


stage update(){ 
Go through a list of objects on stage, perform collision detection and "action" checks. 
objects on stage are all subclasses of an object that has a reference to the stage, and use that reference to request objects be added to the stage (ie. bullets from guns). 
} 

ui update(){ 
updates bars, etc. 

} 

을 어쨌든,이 모든 아주 기본적인 것입니다. 이 일을하는 더 좋은 방법이 있는지 궁금해.

덕분에, 마태 복음

답변

6

하늘에 별이 있기 때문에 주요 루프를 구축하는 등 여러 가지 방법이 있습니다! 너의 것은 완벽하게 유효하며 아마도 잘 작동 할 것이다. 시도해 볼만한 몇 가지 사항은 다음과 같습니다.

  • 어디에서 컨트롤을 읽습니까? "ui.update"에서 수행하고 "stage.update"에서 응답하는 경우 지연 프레임을 추가합니다. 루프에서 순서대로 "읽기 컨트롤 -> 컨트롤 적용 -> 업데이트 gameworld -> 렌더링"을 수행해야합니다.

  • 3D API를 사용하여 렌더링하고 있습니까? 많은 책은 렌더링 할 때 (OpenGL을 틱 의사 코드를 사용하여)이 같은 뭔가를 말해 :

    glClear()   // clear the buffer 
    glBlahBlahDraw() // issue commands 
    glSwapBuffers() // wait for commands to finish and display 
    

    그것은 당신이 그것을, GPU가 할 수있는 그런 식으로 할 경우

    glSwapBuffers() // wait for commands from last time to finish 
    glClear()   // clear the buffer 
    glBlahBlahDraw() // issue commands 
    glFlush()   // start the GPU working 
    

    을하는 것이 좋습니다 CPU가 다음 프레임을 위해 스테이지를 업데이트하는 동시에 화면을 그리는 작업.

  • 일부 게임 엔진은 게임이 "일시 중지"된 경우에도 프레임을 계속 렌더링하고 일부 UI (예 : 카메라 컨트롤)를 허용합니다. 이렇게하면 일시 중지 된 게임 세계를 돌아 다니며 디버깅 할 때 화면에서 진행되는 상황을 볼 수 있습니다.

  • 또한 많은 게임 엔진이 "단일 단계"(한 프레임 실행 후 즉시 일시 중지) 할 수 있습니다. 매우 편리한 기능입니다 (예 : "일시 중지"). 특정 이벤트에서 발생하는 버그를 잡으려고합니다.

그 중 일부가 도움이되기를 바랍니다. 나는 당신의 코드를 보았을 때의 임의의 생각 일뿐입니다.

2

나는 단지 하나 개의 작은 게임을 작성하고 그 그래서 내가 직접 경험을 많이 빌려 수없는 몇 년 전이었다. 그러나이 책을 읽으면 나는 그것이 당신에게 대단히 도움이된다고 말할 수 있습니다. 다른 것들을 제외하고, 그것은 많은 정보와 게임 아키텍처의 예를 가지고 있습니다.

alt text http://www.microcenter.com/images/shared/products/0306250_050989.jpg

http://www.amazon.com/Game-Coding-Complete-Mike-McShaffry/dp/1584506806/ref=sr_1_1?ie=UTF8&s=books&qid=1241396903&sr=8-1