游戏开发运用win10语音卡顿插件不会造成游戏卡顿

独立开发者:新手做2D手游该用哪些工具
招聘信息:
随着全球手游行业规模将突破250亿美元,越来越多的开发者开始进入手游研发领域,而作为一名菜鸟,很多时候,如果没有其他开发者的建议,我们会走很多弯路,最近独立工作室Sheado.net公司的Chad Ata在博客中分享了他们从一开始进入手游研发到如今四年多以来积累的经验,希望可以给新入行者提供一些帮助。以下是编译的博客内容:一开始进入游戏研发领域的时候,你很难知道该选择什么工具、什么程序语言以及哪些框架,你会面临许许多多的选择和建议,我和我的团队总能发现其他游戏公司的经验是有用的,所以这里提供一些我们的经验,希望给做手游的新手们一些帮助。初入手游行业虽然在其他行业有过10多年的编程和策划经验,但当我开始做手游研发的时候,依然觉得自己是一只菜鸟。我们的第一个游戏Furdiburb(宠物冒险游戏)最初是在2009年开始研发的,当时是专门为Android而做的。对于毫无游戏研发经验的我们来说,Java是唯一可用到编程语言。作为一个2D游戏,我们非常不明智的没有使用OpenGL就开始进行非硬件加速图形开发。随着Furdi受到了更多人的欢迎,我们的游戏项目也得到更多的注意,最终我们遇到了性能和移植问题。如果我们此前学习了其他开发者的经验,很多问题都是可以完全避免的。找到更好的方法在完成了的研发,并且使用缓慢的把游戏移植到了iOS平台之后,我们决定开始第二款游戏()的研发。我们当时希望摆脱Java语言,找到可以广泛使用的跨平台研发工具,最好是未来还可以支持主机游戏平台。随后我们开始了搜索,我用了将近一个月的时间对框架、工具以及引擎进行对比,最后,我和我的团队非常满意新的研发方式,直到现在也非常不错。这里我不会说为什么要选择这些,框架是经常变化的,一年前选择它的理由可能到现在就已经不再是考虑的主要因素了。所以,这篇文章的其余部分只会对我们选择某个工具的原因进行简单的描述。以下就是我们当初选择并对比了一个月之后的结果:编程我们所列举的都是在研发我们游戏的时候用到的,而且只是我们做游戏的方式而已,很多工具和框架的结合也是非常完美的,需要开发者们自行发现。框架我们选择的所有架构,要么是开源的,要么就是有开放的代码。这是非常好的,因为我们在必要的时候可以进行紧急修改和优化。:我们所有的跨平台研发都是使用开源Cocos2d-x框架完成,在Eras Of Alchemy的研发过程中,我们使用了版本2,我们的下一个游戏正在使用的是版本3,进行了大幅度的API以及性能提升。整体来说,Cocos2d-x的2D表现非常好,而且文件管理非常方便。:我们使用Spine做了动画,所以我们加入了C语言为基础的Cocos2d-x插件。:我们还没有发布一款使用该引擎的游戏,但我们的下一款游戏A Quiver Of Crows将会使用,我们目前研发就使用了这个工具。:Cocos2d-x本身也提供数据存储方案,但我们更喜欢使用SQLite,因为它的读写速度和表现更好。编程语言C++:Cocos2d-x支持多种语言编程,但我们选择了C++,因为我们觉得目前该语言是最合适做跨平台研发的。C:你经常会想要加入一些开源的API,其中有一些就是C语言编程的。Java:我们依然需要用到Java,但也只是在Android平台做游戏内IAP、广告以及特殊系统功能的时候。语言之间的切换可以通过JNI来完成。Objective-C:选择它的理由和Java一样,我们使用Objective-C是为了使用iOS系统的特定功能。Scripting:这包括程序化脚本和其他脚本语言,所有的开发者们都要时不时的写脚本,但我们却很少会谈论这个问题。这个问题是非常容易的,但如果你和我一样而且由于不常使用而不记得一些语法的话,这个工作有是非常耗时间的,我们要给维护代码、自动音频转换以及纹理打包写脚本。开发环境Xcode:所有人都告诉我们说Xcode非常好,所以我进行了尝试,而且我不得不说的是,这是目前我最喜欢的开发环境。这里我并不想说太多具体的原因,因为我不想引发集成开发环境(IDE)争论,我们使用Xcode做跨平台研发,也为苹果平台做专门的编程。Eclipse:对于IDE来说慢的可怕,但我看来却非常好用。我们用Eclipse做了所有的Java和Android研发,包括适配和修复bug。Android目前在推Android Studio而不是Eclipse,但我们没有那么多的时间,也没有什么特别的理由去转换到新的工具。Visual Studio:也是个非常优秀的IDE,我们用它来做左右和微软相关的编程、Bug修复以及适配。版本控制即便你的团队只有一个人,你也应该使用版本控制。所有人都会犯错,而且任何一次大改都可能导致游戏神秘的死亡。我们的团队只有3个人,因此从第一天做手游开始,版本控制就是非常必要的。目前有非常多的方案可以选择,但我们使用的有以下几个:SVN:我个人喜欢SVN,因为可以做到所有我需要的功能,比如合并、同步、恢复等等,但学习起来比较困难。Git:我们使用的很多开源框架都使用Git。我们使用Git就是为了保持与框架同步,当需要的时候可以进行快速修复。电脑很明显,你做游戏是需要使用电脑的。最初所有的研发都是在Linux机器上完成的。但我们开始了iOS平台的研发之后,用两三台电脑变得效率非常低,所以我们买了一些iMac,而且我们都非常喜欢用它来做游戏研发。幸运的是,OSX的很多指令与Linux相同,所以我们的很多脚本都没有做改变。图形工具Adobe CS:相信这个没有人觉得奇怪,我们的美术师最常使用的是Illustrator和Photoshop。Spine:非常推荐这个工具制作骨骼动画,和传统的帧到帧动画相比,骨骼动画可以节约硬盘空间,还可以节约大量的研发时间,提供强大的功能,比如动画混合、蒙皮技术以及网格变形。:你或许会想要把图片进行打包获得更大的图像以获得更好的游戏表现。我们选择Texture Packer来完成这项工作,而且我们还使用它的指令功能进行自动化打包处理。关卡编辑器我们使用的关卡编辑工具包括:没有编辑器:如果可以不用的话,我们绝不会使用编辑器。我们可以用代码解决,这听起来非常疯狂,而且有点浪费时间,但如果你的团队非常小的话,有时候为了节约时间可以不必为了一次性的任务专门用代码写一个编辑器。定制化编辑器:有时候我们写了一个非常不好用的游戏内编辑器来做图形或者关卡,我的意思是未经优化的,恐怕也只有我们会这么做。:对于我们的下一个游戏,我们在使用R.U.B.E(Really Useful Box2D Editor)之前,几乎自己研发了一个游戏内编辑器,这个非常强悍的工具节约了我们大量的时间,但如果我们决定要做关卡编辑器的话,我们必须自己研发。音乐和视频:我个人非常喜欢ffmpeg,这个工具非常好用,我们通常使用脚本用它把我们的视频变成各个平台需要的格式。:这是个非常强悍的音乐制作软件,一开始的学习会比较困难。:如果你想给自己的游戏加入管弦乐,Garritan可以带来非常高质量的音乐,我们通常和Sonar混合使用。:一个非常不错的视频编辑和录制工具。以下2个是我们已经不再使用的工具,但可能对于新手来说依然具有推荐意义::如果你熟悉乐器而且乐意学一些音乐知识,并且想要做MIDI格式的音乐,这是个非常不错的软件。:这是个非常不错而且简单的软件,可以制作非常不错的音乐,而且不需要你阅读很多的音乐知识。结论目前做游戏的工具非常多,以上的这些工具只是我们在做2D游戏的时候选择的工具,目前为止,我们对这些工具非常满意,我们最新的游戏发布到了iOS、Android和Windows Phone平台。我们还打算在下一款游戏发布的时候,用同样的工具把游戏扩展到PC、Mac以及Linux平台。(原文: 译者:Gamelook)
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量7582点击量7137点击量6173点击量5687点击量5429点击量4658点击量3809点击量3293点击量3266
&2016 Chukong Technologies,Inc.
京公网安备89再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
威锋网7月10日消锋网7月10日消息,《植物大战僵尸2》 如今...
威锋网7月10日消息,《植物大...
近日,开发商 Esquilax Games ..
说到方块游戏,相信有很多朋友应该还会记得 Gavina Games 早...
威锋网7月10日消息,《植物大...
近日,开发商 Esquilax Games ..
说到方块游戏,相信有很多朋友应该还会记得 Gavina Games 早...
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
威锋旗下产品
Hi~我是威威!
沪公网安备 29号 | 沪ICP备号-1
新三板上市公司威锋科技(836555)
增值电信业务经营许可证:
Powered by Discuz!《开心锤子》是一款以探索箱子护送角色到达目标点为核心的游戏,结合通过数字判断箱子中是否存在危机。加入探索、收集、竞技、玩家成长元素,并延伸出多种游戏模式。以休闲益智娱乐为轴心,卡通Q版风格为背景,集成角色扮演、数字逻辑、关卡设计、多种多样的玩法、宠物系统、成就系统,包裹系统评分系统等多种元素。在这里可以体味数字解密,随机事件发生的气氛,挑战才智,构建出让自己进入卡通世界里解密的一款休闲游戏。 iOS下载地址: /cn/app/kai-xin-chui-zi/id?l=en&mt=8 下载就送红包
另提供网络远程语音视屏的技术培训,包括: .net 、cocos2d、xna 、sqlsever、C++编程与技巧 、IOS游戏开发、ANDROID游戏开发相关的技术培训 300 元一个月,周一至周五 每天晚上8:30~9:30 详情请联系QQ: email: 架构师技术培训群:&
本系列文章用于总结对游戏开发的应用与理解,在总结的过程中会融入当信最流行的移动终端的开发
  (以下内容摘自己2012工作总结部分内容)
