代码升级确实很麻烦,不是一般的麻烦。

因为需要整理出一套配合我自己写的D3D绘图引擎,所以我选择了以前的IGE作为项目的开端。原因很简单。因为现在的那些源代码是无法完成这个工作的。

而且如果有了一套完善的基础版本,那么以后无论想改成啥都容易得多。

说说绘图引擎,目前HGE算是主流吧,其实这是大家没有法子的选择。经过各位的总结,目前的HGE算是比较完善的。不过啊,我还是那句话,HGE原本就是给小型游戏搞的绘图引擎,不管你怎么改,底层写法如果没有改变,那么你就无法在大型的游戏里面得到理想的结果。

那些代码,一张图片锁一次缓存区,一帧画面,到底要锁多少次?

另外为什么一帧绘图得翻转n次?

看不明白,这是一种什么样子的绘图思路,确实令人费解!

如果是三维游戏,那么这个游戏会死得很惨!

也有人采用ASP绘图引擎来做,结果很明显,达不到要求。这个玩意就不提了,从底层开始,人家的四边形面片,原本是用来做GUI的,你拿来做游戏主绘图,可以啊,不过底层结构你得改啊,不容易的,一大堆源代码,彼此嵌套,不说改了,理清楚逻辑就不是人做的事情。

另外我想不明白的,一个主类的函数,是虚方法,这个没有冲突,问题是,这个方法得子类来写具体的实现,这个也没有问题,问题是,这个函数有点奇怪了,你在写主类的时候,怎么知道要传入那些参数,另外你怎么肯定这个方法转了几百次之后,它是不需要改变的。这些奇葩的玩意,在ASP的代码架构里面到处都是。

我只知道,哪怕是一条函数,都是经过多次检测之后才肯定没有问题的。也就是说,外国佬在测试完子类实现代码之后再复写主类。我的天,真是有必要吗?

ASP不是一个难字可以形容,绕,非常非常绕,满满都是坑。

绘图引擎最关键的不是逻辑代码,而是直绘机制,干脆利落,为什么,因为这样做,效率高,而且没有隐患。

什么隐患?就是不知道在什么时候给你弄出麻烦,而且你还无法知道原因所在。

有人说,这些根本不具备什么技术含量!

有,但是你不知道!

你试试游戏帧速率在只有8,9帧的情况下,一下子把帧速率全面提升到几乎与显示器刷新率持平这种程度。

另外关于写字,其实我不太明白,为什么还有那么多人纠结这个问题。

当然了,游戏写字,很多人依然采用老套的画BMP图片,然后阿尔法处理像素,之后再转纹理,确实辛苦啊!还有干脆弄成资源文件读取方式,满满都是泪。

其实拖慢帧速率的罪魁祸首就是像素拷贝,得至少拷贝两次啊,一张图片,你不慢,谁慢?

没有什么好说,直接采用D3D9原本的函数,一次性写出来,想写啥就写啥,想采用什么字体就采用什么字体,人家三维游戏都没有纠结这个问题,你二维游戏纠结个啥。

然后就是批量绘图,客户端里面,画地图三层结构,可以完全打开批量机制,等于是锁缓存区只要用到几次左右就合适,当然把握好的话,三层地图只锁定一次就行。

由于写字跟绘制图片不同机制,所以不能够全面采用批量机制,但是至少解决了三层地图绘制效率的问题,当然后期可以继续优化,把握好的话,在大型PK的情况做一些优化处理,效率应该更好。

至于GUI不必多提,这个玩意想咋弄都成。反正图片是死的,一次性画好,后面不必再创建纹理,没有必要。除非纹理掉失了,再重新创建就是了。最最不重要的部分就是这里了。

当然了,一旦GUI控件达到千个以上,那么你需要考虑的就是,这套代码应该怎么优化了。这个时候就不要提升级的事情了。

经过了几个月的奋战,整套代码已经升级到delphi 10.1版本下

其实这个过程一点都轻松,可以说满满的一掬心酸泪。

有的朋友问,为什么要升级啊,是啊,为什么要升级呢??

是的,为什么要升级,哈哈哈哈哈哈哈,为什么要升级??哈哈。

都是程序员,这个笑话就不多提了,谁不比谁聪明多少!

---------------------------------------------------------------------------------------------------------------

我的劝告,如果可以,最好跟几个朋友一起干,一个人得累死,就像我这样的!

真是很累,你得面对无数次程序崩溃,电脑系统蓝屏等等

最要命的都是字符串,以前那种直接发送字符串方式已经不行了,不管你填充入内存或者直接发送,都不行,你得面对各种各样的乱码,然后程序崩溃!由于数据类型相当复杂,而且让人无奈,你想想人物数据结构有多么复杂吧。

里面成员变量嵌套各种数据结构,字符串类型的,布尔类型的,啥都有,确实吓死人,不说传输了,就算是保存,你都不敢完全肯定不会出错。

花在网络通讯方面的时间是最多的,因为得不到正确的结果,所以一次次改变代码函数,一次次测试,最终才解决掉。

真是悲催,以前的都是采用直接发送字符串的方式,确实很写意轻松,现在新编译器下,说真的,我感觉对字符串处理还不是很理想。当前程序下,各种字符串填充内存块,拷贝是没有任何问题的,但是不能动,哪怕一点点,就像M2跟网关通讯那样,后面拼接了内存,最后的结果,出现大量的乱码和掉包。

