45度地图编辑器及游戏开发心得三

好下边偶说说45度编辑器的一些心得:

1.为什么要开发一个编辑器?

很多开发者都没有先考虑为什么我要开发一个地图编辑器,往往都是因为大家都有,所以就去开发。很多游戏都有自己的专属编辑器,就像魔兽的那个让人仰 望的编辑器,里边包含了诸如地图编辑器,事件编辑器,战役编辑器,AI编辑器,环境编辑器等等诸多编辑器,可以说,一个好的编辑器是一个成功的游戏必不可 少的组成。我们开发一个编辑器是为了方便我们往后的开发工作,而不是只为了别人都有而开发。当你明确了你的游戏需求后,然后需要针对性的构架你的编辑工 具。
编辑器的功能要根据我们要开发的游戏的需求来决定其功能。还有的就是我们要注意在编写这样的一个工具时要把算法及相关逻辑整理分层好。因为编 辑器毕竟是编辑器,我们到了实际游戏场景中还是得再次把原先的逻辑重新实现的,所以编辑器的结构及代码的分离效果很大层度上影响到你往后的开发。

2.一些主要用到的算法。

先说说45度视角下比较难写好的深度消隐算法。相信很多开发者都疼为此头疼,不知道如何入手,。网上有很多类似的深度算法,但很多效果都不如人意, 特别是用y轴判断的那种,事实上这种算法不准确是因为他忽略了一些物品不等长的情况,当然如果你的游戏里的场景物品都是等大的战棋类游戏,这种算法足以你 使用了,但事实上一般的45度游戏或者社区都是很多不等大物品组成的。一些案例,想this6,他们所采取的方法是预先在fla里手动排序好物品的深度, 然后再场景中通过交换深度的方法来实现井深的效果,这种方法不不好之处在于,一些动态场景因为没有预先编辑好一个准确的深度,那样交换深度的小过将是很差 的,从this6前期的自定义用户场景我们也可以看出这方面的效果,这也是他们现在采用缩小场景避免排序不准确带来的不好体验的一个必然选择。还有就像摩 尔,摩尔前期也是典型的只根据y轴排序的一个案例,效果相当不好,但后期做了优化。

要井深准确,无法就两个方向走。要们将所有物品统一大小,然后用y轴排序,要么就是写出一套使用性广泛的深度算法。

这里我推荐的方法也是现在很多大型2.5d游戏使用的方法。2分法。2分在在于其能准确的将一个空间的物品的井深层次很好的划分出来,我们只要通过 一个物品为参照物先划分出前后两个空间然后递归刚才的方法即可,下边是本人之前写的消隐算法就是以2分法为基础写的一套45度视角下的消隐算法,http://wxsr.blogbus.com/logs/32001884.html
我 们在说说A星算法,其实作为游戏a星算法是不一定要用到的,我们要根据游戏的实际需求来开发我们的游戏才是明智之举很多情况下我们可以选择性的将寻路部分 放到小地图上而不是大地图上,那样有利于我们整个游戏的效率及执行,我们可以采用两点间直线移动,移动到不可走地方就停止移动的方法来取代a星。这样做效 果也是不错的。而且效率也高。可以把节省下来的消耗应用到别的地方去。再说回a星,as3效率的提高,现在写a星算法只要不是很冗余效率基本上都到 60-90毫秒左右就可以完成了a星算法无非就是计算最优值寻找出一条能通道目的地的树状结构,然后通过倒退法,得到一条最优的路径。优化的方法很多想我 之前说的2分法就是一种,我们也可以用4叉树,2查树等方法优化效率,无论是4叉树还是2叉树,目的都是在缩小路径的范围,当然前提我们都需要预先建树, 注意的是,我们在场景深度算法放也可以用到4叉树,2查树这是我的改良版a星算法:
http://wxsr.blogbus.com/logs/32550422.html,这个算法没有哟娜跟传统的2维数组作为存储容器,而用哈希表,这样做的好处在于查询跟修改的速度要比2维数组的快而且方便。

最后说说资源管理跟事件管理。只所以要这个主要是因为flash的内存管理问题,太分散的管理方式无疑对我们管理内存几会有相当大的麻烦统一的内存 管理有利于解决因为资源加载带来的诸多麻烦,还有就是事件的统一注册管理有人可能认为这样做很麻烦没必要,但我想说的是,在flash中往往因为我们很容 易忽略的问题导致了我们的内存不能回收,当中最为显著的就是对象的时间引用上。很多人抱怨as的弱引用,事实上只要你看过帮助文档就不不能看出其实弱引用 是没问题的,因为你的对象没有注销,所以事件必然还在引用状态。加载的资源应为都是一次性的所以基本都是很容易删除的。但一些类的实例因为引用的多指向导 致了内存不能回收,这正是我说统一管理事件注册的用意,因为那样我们才可以更好的完全删除之前所注册的所有事件的。一般我们御载一个场景我建议都注销下原 先的所有幀听,那样才能保证事件不在被引用,从而保证内存可以顺利回收。

再补充一点就是,资源及源码的加密。
现在一般的做法都是混淆编辑好的swf的2进制源码,然后在场景中再还原。
这里提供下我的处理方法:
http://wxsr.blogbus.com/logs/32850824.html

经典论坛交流
http://bbs.blueidea.com/thread-2931698-1-1.html



发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(Spamcheck Enabled)