17 梁跃

尚未进行身份认证

游戏开发,游戏引擎,图形学算法

等级
TA的排名 5w+

移动时代的抉择

翻看自己的博客,都还是4,5年前写的东西了。而近几年随着移动互联网的兴起,整个行业也发生了翻天覆地的变化。具体到我们游戏开发人员,更具体来说引擎开发人员来说更是天壤之别。我个人算是一个有过多年(7,8年了吧)经验的引擎开发人员了,一直做引擎开发相关的工作,甚至独立开发了一整套引擎和所有工具。之所以说是”抉择“,这个问题只是针对我这种情况而言,毕竟积累了那么多年的东西,而且有些地方还存在

2015-01-31 20:38:55

到新单位这段时间简单总结一下

<br />到新的公司已经有一段时间了。以前主要是写程序比较多,而新的工作管理方面比较多,程序写得少了。<br />总的来说写程序还是比较有经验的,管理方面经验不足,这段时间也犯了不少错误。<br /> <br />先说说目前的问题吧。<br /> <br />从事情的角度说,由于公司历史相对比较长,积累下来了大量代码,而且依然沿用。这些代码,模块随着人员变动,也变得很难完全接手,尤其是服务器相关的部分,很多项目正在用。从好的方面说既然已经用了这么多年,大的问题应该说没有什么了,从坏的地方说剩下的问题也都是

2011-04-24 14:00:00

关于渲染系统,场景管理器,资源管理器设计的一些想法

<br />废话不多说.<br /> <br />先从显卡渲染都需要哪些东西说起。<br />显卡要完成渲染本质上就是要回答两个问题,即画什么和如何画。<br /> <br />对于画什么这个问题,是由场景管理器来决定,这也是场景管理最本质的工作。<br />场景管理器最重要的工作就是根据当前相机位置及朝向,使用各种算法(BSP,四叉树,八叉树或者其他)来快速筛选出场景可渲染的几何体,这就是画什么。<br /> <br />对于如何画这个问题,是由材质来解决,在材质中保存了渲染管线参数,Shader等信息,

2011-03-26 01:44:00

游戏中的光影效果

<br />好久没有更新过博克了,春节的最后一天更新一下,写一下关于游戏中关于光影效果的方法,以及我的实现.<br /> <br />去年有个机会和call duty3的程序总监聊天(此人是一个华人,当时已经回国在腾讯做互动娱乐部门副总,想找我过去),他提到次时代游戏和前一代游戏的最大区别之一就是游戏的光影效果,可见游戏中光影效果是如此的重要。<br /> <br />关于游戏中的光照,就目前来看大致两种方式,一种是Unreal的与渲染光照贴图+ShadowMap,另一种则是Crysis的完全实时光影。效果

2011-02-08 14:55:00

Crysis引擎分析

<br />很早以前研究过crysis的引擎,最近和同事讨论起来这个东西,现在简单总结一下。<br /> <br />这里关注的是crysis的场景管理和光影。<br /> <br />crysis的场景管理是通过把玩他的编辑器猜测的,不一定完全正确,还有部分是我自己的设想。<br />crysis的场景管理是全实时的不需要什么预计算,以他的室内场景为例,他是通过放置VisArea和Portal以及Furtums的Portal剪切筛选来实现的。可以通过编辑器编辑VisArea,这个VisArea就是一个几何

2010-09-15 14:00:00

特效系统优化

<br />这几天在做特效系统的优化,稍有些心得,分享一下。<br /> <br />首先要讨论的是优化层次,然后再说说优化策略。<br /> <br />游戏这个东西是程序美术策划共同努力工作的结果,所以优化再更宏观的角度来看不只是程序的问题。在具体工作中经常会出现,美术作了一个特别牛鼻的特效,效果及其绚丽,但是他却消耗了大量的资源,导致游戏性能低下。这是很常见的问题,因为美术他不管程序怎么处理,他只追求效果,而且美术的特点是很感性,对于一些具体技术细节不是那么靠就,比如说粒子发射量,很多情况下用不着那么

