自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

转载 分享一个Delphi制作的文档编辑器源代码(仿Word)

功能挺多的,就是很多地方都没有完善。不过简单使用,是没有问题的。我也忘记是在哪个网站下载的,可能是Git国外的网站。仿Word文档编辑器,不过其实没有必要的,因为用户会直接使用微软或者其他软件来制作自己的文档。但是却具有参考价值,虽然代码需要优化的地方还有很多。比如那些添加控件这些可以去除,把代码结构处理得紧凑一些,而且增加更多可以自定义的地方就更理想了。其...

2018-12-09 17:36:00 723

转载 关于IOCP完成端口这个PostQueuedCompletionStatus函数运用问题

PostQueuedCompletionStatus( HANDLE CompletionPort, DWORD dwNumberOfBytesTransferred, ULONG_PTR dwCompletionKey, LPOVERLAPPED lpOverlapped ) 关于这个函数,网上几乎都是......经常用于退出时发送一个模拟的IO...

2018-06-15 15:53:00 505

转载 Delphi IOCP UDP完成端口服务端——网络高速传输数据文件系统架构

嗯,是的,标题有些那个,不过浏览器搜索出来的几乎全部是C++的,Delphi这块完全是空缺的。 不知道各位Delphi的爱好者们有没有关注腾讯这段时间的各种信息推广。涉及到各方面的行业。 不过我最佩服的是他们的实时各种网络行为,不得不说,他们的服务器确实牛逼,各种实时网络视频各种交互都是相当流畅的。 除了TCPIOCP完成端口成型之外,在这个基础上,继续调试...

2018-06-10 01:20:00 358

转载 Delphi IOCP完成端口服务端开发的一些记录

这段时间,腾讯课堂各种教程各种作,看看真是热闹啊,就是没有Delphi的课程。 啊,你说有,屁的有,大牛一个都不见,真是冷清啊。 C++那个啥,叫逼得多厉害,高并发服务端大型项目等你来啊。 啥,你不打算参加大型项目的开发??不打算赚大钱? 其实真是的,我在想啊,真有大型项目,轮得到咱们去做?去,真有那么多大型项目,他们这些人用得着...

2018-06-02 18:02:00 262

转载 关于自制的思维导图的一些想法

先看图再啰嗦:花了不少时间去弄。 很久以来就想弄一个能够快速实现自己想法的逻辑分析系统结构软件。相信很多人都在不得已的情况下,采用什么Excel 、Word,或者其他类型的思维导图之类的玩意。其实这些玩意功能是足够强悍的,但是我就一感觉:麻烦,而且压根达不到我想要的速度和方便。想了很久了,都因为太忙没有法子弄。这段时间项目多,没有法子,必须得弄一个结构逻辑分...

2018-05-19 13:30:00 109

转载 指针传递的一些必要的记录,避免以后又忘记了。

两条函数:procedure GetTexture(PTex: PTTexture);procedure GetTexture(var PTex: PTTexture);上面这两条函数有区别吗?有,而且不注意,问题大发了。一般来说,由于是指针,我们很少加特别的指示符。但是在使用中,会一不留神就会留下隐患。因为不好查。function XXXX.GetToI...

2018-03-18 12:37:00 99

转载 游戏系统线程和线程池的重要性

我们知道毫无节制地申请内存和释放内存,必定会导致系统内存碎片剧烈地增加,最直接导致的后果是系统内存资源枯竭,游戏状态越来越慢,各种反应不及时,各种未知错误层出不穷! 直到现在,我发现游戏变慢,很多人都归结为客户端的问题,其实啊,更多的问题出在服务端上面。当然还有一部分原因在于逻辑的不合理。客户端和服务端是通过消息机制进行通讯的。说白了,就是通过各种命令运行游戏的。...

2017-12-05 07:35:00 137

转载 游戏系统的稳定性能

这段时间都是在重构系统数据模块。懂的朋友自然知道,什么才是系统最至关重要的部分!不懂的朋友只会关心程序的功能有多么的牛逼!去,这都是垃圾,不提! 数据结构就是一个一个系统模块,如果整个系统都是由各个模块链接构成,那么这就形成一个更加稳定的大型游戏系统。 如果某一个环节出了问题,就直接查该环节,而不影响其它模块。效率自然会高。 那么扩展性,应该是所有人...

2017-11-30 23:45:00 137

