2009-04-13 64 views
0

我最近開始學習Irricht 3D引擎,我已經完成了所有的教程,並且我準備構建一個簡單的遊戲。所以這裏有一些背景:什麼是在現有的3D引擎上構建遊戲的最佳方式

我有irricht,一個基於場景圖模型的3D引擎。它知道如何加載網格物體並顯示它們,它提供了結構化類來處理來自用戶的輸入,它爲我提供了構建GUI的簡單方法。它爲我提供了簡單的方法來定義camers,燈光,霧等,併爲我提供了更多便利的方式來做更多的事情。

但是,自然,引擎不提供的是一種定義實體在遊戲中和它們之間的關係。 (例如,如果一個球撞到牆上,我想把牆打成幾塊)。

好吧,這是我的工作,奠定了一個代表遊戲邏輯的基礎設施。所以我們可以說我已經做到了,並且我有一些Data模型可以抽象對象以及它們如何相互關聯(我正在談論邏輯關係而不是空間關係),它們處理所有邏輯並代表遊戲中的所有實體。

現在這是我的問題。 什麼是將我的數據模型連接到引擎的最佳方式?這不是一個技術問題,而是一個設計問題。

幾點要牢記:

  • 我的數據模型不於 引擎構建的。它不知道任何事情。 雖然可以通過接口 訪問。
  • 當數據模型 中的某些內容發生變化時,我不想再次構建我的 整個場景圖形,而只是相應的 部分。
  • 我的數據模型,主要是在一些 方式相互可以溝通 實體類 層次。

我正在考慮MVC模式,但我想聽到任何有製作遊戲經驗的人的更多意見。

+0

我編輯了這個問題,使其更加清晰。 – user88637 2009-04-13 10:30:21

回答

1

場景圖中的對象(實體)可以同時應用局部和世界變換(平移,縮放等)。局部變換是子對象相對於父對象座標系的變換。

例如,如果我們在房間裏有一個房間和一張桌子。辦公桌的局部變換與房間的座標系有關。桌子上的筆可以在桌子的座標系中進行局部變換。因此,翻譯桌面將導致從桌面重建場景圖形(這將導致桌面和筆的世界轉換)。

因此,如果喲有一個場景圖,如:

室 - >臺 - >筆

這是你如何計算轉換(W-世界,L-局部改造):

Wroom = Lroom

Wdesk = Wroom Ldesk = Lroom Ldesk

WPEN = Wdesk LPEN = Lroom Ldesk LPEN

關於MVC模式,您可以使用它,你已經有了你的模型和視圖。雖然它可能證明是純粹的MVC有點矯枉過正。在遊戲開發中,控制器通常在視圖中結束。

相關問題