2009-04-13 106 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有点矫枉过正。在游戏开发中,控制器通常在视图中结束。

相关问题