其实这些都是以前不严格的做法造成的。

说真的,那些代码很难保证程序的稳定性,尤其是一些设置参数,几乎是心血来潮就各种写,各种作,这里一套,那里一套,还有一个全局的的,自己也来一套,之后,到底谁改变了谁,天知道。这样玩意能稳定,去,算了吧。

整套程序要稳定,第一就是,设置参数必须统一。这没有什么好说。

暂时这样吧。

转载于:https://www.cnblogs.com/GameDelphi/p/7761494.html

关于引擎代码从Delphi 2007 升级至Delphi 10.1的一些历程相关推荐

  1. 选择 Delphi 2007 ( CodeGear Delphi 2007 for Win32 Version 11.0.2837.9583 ) 的理由

    选择 Delphi 2007 ( CodeGear Delphi 2007 for Win32 Version 11.0.2837.9583 ) 的理由 我不喜欢用InstallRite的全自动安装包 ...

  2. Delphi 2007 代码补全、语句提示的快捷键是什么?

    为了帮助网友解决"Delphi 2007 代码补全.语句提"相关的问题,中国学网通过互联网对"Delphi 2007 代码补全.语句提"相关的解决方案进行了整理 ...

  3. Delphi 2007体验!

    Delphi 2007体验! baidu 内容摘要:CodeGear(From Borland) 公司公布了最新的Delphi 2007 For Win32版本号.作为一个 Delphi 的使用者,第 ...

  4. Delphi 2007 体验

    Delphi 2007 体验 作者:netrobo CodeGear(From Borland) 公司发布了最新的Delphi 2007 For Win32版本.作为一个 Delphi 的使用者,第一 ...

  5. DELPHI - Delphi 2007 已内部支持 GIF 动画了

    DELPHI - Delphi 2007 已内部支持 GIF 动画了 以前要在 Delphi 中显示 GIF 动画,一种办法是使用第三方组件,别一种方法就是使用 WebBrowser 组件.在 Del ...

  6. CodeGear RadStudio Delphi 2007 Delphi2009 最新破解补丁集

    CodeGear RadStudio Delphi 2007 Delphi2009 最新破解补丁集

  7. CodeGear开发者日投影片和Delphi 2007 For Win32范例录像

    CodeGear开发者日投影片和Delphi 2007 For Win32范例录像 我提供了CodeGear开发者日PowerPoint投影片以及两个Delphi 2007 For Win32范例录像 ...

  8. Unigui is compiled with:CodeGear™ Delphi® 2007 for Win32® R2 Version 11.0.2902.10471

    Unigui is compiled with: CodeGear™ Delphi® 2007 for Win32® R2 Version 11.0.2902.10471 转载于:https://ww ...

  9. delphi 2007 安装提示Invalid Serial Number 超强解决办法

     delphi 2007 安装提示Invalid Serial Number 超强解决办法 安装前提是你已经下载了Delphi 2007 for Win32的ISO. Delphi 2007根据不 ...

  10. Delphi 2007 “配置系统未能初始化” 错误处理

    Delphi 2007 无法进入 Tools –> Options 选项界面,报: --------- Error --------- [color=red]配置系统未能初始化.[/color] ...

最新文章

  1. pd 生成mysql 脚本_PowerDesigner 如何生成数据库更新脚本
  2. mysql 一主一备_Mysql一个主一备
  3. PHP代码20个实用技巧(转)
  4. linux16.04下安装Clion2019.2记录以及C++代码运行
  5. 风控人必知必会的征信知识
  6. BZOJ 3685 普通van Emde Boas树 权值线段树(zkw)
  7. 「leetcode」654.最大二叉树(详解)
  8. 懒人分析jQuery源码
  9. WPS2012专业版序列号
  10. 【教程】CoreAVC+Haali安装及设置简易教程(KMPlayer)(4)
  11. 数字证书、CA、CA证书,傻傻分不清楚?这一篇看懂
  12. 北京程序员平均工资达2万!你拖后腿了吗?
  13. 根据题目完成以下50道SQL语句
  14. 利用开源工具搭一套汉英翻译系统(二):词对齐
  15. [原创]windows server 2012 AD架构 试验 系列 – 17管理用户AD帐号
  16. 基于jQuery发射弹幕的一个小案例
  17. mpu6050六轴传感器msp430驱动程序
  18. 20220610开发出jpgtotxt和jpgtopdf以及pdftojpg工具
  19. 评估回归模型的指标:MSE、RMSE、MAE、R2、偏差和方差
  20. BAT卖不动「医疗云」:医院逃离、山头林立、行有行规

热门文章

  1. 柱状图多维条形图vue_使用D3.js+Vue实现一个简单的柱形图
  2. python编辑快速上手_Python编程如何快速上手,答案在这里
  3. java栈链_Java实现链栈
  4. python编程题字符串的美化_Python编程题15--RGB字符串排序
  5. 导航栏html_html操作和思考(二):统一导航栏文字高度的方法
  6. 如何用maven创建java项目_Maven创建Java项目
  7. mongodb php存储日志,laravel 框架使用mongodb 保存日志
  8. OSI与TCP/IP各层的结构与功能及协议
  9. Java中VO/DTO/DO/PO/POJO/BO/DAO概念及其区别
  10. 一个元素调用css3动画 fixed元素会微抖动