& & & 经过了一个比较失败的项目(捕鱼项目),成功了一个项目(跑灯,最少所有功能开发完成了,就差生产成产品经过市场的检验了)这两个项目对个人的成长还算是比较有帮助的。
  首先分析一下第一个项目为何会失败:第一,是个人的管理能力久缺的,一下子就要面对不同性格的人,再加上自己有一些个性,心中想的是。要是你几爷子不给力,我自己也不给力,到最后交不出工作。那黑锅就只能我去背了。那只好我自己多做点了,把你们做不好的事也给一起做了。
& & &第二,自己的定力不够,心中想着。只要是出自我之手。就一定是精品,所以,对所做的项目在开发阶段就去做了过多有优化,到最后只能完成一部分功能的开发,还有一块大头没有足够的人力物力去支撑开发。
  第三,没有合理的利用团队成员的潜力,过于仁慈,面对对项目不热心的同志,不能及时的纠正团队成员的扭曲心理,造成团队恶化下去,到最后能在项目中发挥作用的人力渐渐减少。
  第四,没有正确的评估成员的流失影响力以及成员的能力!没能把功能时间计划强制执行下去。都以为时间还多,已经很紧了!
  综上所述:项目的失败,绝对不是我技术的问题,而是我管理能力的问题。需要牢牢把握游戏的可控性,协调好成员间的工作,不能让人力资源浪费(这是很大的一个考验)
  还有一个成功的跑灯项目:这个项目的成功。有一大部分还得取决于老板的认可,才能把我的一些不算先进的思想融入进去。这个项目也算是对我这两年来的技术沉淀的一个总结,对这个些经验的东西没什么好分享的。都是仁者见仁。智者见智的东西。做过架构的人都知道~没有什么可比性,没有更好,只有更合适,只有经过对行业的深入理解后才有能做出更适合的架构来....就是对知识点的一个提炼。
  下面我会把一些游戏开发的一些经验,与在游戏开发中遇到的问题做一个总结,让游戏开发不再神秘。
    【引擎开发篇】
    5、引擎模块 &(三) &模块的实现
    5、引擎应用到项目中
    6、测试项目的同时改进引擎
    7、工具
    8、技术总结
    9、总结
    【cocos2d篇】
    【u3d开发篇】
    【服务器篇】
    【项目管理篇】
 项目a&分析
  &项目a&分析:在使用上比较直观,但是结构设计上不是很合理(比如引擎),容易造成了逻辑的混乱,新模块的添加比较吃力(或者对某些功能模块的不集中,很难比较方便的共享,管理模块,对共同表现的业务逻辑共用率不高),并且要示对通信的状态和数据处理约定还得比较熟悉的情况下才能更好的增加新功能。资源管理还有很大的提升空间。通信模块做得比较复杂,修改任何一个位置的数据都很容易造成游戏不能正常的调试下去,给调试带来了很大的难度。同时也影响开发速度。
