随笔分类 - 游戏
摘要:引言 帧同步的形式很泛,根据不同游戏,使用的技术范围又不一样,所以大家都在讲方法论,要全面覆盖可能需要较大的篇幅,所以,我简单描述下。 假定大家对帧同步和状态同步有一定的认识,理论上的问题,我就不作过多解释了。 大家都知道,帧同步的核心是一致性,通过一致性的算法,使得各端输入一致的情形下,输出也是一
阅读全文
摘要:游戏资源打包几乎是一个网络游戏客户端必备的功能。页游和微端根据实际需求可能不打包资源或者使用小包。资源打包有这么几个好处:1、加快客户端安装时间。拷贝3000个1mb文件所消耗的时间要远大于拷贝一个3g的文件所消耗的时间2、客户端更加整洁,也可以“稍微”避免游戏资源被他人使用。3、ios和android上面可以避免文件名大小写不一致造成的文件读取失败。或者说包内可以做到全平台大小写无关4、压缩资源,如果是大量png等图片资源可能还体现不出来,但是如果有大量文本和未压缩模型资源,那么打包可以有效减小客户端这里介绍两个开源库,可以非常方便的给客户端加入资源打包功能。1、StormLib(http:
阅读全文
摘要:http://www.sixwater.com.cn/article.asp?id=28最近拿到SpeedTree资料,开始学习,并用到项目里去.1.该插件的特点:api无关。它本身只是数据结构和逻辑架构,没有任何渲染语句子,因此为了把它应用到自己的引擎里,需要为之添加渲染相关的语句。而根据sdk的讲解,推荐用户为之搭建中间架构,用来联系SPEEDTREE与自己的引擎。这样做起码有两点好处,搭建的中间架构(也推荐别加任何api相关的语句),因此,即使你以后换了api(譬如从gl换成dx),中间架构还是可以继续沿用的。还有一个好处就是,当speedtree更新版本的时候,你也无须修改你的引擎,而
阅读全文
摘要:就在SIGGRAPH大会刚结束之后,AMD和暴雪在AMD官方网站上放出了《星际争霸II》的官方技术文档,通过游戏引擎技术的展示让星际迷们感受到越来越多的惊喜。画面优化给CPU带来考验着色方面,在使用原型的基础上利用3D Studio MAX让程序员对整体效果做最大的优化,反复的提炼使得整个作品就像被艺术家精心雕琢一样,配合上8000个独特的、不重复的线性着色渲染代码,使得Starcraft II与早期的游戏代码相比增加了N倍。 在游戏制作初期,暴雪就认识到GPU的强大性能,因此在设计的时候就采用了以GPU为主的优化和大幅度图像质量增加。 由于使用大量像素渲染操作,如果在游戏中当你选择了控制成百
阅读全文
摘要:SSAO全称“Screen-Space Ambient Occlusion” (屏幕空间环境光遮蔽)。其最先运用于 Crysis(孤岛危机) 游戏中,通过GPU的 shader实现 SSAO通过采样象素周围的信息,并进行简单的深度值对比来计算物体身上环境光照无法到达的范围,从而可以近似地表现出物体身上在环境光照下产生的轮廓阴影。可以利用“逐象素场景深度计算”技术计算得出的深度值直接参与运算。 现在的效果确实错误还比较大,应该先进行简单的空间划分(或类似处理)然后计算。 不过个人认为这种方法只是近似地模拟,效果并不正确,但确实能增强场景的层次感,让画面更细腻,让场景细节更加明显。 不同于显卡驱.
阅读全文
摘要:最近一直在玩street fighter IV,被其夸张的角色建模、华丽的动作和漂亮的油画效果所震撼。里面的角色,在对手跳起或蹲下时,自己的头部会一直注视着对手;近身时,如果一方发出必杀技,另一方的面部将作出恐怖和惊吓的表情。这些许细节,将角色的个性表现得淋漓尽致。值得一提的是,头部注视对手的效果,2D格斗的年代,早在SNK的《世界英雄》里已经实现,虽然表现力以现在的眼光来看,确实有点粗糙,但足以一窥日本人在细节上的重视程度。 不过,真正让我惊艳的,还是bio5。日本人对于各种高端图形技术已经运用得相当成熟,整部游戏,完全的实时渲染,让人感受到一部大片的视觉享受。其对技术的熟练程度,当吾辈还.
阅读全文
摘要:1. 什么叫做FPS?什么叫做刷新率?他们两个是一回事吗?FPS是英文"Frame per second"的缩写,中文可译为:每秒钟画面更新次数。我们平时所看到的连续画面都是由一幅幅静止画面组成的,每幅画面称为一帧,FPS正是对"帧"变化速度的数值描述,单位是"帧/秒\"。一般而言,12祯就可以让人形成连贯的视觉感受,认为20FPS是RPG类游戏运行的最低标准,但对CS、极品飞车等高速游戏来说,60FPS才能得到比较理想的效果。而人眼可以接受的最大图像频率是每秒62格, 要获得最大的真实性, 就必须使视网膜的吸纳接近饱和(在这里不要和
阅读全文
摘要:1.每帧评估周围MapArea的可见度,对即将可见的区域送入预加载线程逻辑,对必须可见的区域送入即时加载模块.2.必须加载2*2,进入3/4距离处开始预加载,退出1距离处卸载,保证最大加载量为3*3.a.DX是有多线程支持,OpenGL渲染RC与线程相关,跨线程加载使用图形资源,如何解决?b.遇到更复杂的逻辑时,如何处理.c.是否要预加载全部,还是分Terrain,Model,Wmo加载.But it is just a design question.
阅读全文
摘要:今天想通一个问题,如何异步地加载3D资源,进而实现整个地图块的后台异步加载机制,进而实现无缝大地图加载.3D资源(纹理,顶点缓冲等)的加载分两个阶段,首先是数据加载,而后是根据读入的内存进行3D资源构造.发现,IO操作的耗时远比3D资源构造多得多,3D资源构造,如glTexImage,glBufferData,Lock,Unlock速度相对还是很快的,而如果把整个加载放入一个线程导致跨线程3D资源的构造和使用上的问题.理论上在一个线程创建的3D资源不能在另一个线程内使用(如OpenGL),即使可以做到(如DirectX的CREATE_MULTITHREADED),也会出现很多需要同步的3D资源
阅读全文
摘要:要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路牵着走,要思考这个引擎如何实现或绕过(如不考虑低端机)这些必然要面临的问题.首先,最重要的必须,在Debug模式下调试起来一个主场景程序,然后沿着代码流走几遍,在代码里闲逛,生成第一印象,留意基础工具设施类(如字符串内存管理),大约3小时.然后带着如下每一个问题(不分先后)去走流程,走逻辑,弄清引擎的业务处理方法.1.SetStreamSource,SetIndices,DrawIndexedPrimitive的调用是在哪里(哪个cpp哪个类的哪个函数),整个工程有几个DrawIndexedPrimitve,DrawPrimitveUp
阅读全文
摘要:温故知新,水面很早就实现了,但没有在这里写过,今天总结一下。 水的模拟要达到以下效果:水面的折射与反射,水的波动。要达到这种效果,需要以下四张纹理:折射纹理(RenderTarget),反射纹理(RenderTarget),Bumpmap,水自己的纹理。 折射与反射的原理就不具体说了,下面只说实现步骤。 一、渲染到纹理 RenderTarget的创建我不多述了,网上查查,我创建的是256X256的纹理,格式为X8R8G8B8。折射纹理比较简单,直接把当前的地形或在水面以下的物体渲染多次,注意,为提高性能,在这次pass中,可以选择带clip的shader(假如用到shader)或者直接使用水.
阅读全文
摘要:Jake Simpson 译者: 向海 第1部分: 游戏引擎介绍, 渲染和构造3D世界 介绍 自Doom游戏时代以来我们已经走了很远。 DOOM不只是一款伟大的游戏,它同时也开创了一种新的游戏编程模式: 游戏 "引擎"。 这种模块化,可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心,用新的模型,场景和声音创造新的游戏, 或向已有的游戏素材中添加新的东西。大量的新游戏根据已经存在的游戏引擎开发出来,而大多数都以ID公司的Quake引擎为基础, 这些游戏包括Counter Strike, Team Fortress, Tac Ops, Strike Force,
阅读全文
摘要:自由骑士笃志原创- -欢迎转载,呃,个人不对日志内任何资料真实性准确性负责BigWorld:澳大利亚优点: 1:动态负载均衡,服务器承受能力好。 2:服务器有较高的容错性,对服务器状况有专业的记录和管理报表分析。 3:功能全面,使用非常方便,开发速度快。 4:支持无缝世界。 5:嵌入的Python脚本,开发非常方面。缺点: 1:该引擎更适合制作FPS游戏。 2:结构完整度高,模块间契合度大,优化难度大。 3:仅支持RedHat服务器系统。其他描述:授权费用: 一个许可针对一个项目一个游戏。若一次性购买,价格为200W美元。相关技术说明: BW和其他网游引擎不同,它不是针对地图为单元,将地图为单
阅读全文
摘要:Author: FreeKnightDuzhi关于Bloom和HDR的帖子和图片网上已是一堆,但罕有能够明确说明程序实现过程的帖子,明天需要进行简单一个讲解,故在此做个补充记录。首先HDR是高动态光照。注意两个词:1:高(高精度)。 2:动态(光照时实时运算的)。然后说下当前计算机图形学大部分颜色表示A8R8G8B8,即颜色可以表示为0-255的亮度(即一个深灰暗色到一个灰白亮色之间,并不能表示一个深黑色和一个非常耀眼的亮白色),用浮点数表示为【0,1】内,其实这是远不能表示人眼可分辨的亮度层级的(补,人眼可分辨亮度层级是1000,当前色彩学能表达的亮度层级是10的12次方……悲催啊,可怜的人
阅读全文
摘要:CEGUI 0.7x版本相比于以前的版本有了很大的改变. 基于它的Formatting Tags和Animation System特性对CEGUI做扩展, 比较方便实现一些常用的字体效果.1.Formatting Tags 本身就支持设定字体颜色, 字体大小,嵌套静态图片等. 详情可浏览 http://www.cegui.org.uk/wiki/index.php/Formatting_Tags_in_CEGUI所以字体下划线, 描边, 阴影等组合效果也可以通过定义自己的标签来指定哪一部分文字出现对应的字体效果.新增两种文字特效Tag:1.) [text-component='...&
阅读全文
摘要:From:http://www.gamedev.net/community/forums/topic.asp?topic_id=324643Graphics Engines Ogre 3D Nebula Device Jad (formerly Haddd)Irrlicht Haaf's Game Engine (hardware accelerated 2D games engine)Axiom 3D (OGRE for .NET)TrueVision Revolution3D Genesis3D Crystal Space 3D Panda3D Quake 3 Source Cod
阅读全文
摘要:据 Drew 所知最短路经算法现在重要的应用有计算机网络路由算法,机器人探路,交通路线导航,人工智能,游戏设计等等。美国火星探测器核心的寻路算法就是采用的D*(D Star)算法。 最短路经计算分静态最短路计算和动态最短路计算。 静态路径最短路径算法是外界环境不变,计算最短路径。主要有Dijkstra算法,A*(A Star)算法。 动态路径最短路是外界环境不断发生变化,即不能计算预测的情况下计算最短路。如在游戏中敌人或障碍物不断移动的情况下。典型的有D*算法。 这是Drew程序实现的10000个节点的随机路网三条互不相交最短路 真实路网计算K条路径示例:节点5696到节点3006,三条最快
阅读全文
摘要:好久没有更新过博克了,春节的最后一天更新一下,写一下关于游戏中关于光影效果的方法,以及我的实现.去年有个机会和call duty3的程序总监聊天(此人是一个华人,当时已经回国在腾讯做互动娱乐部门副总,想找我过去),他提到次时代游戏和前一代游戏的最大区别之一就是游戏的光影效果,可见游戏中光影效果是如此的重要。关于游戏中的光照,就目前来看大致两种方式,一种是Unreal的与渲染光照贴图+ShadowMap,另一种则是Crysis的完全实时光影。效果上都不错,下面来简单分析一下。在讨论之前先要明确一点,游戏中的光影真的要追求和现实中一样的物理机理么?答案是否定的。画面是一个视觉艺术,只要看上去真是,
阅读全文
摘要:最近这几天在搞一个GameFramework,其实就是在引擎基础上增加一个游戏框架,对游戏进行抽象,对引擎使用的一些封装。在进行具体设计的时候很多细节问题是值得思考的。总结如下 总的来说我所设计的游戏框架从功能上来讲就是两件事,一个是游戏的状态管理(什么菜单状态,游戏状态等等),在一个就是AI管理,又有一个有效的机制来负责对所有AI进行更新和维护还有交互。 对于一个所谓的通用框架需要考虑的是在各种不同游戏类型中的最小抽象是什么?那些东西是个各种类型游戏都需要有的,这个抽象如果过小很可能失去其意义,如果过大则很难做到普适,当然有些情况下想做一个通用的东西想法本身就是错误的。 根据我之前的单机游戏
阅读全文
摘要:昨天和同事无意中聊到开发引擎使不是一件容易的事情。我想首先需要搞清楚的是什么是引擎。早在上世纪80,90年代,那时候的游戏开发都是从头来做,没有什么引擎,后来一些聪明的开发者把个个游戏中共用的部分独立出来,包装成了一个函数库并提供一组API共二次开发者调用,这边有了引擎。也就是说引擎的本质概念就是一个能够在不同游戏项目中,或者至少是同类型游戏中重用函数库而已。而今的现代游戏引擎则更加复杂,它融入了游戏开发的各个模块系统,资源管理系统,渲染系统,物理系统,声音系统,等等。这些系统有些容易实现一些,有些较为复杂,而且它们之间有时候并不是完全隔绝独立的,更过的是相互交融配合,互为支持。更为重要的是,
阅读全文