2010-09-10 09:43:00

资源的后台加载

<br />现代的游戏大多资源量都比较大,无法做到游戏启动之初就加载了全部资源,所以资源动态加载必然要做。下面说一说一些不同的资源动态加载方案。<br /> <br />第一种方式,分贞加载。所谓分贞加载顾名思义就是把游戏资源的加载分解到不同贞去做,这样可以降低某一贞突然加载大量资源导致的帧率急剧下降。这种分贞可以是以资源为单位,也可以加载步骤为单位。比方说第一步进行磁盘IO,第二步进行一些资源使用前的准备工作(如提交显卡等),这些步骤也可以分别放在不同贞中进行。为了使贞率更加平稳,可以限定每贞加载的量,或

2010-09-08 09:09:00

3D引擎中的渲染模块

<br />渲染是3D引擎不可缺少的模块,这两天在思考如何把这个部分设计好。<br /> <br />首先明确需求,最起码的因该是把图形API进行抽象风装,这样引擎只调用经过抽象的渲染接口,这样便于扩展到其他图形API上,简单来说就是把GL/GLES/D3D的通用的API抽象出来到CRenderBase上,再由此派生CRenderGL,CRenderGLES,CRenderD3D等分别实现,完成底层渲染API的分离。这是最起码要做到的,接下来就是一些具体的渲染工作到底是放在CRender里面还是放在具体到C

2010-08-20 09:36:00

内存管理

<br />不光还是游戏引擎,任何一个项目都有必要做好内存管理,至少可以监控内存使用量和内存泄露。而对于游戏引擎而言更是如此,在游戏引擎里面动态分配释放内存的地方不在少数,做好内存管理对于提高引擎运行效率是十分必要的。<br /> <br />内存管理就是做两件事,负责内存的分配和释放,再有就是对内存的分配释放进行监控,据此来解决内存泄露和掌握内存使用情况。<br /> <br />先说说内存分配释放,这也是内存管理最重要的部分。一般来说内存管理只管理小内存的分配释放,大内存则无需管理制作监控即可。过多的小

2010-08-09 09:54:00

新的场景编辑器

<br />场景编辑器,又是场景编辑器,大概一年前我曾写过一个基于BSP的场景编辑器,配合当时的引擎。经过这将近一年的时间我对场景编辑器和bsp,portal,pvs又有了更加透彻的了解。<br /> <br />可能有的朋友已经用过Unreal,worldcalf(cs的编辑器)等。我总结一下这些编辑器。<br /> <br />首先是单位,他们的1米使用的是64各单位。我开始很奇怪为什么用这么不零不整的单位,为什么不用100代表1米,或者1代表一米,这样不是更加自然。但是深入研究发现这样做是有历史原因的

2010-07-27 12:33:00

特效编辑器

<br />这几天抽时间完成了特效编辑器,正如我之前讨论过的特效系统。不多说了,上两个图<br /> <br /> 

2010-07-18 13:07:00

SSE优化引擎

<br />周末在家尝试着使用sse对引擎进行优化。<br /> <br />关于如何使用sse这里并不多说,有很多资料,这里提一下,使用sse无非就是直接使用汇编或是使用函数指令,如果是诸如解码器核心之类的推荐使用汇编直接进行优化,毕竟可以将核心全部用汇编实现,其他情况下使用sse函数指令即可。<br /> <br />接下来说一下sse在3D引擎中的优化。可优化的地方很多,但总的来说绝大部分优化都集中在了数学运算,3D游戏的数学运算基本上都是向量运算非常适合进行sse优化,一般情况下把数学模块优化好也基

2010-06-27 21:53:00

渲染优化 lock unlock

昨天参加了公司组织的nvdia的培训,讲了一些关于D3D的优化和可能的瓶颈所在,具体的条目就不说了,这里说一些关于资源的Lock和Unlock,以及我在GL下的测试。老师讲到向Draw*这类函数是将其指令放入指令队列,带填满后或者强制刷新时交给显卡去画,也就是说它并不是即时的,而像对资源的Lock和Unlock确是即时的操作,而且cpu和gpu是并行计算的,当lock的资源正是当前gpu正在使用的资源会导致lock堵塞直到gpu使用完后才返回,也就是说不当的使用lock会造成cpu等待gpu的情形。当然D3