&   项目b分析:模块设计思路比较清晰。对使用者的要求不会太高,过多的去关注细节,只要能用就行了。甚至不会xna的人也可以使用,方便的同时也在使用上带来了风险。让不熟悉结构的人容易对容器滥用。不熟悉的同学使用,会带来恶劣的结果,或者不理解设计者的思路的时候随意增加逻辑,随着逻辑的增加更难控制游戏的稳定。
另提供网络远程语音视屏的技术培训,包括: .net 、cocos2d、xna 、sqlsever、C++编程与技巧 、IOS游戏开发、ANDROID游戏开发相关的技术培训 300 元一个月,周一至周五 每天晚上8:30~9:30 详情请联系QQ: email: 架构师技术培训群:&
  解决方法:
  a)&模块划分,对不同的游戏进行相应的抽象
  b)&模块封装,方便装载器在不同的应用中装载不同的游戏
  c)&&框架和数据的完全分开(实施起来比较难,需要一群人的毅力才能完成,可以不考虑)
  实现目标: 
复杂的动画,能在flash中完的就是flash中完成
能用图完成的就用图完成
目前的动画处理不能满足有的游戏的需求。需要升级游戏库,在动画扩展管理 模块加载相应的模块设计就可以了,但是必须满足我们设计约定的接口
只要是在flash中能做出来的动画,在他们出了设计之后。相就的动画在半小时内就能准确无误加入到游戏中并运行起来,做到了可视化的编辑并能和我们的游戏兼容,
  &&风队评估
  时间上的风险:因为引入了一些新的概念,只能做到最低的降低风险,保证程序的稳定性,但不能排除一定能在非常短的时候能一下子稳定,和使用plantworld做新的游戏的风险是同等的。