转载 全局变量的带来的焦头烂额

大量大量的全局变量,大量大量的各种麻烦............................ 很奇怪为什么没有人感到这些麻烦,当然了,Delphi 2007不会让人感觉到这些麻烦,甚至完全可以写出各种奇葩的代码,而不担心编译器报错,当然了,各种潜伏的麻烦还是会大量大量的存在。 真的,有一些还是系统级别的,就是说,你很难处理的那种! 所以说,从Delphi ...

2017-11-07 01:41:00 83

转载 目前HGE客户端里面的绘图机制

算是整明白HGE底层绘图机制,里面包含了两种后备缓存的方式,一种是常规的那种后备缓冲,另一种,里面采用了渲染到目标的方式。 渲染到目标纹理,除了创建一张大的纹理之外,另外还需要搭配一个缓存区。这是流程中的设置,没有什么好说的。 实际上,这样一来可以把纹理按照默认方式,创建到显示内存里面,没有这种设置,速度肯定上不去。另外一个好处是。可以创建一些比原窗口...

2017-11-05 00:36:00 282

转载 关于引擎代码从Delphi 2007 升级至Delphi 10.1的一些历程

代码升级确实很麻烦,不是一般的麻烦。 因为需要整理出一套配合我自己写的D3D绘图引擎,所以我选择了以前的IGE作为项目的开端。原因很简单。因为现在的那些源代码是无法完成这个工作的。 而且如果有了一套完善的基础版本,那么以后无论想改成啥都容易得多。 说说绘图引擎,目前HGE算是主流吧,其实这是大家没有法子的选择。经过各位的总结...

2017-10-31 14:49:00 251

转载 匆匆几年过去,想写点什么呢?

在这里给一些朋友致歉: 因为各种原因,很久没有关注博客了,所以大家给我发的信息都没有及时回复,真是不好意思! 经历了各种蹉跎,想不到今天终于回归。 能够说的东西不多,废话一大堆,就当是废话吧。 这几年来,相信市场的变化还是比较大的,至少目前来说,各种引擎层出不穷,也参差不齐。 我看了几份开源的代码,说真的,都...

2017-10-31 13:14:00 101

转载 高级性能服务器编程模型【IOCP完成端口】开发实现【三】

  一开始学习完成端口编程的时候,我看的资料是小猪的关于完成端口的教程和源代码。  好在,我还有那么一点点C++的底子,不是很好,勉强看得懂吧。  其实看得懂不是IOCP完成端口的具体原理,而是这些C++代码结构逻辑而已。  很惨,对吧。  后来我采用Delphi的代码结构来做,说真的,当时一样是一塌糊涂,哈哈。  很多人说,IOCP完成端口被神化了,其实这个很正常啊...

2012-08-30 00:10:00 153

转载 高级性能服务器编程模型【IOCP完成端口】开发实现【二】

  因为需要参考各种资料,所以还是需要一些时间才能够做好的。  而且在开发中,还会面对一些不得不仔细去解决的问题。  我打算尽量从Win32API的基础上面进行开发,能够不使用Delphi封装的类就不用,任何类都是无法避免多余的开销,而我们往往只使用一两个功能就付出那么大的代价,是否值得????  当然,别谈跨平台了,在中国,还是老老实实在Window...

2012-08-27 16:51:00 122

转载 高级性能服务器编程模型【IOCP完成端口】开发实现【一】

  本来打算先完成一些汇编上的事情,再等以后时间充足的时候,再搞的。  但是我看着那些源代码,心理确实不是滋味。  因为不管你是现在做或者以后做,都必须面对这些要命的问题。  我不知道大家看着下面这个结构,心理是什么感想,我只知道要改的话,比去完成一个IOCP完成端口控件所需要的时间还要多得多。  1 TGateInfo = record 2 So...

2012-08-26 22:17:00 107

转载 探讨【IGE】的源代码【六】,承接【五】,内存池管理。

  上篇,我们提到了内存创建和释放带给长时间运行的服务器性能的损害问题。  当然还可能增加了CPU的相当的开销。  那么如何解决这个问题呢。  在这里只做一些讨论,具体实现,是你自己的事情。  到目前为止,我们能够做的都是管理一个内存池。  一开始,我们先分配好一批内存,把这批内存标注为空闲。  在客户端连接入来的时候,从空闲链表里面取第一个结构指针,填充内存。...

