Panic的小屋

国破山河在,城春草木深。
随笔 - 151, 评论 - 1317, 引用 - 22, 文章 - 0

导航

公告

<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

留言簿(269)

随笔分类

随笔档案

文章档案

相册

国外好站推荐

工具网页

我的其他网页

我的网友

户外运动

美女的空间

搜索

最新评论

阅读排行榜

评论排行榜

游戏中对象选取的方法

Posted on 2005-03-17 18:19 Panic 阅读(4896) 评论(4)  编辑 收藏

游戏中对象选取的方法
作者:Panic 2005年3月17日
   
    对于PC游戏,在鼠标大行其道的今天,如何由鼠标的位置判定其下的对象是什么,是几乎所有游戏都必须面对的问题。
以下提供几种方法,仅供参考。

    1,包围框法。一般的,对游戏中的每个对象创建一个伴随的包围框,通过遍历所有可见对象,判定鼠标坐标点是否落在某个包围框的内部来获取其选取的对象。
    这种方法的优点是简单,算法容易理解,当使用矩形包围框,而对象数量又比较有限的时候,效率也是很好的。缺点是选取不够精确,无法对对象的细节做选取。
    在2D游戏中,包围框一般是矩形,或者是若干个矩形的组合,而3D游戏使用包围盒,或者包围球或其组合等方式。无论具体方式如何,其算法实质都是一样的。
   
    2,枚举法。效率最低的方法之一。
    和1,包围框法类似,它也需要遍历所有可见对象,但是由于缺少包围盒机制,只能检测对象位于鼠标下的那个位置是否有有效象素,或者有效的alpha值,对3D对象而言,就是检查鼠标点形成的选取射线是否穿越对象的某个面片。
    这种方法可以实现很精确的选取,但是由于效率太低,所以很少直接使用,一般先使用方法1减少遍历对象的数量之后,再使用这个方法达到精确的选取。

    3,反馈法。这是一个很有效,也很快捷的方法,尤其在3D游戏中,有无可比拟的优越性。
    反馈法的实现很简单,首先要维护一个后台缓冲区,当绘制目标对象的时候,同时将对象的可见信息(一般是对象图片的Alpha值,或者Z值)    写入后台缓冲,然后检测鼠标对应的缓冲区的位置的值是否有变化,如果变化了,表明刚才绘制的对象可以被鼠标选中。当缓冲使用了复杂一些的Z运算的时候,我们在绘制完成之后,就可以得到一个鼠标可以选取的对象列表,然后只要简单的根据一定的原则从这个列表中提取需要的对象就可以了。这个机制在2D下,一般不维护额外的缓冲区而直接使用绘图缓冲区。3D下,像OpenGL提供了内置的反馈方法,更方便了用户的使用。实际也可以利用Z buffer,模板缓冲等实现类似的机制。
    这种方法可以实现精确到象素级的选取,而几乎不影响运行效率。缺点是需要对绘制部分的代码有很高的控制权限。
    反馈法的简单实现请参考:《反馈法的2D基本实现

    4,直接映射法。这也是一个高效算法,可以达到O(1)的时间复杂度。常见于2D战棋类游戏中。
    在这类游戏中,场景是用一个二维表存储的,表的每个项,保存着它上面的对象信息,我们可以通过一个简单的算法,由当前的鼠标位置得到表的索引,然后直接读取索引对应的项就完成了选取。
    在固定视角的3D游戏甚至非固定视角的3D游戏中,也可以使用这种方法。这种方法的缺点是对象在场景中,只能是按二维表,或者多层二维表排布的。这种方法对内存空间的需求也比较大。棋牌类游戏比较适合使用这种方法。

    由于每种方法都有其固有的优缺点,而对游戏而言,场景又千变万化,复杂纷繁。为了能适应实际的需求,上面的方法可以组合使用,从而扬长避短,更好的达成需求。
    其他一些复杂的选取,比如范围选取(框选)等,也可以由以上几种基本的方法演化而来。

Feedback

# re: 游戏中对象选取的方法

2007-07-08 11:48 by kai
hao!!!

# re: 游戏中对象选取的方法

2008-05-27 14:04 by 配线架
好东西,支持

# 金皇网络科技有限公司诚招代理