& & &&冒险理由:模块相对比较独立。能很容易的移植到其它的地方,能很快的做到和美术工具(flash)的兼容默契,并形成一个比较直观的开发接口标准,并且培训简单,只要有编程基础的童鞋都能容易的上手,就是有一个flash的学习成本,不一定是人人都愿意。
  实施原则
严格的按照设计概要做,对于写核心部分的人员要求比较高。一定要细心,严格的验证第一个算法的正确性和可行性。把固定的模块固定死,不能随意的增加设计概要之外的东西。至少得在可行性分析之后才能加上扩展升级!要严格的控制美术使用动画工具的方式方法。
& & & 缺点
&周期长,要要求一些美术工具,对美术的设计方式有限制(美术不一定能适应过来),对团队成员有一定的冲击力。
  2、引擎模块划分
  游戏流程概述  
  在游戏启动时,先是进行开机加载,再到游戏待机状态,如果新一轮的游戏开始,就会收到新游戏开始的相关信息,进入倒计时,完成倒计时后。后等待硬件发送结果,如果在一定的时间内还没有收到硬件发送结果,就可以认为是硬件出现了故障,游戏就会DOWN机,并给出相应的错误提示。如果在规定的时间内收到相应的结果,就会跑结果,进到展示结果完成回到待机画面。在游戏的各个阶段都有可能会出现不能正常运行的状态,会用相应的提示来告诉用户,系统出来了什么样的故障。
  游戏流程图
