2009-05-04 16 views
3

私はシンプルな2次元ゲームを構築しています。私は基本的なアーキテクチャを設計する良い方法を提案できると思っています。基本的なゲームの構造の質問

ゲームはかなりシンプルです。撮影、移動、ヒット検出を実行する画面には、多くの種類のユニットがあります。画面がズームイン/ズームアウトし、画面の横にメニュー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(カメラコントロールなど)を受け入れます。これにより、一時停止したゲームの世界を回り、デバッグしようとしているときにオフスクリーンで何が起こっているのかを見ることができます。

  • また、多くのゲームエンジンは「シングルステップ」(1つのフレームを実行してからすぐに一時停止することができます)。これは非常に便利です特定のイベントで発生するバグをキャッチしようとしています。

あなたのコードを見ていただけのランダムな考えです。

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