2012-08-25 15:19:00 85

转载 探讨【IGE】的源代码【五】。

  这样做,有没有问题????   TGateInfo = record Socket: TCustomWinSocket; sIPaddr: string; sReceiveMsg: string; UserList: TList; dwKeepAliveTick: LongWord; end; pTG...

2012-08-24 22:07:00 171

转载 Delphi更高效率的编程方式的思考【二】

  谈论了很多关于目前环境的话题,现在是否可以开始讨论主要的题目了?  好吧,是需要理清楚思路的。  在开发里面,我常常在想,如何提高编程的速度和编程的质量。  我考虑了面向对象的模式,但是我发现,它并不能够解决任何问题,相反会带来很多问题。  于是我把编程开发提升到设计开发上面,效率会如何呢,我们来看下。  姑且不讨论这种模式的各方面问题。  因为有美术设...

2012-08-23 21:19:00 79

转载 Delphi更高效率的编程方式的思考【一】

  我想还是有必要花点时间来整理一下思路的,就是说有必要写一些什么吧。  博客园有一点不好的地方是:没有自己的客户端,我不喜欢安装那些乱七八糟的程序。  虽然博客园提供了一个居于微软的软件,但是我不喜欢使用它,其实我不明白的是为什么博客园还要采用第三方的软件?  博客园应该有自己的客户端!理由有很多。  虽然我们大家都喜欢鼠标一点击,立即进入到属于自己的领地里面,而不是通...

2012-08-23 21:12:00 60

转载 探讨【IGE】的源代码【四】。

  是不是一定需要安装DB2000这个数据库??  最初我也不太肯定,因为我还没有看源代码。  现在看了,完全可以不必安装和配置这个玩意了,没有必要。  看下面就应该知道没有这个必要—— 1 //加载物品数据 2 function TFrmDBSrv.LoadItemsDB(): Integer; 3 var 4 i, Idx: Integer; ...

2012-08-14 22:33:00 135

转载 探讨【IGE】的源代码【三】。

  看了源代码,相信大家都知道IGE的源代码出自飞尔早期泄露的源代码。  说真的,这些混乱和不合理以及低水准的编程水平和方式不是韩国程序员的错。跟他们没有关系。  服务端的程序尽可能减少不必要的开销,哪有什么东西都挤到一起的??  就拿服务器启动器来说,配置项目以及开区清理这些,不应该放在主窗体上面进行处理。  看到无尽长的代码挤在一份主执行文件里面,你的感受会如何...

2012-08-13 08:13:00 137

转载 Delphi结构类型包含String字符串使用需要注意的地方

  有些人提倡当在结构里面包含字符串类型的时候最好采用定长的方式。  比如像下面这样:  TCSInfo = record  Cs_Str :String;      Count  :Integer;  CS_Str2 :String;  end;  如果Cs_Str在这里不采用定长的方式,那么当采用SizeOf()获取结构的大小的时候,可能得不到正确的...

2012-08-12 17:09:00 123

转载 关于Delphi赋值的问题

  平时我不太在意使用 := 来进行赋值。  有次,在做一个程序测试的时候,请一个朋友提供帮助,他告诉我,程序最大的问题是出现在:  采用 := 方式来进行赋值。最后的结论是我的基础不行。  呵呵~我一向很谦虚。  后来我不断地看代码,一行行地看,希望找出这些采用:= 有啥问题。  因为我很明白,也许我把某个内存地址弄错了,但是绝不会是我的基础不行。  因为...

2012-08-11 17:35:00 209

转载 探讨【IGE】的源代码【二】。

  首先开始服务端的源代码重新架构。  为什么选择IGE源代码是有原因的,或者我认为他的源代码结构不是很混乱吧。  毕竟不是全部照抄,只需要了解它的执行逻辑结构,然后重新按照自己的想法来实现。  这个很重要,只要看下去就会明白。    服务器有几个需要注意的地方:  第一、内存碎片,这个需要注意,否则服务器会在长时间运行后,性能会越来越差。    1、内存碎片...

2012-08-11 16:38:00 106

转载 探讨【IGE】的源代码【一】。

  这段时间看了不少的传奇的源代码。  感觉一个字,烂,不是一般的烂。  我相信大家都知道。  同时大家肯定明白,如果重新优化和架构,效率肯定要比原来的代码要高很多很多倍。  首先说一个地方,virtual和dynamic,虚方法和动态方法。显然代码里面大部分都是采用动态方法,这个要命啊,慢啊。  关于虚方法和动态方法的最大区别是,虚方法速度快,比动态方法快多少...

