随笔分类 - 游戏开发
摘要:http://www.cnblogs.com/cproom/archive/2007/09/14/893496.html场景图一直被认为是适合游戏的通用场景管理算法,仿佛没实现过场景图就不算写过引擎。但是经过思考和分析,我觉得场景图并不适合作为一种通用的场景组织方式,在下面我会说明理由,并提出一种替代的适合目前mmorpg网游的场景管理方式。如果大家有什么不同看法可以和我讨论。 场景图是一种层级组织场景的数据结构,要生成场景图就要选择一种层级关系,或曰父子关系,或曰继承关系。比如几何变换矩阵的级联关系,或者空间范围的包围关系,或者渲染属性的继承关系。然而你选择了一种关系就不得不放弃另一种关系,
阅读全文
摘要:1.天空的种类目前描述“天空”的技术主要包括三种类型:平板型天空(Sky Plane),仅用一个平板放到头顶。天空穹(Sky Dome),放到头顶的是一个曲面。天空盒(Sky Box),放到场景的是一个立方体。天空盒经常是由六个面组成的立方体,并经常会随着视点的移动而移动。天空盒将刻画极远处人无法达到的位置的景物。2.天空盒的实现与D3D实现的普通立方体不同的一点是,大部分情况下我们视点都包容在天空盒内部,因此,天空盒的顶点顺序应当是正好与普通立方体的顶点顺序相反。 最简单的天空盒,只需要填写好六个面的24个顶点,最后为每个面贴上纹理即可。3.一些杂论天空盒对于程序员并不是困难的...
阅读全文
摘要:在进行3D场景渲染时,天空是必不可少的因素。对于3D天空的模拟在视景仿真系统、计算机游戏、三维动画中有着广泛的应用。但是,目前对于天空的仿真还存在很多不足,一些模拟方法中存在实现复杂、计算耗时、图像分辨力不高,真实感不强且只能生成静态图像等问题。本文在研究了前人仿真天空算法的基础上,利用目前3D图形行业中流行的OpenGL技术和有被誉为"大自然的几何学"美称的分形理论,提出了一种更加简单实用的仿真3D天空的方法,可以仿真出具有动态效果和不同天气的3D天空,绘制速度快,真实感强。l构造天空模型1.1 OpenGL技术[1.2]OpenGL作为一套图形标准,由数百个功能函数组成
阅读全文
摘要:#include "micropather.h"#include <ctype.h> #include <stdio.h> #include <memory.h> #include <math.h> #include <vector> #include <iostream> #include "micropather.h" using namespace micropather; //地图的长宽; //x为列号,y为行号;const int MAPX = 10; const int
阅读全文
摘要:参考:http://rangercyh.blog.51cto.com/1444712/792044http://www.cppblog.com/christanxw/archive/2006/04/07/5126.htmlhttp://dev.gameres.com/Program/Abstract/a8first_2.htmhttp://www.chinaai.org/programming/algorithm/a-shortest-path.html(里面有云风大神的A*算法代码)http://qinysong.iteye.com/blog/678941(在此把这个算法称作B* 寻路算法(
阅读全文
摘要:消息传递过程:client ---> gated ---> zonedCS消息结构:[cpp] view plaincopy01.message Head02.{03. uint32 cmd_id;04.}05.06.message Body07.{08.AuthReq auth_req;09.}10.11.message CSMessage12.{13.Head head;14.Body body;15.}发送数据格式:16bits len + CSMessage。gated--->zoned也有一套消息[cpp] view plaincopy01.message GZMe
阅读全文
摘要:首先是语言方面,这个问题没有太多的选择的余地,基本上只有用C++(现在还在坚持用纯C来写引擎的估计只有卡马克同学了),语言的功底是特别重要的了;大规模项目的编写能力也是很重要的,推荐看<<大规模C++程序设计>> 软件工程方面,你可能要了解一些单元测试,系统级设计的方法;但是流行的软件方法,比如敏捷,我觉得,如果是你一个人得工程,用处可能不大,但是了解一点总没有坏处.最重要的地方就是设计和测试了. 图形方面,你需要了解至少一种图形api(比如openGL或者DirectX),建议开始还是不要写多个api的渲染器,现完成一个,以后有时间再写另外的版本.在设计的时候多花一点
阅读全文
摘要:http://blog.csdn.net/n5/article/details/3105872Skinned Mesh 原理解析和一个最简单的实现示例 作者:n5 Email: happyfirecn##yahoo.com.cn Blog: http://blog.csdn.net/n5 2008-10 月 Histroy: Version:1.02 Date:2010-1-1 修改了一些错误(用删除线标出 ),补充了一些材料, ps:本文以后只维护CSDN blog上的版本,请转载者保留原始链接:http://blog.csdn.net/n5/archive/2008/10/19/3105.
阅读全文
摘要:最近想写一个自定义的动画数据文件,按照原来的做法,先定义一个文本格式的数据文件,然后写一个转换器转换成二进制,然后游戏中读入并解析。不过我最近特别懒,虽然我已经设计了一个“万能的”文本格式和二进制转换工具,但是解析二进制文件的工作仍然繁琐,并且根据以往的经验,可能会经常的修改文件格式,于是我想直接使用文本格式吧,首先想到的是XML,不过最近实在太懒了,连XML都懒得去解析,嗯,还有google Protocol Buffers这东西,以前看过,不过似乎用的人不多啊,还有一个json,见人在游戏中用过,那么就试试他吧。。找了几个c++的json解析器,最后选中了jsoncpp (http://j
阅读全文
摘要:根据情况不同,客户端做的事情都有不同。服务器至少要做验证。相对于网络游戏来说,数据传输量在一定程度上可以忽略,而更注重数据来回时间。在一般情况下,比如说WOW里面,200MS延迟就开始变黄。也就是说在一般对时间要求不是很极端的,比如KOF97转到MMO,200可以默认为一个普通MMO的标准线。具体来说,理想上的网游,个人倾向于所有逻辑处理全放服务器端,而客户端就像个媒体播放器。这是因为如同某本书讲得,客户端是掌握在对手手中,如果你让服务器只起到数据交换作用,那么外挂就可以彻底糟蹋你的游戏。在理想基础上,客户端要做的事就是表演,根据服务器和用户的输入处理,进行各种场景、动作与特效的播放。包括绘制
阅读全文
摘要:最近做了个Geomipmap的LOD地形,加上实现LOD用的逻辑时间,渲染帧数FPS跟静态地形真的没啥差别。。甚至fps还更低。。。。转载自:http://www.sineysoft.com/blog/post/Terrain_lod.html今天在qq上和网友聊天交流,发现大家普遍比较关注lod,特别是动态减面的lod,对于刚开始接触3D图形的同学普遍认为LOD很牛,很有必要,对于动态减面得LOD算法更是趋之若骛,其实不然,特别是针对地形(Terrain)的LOD必要性不是很大.对于LOD的好处,我想大家都了解,就是减少提交到显卡得primitives,以减少没桢同屏渲染的三角形数量,借以提
阅读全文
摘要:与玩游戏相比,写游戏要复杂上千万倍,除了需要掌握通用的编程技巧以外,还要有相当的图形学,物理,数学基础,特别是在国内,由于相关资料的缺乏,更是让初学者无从下手。下面总结了一些入门方法和比较容易入手的资料。首先你要精通一门高级语言,比如C++或者C#,其次,要有良好的英文阅读能力。对游戏开发者来说英文阅读能力是最重要也是最基本的工具之一,因为你遇到的大部分资源都将是英文的,不要总等着别人为你翻译。慢慢尝试着阅读英文资料,你会发现其实也并没有那么难:)刚开始,你要做的就是选择一门图形API,一般就是DirectX或者OpenGL之间选一个。如果考虑到跨平台,那么OGL是首选. 如果只在ms的平台,
阅读全文
摘要:地形在三维中的地位是毋庸置疑的,最近在看《Focus On 3D Terrain Programming》这本书,做一下简单的笔记.本书的第二章主要解决了三个问题:什么是高度图?怎么创建高度图?如何载入高度图?如何使用直接的方法渲染地形?(how to render terrain using a brute force algorithm?)如何使用fault formation与mid displacement算法动态生成高度图,然后生成地形。高度图就是一个灰度图片,每一个像素代表了一个高度。通常情况下黑色的像素点代表了地形低洼的地带,白色的像素点代表了地形高的像素点。读入高度图后可以通过
阅读全文
摘要:一个图形爱好者的书架.-也来介绍一下我的藏书.早几天看到有人把自己在大学四年的书列了出来.招来一顿怀疑.我是开发图形程序的.我现在也把我的书列出来.不怕大家怀疑吧.希望能有点启示作用.绿色的是我看完了的。红色的是没怎么看的。黄色的是看了一半以上的。首先是基础部分:语言类:C++ Programming Language (Special Edition).C++的圣经级别的书.我只看原文的。不看翻译的.对球教授的翻译表示一定的保留意见.Effictive/More Effictive C++.工程实践的最佳经验书籍.Inside C++ Object Model.好书.看完了。你对C++的理解
阅读全文
摘要:1.Viewport和Frustum有什么区别?2.Viewport和Frustum的NearClipPl?ane有什么区别?3.Vertex,Point,Vector有什么含义上的区别?Plane,Face和Mesh呢?4.为什么顶点会有W分量,它怎么算出来的?干什么用的?5.在一次完整的顶点渲染管线中,最多会出现多少种坐标系?(例如世界坐标系)6.上面的每个坐标系的实际意义是什么?互相之间怎么转换?转换矩阵怎么写,意义又是什么?7.光照是怎么计算的?光源可以设置Ambient,Diffuse...为什么Material也可以设置Ambient,Diffuse...?为什么顶点数据中还可以再
阅读全文
摘要:渲染状态管理(Rendering States Management) 目 录 1 基本思想 2 实际问题 3 渲染脚本-------------------------------------------------------------------------------- 提高3D图形程序的性能是个很大的课题。图形程序的优化大致可以分成两大任务,一是要有好的场景管理程序,能快速剔除不可见多边形,并根据对象距相机远近选择合适的细节(LOD);二是要有好的渲染程序,能快速渲染送入渲染管线的可见多边形。 我们知道,使用OpenGL或Direct3D渲染图形时,首先要设置渲染状态,渲...
阅读全文
摘要:参与过国内几款网游的后端研发工作,有mmo,也有web,有感于目前大大小小的游戏公司的开发现状:重复从头开发,项目与项目缺乏共用性,直接导致项目周期变长,成本增加,风险也随之上升。为什么不把共用的部分框架化,平台化呢? 有点类似于前端的引擎一样。沿着这个思路,我们来统计一下后端有哪些部分是可以平台化的?1. I/O 网络I/O,磁盘I/O,完全可以做到对上层游戏逻辑透明,不需要关心协议,缓存,也不需要关心到底是用epoll,iocp,逻辑层唯一需要关心的是数据的投递目的地和来源地。2. 线程模型线程模型稍微复杂一点,因为关系到游戏逻辑的并行处理,这部分在我看来,可以做到99%的透明。3. 内存
阅读全文
摘要:http://blog.csdn.net/Nhsoft/article/details/241629MAXSDK中,INode是很重要的一个部分。几乎所有的东西都需要通过INode来访问:MeshCamera等.下面我来简单的介绍一下和INode相关的各种不同的TM.(TransformationMatrix).仅仅代表我近日阅读MAXSDK的一些理解.希望高手指教.新手讨论.首先是介绍一下Node和Object(MeshTriObject等).MAX里的Scene是由INode构成的,Node里包含很多东西.这个Node可能是可以Deform(变形)的,或者是不可以Deform的。如常见的E
阅读全文
摘要:参考野猪写的《游戏程序中的骨骼插件》这篇文章的做法利用3dsmaxPluginWizard自动生成plugin工程。安装3dmax9.0及其SDK。由于野猪文章中写的是用的VS2005作为编译器,而且用的VS2008即VC9.0来生成工程,中间出了点问题,需要解决:///////////////////////////////////////////////////////////////////////如果你用的不是Visual Studio 2005 而是 Visual Studio 2008 在复制那三个文件到VS目录之前,你需要做两件事,1. 用记事本打开3dsmaxPluginWiz
阅读全文
摘要:我在《程序员》2008年2月刊上看到的(上),一搜果然搜到了。好文共分享!游戏程序中的骨骼插件(上)文/潘李亮引言 在3D引擎中,骨骼动画系统是非常重要的一个组成部分,虽然在一个游戏的真正开发过程中,一个优秀的游戏引擎也许不需要用户去关心它的骨骼动画系统是如何实现的,但是还是有很多人希望了解这样的一个技术。本文将会介绍骨骼动画系统里的一个基础部件:3Ds MAX 的骨骼动画导出插件。3Ds Max SDK和插件系统最新版本MAX9的MAXSDK包含在安装光盘里,在安装完MAX后直接安装SDK,并在工程里添加maxsdk的包含路径和库的路径就可以开始编译max插件了。MAX SDK还提供了3D.
阅读全文

浙公网安备 33010602011771号