- 浏览: 1087914 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
http://bbs.9ria.com/viewthread.php?tid=73161&extra=page%3D1%26amp;orderby%3Ddateline%26amp;filter%3D86400
以下是我在做MMORPG初期的时候,进行的一些算法性能测试,今天在整理东西的时候不小心看到了,所以把他给分享给大家,RPG游戏中经常用的深度排序方法,我将大家常用的方法做了很小的修改进行性能测试,
结果如下:
性能从高到低:doSort4,doSort1,doSort3,doSort2,doSrot5
doSort1:先数组的sortOn排序,再用setChildIndex设置层.
doSort2:先数组的sortOn排序,再用swapChildren设置层,不设置没有变化的层.
doSort3:先数组的sortOn排序,再用swapChildrenAt设置层,不设置没有变化的层.
doSort4:先数组的sortOn排序,再用setChildIndex设置层,不设置没有变化的层.
doSort5:这里我是采用分冶策略和快速排序的思想是一样的,我原以为这种方法会很快,结果不是这样的,这里不是因为分冶策略的方法慢,是因为每次划分的时候都会带来错误的层设置,所以导致最终的速度变慢,大家可以将doSort4结合4叉树进行深度排序
doSort5,是不是对数组进行快速排序,到最后再来一次setChildIndex要快一点呢。
在getPartition中每次都swapChildrenAt,不太好吧。
另外递归的掉用,应该也会影响点效率的吧
还是不如
这样效率高
以下是我在做MMORPG初期的时候,进行的一些算法性能测试,今天在整理东西的时候不小心看到了,所以把他给分享给大家,RPG游戏中经常用的深度排序方法,我将大家常用的方法做了很小的修改进行性能测试,
结果如下:
性能从高到低:doSort4,doSort1,doSort3,doSort2,doSrot5
doSort1:先数组的sortOn排序,再用setChildIndex设置层.
doSort2:先数组的sortOn排序,再用swapChildren设置层,不设置没有变化的层.
doSort3:先数组的sortOn排序,再用swapChildrenAt设置层,不设置没有变化的层.
doSort4:先数组的sortOn排序,再用setChildIndex设置层,不设置没有变化的层.
doSort5:这里我是采用分冶策略和快速排序的思想是一样的,我原以为这种方法会很快,结果不是这样的,这里不是因为分冶策略的方法慢,是因为每次划分的时候都会带来错误的层设置,所以导致最终的速度变慢,大家可以将doSort4结合4叉树进行深度排序
private function doSort1(maxNum:int):void { var sortedLayers:Array = arrayResult; sortedLayers.sortOn("y",Array.NUMERIC) var item:Sprite=null; var child:Sprite=null; for (var i:uint=0; i<maxNum; i++) { setNum++; setChildIndex(sortedLayers[i], i);// 最耗cpu } } private function doSort2(maxNum:int):void { var sortedLayers:Array = arrayResult; sortedLayers.sortOn("y",Array.NUMERIC) var item:Sprite=null; var child:Sprite=null; for (var i:uint=0; i<maxNum; i++) { item = sortedLayers[i]; child = getChildAt(i) as Sprite; if (child != item) { setNum++ swapChildren(child, item); } } } private function doSort3(maxNum:int):void { var sortedLayers:Array = arrayResult; sortedLayers.sortOn("y",Array.NUMERIC) var item:Sprite=null; var child:Sprite=null; for (var i:uint=0; i<maxNum; i++) { item = sortedLayers[i]; child = getChildAt(i) as Sprite; if (child != item) { setNum++ swapChildrenAt(i, getChildIndex(item)); } } } private function doSort4(maxNum:int):void { var sortedLayers:Array=arrayResult; sortedLayers.sortOn("y",Array.NUMERIC) var item:Sprite=null; var child:Sprite=null; while (maxNum--) { item = sortedLayers[maxNum]; child = getChildAt(maxNum) as Sprite; if (child != item) { setNum++ setChildIndex(sortedLayers[maxNum], maxNum); } } } //公冶策略 public function doSort5(array:DisplayObjectContainer):void{ var size:uint=array.numChildren; sort(0,size-1); function sort(left:int,right:int):void{ if(left>=right) return; var mid:int=getPartition(left,right,array.getChildAt(right)); sort(left,mid-1); sort(mid+1,right); } function getPartition(left:int,right:int,mid:DisplayObject):int{ var lp:int=left-1; var rp:int=right; while(true){ while(mid.y>array.getChildAt(++lp).y){} while(rp>0 && array.getChildAt(--rp).y>mid.y){} if(lp>=rp){ break; else{ array.swapChildrenAt(lp,rp) } } array.swapChildrenAt(right,lp) return lp; } }
doSort5,是不是对数组进行快速排序,到最后再来一次setChildIndex要快一点呢。
在getPartition中每次都swapChildrenAt,不太好吧。
另外递归的掉用,应该也会影响点效率的吧
还是不如
var sortedLayers:Array= _list; var maxNum:int = sortedLayers.length; var t:int = getTimer(); sortedLayers.sortOn("y",Array.NUMERIC); var item:Sprite=null; var child:Sprite=null; var numChilds:int = sp.numChildren; while (maxNum--) { item = sortedLayers[maxNum]; sp.addChildAt(item, maxNum); }
这样效率高
发表评论
-
HttpStatusConfig --一个HTTP 协议返回的 解析说明类
2012-04-18 16:40 0package guwanyuan.qicool.game ... -
水果忍者鼠标跟随特效制作[转载]
2012-03-01 16:06 2456实现这效果其实比较简单,主要是思路~! package ... -
江湖情缘游戏里的跳的类
2012-02-08 23:55 0package com.app.role.montions ... -
ColorMatrixFilter - 获得相应颜色的色调 函数
2012-02-08 23:03 0/**获得相应颜色的色调的滤镜**/ public sta ... -
ARPG游戏引擎设计思路
2011-12-31 00:48 00.整体结构 下载 (32.92 KB ... -
五子棋算法详解
2011-10-31 04:14 0五子棋算法详解五子棋算法详解五子棋算法详解 -
[原创]围绕任意一个中心点旋转
2011-10-23 13:46 0package guwanyuan.qicool.game.c ... -
珍宝探索 AS3-过关类小游戏
2011-10-13 02:15 0珍宝探索 AS3-过关类小游戏 -
(RepeaterOverTimeLine能将一个for循环执行的工作类似异步地平摊到多个帧上)RepeaterOverTimeLine
2011-09-30 02:26 0(RepeaterOverTimeLine能将一个for循环执 ... -
box2dttest(台球demo,使用了box2d)
2011-09-21 01:49 0box2dttest(台球demo,使用了box2d) -
贪吃蛇游戏
2011-09-16 02:40 0package com { /** ... -
打豆豆
2011-09-08 00:34 0打豆豆打豆豆 -
经典代码-空战.zip (513.2 KB)
2011-09-02 02:24 0经典代码-空战.zip (513.2 KB) -
基于TextField的图文混编的组件
2011-09-01 23:04 0基于TextField的图文混编的组件 -
泡泡龙
2011-08-29 22:36 0泡泡龙泡泡龙泡泡龙 -
井字棋算法
2011-08-18 15:04 0井字棋算法井字棋算法 -
_超级玛丽游戏_flash_game_demo
2011-08-18 00:01 0_超级玛丽游戏_flash_game_demo.zip -
吴万江-TD_demo
2011-08-15 15:35 0吴万江-TD_demo -
S_eVent系列教程
2011-08-13 05:01 0S_eVent系列教程S_eVent系列教程 -
[转][翻译]LoaderMax使用指导(一)
2011-08-10 19:51 1904http://hi.baidu.com/mr_ziqiang/ ...
相关推荐
本论文旨在对RPG游戏的设计与实现进行分析,着重于RPG游戏的制作流程、游戏软件RPG Maker XP的使用以及游戏测试的重要性。论文首先对RPG游戏进行概述,介绍RPG游戏的制作意义、游戏类型的前景等。然后,对RPG Maker ...
RPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-...
DirectX是微软开发的一套用于Windows操作系统的应用程序接口(API),它主要被游戏开发者用来创建高性能的图形和音频应用,特别是在电子游戏开发中扮演着重要角色。本篇将深入探讨如何利用DirectX来编写角色扮演游戏...
在这个"Unity游戏项目源码 unity3D RPG游戏开发包 完整版.zip"压缩包中,你将获得一个完整的角色扮演游戏(RPG)项目的源代码,这为你提供了深入理解Unity3D游戏开发的宝贵资源。 首先,源码是学习编程和游戏开发的...
RPG游戏设计与实现毕业设计.doc
Unity 3D是一款强大的跨平台游戏开发引擎,广泛应用于创建各种类型的游戏,包括单机、多人在线(MMO)和角色扮演游戏(RPG)。"Ultimate MMO RPG Kit" 是一个专为开发在线MMO RPG游戏设计的工具包,它包含了各种预设...
基于C++开发UE4魔兽RPG风格的RTS游戏模板源码.zip基于C++开发UE4魔兽RPG风格的RTS游戏模板源码.zip基于C++开发UE4魔兽RPG风格的RTS游戏模板源码.zip基于C++开发UE4魔兽RPG风格的RTS游戏模板源码.zip基于C++开发UE4...
c#游戏开发基于unity3d的回合制RPG游戏源码.zipc#游戏开发基于unity3d的回合制RPG游戏源码.zipc#游戏开发基于unity3d的回合制RPG游戏源码.zipc#游戏开发基于unity3d的回合制RPG游戏源码.zipc#游戏开发基于unity3d的...
7. **资源管理**:在大型RPG游戏中,有效地管理大量的图形、音频和数据资源对性能至关重要。这涉及内存管理、资源加载和卸载策略,以及优化技术。 8. **场景管理**:游戏世界的组织和导航通常需要一个场景图或层次...
这个项目的代码可以直接在Android Studio中导入并进行二次开发,为有志于学习或改进RPG游戏的开发者提供了宝贵的资源。 一、项目结构与导入 "RPG_Game"项目包含了一系列的源码文件,这些文件按照Android Studio的...
经典RPG爱情游戏附Delphi源代码..rar
《梦幻西游》是一款基于Java ME(J2ME)平台开发的角色扮演游戏(RPG),其源码的公开为开发者提供了一次深入理解移动设备上2D游戏开发的宝贵机会。以下将详细介绍J2ME和RPG游戏开发的相关知识点: 1. **Java ME ...
unity 3D多人在线RPG网络游戏源码.rarunity 3D多人在线RPG网络游戏源码.rarunity 3D多人在线RPG网络游戏源码.rarunity 3D多人在线RPG网络游戏源码.rarunity 3D多人在线RPG网络游戏源码.rarunity 3D多人在线RPG网络...
在《魔盒兄弟》这样的RPG游戏中,物理系统可能用于环境交互或战斗中的碰撞检测。 10. **脚本编程**:Unity主要使用C#进行脚本编写,源码中会有大量C#脚本,包括面向对象的设计模式、组件通信、委托和事件等高级特性...
《RPG游戏系统软件需求说明书》是一份详细阐述RPG(角色扮演游戏)系统软件开发需求的重要文档,旨在为计算机科学与技术领域的专业人士提供清晰、全面的项目指导。这份报告由计08-1班的LXZ-学号的学生编写,并在2020...
RPG编程同C语言编程的比较 RPG编程语言是IBM System i平台上的高级语言,具有强大的编程能力和高效的执行速度。与C语言相比,RPG语言有其独特的语法和特点,本文将对RPG语言和C语言进行比较,讨论它们的异同。 ...
D游戏算法——RPG游戏初步.ppt
基于unity3d的回合制RPG游戏源码+项目说明.zip # RoundRpg 一款基于Unity3d,使用Tolua的回合制完整RPG Demo | 游戏 | 截图 | 截图 | 截图 | 截图 |截图 | | - | - | --- | --- | - |- | |![](nor.png)|![](enc.png)...
在玩RPG游戏时,有时会遇到乱码问题,这可能是由于游戏的编码与系统环境不兼容导致的。本文将详细介绍如何解决RPG游戏乱码的问题,让你顺利体验游戏的乐趣。 首先,我们要明白乱码产生的原因。大多数RPG游戏,尤其...
10. **性能优化**:RPG游戏往往对性能要求较高,开发者需要关注GPU和CPU的使用情况,进行优化,如多线程、批处理渲染、LOD(细节层次)和视锥体剔除等。 以上只是DirectX编写RPG游戏的部分核心知识点,实际开发过程...