2012-08-04 18:30:00 146

转载 新游戏——你的持久时间是??

  现在很多新游戏层出不穷,尤其是国内开发的。  OK,对于国内的新游戏,你的持久度是几分钟?  好吧,我最多坚持5分钟左右。  其实一开始我就想卸载游戏了。或者看了游戏视频我就不打算去下载这样的游戏。  为什么呢,你还认为这些雷同的方式还值得你继续探索下去??  是的,看看啥叫——【探索】。  这些还大把大把地扔钱的人是否会考虑这两个字?  此一时彼一时,现...

2012-07-24 13:56:00 64

转载 专属自己的二维游戏引擎【九】

  突然发现有个东西一直没有注意,挺搞笑的。  居然发现还没有自己的声音模块,哈哈~  OK,我们看看有什么是我们可以使用的:  FMOD、Bass、SquallSound——好像这些都可以使用吧。  当然Bass听说是收费,FMOD如果开发为商业使用也需要交纳100美元左右吧。  当然钱不算多,只是有个最主要的问题是,跨国交费对于我们这些没有任何经验的人来说,简直就...

2012-07-24 13:25:00 154

转载 专属自己的二维游戏引擎【八】

  经过一段时间的奋战,终于成功架构出一款针对二维游戏开发的D3D绘图引擎。  并且集成为一组控件安装到IDE上面,方便调用。  制作开发二维游戏可以完全告别DDRAW7和D3D8.0的时代。  其实还是要感谢HGE的作者,虽然我的代码结构只使用了很少HGE方面的东西,但是HGE不失作为一种很好的学习和参考资料。  其实早在采用Delphi开发之前,我就已经使用C++做过...

2012-07-21 19:05:00 160

转载 专属自己的二维游戏引擎【七】

  也许我们应该开始分析一些代码结构问题了,而不是老是啰嗦无用的废话了。  先分析一下,在D3D里面我们应该如何地完美地裁剪纹理呢。  在GDI里面,我们可以采用矩形复制的方式从一张图片里面截取一部分需要的图片,这里需要有两个画布对象。  但是就像我以前说过的,既然已经采用D3DAPI来制作引擎,就应该尽量采用原生的D3D方式来解决问题。  我们先分析HGE的代码,它的代...

2012-07-15 15:13:00 116

转载 专属自己的二维游戏引擎【六】

  GUI部分已经完成了几个控件。  GUI控件在设计期完全可视化设计,同时添加了一个属性用于在设计期就可以控制该控件显示和隐藏,避免窗体上面太多的控件影响设计。  听朋友说,设计期可视化会把界面图片信息保存到窗体Dfm里面,会被反编译看到这些信息。  后来考虑了一下,调整了一下代码结构。  在设计期的界面信息调用的是随便定义的图片文件包路径,比如D、E、...

2012-07-13 14:44:00 60

转载 专属自己的二维游戏引擎【五】

  这一节到了GUI部分。  采用继承Delphi控件祖类的方式来创建GUI控件相对来说还是比较便利的。  现在因为是直接在默认的From上面绘图,所以也可以调用IDE里面的控件。  但是我们需要绘制的是PS好的图片作为GUI的外观,显然就需要自定义自己的控件类型。  说到这方面,大家都清楚,字体绘制永远是一种难言的伤痛。  中文毕竟不是英文,直到目前,很难找到...

2012-07-04 19:26:00 107

转载 龙潭史记【一】

  龙——天龙、司雨。  宅于天下之深潭之中,而天下最深之潭处莫过于四海。  曾几何时,古之中华已将龙作为民族的图腾,龙之子便是如此来的。  何时,魔扰大地,随之天下大乱,人魔不分,随处可见骨骸、战争。  此时、要生存、唯战之。  此时、要开创、唯战之。  史记、再不仅仅是记载某个王朝的历史。它是——  每一个龙之子的去寻找答案的历程、同时也是修炼道路的...

2012-07-02 21:13:00 68

