依星源码资源网,依星资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

【好消息,好消息,好消息】VIP会员可以发表文章赚积分啦 !
查看: 4|回复: 0

[游戏架设教程] [传奇技术]探讨【IGE】的源代码【一】

[复制链接] 主动推送

1万

主题

1万

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12521
发表于 3 小时前 | 显示全部楼层 |阅读模式
[传奇技术]探讨【IGE】的源代码【一】
这段时间看了不少的传奇的源代码。
  感觉一个字,烂,不是一般的烂。
  我相信大家都知道。
  同时大家肯定明白,如果重新优化和架构,效率肯定要比原来的代码要高很多很多倍。

  首先说一个地方,virtual和dynamic,虚方法和动态方法。显然代码里面大部分都是采用动态方法,这个要命啊,慢啊。
  关于虚方法和动态方法的最大区别是,虚方法速度快,比动态方法快多少倍未知。缺点是费空间。动态方法费时间省空间。
  一般我们是不经常调用而且速度不是居于首位的时候,我们采用动态方法。相反经常调用频繁,而且速度居于首位的,我们采用虚方法。
  这些是毫不迟疑的。
  但是那些(大家明白的源代码)为什么采用动态方法呢,告诉大家,这个是个时代的问题。
  不要以为源代码必须要这样才行,想象一下,当时这个游戏开发的时代是那个时代,那个时代的内存和CPU是特点怎么样的。
  128MB内存估计还是挺高端的吧,现在是否明白了?
  有现成成型程序的,可以把动态修改成虚方法看看,客户端占用内存的情况。
  游戏程序需要的是速度,目前玩家的电脑一两GB的内存已经很普遍了吧?
  咋样,只修改一些地方,游戏效率肯定提高上去。
  但是这些还未够。
  然后我们先看MShare.pas这个单元,吗啊,大量的全局变量。
  看看图片库的全局变量,看出啥问题没有。
  问题是在:很多不需要实例化的变量都已经被实例化了。
  为什么说是不需要的实例化的对象呢,因为我们知道,进入游戏的时候,玩家的职业仅有一种。
  实际上,那些其它职业的相关图片库对象完全可以不用实例化。这样完全可以节省非常多的系统开销。
  但是对于现在的这些源代码来说,你必须全部实例化他们,否则运行肯定有问题,因为结构本来就是个大问题。
  先看角色这个基类,这个能够叫做基类,告诉你,这个啥都不是,我叫做废物类。
  NPC类型,怪物类型,各个职业的类型的东西都挤在这个所谓的基类里面,这个叫做啥类合适?
  牵一发而动全身,哪怕你修改或者增加一点东西,很难想象会不会影响其它的运行。
  尤其是很长很长的各种检测判断代码,天知道,系统执行一条函数,需要怎么样的开销。
  这样的代码你还敢往上面添加功能,真是神啊。这种精神很值得佩服,不是吗。
  为什么很多人的程序执行效率那么不如人意,因为这些结构本身就是错误的,你还能够咋样???

  看了这些代码,我完全看到了自己最初学习编程的时候那种写代码的风格,呵呵,没有法子,谁都是这样过来的。
  常规下,我们首先把一些雷同的东西的抽象出来作为基类进行集中处理,这样可以节省很多代码模块的开销。
  然后我们再在这个基类上面进行细分出各种不同的子类,只需要编写它独有的功能模块。
  这样的好处是,当玩家当前玩的是这个职业的角色的时候,我们只需要实例化该类角色的相关对象。
  逻辑层面,我们只需要处理此类角色的逻辑代码。
  如果我们要修改该类,只管调试该类相关的东西,不至于会影响到其它类型的东西。
  想象一下,这样合理的代码结构,会给你程序提高多大的性能。
  你不需要再调用检测模块去检测那些不相关的类型的代码,单是这个,程序的性能就提高很多很多了。
  并且无论是以后的维护和扩展,空间是完全足够的,而且花费的时间更少。代码结构更合理。  
  那些GM骂你的客户端卡B实际上是正确的,哇哈哈~~~

  想象一下,如果你选择是武士这个职业,而不需要系统去为其它职业分配资源,那些声音啦、图片库啦等等,是不是很开心的事情。

  说真的,最初看到这些代码的时候,一股无名火串上来,现在看的时候,仍然感觉很火。
  真他吗的,有这样编程的吗?
  不过这种垃圾代码并不垃圾哦,赚了多少钱了哦,靠。

  为了,能够使我的D2D引擎发挥出威力,我决定重新架构出新的类,一个适度的面向对象的类。
  为什么说是适度呢,因为我需要的是合理、更高效率、更稳定的、同时更利于维护的结构。

  目前有不少朋友都在改系统的绘图底层,有采用HGE的,有采用ASP的。
  那么采用那个好呢,其实这两个都不适合你,只适合你做参考。
  那么这两个那个好点呢,很多人以为是ASP,其实要理想的是HGE,这个比较底层一些,效率更高,相对的。因为绘图的渲染部分,你必须修改过。
  ASP封装得太深,用来做应用程序比较好,不适合做大型的网络游戏。
  为什么很多公司都采用C++来制作,因为更底层。HGE就是这样,所有处理都很直接。
  有足够的编程的能力的,最好参考HGE来做。





相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员6折;永久VIP4折
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

微信扫一扫,私享最新原创实用干货

QQ|免责声明|小黑屋|依星资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2025-1-24 16:23

Powered by Net188.com X3.4

邮箱:312337667@qq.com 客服QQ:312337667(工作时间:9:00~21:00)

快速回复 返回顶部 返回列表