.GAME FRAMEWORK

开始用.NET构建我们梦想中的游戏

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

我觉得首先需要参考的第一目标是:.NET Framework,很有规律性,整齐划一。

那么如果这个.Game Framework(Dreamwork暂时还没有定)要建立的话,我觉得首先需要确定一点:那就是需要一个根对象类型(参考.NET里面的object),比如叫GObject。这个框架里面提供的一切东西(除了Exception)都要从GObject出发,无论是引擎对象还是游戏对象。这样做的好处和object给我们带来的好处应当是一致的:我们可以GObject作为超类型,当遇到一些可能需要涉及各种不同对象协作的情况,就可以用GObject来代替了。那么这个GObject需要实现一些什么呢?我觉得需要实现一些很基本的能力,尤其是.NET Framework本身所没有提供的能力。比如说代理模式——用于减少非必要的内存占用情况,以及推迟数据载入时间(间接的提高游戏的载入速度和响应速度)。当然,这也只是暂时想想的,考虑得不太仔细。另外可以考虑得是否还包括FlyWeight等其他的Pattern呢?

从GObject出发,至少分为两类:引擎对象和游戏对象。引擎对象负责维持整个游戏的最基本操作,例如图形的描绘工作,接收和处理某些消息(例如键盘等),负责数据保存,网络数据传输,数据安全,在线升级等等。引擎对象对于速度相对来说更加敏感,如果速度有问题,可能会引起整个游戏的停顿,完全没有可能玩下去。因此,引擎对象可能会用unmanaged的方式写,但也不排除用managed。如果用unmanaged的话,一定会提供一个managed的wrapper或者类似的机制,使得纯.NET 的开发者能够使用。而游戏对象更可能注重于角色的维护、物品的描述、地图的构造以及游戏对象的AI等等,除了AI可能对于速度敏感之外,其他部分对于速度相对来说不是非常敏感,但是很多时候需要最终游戏开发者对这部分进行一些具体的编写。正如我们平时使用.NET的时候会感受到.NET运行库做得非常的健壮,以至于即使我们犯了很愚蠢的错误都不会使得整个的程序出现严重崩溃。我们这个游戏框架的其中一个目标也是这样:为最终游戏开发者提供一个健壮的平台。因此游戏对象的部分不允许使用unmanaged的东西,一切都是纯粹使用managed的方式进行开发的。如果大家玩过Terrarium,那么应该能够明白我想法——做出一个能够有最终玩家参与设计的游戏。最终玩家的设计水平你是没有办法保证的,于是只好保证整个框架的健壮性。而一般来说最终玩家只会对游戏对象这部分进行修改,所以安全性考虑也只需要在游戏对象这个部分进行加强。

待续……

posted on 2004-05-16 01:04  我们的游戏世界  阅读(1280)  评论(1编辑  收藏  举报