
游戏引擎
文章平均质量分 87
cbbbc
这个作者很懒,什么都没留下…
展开
-
游戏引擎多线程
前言 最 近一直在做项目优化,可是由于项目引擎历史原因,不能去砍掉某些功能而去优化项目,项目开发到这种程度,只能在这个基础上去提升整个引擎的效率,常规的 CPU和GPU上的优化(美术资源上的缩减,CPU上耗费地方和GPU耗费地方的优化等)基本上都做了。当然每个人都希望自己的游戏跑的越快越好,现在大 部分机器都已经至少是双核的,如果能发挥多核优势,游戏的速度会大幅提升。转载 2015-07-13 00:14:56 · 2247 阅读 · 0 评论 -
OGRE3D 渲染系统线程化
OGRE3D 渲染系统线程化译:BoYueJianghttp://blog.youkuaiyun.com/BoYueJiang由于BLOG注册不到一周,无法上传图片。所以文中图片下周补上。本文以及原文已上传到优快云资源http://download.youkuaiyun.com/source/2537929译者序:偶然在网上看到这篇文章,自己很想仔细研究一下。但搜寻半天不见中文版转载 2015-08-19 20:34:04 · 455 阅读 · 0 评论 -
游戏中的对象资源信息管理
首先要说明的是资源格式。资源格式一般存放如下格式资源 | --- part0 | ----part1 | ----part2 | ... 一个很好的例子就是模型信息文件,在一个模型信息文件中,存放了整个物体的所有部分,每一个部分又是单独的信息。这样做的目的在于游戏中的换装。 还有一个例子就是特效文件,比如将一个门派的技能做为一个特效文件,而这个转载 2015-08-19 20:31:17 · 495 阅读 · 0 评论 -
四大开源3d游戏引擎探究----irrlicht与orge对比
四大开源3d游戏引擎探究水平有限,只对于长久以来研究的几个经典3d游戏引擎的设计思想、程序架构和应用行深入剖析的结果与游戏开发同行分享,文档有不妥之处请指出,期待我们的共同进步。引擎名称:1. orge(鬼怪)2. Irrlicht(鬼火),3. Nebula(星云)4.klayGE(。。)前言:目前,开源3d游戏引擎已经趋近于商业化引擎标准,许多引擎在图形渲染转载 2015-08-19 20:27:06 · 9307 阅读 · 1 评论 -
3D编程的四个境界
第一阶段:初学者阶段。这个阶段主要是熟悉3D图形学的基本原理,和基本api的使用。特别是对于空间的变换,矩阵的原理要有非常清楚的认识。能够用简单的资源,做一个简单的demo,基本上就是达到了。这个阶段比较简单,基本上每个人都可以达到,学习方法也很简单,就是看书,看demo,写代码。时间周期大概1年。 第二阶段:进阶阶段过了第一个阶段,一般人会走两条路。一种人会选择直转载 2015-09-01 00:31:45 · 825 阅读 · 0 评论 -
一种3D引擎的多线程设计方案
随着多核CPU的普及,多线程设计对3D引擎已经变得越来越重要,很难想象一两年后推出的3D引擎还在使用单线程方式。但是多线程的引入使引擎变得更加复杂,不良的设计带来的性能提升非常有限,甚至在单核环境下还会出现明显的性能下降。所以找到一种清晰、简洁、高效的设计方式就变得至关重要。目前多线程3D引擎设计的资料还很少,多数只讨论一些原则性的概念,缺少具体实例的分析。 本文提出一种具体的3D引擎多转载 2015-09-01 00:02:25 · 710 阅读 · 0 评论 -
多线程渲染(Multithreaded- rendering)3D引擎实例分析 : FlagshipEngine
原文地址:http://www.cppblog.com/flagship/category/9250.html1. 开篇:关于FlagshipEngine 首先要感谢旗舰工作室的倒掉,让我可以名正言顺的使用FlagshipEngine这个 名字,话说这个实验引擎,当初只是我的大学毕业设计,工作之后实在太忙,写写停停,进度缓慢,到今天也只能算V0.001,其特性主要有以下三点:转载 2015-08-31 23:57:22 · 2680 阅读 · 0 评论 -
泰文的字符拆分
泰文比较奇葩,比如下面3个字符:ผ ผู ผู้第一个是一个字,第二个是第一个穿鞋子,第三个是第一个穿鞋带帽。没错,他们的文字是有鞋子和帽子的。但是穿鞋带帽之后,感觉上应该就成了一个单词,显示确是一个字符。第一个是3字节,第二个是6字节,第三个是9字节。前情交代完毕:我们按照UTF8来拆分字符的时候,显示会错乱,经过我手动测试发现,一个字符居然有9个字节,才能正常转载 2015-07-23 14:55:52 · 6277 阅读 · 2 评论 -
使用C语言计算utf-8字符串长度
C或C++语言处理宽字节字符串上是个弱项,虽然stl定义了wstring等类型,但是实际应用中还是存在一些问题,而C语言的支持就更少了,如果想跨平台,问题就会更多。最近项目中要处理utf-8字符串,需要计算字符串长度以及对其裁剪,例子代码如下:#include #include #include //utf8字符长度1-6,可以根据每个字符第转载 2015-07-23 15:01:27 · 1621 阅读 · 0 评论 -
引擎Demo演示-算是一个转折点吧
历时两年开发的3D游戏引擎终于演示了,也算是对这两年工作的一个总结。只是觉得特别别扭的就是演示会上的不善言辞,很多东西都没有说清楚。但还好各位观众都比较满意.不知不觉半年多没写博客了,也不太习惯啰嗦,上几个图留作记念吧。场景编辑器模型材质编辑器特效编辑器 DEMO截图 感谢公司给了我们机会,让我们能开转载 2015-08-19 20:43:36 · 431 阅读 · 0 评论 -
赵青-《剑侠情缘网络版》开发回顾
赵青-《剑侠情缘网络版》开发回顾,(转自剑网1,作者应该是原剑网3技术总监)这篇文章首发于一本谈游戏研发的杂志,是赵青写的,写得非常不错。《剑侠情缘网络版》开发回顾 2003 年的1月,我刚刚开发完《天王》项目,正在休息、总结和规划下一个项目。《天王》是我开发的众多项目中最满意的一个,虽然这篇文字主要是对《剑侠情缘网络版》(以下简称《剑网》)这个项目的回顾,但作为《天王》的项目经理和主转载 2015-08-19 20:47:32 · 2003 阅读 · 0 评论 -
骨骼动画的插值与融合
花了三天时间搞定了困扰了我半年的事情,心情非常之好。是这样的。我们的 3d engine 中的骨骼动画的插值融合总有点问题。如果是两个变化比较大的动画想从一个过度到另外一个,效果总是不太对。对于图形程序,很难用测试驱动的方式开发的缘故之一,就是因为对与不对有很大程度是人的视觉感受,而不是可以简单校验的数值。想写一个判定正确与否的程序,估计不比把代码写正确简单。所谓不对呢,问题其实老早也想明转载 2017-01-10 14:25:31 · 1301 阅读 · 0 评论 -
法线贴图
什么是法线贴图技术呢?这是一种用来实现3D效果的一种技术,要想理解这种技术还请您听我慢慢道来。 我们知道,在游戏中经常会有这样的情况,就是一个平面——这个平面在现实中并不是一个“平”面,例如砖墙的表面带有石质浮雕等等。这样的情况如果要求游戏开发人员将复杂的3D细节都做出来是不现实的,因为即使不计较在建模时候的复杂度,过多的3D细节也同样会大量消耗显示芯片的性能,让游戏根本没有可玩性。转载 2017-01-07 15:03:11 · 522 阅读 · 0 评论 -
浅析游戏引擎的资源管理机制 扒一扒Unity3D中隐藏在背后的资源管理
游戏中通常有大量资源,如网格、材质、纹理、动画、着色器程序和音乐等,游戏引擎作为做游戏的工具,自然要提供良好的资源管理,让游戏开发者用最简单的方式使用资源。游戏引擎的资源管理包括两大部分:离线资源管理和运行时资源管理。本文仅对前者进行简要介绍,并结合Unity3D和OGRE进行分析。资源创作与导出 游戏中的资源由各种数字内容创作工具(DCC, digital content creati转载 2015-11-05 14:53:58 · 1287 阅读 · 0 评论 -
服务器底层网络框架设计的一些思考
最近准备实现一个底层网络框架, 以供以后开发网络程序时使用。在开发的过程中,慢慢的意识到在框架设计中存在的一些问题。以下是自己的思考。采用windows 还是 linux. 我选windows, 因为windows 的IOCP资料比较多, 而且提供的支持库,开发环境都比linux 要方便。可以首先在windows 上做一个实现。以后如果有需要的化,再移植到linux上. 只要系统架构转载 2015-08-22 15:34:52 · 1571 阅读 · 0 评论 -
游戏中的资源管理--资源高速缓存
1.什么是资源高速缓存 资源高速缓存的原理与其它内存高速缓存的工作原理是相似的。在游戏的状态转换过程中,有些数据是刚才使用过的,那么直接从资源高速缓存中载入即可。例如,RPG游戏中主角从大地图进入一个房间,探索一番后主角退出房间,此时只要直接从缓存中载入大地图数据即可,节省了从硬盘载入数据的时间,要知道从硬盘载入数据是非常慢的。当然,如果你的游戏所使用的数据文件很少,那么你可以在游转载 2015-08-20 19:41:46 · 737 阅读 · 0 评论 -
游戏中的对象资源信息管理
首先要说明的是资源格式。资源格式一般存放如下格式资源 | --- part0 | ----part1 | ----part2 | ... 一个很好的例子就是模型信息文件,在一个模型信息文件中,存放了整个物体的所有部分,每一个部分又是单独的信息。这样做的目的在于游戏中的换装。 还有一个例子就是特效文件,比如将一个门派的技能做为一个特效文件,而这个特效文转载 2015-08-22 15:38:40 · 506 阅读 · 0 评论 -
Gamebryo 游戏引擎分析(二)内存管理
Gamebryo中的内存管理是比较传统的。主要就是这些:定义全局的new、delete、malloc、 free;引用计数;智能指针等等。全局的几个动态内存管理函数,是通过这样几个类实现的:NiMemManager,NiAllocator,NiMemTracker(继承自NiAllocator);这几个类都是对用户透明的,用户只能通过NiMemoryDefines.h 中的函数实现动态内存管理转载 2015-08-20 15:17:22 · 1098 阅读 · 0 评论 -
Gamebryo 游戏引擎分析(一)整体设计
(因为这个引擎是商业引擎,所以,我不会粘贴“源代码”像这样:class OoXx{ public ...};但是我会这样: So, technically, technically, I don't breaking any laws here. But IF you want fuck me, go ahead, I don't give a shit. )(另:引用请注明出处转载 2015-08-20 15:13:59 · 3043 阅读 · 0 评论 -
UTF-8编码问题编码长度问题
UTF-8经常被用于文本文件和网络传输,因为不少这类场合还停留在ANSI时代,需要向纯ASCII兼容。UTF-8是UNICODE的一种变长字符编码 ,长度在1至6字节。这里注意一下,UTF-8曾经是6字节,现在是4字节, 两者都对。 但如果你看到介绍UTF-8的文章说是6字节,基本可以判断这是比较早的文章。在 内容只是ASCII的0X00~0X7F时,UTF-8与ASCII或各种ANSI编码(如G转载 2015-07-23 14:59:16 · 2882 阅读 · 0 评论 -
游戏主循环FPS
游戏主循环引言游戏主循环是每个游戏的心跳,输送着整个游戏需要的养分。不幸的是没有任何一篇好的文章来指导一个菜鸟游戏程序员如何为自己的程序供养。不过不用担心,因为你刚好不小心看到了这篇,也是唯一一篇给予这个话题足够重视的文章。由于我身为游戏程序员,我见过许许多多的手机小游戏的代码。这些代码给我展示了五彩缤纷的游戏主循环实现方法。你可能要问:“这么简单的一个小玩意还能做到千奇百怪?”事实就转载 2015-07-19 23:42:38 · 1179 阅读 · 0 评论 -
游戏UI库
1.CEGUI是老牌的开源界面库了,最新版本是0.7.1,完全免费,也是Ogre官方推荐使用的界面库,Ogre1.6及以前的版本,都是内置支持的。使用它的商业游戏也非常多,比如天龙八部,火炬之光,仙剑四等。这也就证明CEGUI确实强大,可以完全达到商业应用级别,而且相关资料非常丰富,至少不用担心某个功能无法实现,因为你能碰到的问题,网上基本都有解决方案,经过这些大作的证明,就不要怀疑了:)。转载 2015-07-29 14:22:20 · 1358 阅读 · 0 评论 -
OGRE3D 渲染系统线程化
OGRE3D 渲染系统线程化译:BoYueJianghttp://blog.youkuaiyun.com/BoYueJiang由于BLOG注册不到一周,无法上传图片。所以文中图片下周补上。本文以及原文已上传到优快云资源http://download.youkuaiyun.com/source/2537929译者序:偶然在网上看到这篇文章,自己很想仔细研究一下。但搜寻半天不见中文版转载 2015-08-22 15:39:43 · 775 阅读 · 0 评论 -
关于《3D管线导论》这本书
游戏开发中,计算机图形学是必不可少的东西。许多人也是从接触图形开始而进入游戏行业的。3D管线导论这本书诠释了3D管线的细节。为大家解开了萦绕已久的迷团。很多次偶然地看到 《3D pipeline tutorial》(3D管线导论)这本书的推荐。 今天就狠下心来搜索了一下。 下载了一个电子版来瞧瞧。发现自己曾经百思不得其解的内容就全在里面。这本书介绍了我们的图形应用程序场景中一些常用的方转载 2015-08-22 15:37:41 · 648 阅读 · 0 评论 -
高性能的网络游戏服务器的设计
说起高性能的网络游戏,有2个典范,1个是暴雪的WOW,另外一个要数腾讯的QQGame了,因为对于MMPRPG的体系接触不深,几乎属于文盲,没有太多的发言权,而自己又是搞休闲游戏开发的所以本文就主要谈谈QQGame了。前些天通过朋友得到了QQGame的一个系统分析的文档,看完后很是震惊,彻底被QQ的设计所折服了,到底是千万人在线系统经验的拥有者,牛!通过资料了解到QQGame目前有以转载 2015-08-22 15:35:47 · 1016 阅读 · 0 评论 -
游戏引擎列表
以下内容转自http://www.yanchen.com燕尘小筑,嗯,按自已想看的大概整理了下的:)1.真是不错!国外廉价引擎评价最好的两个是 Turque 、Truevision3D,免费开源引擎评价最好的是 OGRE 和 IrrLicht ,综合考虑起来, OGRE 还不是个完整的游戏引擎,它首先只是个图形渲染引擎,用着也比较麻烦;IrrLicht 易用性最强,但是功能比较落后,因为作者现转载 2015-08-22 15:33:18 · 463 阅读 · 0 评论 -
Alpha混合物体的深度排序[译]
原文出处不详,我也是看到别人转的贴,觉得很有用! 若作者看到了,可以留言给我,我加上您的原文地址!先说个题外话, 本来我想解答一下最近Creators Club论坛上经常出现的一个问题, 意外的是在网上竟然找不到什么全面的答案..这是个有着复杂答案的简单问题:“为什么我的透明物体的绘制顺序不对, 或者有些不见了?”当绘制一个3D场景时, 对图形进行深度排序是非常重要的,转载 2015-08-22 15:37:02 · 971 阅读 · 0 评论 -
游戏引擎不仅是代码,更多的是完善的工具
从洗脑开始记得若干年前,在做公司引擎研发的时候,时常会念到的一句话:引擎不仅是代码,更多的是完善的工具。当时只是用这句话还激励自己,找准引擎开发的原则和位置。 而实际上,对这句话的理解甚少。时隔多年,这句话油然在耳,伴随我左右。亲身体会后来,引擎项目砍掉了,进入了页游产品的开发。 在这个产品开发的第一周,我们就面临着动画和场景编辑问题,在脑海中第一时间浮现出的,依然是这句话。于是,我们转载 2015-07-12 23:17:05 · 852 阅读 · 0 评论 -
开源游戏引擎体验
应该说每个做游戏的人都会有一个自己写游戏引擎的梦。趁着还没有到新公司报道,花点时间研究一下开源引擎,梳理一下自己的思路。 新的游戏引擎是基于cocos2d-x,我希望能够从这些开源引擎中学到: 1、粒子系统、粒子编辑器。cocos2d-x的粒子系统相当薄弱,不是说没有,但是想用他做出酷炫的技能特效是非常困难的一件事。很多人都有做cocos2d-x的粒子编辑器,但是在转载 2015-07-12 21:05:19 · 1300 阅读 · 0 评论 -
cocos2d-x改进的粒子系统和编辑器(需求分析)
先声明,以我对游戏引擎的理解和对图形学的熟悉程度,这篇文章更多的只是臆想和明确方向。我对能否完成它并不抱太大的期望。不过很多时候知道了方向,那么后面就可以一步一步的去完成它,有时候现在感觉很困难的东西在不久的将来就可能感觉是理所应当的。 首先说一下为什么希望cocos2d-x能够成为一个完善的2.5D游戏引擎。 在很早的时候我对cocos2d-x进行了各种吐槽,转载 2015-08-25 00:32:05 · 591 阅读 · 0 评论 -
基于id的游戏客户端事件分发(消息队列)
主要目的是完成游戏客户端内的事件处理。这里要明确几件事情:1、同样一个方案在小项目中可能是漂亮的解决方案,但是在大项目中就是很不灵活的处理方法。游戏客户端无论如何都是小项目,不会像windows一样几千位工程师负责上千个dll,一起开发一个操作系统。所以,对我的需求而言,把模块分的很细,很独立意义不是很大,点到即止。2、这样一个事件分发机制主要是处理业务逻辑对gui的控制,或者是不同的界面转载 2015-08-25 00:48:11 · 508 阅读 · 0 评论 -
简述FPS的计算方法
FPS是Frame per second的缩写,即每秒的帧数.这一术语广泛的应用于计算机图形学,视频采集,游戏等。这里主要介绍一下视频游戏中的帧率,第一个First person shooter game的帧率只有大概6FPS,但是依然很成功。不过随着硬件设备,尤其是显卡性能的加强,现在游戏的帧率一般在30FPS~100FPS之间。由于每帧图像所消耗的时间不一样,造成帧率是在不断变化的,所转载 2015-07-19 22:32:44 · 5632 阅读 · 0 评论 -
游戏的帧率与屏幕的刷新率
在全屏模式下运行时,有些DEMO的FPS可以达到上百帧,而有些DEMO的FPS则怎么也超不过显示器的屏幕刷新频率。这个问题困惑着好多人,其中也包括我自己。 最近,我购置了一台电脑。在无意中发现显卡的Direct3D与OpenGL设置中都有一个选项:“等待垂直同步信号”。将它前面的对号去掉后,发现以前那些“不论多么简单,FPS也超不过屏幕刷新率”的DEMO,现在运行时全都是几百帧。于是我转载 2015-07-19 17:27:38 · 3345 阅读 · 0 评论 -
游戏中的帧率控制
由于第一次做Android上的手机游戏,并且是第一次做手机游戏,甚至是第一次做游戏,没有什么相关经验,一切都是自己摸索出来的,肯定已经有成熟理论了。不过自己摸索出来的应该体会更深一些。游戏的主要流程一般是定时,更新逻辑,渲染画面。定时一般不用系统的定时器,因为不同系统的实现不一样,你不知道定时器函数会被怎样调用,为了可移植性和做到尽量平台无关,游戏一般采用在自己的线程中控制游戏时钟。p转载 2015-07-19 23:39:38 · 5028 阅读 · 1 评论 -
常见的三种计算fps的方法
// 1.总平均帧率 void update(float dt) { static float _total_frames = 0.0f; static float _total_time = 0.0f; ++_total_frames; _total_time += dt;转载 2015-07-19 22:29:57 · 3878 阅读 · 0 评论 -
游戏GUI
在过去的8年里,我经过数次失败的GUI系统设计经历,最终找到了一种算是可以的方案。这个方案使用一种类似MVC的架构。主要有以下几个大的部分:【sprite系统】sprite是一个从古老的游戏中一直演化过来的概念,而在这里,它代表了屏幕上的一个次元(层)中所有可见元素。它描述了一个屏幕上的矩形,以及和其他矩形的关系。它具有自己的更新和绘制方法。它具有自己的各种转载 2015-07-30 15:44:28 · 909 阅读 · 0 评论 -
Cocos2d-x中添加显示文字的三种方式 LabelTTF 、LabelBMFont 和 LabelAtlas
在 cocos2d-x 中有三个类可以在层或精灵中添加文字:LabelTTFLabelBMFontLabelAtlasLabelTTF 直接支持使用 TTF 字库,可以支持全部的中文,但是效率稍低。LabelBMFont 适合显示特定的文字,通过预先将文字生成图片,提高了效率,但是不能支持全部中文。如果使用的文字不多,组合多,但是文字的编码是连续的,比如数字,或者英文字符,那么 Lab转载 2015-07-18 15:15:42 · 631 阅读 · 0 评论 -
游戏中汉字显示的实现与技巧
作者:炎龙工作室 千里马肝版本:v1.0最后更新日期:2002-3-30绪言在游戏中,因为我们是中国人麻,通常都需要显示汉字,比方说交待剧情。而对于文字的显示,英文的显示要较其简单得多,因为只有26个字母,就算再加一些标点、符号什么的,用一张位图,就可以足以显示所有的单词了,而相关实现技巧,也比较轻松。而中文的显示方法,要复杂得许多。记得原来在DOS下,汉字的显转载 2015-07-17 22:29:38 · 774 阅读 · 0 评论 -
CCNode扩展,适应MMO的复杂UI逻辑
1、现有的cocos2d-x的ui和点击事件分派机制是无法适应mmo的ui逻辑的。 mmo的ui元素很多,一两百个界面是很正常的。 规则既单一又复杂,这些界面肯定是由简单的对话框组成的,不会有什么amazing的东西,但是这些对话框之间的遮挡、层级关系又是复杂的。如果把这些东西丢给写ui或者写逻辑的程序员去操心,那就等着无穷无尽的bug吧。而且即便维护好现有的代码,这些代码结构也是脆弱的,每添加一转载 2015-08-25 00:52:24 · 561 阅读 · 0 评论 -
3d max里的术语烘焙
贴图烘焙技术也叫Render To Textures,简单地说就是一种把max光照信息渲染成贴图的方式,而后把这个烘焙后的贴图再贴回到场景中去的技术.这样的话光照信息变成了贴图,不需要CPU再去费时的计算了,只要算普通的贴图就可以了,所以速度极快.由于在烘焙前需要对场景进行渲染,所以贴图烘焙技术对于静帧来讲意义不大,这种技术主要应用于游戏和建筑漫游动画里面,这种技术实现了我们把费时的光能传递计算应转载 2017-03-10 11:34:57 · 2120 阅读 · 0 评论