核心算法库
通用函数更集中一些。在修改的时候不会到处理去找。避免一个函数在不同的地方多次出现。
IEncryption:加密解密接口。
DES :DES加密算法的实现,对接口的一个直接的实现
ILog:日志接口
textLog:记事本方式的日志
Serializtion:序列化相关
MilException:指定类型的异常封装
logHandler:异常处理委托
DispserHandler:资源释放委托
ICache:缓存抽象
Cache:缓存实现
LogPersitenceModel:日志持久化模式
SerializationModel:序列化模式
ISerialization:序列化接口抽象
BinarySerializable:二进制序列化
XmlSerializable: xml序列化
StringExtentions:字符处理扩展
LogFactory:日志构造工厂
logHandler:消息处理委托
FileHelper:文件处理扩展
Argument:参数检查器
Cacheelement:实际缓存的对象
IEnumberExtention:迭代器扩展
Check:检查器集合
Data:数据检查器
Assembly:程序集处理扩展
Excetesink:程序执行器
未完 待续 ....
本文为原创,博客园为唯一官方博客,转载请说明出处....
若有问题请发 邮箱
或者加qq:
另提供网络远程语音视屏的技术培训,包括: .net 、cocos2d、xna 、sqlsever、C++编程与技巧 、IOS游戏开发、ANDROID游戏开发相关的技术培训 300 元一个月,周一至周五 每天晚上8:30~9:30 详情请联系QQ: email: 架构师技术培训群:&
阅读(...) 评论()拒绝游戏卡顿低配电脑天刀OL优化大法 _多玩天涯明月刀OL专区
便捷小工具
>>>>>>拒绝游戏卡顿低配电脑天刀OL优化大法
拒绝游戏卡顿低配电脑天刀OL优化大法
14:19:14 条 来源:多玩天涯明月刀 作者:逍遥客栈 ]
  天涯明月刀盒子是由多玩开发的一款为玩家提供多种便利功能的插件,包括答题助手、创作提醒、显示功力多样功能【】
  方法三:禁用安全策略
  最简单的办法就是将天刀安装文件夹里的Cross文件夹改下名字,这样让Cross文件夹里拖电脑性能的游戏组件,如QT语音等,不能使用,从而达到优化客户端的目的。
  另一个可选的优化方法如下:
  1、键盘上同时按Win+R键打开运行,在搜索框内输入secpol.msc打开本地安全策略,依次打开&软件限制策略-其他规则&,右键点击右边空白处,选择&新建路径规则&;
  2、点击&浏览&,找到以下路径中的文件,&安全级别&设置为&不允许&,点击&确定&。
  H:\天涯明月刀\Cross\CrossProxy.exe
  H:\天涯明月刀\Cross\Apps\CQS\QTalk\Bin\miniQTalk.exe
  H:\天涯明月刀\Cross\Apps\CQS\QTalk\Bin\QT.exe
  H:\天涯明月刀\components\tclsqmfix\TclsQmFix.exe
  H:\天涯明月刀\TCLS\Tenio\TenioDL\TenioDL.dll
  H:\天涯明月刀\TCLS\Tenio\TenioDL\TenioDL.exe
  H:\天涯明月刀\TCLS\TenProtect\TenSafe_1.exe
  H:\天涯明月刀\tqm\TQMCenter.exe
  小编提醒:以上路径为小编电脑上天刀游戏的目录路径,&\天涯明月刀&前的路径由于不同玩家安装游戏位置不同也有变化;&Win+R&中的Win键就是电脑上左下角标记为微软窗口标识的那个键,一般键盘位置为左下角ctrl键的右边。
  查看游戏安装目录文件夹方法:右键点击桌面上天涯明月刀的快捷方式,选择&打开文件所在的位置&。
  通过以上设置后,所选择的文件将不会被运行。
  简单解释下以上文件是什么:
  1、Cross文件夹内包含的是QT语音、GAME游戏平台更新程序等;
  2、tqm文件夹里的TQMWatcher.exe是腾讯的监测软件,用来监测第三方软件的;
  3、components文件夹里包含的是电脑管家;
  4、TenProtect为TP软件。
  某些玩家担心禁用以上个别文件后存在安全问题,所以具体禁用哪些文件请玩家自行斟酌。