2010-06-25 09:57:00

我也谈一谈关于C/C++

<br />这几天随着linus这位老兄再次发出讨伐C++的声音,又勾起了网络上的大讨论。<br /> <br />比起各位高手大牛,我没什么发言权,这里仅说一下我使用C和C++的体会。<br /> <br />由于工作经历,我有4年左右的时间都是在使用纯C进行开发(当时在做图象处理模式识别的算法性工作)。感觉C其实就是一个高级的汇编,他的函数,各种类型的变量(主要指的是global, static, local),指针,编译单元等,只要你理解了计算机如何工作就可以很好的使用了,每次在指针,指向指针的指针,

2010-06-16 20:39:00

放假这几天写个一个iPhone模拟器

<br />听起来挺悬的,好家伙写了一个iPhone的模拟器,模拟了一个Mac OS系统,呵呵,其实不是,我可没那么牛比。<br />其实写的就是一个专门应对iPhone游戏开发的win平台模拟器,与GameFramework配合,从而极大的提高了哪些熟悉win开发但不熟悉iPhone开发者的开发效率。毕竟我也是Windows开发出身,用vs最熟也最顺手。<br /> <br />这个模拟器主要功能就是与GameFramework进行配合,提供了诸如点选,滑动,震动,设置模拟器朝向等功能,更重要的是与Gam

2010-06-16 20:17:00

GameFramework的初步设计

最近这几天在搞一个GameFramework,其实就是在引擎基础上增加一个游戏框架,对游戏进行抽象,对引擎使用的一些封装。在进行具体设计的时候很多细节问题是值得思考的。总结如下     总的来说我所设计的游戏框架从功能上来讲就是两件事,一个是游戏的状态管理(什么菜单状态,游戏状态等等),在一个就是AI管理,又有一个有效的机制来负责对所有AI进行更新和维护还有交互。     对于一个

2010-05-25 09:59:00

3D数学相关

这两天有机会重新翻翻之前看过的3D数学方面的书籍,下面简单介绍一下3D数学要点和我的学习轨迹。 和很多人一样在刚刚开始接触3D方面的东西时并不是直接看3D数学,毕竟也不是计算机专业出身,没学过计算机图形学。最开始仅仅是找一些关于OpenGL的书籍来看,这些书大多数都是手册性质的(包括什么红宝书之类的),然后照猫画虎照葫芦画瓢照着例子把代码桥进取,这样经过短暂的联系基本上了解了OpenGL,

2010-05-14 08:41:00

粒子系统

以前一直没有接触过粒子系统,上一个引擎由于试运行在iPhone上,也没有专门的实现这一模块。最近由于工作关系不得不进行研究并写一个编辑器。 通过这一段时间对各种粒子系统,特效系统的研究我也有了进一步的了解,在51期间自己写了一个十分简单的粒子系统框架,给大家共享(见后面的连接),并打算进一步集成到目前正在独立开发的ZeusEngine中。 看到粒子系统作的各种效果感觉很神秘也很强大

2010-05-03 08:48:00

上两张在iPhone模拟器上的截图

  

2010-04-28 22:15:00

关于引擎工具制作

这里主要是想讨论一下在编写引擎工具的时候再多大限度上与引擎进行结合。这里向讨论三个问题一. 引擎要不要实现一个所谓的工具模式二. 工具的数据格式与引擎数据格式三. 调试一. 引擎要不要实现一个所谓的工具模式由于工具也要调用到引擎的一些功能,尤其是一些流程性强,功能性强的模块时可能会出现引擎内部工作状态与这正游戏状态不同的情况。此时就要在引擎内部增加一个所谓的工具模式,来区分对待工具调用和游戏调用。

2010-04-25 18:29:00

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!