转载 专属自己的二维游戏引擎【四】

  引擎应该包含这样的模块结构:  底层的绘图模块,关于这个,我是这样理解的:  合理的做法应该是:绘图模块只需要负责把表现的图元和纹理绘制出来就好。而不需要关心逻辑方面的处理。  比如:什么时候画,画那部分,画在那里等等,这里应该留给应用层来管理。  就是说,应用层什么时候给绘图底层填充数据,传入什么坐标参数,纹理宽高参数等,这个时候渲染就按照给定的定时器的速率一直在渲...

2012-07-02 14:27:00 106

转载 专属自己的二维游戏引擎【三】

  引擎跑起来很关键,初步架构成功!    目前还是采用非可视化控件设计,这样方便调整测试代码。有个打算弄成像Delphi_X那样可以在Form上面拉出一个可视化的窗体。  这样其实就可以替代IDE带的那个Image控件,完全可以应用D3D9的硬件加速来制作应用了。只是这样应用于游戏的话,效率未知。  接下来需要处理  Alpha混合测试,这个很重要,游戏特效等离不开;...

2012-06-29 18:13:00 89

转载 专属自己的二维游戏引擎【二】

  我给客户制作美术素材从来没有崩溃过,最近给一个客户制作二维游戏素材的时候就直接崩溃了。  次时代模型的流程虽然麻烦,但是我还没有见过比它更麻烦千倍的东西,这次算是见识了。  韩国的泡菜确实比较不太好吃。你懂的,哈哈~~拜拜。  我喜欢Delphi编程,很多人认为它很容易学,事实上,真正要精通它,不会比学习C++要轻松几何。  很多说Delphi不好的人,因为这些...

2012-06-28 15:10:00 190

转载 专属自己的二维游戏引擎【一】

【个人想法:20120628】    显然大家都有自己的梦想,我的梦想就简单了,做专属自己的游戏。  于是问题来了,我们需要一个游戏引擎。一个自己熟悉运行原理和过程的程序模块。  也许很多人都会问,现在啥时代了,还二维游戏。是的,现在正是二维游戏成熟期。  我不喜欢现在网上的任何三维网络游戏,因为那些东西根本就不成熟。  也许你要问,现在难道不是三维游戏的成...

2012-06-28 13:58:00 131

转载 For循环和递归的一些区别。

这段时间做了一个游戏资源文件管理器。发现了一些值得留意的地方。  一般我们在使用FOR循环的时候比较随意,在知道数据的多少的前提下,我们习惯使用FOR循环进行数据的操作。但是如果操作数据量大的情况下就出现问题了。  如果对超过千张或者几百张MB级的大图片进行实时生成缩略图并且复制入流文件里面,那么就会出现索引越界的报错提示。  后来采用了递归调用,程序正确生成。显然在处...

2012-04-26 17:14:00 513

转载 HGE核心绘图解决方案

  在【【HGE】绘图底层】这个帖子里面有些地方需要更正。  为了不误导别人,这里有必要补充一下:  HGE每次绘图都需要锁定一次缓冲区,只适合绘制大量相同的图片,如果是各种不同的图片,问题就出来了。如果绘制一百张图片就需要锁定和解锁各一百次。了解D3DAPI编程的人明白这是个什么问题。所以现有的HGE绘图算法是完全不适合大型游戏的。  有些人看到HGE自带例子中绘制2000...

2012-03-19 21:07:00 373

转载 优化HGE绘图算法成功了

  HGE的核心绘图算法真是问题多多  大家有没有发现HGE绘图的时候是很有问题的。  每画一张图片,就需要从系统内存复制一次数据,最关键的不是数据复制的问题,而是每一次都需要LOCK锁定一次顶点缓冲区进行数据更新。锁定的时候不使用任何标记,那么就强制GPU和CPU同步,带来的是渲染延迟问题。  最要命的是每一帧都进行从系统内存——显卡内存的操作,如果是网络游戏,每一帧都画上千张以上...

2012-03-13 22:02:00 277

转载 HGE——重新编写HGESprite接口和字体接口

  重新编写了HGESprite部分,不再使用HGESprite单元。  另外编写了一个HGECanvas单元,当然不是那个火人论坛上面的那个HGE加强版的那个。  参考ID3DSprite接口的做法,使用一个接口对象,就可以批量绘制所有的图元。  不需要创建多个接口对象。同时添加了纹理列表来管理显卡内存里面的纹理指针。  完全按照网络游戏的做法,加载完成硬盘自定义格式资...

2012-03-07 00:01:00 177

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除