看完本文后有何评价?已有0人评价,点选表情后可看到其他玩家的表态。{"debug":false,"apiRoot":"","paySDK":"/api/js","wechatConfigAPI":"/api/wechat/jssdkconfig","name":"production","instance":"column","tokens":{"X-XSRF-TOKEN":null,"X-UDID":null,"Authorization":"oauth c3cef7c66aa9e6a1e3160e20"}}
{"database":{"Post":{"":{"contributes":[{"sourceColumn":{"lastUpdated":,"description":"","permission":"COLUMN_PUBLIC","memberId":235866,"contributePermission":"COLUMN_PUBLIC","translatedCommentPermission":"all","canManage":true,"intro":"","urlToken":"yangbo","id":5275,"imagePath":"ddc8bf3b390.jpg","slug":"yangbo","applyReason":"","name":"杨博的长长的答案","title":"杨博的长长的答案","url":"/yangbo","commentPermission":"COLUMN_ALL_CAN_COMMENT","canPost":true,"created":,"state":"COLUMN_NORMAL","followers":612,"avatar":{"id":"ddc8bf3b390","template":"/{id}_{size}.jpg"},"activateAuthorRequested":false,"following":false,"imageUrl":"/ddc8bf3b390_l.jpg","articlesCount":23},"state":"accepted","targetPost":{"titleImage":"","lastUpdated":,"imagePath":"","permission":"ARTICLE_PUBLIC","topics":[,,,769,9052],"summary":"历史方面: 《大话西游》用的脚本语言是微软的JScript(JavaScript的一种方言),维护不便bug多,受系统IE版本的影响兼容性差。所以2002年网易开发《大话西游II》时,决定在客户端内嵌别的脚本语言。当时该项目技术负责人云风认为要挑不出名的语言,让做外…","copyPermission":"ARTICLE_COPYABLE","translatedCommentPermission":"all","likes":0,"origAuthorId":235866,"publishedTime":"T19:46:15+08:00","sourceUrl":"","urlToken":,"id":238820,"withContent":false,"slug":,"bigTitleImage":false,"title":"Lua 为什么在游戏编程领域被广泛运用?","url":"/p/","commentPermission":"ARTICLE_ALL_CAN_COMMENT","snapshotUrl":"","created":,"comments":0,"columnId":5275,"content":"","parentId":0,"state":"ARTICLE_PUBLISHED","imageUrl":"","author":{"bio":"ThoughtWorks咨询师","isFollowing":false,"hash":"dba318cddc971b","uid":64,"isOrg":false,"slug":"atry","isFollowed":false,"description":"Github: /Atry\n博客: http://www.ac.net.\n邮箱: pop.","name":"杨博","profileUrl":"/people/atry","avatar":{"id":"ad5420492","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"memberId":235866,"excerptTitle":"","voteType":"ARTICLE_VOTE_CLEAR"},"id":280978}],"title":"Lua 为什么在游戏编程领域被广泛运用?","author":"atry","content":"历史方面:《大话西游》用的脚本语言是微软的JScript(JavaScript的一种方言),维护不便bug多,受系统IE版本的影响兼容性差。所以2002年网易开发《大话西游II》时,决定在客户端内嵌别的脚本语言。当时该项目技术负责人云风认为要挑不出名的语言,让做外挂的人搞不懂(《大话西游》一代被外挂《月光宝盒》搞死了),于是就选择了Lua 4.0。云风在九十年代就开发游戏引擎并建设个人网站(),在游戏开发领域声望高。网易《大话西游II》是首个在市场上取得成功的国产网络游戏。所以后来国内游戏开发行业纷纷受此影响采用Lua.技术方面:现在,2013年,Lua和其他流行脚本语言Python、JavaScript各分秋色:语言规范精简、运行时库小。其创始人称Lua是穿过针孔的语言(),他加入的任何语言特性都能用C API简单的调用。易于创建受限环境,C语言一端可以控制暴露给Lua脚本的任何功能。我猜这也是《魔兽世界》的插件语言选用Lua的原因。性能方面,虽然仍然比Python快,但不如V8(谷歌的JavaScript实现)。协程对于编写并行逻辑,非常有用。而Python、JavaScript都不支持协程,只有StacklessPython、call/cc等方言支持类似功能。Lua的元表很有用。不过我听说Python也支持类似的功能。JavaScript的原型链则只是元表功能的十分之一左右吧。Lua支持弱引用。对于上层逻辑用处不大。但对于底层引擎管理资源,超级有用。JavaScript不支持弱引用;Python支持。Lua有个非官方实现,Luajit,性能不错。但是回到2002年,Lua和JScript相比,优势很大。与C/C++交互方便。Lua的C API简洁正交,而JScript的COM接口臃肿繁杂。高性能。Lua虚拟机实现简单高效,比起JScript,又快又省内存。开源。云风为了防外挂,后来修改了《大话西游II》的Lua字节码格式,让官方的Lua虚拟机无法兼容《大话西游II》的Lua字节码。如果采用不开源的JScript,就不可能自己修改虚拟机和编译器了。不过很遗憾,《大话西游II》的Lua 4.0并不支持协程。------------------------------------------------------------------------最后我想说,开发游戏并不一定要脚本语言。C/C++这类低级语言写逻辑太不方便,脚本语言能弥补这个缺陷。但如果你的项目主要语言不是C/C++,而是D、Java、Scala、Haskell、Go、C#、F#等性能接近C/C++的高级语言,那么你就不需要额外的脚本语言。王垠写过,和我的看法基本相同。当然还有Haxe这种既可以编译成脚本语言,也可以编译成C++的古怪语言来捣蛋。","updated":"T11:46:15.000Z","canComment":false,"commentPermission":"anyone","commentCount":1,"collapsedCount":0,"likeCount":3,"state":"published","isLiked":false,"slug":"","isTitleImageFullScreen":false,"rating":"none","titleImage":"","links":{"comments":"/api/posts//comments"},"reviewers":[],"topics":[{"url":"/topic/","id":"","name":"Lua"},{"url":"/topic/","id":"","name":"游戏开发"},{"url":"/topic/","id":"","name":"大话西游(系列电影)"},{"url":"/topic/","id":"","name":"梦幻西游"},{"url":"/topic/","id":"","name":"魔兽世界"},{"url":"/topic/","id":"","name":"协程"},{"url":"/topic/","id":"","name":"JavaScript"},{"url":"/topic/","id":"","name":"脚本语言"}],"adminClosedComment":false,"titleImageSize":{"width":0,"height":0},"href":"/api/posts/","excerptTitle":"","column":{"slug":"yangbo","name":"杨博的长长的答案"},"tipjarState":"inactivated","annotationAction":[],"sourceUrl":"","pageCommentsCount":1,"hasPublishingDraft":false,"snapshotUrl":"","publishedTime":"T19:46:15+08:00","url":"/p/","lastestLikers":[{"bio":"假装世界还没有被颠倒","isFollowing":false,"hash":"b9e545da578b74e9aef9f","uid":36,"isOrg":false,"slug":"bugissomewhere","isFollowed":false,"description":"Hello, world","name":"小小的寂寞","profileUrl":"/people/bugissomewhere","avatar":{"id":"v2-c5b9353059cbfeb781edde3","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"","isFollowing":false,"hash":"41f4eee3ef6e7a41012fdf73d02aef66","uid":60,"isOrg":false,"slug":"c924e5","isFollowed":false,"description":"","name":"c924e5","profileUrl":"/people/c924e5","avatar":{"id":"v2-b4a55644d53bfb5c91455","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"learn think make","isFollowing":false,"hash":"7fceeedf4b661","uid":88,"isOrg":false,"slug":"yang-dan-39-25","isFollowed":false,"description":"","name":"洋蛋","profileUrl":"/people/yang-dan-39-25","avatar":{"id":"11bed6caaef","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false}],"summary":"历史方面: 《大话西游》用的脚本语言是微软的JScript(JavaScript的一种方言),维护不便bug多,受系统IE版本的影响兼容性差。所以2002年网易开发《大话西游II》时,决定在客户端内嵌别的脚本语言。当时该项目技术负责人云风认为要挑不出名的语言,让做外…","reviewingCommentsCount":0,"meta":{"previous":null,"next":{"isTitleImageFullScreen":false,"rating":"none","titleImage":"","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"内存管理"},{"url":"/topic/","id":"","name":"内存泄露"},{"url":"/topic/","id":"","name":"内存优化"},{"url":"/topic/","id":"","name":"内存 (RAM)"},{"url":"/topic/","id":"","name":"操作系统"},{"url":"/topic/","id":"","name":"C++"},{"url":"/topic/","id":"","name":"C(编程语言)"},{"url":"/topic/","id":"","name":"垃圾收集"}],"adminClosedComment":false,"href":"/api/posts/","excerptTitle":"","author":{"bio":"ThoughtWorks咨询师","isFollowing":false,"hash":"dba318cddc971b","uid":64,"isOrg":false,"slug":"atry","isFollowed":false,"description":"Github: /Atry\n博客: http://www.ac.net.\n邮箱: pop.","name":"杨博","profileUrl":"/people/atry","avatar":{"id":"ad5420492","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"column":{"slug":"yangbo","name":"杨博的长长的答案"},"content":"对应用程序来说,内存碎片与操作系统无关,因为操作系统提供的内存分配函数(如HeapAlloc)只能用来分配大块内存。小块内存只能靠用户级的内存分配器(如malloc)。而内存碎片的罪魁祸首就是小块内存的频繁分配。对付内存碎片有三种办法:1. 不要动态分配内存,尽量使用栈。2. 根据使用场景定制内存分配策略。比如如果你发现你常常分配同一种大小的数据结构,那么就一次分配一个数组从里面挨个取,用完了扔回旁视列表里以备重用。再如你发现内存分配具有周期性,那么你可以周期性的分配大块内存,用完了释放整块内存。3. 不手动管理内存,改用具有分代内存管理、增量垃圾收集和内存整理功能的垃圾收集器。比如你要是用了Java,那么你就再也不用操心内存碎片了(代价是你的程序占用的内存会比用C语言时翻几倍)。","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T19:50:22+08:00","url":"/p/","title":"内存碎片的一些必备知识","summary":"对应用程序来说,内存碎片与操作系统无关,因为操作系统提供的内存分配函数(如HeapAlloc)只能用来分配大块内存。小块内存只能靠用户级的内存分配器(如malloc)。而内存碎片的罪魁祸首就是小块内存的频繁分配。 对付内存碎片有三种办法: 1. 不要动态分配…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":2,"likesCount":3}},"annotationDetail":null,"commentsCount":1,"likesCount":3,"FULLINFO":true}},"User":{"atry":{"isFollowed":false,"name":"杨博","headline":"Github: /Atry\n博客: http://www.ac.net.\n邮箱: pop.","avatarUrl":"/ad5420492_s.jpg","isFollowing":false,"type":"people","slug":"atry","bio":"ThoughtWorks咨询师","hash":"dba318cddc971b","uid":64,"isOrg":false,"description":"Github: /Atry\n博客: http://www.ac.net.\n邮箱: pop.","profileUrl":"/people/atry","avatar":{"id":"ad5420492","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false,"badge":{"identity":null,"bestAnswerer":null}}},"Comment":{},"favlists":{}},"me":{},"global":{},"columns":{"next":{},"yangbo":{"following":false,"canManage":false,"href":"/api/columns/yangbo","name":"杨博的长长的答案","creator":{"slug":"atry"},"url":"/yangbo","slug":"yangbo","avatar":{"id":"ddc8bf3b390","template":"/{id}_{size}.jpg"}}},"columnPosts":{},"columnSettings":{"colomnAuthor":[],"uploadAvatarDetails":"","contributeRequests":[],"contributeRequestsTotalCount":0,"inviteAuthor":""},"postComments":{},"postReviewComments":{"comments":[],"newComments":[],"hasMore":true},"favlistsByUser":{},"favlistRelations":{},"promotions":{},"switches":{"couldAddVideo":false},"draft":{"titleImage":"","titleImageSize":{},"isTitleImageFullScreen":false,"canTitleImageFullScreen":false,"title":"","titleImageUploading":false,"error":"","content":"","draftLoading":false,"globalLoading":false,"pendingVideo":{"resource":null,"error":null}},"drafts":{"draftsList":[],"next":{}},"config":{"userNotBindPhoneTipString":{}},"recommendPosts":{"articleRecommendations":[],"columnRecommendations":[]},"env":{"isAppView":false,"appViewConfig":{"content_padding_top":128,"content_padding_bottom":56,"content_padding_left":16,"content_padding_right":16,"title_font_size":22,"body_font_size":16,"is_dark_theme":false,"can_auto_load_image":true,"app_info":"OS=iOS"},"isApp":false},"sys":{}}

我要回帖

更多关于 电脑微信语音卡顿 的文章

 

随机推荐