2008-09-12 14:06 by 金皇网络科技有限公司诚招代理
金皇网络科技有限公司诚招代理
金皇网络第一项目: 棋牌类休闲游戏正式寻求代理合作伙伴
本游戏有我公司技术人员自行开发,游戏规则与联众、中国游戏中心几乎一致,目前最新版为1.0,包括 斗地主,疯狂斗地主,斗地主两副牌,跑的快、510K、升级,五子棋、象棋、四国军棋、推倒胡等多个流行的网络棋牌类游戏
游戏以具备完善的运营模式包括网站与游戏架构
游戏具备金币运营(可做线上博彩类)+游戏秀+聊天+论坛+江湖。能直接上线运营。如果推广的好,游戏运营的百人在线能赢利2-3万
游戏功能完善
主要功能有:聊天.消费(用金币)化妆(类似于联众).脏话过滤.多旁观和不允许旁观.邀请.屏蔽.音效.提示出牌.超时自动出牌.虚拟银行钱庄.金币消费.在线会员卡充值.游戏比赛.自适应屏幕大小设置.会员与普通用户的区别.会员的特权(如踢人.化妆.优先进入房间等).用金币负分清零和逃跑率.更改用户详细资料和密码等功能.
具有完善的管理工作界面和完善的在线后台管理和完善的安全措施、自动识别用户作弊行为的功能.各种可改变参数尽可能多设置.以实用和方便管理.主要功能有:信息统计:全面及时信息统计(包括用户信息统计.游戏排行榜.游戏比赛成绩统计.各种游戏当月积分累计的统计等必要的各类信息统计)并能自动生成网页公布.
房间设置:包括房间命名.每个游戏最多可开放几个房间,每个房间最多可支持几个人。限制用户进入特定的房间.
游戏管理:是否允许同IP用户坐同桌,少于多少分值将不能玩游戏,赢,输一局得分和扣分多少,逃跑扣除多少分值(也包括金币)游戏规则设置.增加游戏和删除游戏等
用户管理:用户信息管理(包括账户).可封IP或解封IP.积分充值的后台管理.注册用户数据库后台管理管理员有踢人.警告.处罚的管理功能.
在线广告发布:在相应位置发布在线广告.在聊天显示处随时可发布网站公告.
游戏比赛:在报名室里.系统不仅能自动接受用户报名,而且还能自动扣除报名用户的报名费(金币).还能弹出各类相应的对话框.在服务器端报名费和比赛项目要能简单修改,因为随时要更换.
网站包括游戏下载.类似于联众秀的金币商城.游戏帮助.在线充值.服务中心(包括虚拟银行和用户注册.修改信息)等.
游戏近期开放测试。
欢迎有意向有慧眼的商人合作代理 前来联系 大家共同努力开发大好天地
联系人:张女士 
QQ: 254598003
TEL: 0371-68619903
     13838078476
官方网站;http://www.jhxyt.com
Email:JHWLKJ2008611@126.com

# 棋牌类网络游戏源码出售

2008-09-12 14:06 by 棋牌类网络游戏源码出售
棋牌类网络游戏源码出售
一、游戏种类: 棋牌游戏
全套源码包括:1.升级 2.斗地主 3.两副牌斗地主 4.疯狂斗地主 5.五十K 6.诈金花 7.梭哈 8. 围棋 9.象棋 10.五子棋 11.四国军棋 12.麻将 13.连连看 14.摇摇乐 15 跑得快 16 竞赛斗地主 共计16款。 

二、源码价格: 请登陆我们网站查询。

三、交易方法: 

1)确定购买后,我们首先会发送给您一份测试文件。 

2)您可以通过网上银行远程支付、支付宝等形式支付。

3)您将得到的:十四款游戏完整源代码+一份数据库备份文件(SQL数据库)

4)您还可直接来我们公司总部进行面对面交易

四、购买联系: 

QQ: 137666755 
TEL:0371-61626625
     0371-68619903
Email:systerm32@gmail.com
http://www.gamemaker.net.cn
五、其他:该源码有说明文档,注解详细,另:我们提供一定的技术支持,适合参考或二次开发,我们暂不提供后续开发。 
六、诚招运营代理商
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]