小议游戏场景管理设计

本文主要讨论了游戏,特别是2D SLG和AVG类游戏的场景管理设计,包括场景对象、引用计数、对象继承和场景管理的几个关键方面。通过引入COM机制的IUnknown基类来管理对象的生命周期,以及利用场景层级关系、对象容器和格子管理器来优化游戏逻辑。文章强调了灵活的设计和组件模式的重要性,以应对不断变化的游戏需求。
摘要由CSDN通过智能技术生成

游戏场景管理设计

Author:FreeKnight_Duzhi

Blog: http://hi.baidu.com/freedomknightduzhi

Data: 2008-6-11

允许转载,转载请保留头部信息。

前言

如之前博客中所说,最近一直忙于业余游戏开发项目中。我一直是个比较懒散的家伙,可这次猫窝的管理员(我们组唯一一名策划)却不愿意让我闲着,几乎每日都会QQ联系,再三叮咛询问我项目的事情。突然有些日本某些连载漫画作家被杂志社催稿的味道了。不过,拖他的福,项目进展比我预料的迅速。虽然被我狠心砍掉了一大模块下去,仍然比我原计划快出很多,感谢他。希望项目快点出来吧。

因为我们做的是2DSLG(战棋策略类游戏)的缘故,而我又主观的偏好一些AVG(恋爱养成游戏),所以本文重点会考虑这两类游戏的场景管理,对于3D且不基于地图格的场景管理设计恐怕您就需要进一步考虑了。

 

引子

       场景管理以及场景对象管理,我想应当是游戏逻辑的核心模块也不为过了,实际上复杂度还是非常高的,本文仅从一些部分简单的叙述了其中一些内容。随兴而谈,仅供参考。

场景对象

       熟悉Com机制的朋友会知道,Com的最基类通常都是IUnknown类,这个类通常包括下面四个函数:

       /** 构造函数 */

IUnknown() : m_nRefCount(1) { }

/** 增加计数 */

void AddRef(){++m_nRefCount;}

/** 假释放 */

bool Release()

{

assert(m_nRefCount > 0); 

-- m_nRefCount; 

if(m_nRefCount)

{delete this; return true;}

return false;

}

/** 接口查询 */

void QueryInterface(const IID&  Guid) = NULL;

首先来解释一下这个类。

1:这个类内有一个成员m_nRefCount引用计数,在我们每次New一个继承此类的类成员时,该引用计数自动加一。在Release它时,不是真正的释放掉,而是减少一个引用计数,在引用计数为0时,也就意味着的确没有类再引用此类对象时,该类对象才真正的释放。

       这样有很大的好处,假设一个SLG游戏,一个关卡中有多个弓箭手敌人A,</

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值