自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Zippo's Sky

Keep it simple and stupid.

  • 博客(36)
  • 收藏
  • 关注

原创 你属于哪一类?

在一个公司中通常有以下几类人: 第一类:能够发现问题并能提出解决方案或建议的人。第二类:能够发现问题,但却袖手旁观的人。第三类:连问题都发现不了的人。第四类:制造各种问题的人。 请问,你是属于哪种人?请问,你的公司哪种人最多?

2011-06-23 22:15:00 2402

原创 游戏中的字符串管理

在游戏中,我们需要各种各样的外部资源。包括字符,2D纹理,3D模型,动作,声音等等。怎么组织并管理好这些资源,关系到游戏的高效和稳定性。下面我先介绍一下字符串资源的管理方法。 游戏中不可避免会用到很多文本字符串,有些人是直接把字符串写在代码里面。这样是一个很不好的方式,因为字符串文本可能会根据项目的需要而频繁的更改,如果你直接写在代码中,每次更改都需要重新编译。另外发行多国版本的时候也会出

2010-04-10 20:18:00 2768

原创 Gamebryo 引擎的Assert,log和debug

我们在游戏中需要一个健壮的引擎,那怎样才能保证引擎的健壮性呢?主要有两个方面:一个是尽可能的减少bug,二是在bug发生后能尽早的发现并解决。GB引擎和大多数引擎一样,有自己的一套保护机制。包括断言,日志模块和debug模块。 一 断言断言的使用,能够让开发人员在最短的时间内看到问题所在,一般情况下断言只在debug模式下有用。在release模式下,我们可以把错误信息记录在log中。

2010-04-10 16:23:00 3476

原创 Gamebryo 引擎的RITI机制

一 什么是RITI      通过运行时类型识别(RTTI)(Run-Time Type Identification),程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型,在C++中,RITI最大的用处是通过虚函数来实现多态。不过有些时候我们必须在运行时期确切的知道基类指针实际所指的类型,而不是单纯的调用虚函数。在vc中,RTTI提供了两个非常有用的操作符:1:type

2010-04-10 12:51:00 2754

原创 Gamebryo 引擎基础层之efd::MemObject

我们都知道C++中的内存管理是一个很让人头疼的问题,内存泄漏,无效指针访问崩溃,堆内存分配失败,内存碎片等等问题。为了解决这些问题,大部分的游戏引擎都实现了自己的内存管理器。GB中的MemObject 类有点类似于OGRE中的AllocatedObject,所有要从堆内存中构造的对象都必须继承与该类。这个类重载了new和delete操作符,通过自己的内存管理器进行内存的管理。MemObject 接

2010-04-05 11:33:00 2735

原创 Gamebryo 引擎的总体框架

总体来说LightSpeed分为四个主要的子系统。1 Foundation subsystem :SDK平台相关的基础子系统,可适用于任何平台,包括windows,WII,SP3。是所有的其它子系统依赖的基础。主要包含内存管理,文件资源管理,线程管理,网络通信,消息系统,日志以及断言等。2 Core Runtime subsystem: 核心子系统主要用于渲染、动画、效果、场景管理、输入输出、碰撞

2010-04-05 10:05:00 3739 3

转载 平衡二叉树与红黑树

AVL树的定义: 一棵AVL树满足以下的条件: 1>它的左子树和右子树都是AVL树 2>左子树和右子树的高度差不能超过1 从条件1可能看出是个递归定义,如GNU一样. 性质: 1>一棵n个结点的AVL树的其高度保持在0(log2(n)),不会超过3/2log2(n+1) 2>一棵n个结点的AVL树的平均搜索长度保持在0(log2(n)). 3>一棵n个结点的AVL树删除一个结点做平衡化旋转所需

2010-03-20 21:39:00 16062 3

原创 怎样用Visual Build工具搭建自己的Daily Build环境

经过这几天的研究,终于利用Visual Build软件把我的Daily Build给搭建起来了。之前的想法利用这个工具都实现了,包括从ftp上更新游戏资源,从svn服务器上更新代码以及自动编译vc工程项目,最让我感到意外的是Visual Build居然还支持联合编译器。准备先在自己机器上试运行几天,如果效果不错的话在给我们项目组推广下。下面我就介绍下Visual Build这个工具吧。 一

2010-03-19 19:17:00 5712 2

原创 Daily Build--每日构建

在我现在的游戏项目中,基本上每天都要代码,各种游戏资源需要更新。而且每次从SVN服务器上更新代码后都要编译好久。另外资源的更新也是一件很麻烦的事情,因为我们的所有游戏资源都是统一放在一个FTP上面,每个版本发布之后都会把最新的游戏资源放在里面。每次从FTP上把好几G的数据更新下来很是费时间。于是我在想能不能写个小程序让这些都自动执行,即能够设定一个时间。例如每天的凌晨从FTP上把资源更新下来,然后

2010-03-16 21:01:00 6130

原创 std::vector中的陷阱

自从上次经历了sort的死循环之后,让我觉得有必要重新审视一下STL的容器。vector是STL中最普通的一个容器,也是用的最多的一个容器。当我阅读vector的源码后,还是发现有很多陷阱,这些陷阱稍不留神也许就会让你的程序死的很难看。 一.增加元素时的陷阱vector中常用的增加元素的方法是pushBack和insert。大家先看看这样一段程序: int _tmain(int

2010-03-15 21:36:00 5783 2

原创 std::sort函数中的陷阱

前几天收到游戏中一个很严重的bug,执行某项操作的时候会出现卡死的现象。最后调试的时候定位到std的sort函数,发现一进这个函数就出不来了,很可能在里面出现了死循环。刚开始,我还是很诧异。大名鼎鼎,久经考验的的STL算法也会出现死循环?于是baidu了一下,果然在网上也发现不少人碰到过类似情况。出现死循环大多是由于在sort函数中的比较函数里面相等元素返回了true。 std的sort函

2010-03-10 21:56:00 5443

原创 Gamebryo 引擎的编译

Gamebryo LightSpeed引擎安装后,你可以在目录中看到这几个文件夹:Build,Documentation,Media,Samples,sdk,Source。Build文件夹包含整个引擎的工程文件,分为vc8和vc9。为了让我们更快的了解GB,引擎附带了很多例子。例子都在build文件夹下的sample的文件夹中,例子分为初级教程(Tutorials),图像demo(Graphics

2010-03-09 21:27:00 3365 1

原创 新年新气象

新的一年开始了,告别了晚班时代,开始朝九晚五的生活了。虽然有时候也是朝九晚九,但比起以前来说还是好多了。看来所谓的弹性工作制要真正实行起来还是有很多问题的,特别是像游戏开发这种部门之间协作度很高的工作。 前几天终于找到了一对靠谱的合租伙伴,感觉人还不错,希望这次没看走眼。换了个新房间,房间色调虽然难看了点,但是多了个阳台和卫生间,还是挺不错的。  

2010-03-02 19:35:00 1893 1

原创 Gamebryo Engine 3.0 下载与安装

下载:点击该链接,这里进行下载,慢慢挂着吧。我总共差不多用了2个礼拜。如果你觉得慢的话可以google一下,貌似很多地方都能下。 安装:下载完毕后,先解压。然后运行setUp.exe,首先会自动帮你安装一些软件,什么Microsoft .NET Framework 3.5 ,还有vs2005和vs2008的补丁包,另外就是NVIDIA PhysX。安装完毕后才真正开始SDK的安装,

2010-02-09 16:27:00 13452 12

原创 Gamebryo LightSpeed 3D Engine

 图形接口【来源:Emergent官方网站】DirectX支持 (2.6版本后支持DirectX 10)OpenGL支持其他未知版本信息最新版本Gamebryo LightSpeed 3.1   April 2009支持

2010-02-09 16:08:00 7732

原创 谈谈游戏软件的开发管理

一 角色与分工人类绝大多数的工程都包括这样几个角色:设计者,实现者,检查者。实际对应就是的就是一般工程的三个阶段:设计--->实现--->验收。在游戏软件工程中对应的是:策划,程序,美工,QA,程序和美工同属于实现者。 二 职责策划:分析玩家对于游戏各种各样的需求,针对这些需求制定出游戏的规则,设计出游戏的各个系统。目的在于让更多的玩家更久地沉浸在游戏中(时间收费游戏),或者让

2010-01-27 11:06:00 2359 1

原创 久违的blog

很久没来这了,以至于连用户名和密码都快忘了。转眼之间,一年已过。记得刚来公司的时候,有一份调查,其中有这样一个问题:您来到我们公司最大的愿望是什么?我答曰:做一个让自己满意,让玩家满意的游戏。如今看来,一个游戏的好坏不是哪一个人能够决定的。愿望毕竟是愿望,实现了是你的幸运。作为游戏程序员来说,最大的幸运是遇到了好的游戏策划。说到底,策划才是游戏的设计者,一个游戏的好坏80%都是由策划决定的,而程序

2010-01-21 12:32:00 1740

原创 开心online破10万,欧耶

开心Online,我在ND的第一个网游。自从进入ND以来,为了它的诞生基本天天工作12小时以上。在公测前的那一晚都还在不停的改加新功能,改bug。开心是今年ND的主打游戏,只许成功、不许失败。3月7号正式对外公测,各个服务器出乎意料的爆满,当天就破7万,第二天破10万。继续……

2009-03-10 12:52:00 2493

原创 ND 一周记

2月1号晚从家出发,经过十几个小时的颠簸。2号到达榕城,在ND附近找了一个小旅馆,晚上出来溜达了一下。相对于深圳来说确实是土了一点,没有那么多的高楼大厦。路上到处都是横冲直撞的小毛驴,有点像老家,不过生活气息还是很浓厚。3号上午报道,我们这批大概有20几人。跟着人力资源mm到达培训地,参加新兵战斗营进行入职培训,为期3天,这里的培训很特别,很有意思,不会让你想睡觉。公司的管理和制度也很人性

2009-02-07 17:22:00 2260

原创 Torque引擎系列之学习资源

这篇文章可能是我关于Torque系列的最后一篇文章了。我写这些文章主要是有两个目的,一个是在工作和技术上做一个总结性的东西。二是给大家介绍一下Torque引擎,希望能给那些对游戏开发感兴趣的朋友一些帮助,实际上TGE引擎远比我写的要复杂,包括它的渲染、网络、内存管理、物理碰撞等,这里面的任何一样都可以写成一本书。我认为TGE引擎对于想进入游戏开发领域的朋友来说是一个不错的入门引擎,它的架构实际上是

2009-01-19 11:22:00 1940 1

原创 Torque引擎系列之核心类(ShapeBase)

在游戏世界中,我们不仅可以把物体分为静态的和动态的,而且可以分为有形的和无形的。游戏中的人物、交通工具、建筑都属于有形物体,而一些爆炸、激光、烟雾等粒子效果则是无形的,实际上这里的无形是指没有固定的形状。有形物体需要美工进行3D建模,另外可以挂接和被挂接、可以有动作和生命值。TGE中把这些特性抽象出来形成了ShapeBase类,可以说ShapeBase类是TGE中最重要的一个类,也是我们经常需要修

2009-01-16 18:16:00 1469

原创 Torque引擎系列之核心类(GameBase)

上篇文章介绍了sceneObject,我们知道sceneobject是一个抽象类。场景中的物体,包括天空、地面、水体、建筑、植物、人物、交通工具、摄像机、标记点、声音源等都是建立在sceneObject class之上。所有这些物体在TGE中都对应了一个实体类。游戏中的类是对现实世界物体的抽象,我们想一想,上面这些物体中怎样去抽象。首先我们可以把物体分为静态物体和动态物体,像天空、地面、建筑、水体

2009-01-15 16:54:00 1278

原创 Torque引擎系列之核心类(SceneObject)

前面我介绍了一下netObject类,这篇文章我主要介绍它的子类SceneObject,另外两个子类Sun和MissionArea比较简单。在这里就不多介绍了。从名字就可以看出,SceneObject主要是指场景对象类,包括场景中的天空盒、地形、建筑、人物、交通工具、水体等。SceneObject class 在TGE中主要提供了以下几个功能:1、每个该类对象创建之后都会加入到一个scene gr

2009-01-14 18:50:00 1487

原创 Torque引擎系列之核心类(NetObject)

NetObject类在上篇文章中,我介绍了一下SimObject类,这篇文章主要是介绍一下它的子类。在所有simObject的子类中,NetObject类是最重要的子类,不过其他的类例如SimSet、SimDataBlock、ScriptObject、ScriptClass都是比较重要的类。在介绍NetObject之前,我们先研究一下这几个类。一、SimSet classSimSet是一个容器类,

2009-01-13 15:00:00 1627 1

原创 Torque引擎系列之核心类(SimObject)

从TGE引擎类图中,我们可以看出从ConsoleObject类进化出两个子类,一个是SimObject类,另一个是NetEvent类。NetEvent类主要负责网络传输,SimObject类是TGE引擎中所有模拟对象类的基类,下面我将详细介绍一下simObject类。一、simObject的作用:在游戏中,有许许多多的对象,包括人物、交通工具、场景中的建筑、太阳、天空等。所有的这些对象在游戏中必须

2009-01-12 17:21:00 1479

原创 what is game? what is good game?

做了这么久的游戏,经常会问自己。这个世界上到底什么可以称为游戏,什么样的游戏能称得上是一个好游戏。This is a problem,Go on。柏拉图说:游戏是一切幼子(动物的和人的)生活和能力跳跃需要而产生的有意识的模拟活动。亚里斯多德说:游戏是劳作后的休息和消遣,本身不带有任何目的性的一种行为活动。拉夫科斯特说:游戏就是在快乐中学会某种本领的活动。某哲人说:游戏是一种自愿参加

2009-01-09 21:44:00 1075

原创 Torque引擎系列之类图

2009-01-07 16:05:00 1238

原创 Torque引擎系列之核心类(ConsoleObject)

TGE引擎中,ConsoleObject类是所有核心类的基类,所有在脚本中用到的类都必须继承于该类。该类主要提供脚本动态创建对象、类属性脚本初始化等功能。在前面的脚本入门介绍中,我们知道在TGE脚本中通过“new”关键字来创建动态对象,并进行初始化。那么在ConsoleObject class中是如何实现这一点的呢?当脚本想要创建一个对象时会把一个类名字符串传递到引擎中,比如当脚本中调用 ne

2009-01-07 15:59:00 1191

原创 Torque引擎系列之场景编辑器

一、任务编辑器介绍Tge任务编辑器主要是用来创建游戏中的场景、地形、设置路径等。它主要包含了以下几个子编辑器:World Editor(场景编辑器)、Terrain Editor(地形编辑器)、Terrain Terraform Editor(地形高度编辑器)、Terrain Texture Editor(地表纹理编辑器)、Mission Area Editor(任务区域编辑器)。二、Wo

2009-01-06 15:32:00 2376

原创 Torque引擎系列之粒子编辑器

一、 概要介绍:粒子系统主要是用来模拟游戏场景中的固定变化的液体或气体类实体,例如大雨、烟雾、薄雾、火焰等。粒子系统主要由三部分组成:1、粒子(Particle),指我们所看见的真实物体。2、粒子发射器(Particle Emitter),指使粒子成为存在实体的东西。3、粒子发射器节点(Particle Emitter Node),指粒子发射器所依附的对象,当粒子作为独立粒子时,必须要用到粒子发射

2009-01-05 17:30:00 2105

原创 今年之阅读计划

在这两年的工作学习中,虽然也看了不少技术方面的书。但老是觉得知识不够用,往往是缺哪补哪,从来都没有有计划而又系统地进行阅读和学习。所以制定一个系统而又长期的学习计划是很有必要的。一、阅读计划之内功篇哪些方面是我们作为软件开发人员所必须具备的内功?我认为大概有以下几个方面:1、计算机体系,了解现代计算机的运行原理、组成结构。2、操作系统,我们所编写的程序都依赖于某个特定的操作系统,操作系统是

2009-01-04 22:18:00 980 1

原创 Torque引擎系列之Gui编辑器

一、Gui编辑器概述:1、进入游戏后按F10快捷键即进入Gui编辑器。其界面如下图所示:2、GUI Editor由4个部分组成:Content Editor(内容编辑器)、Control Tree(控件树)、Control Insepctor(控件检验器)和Tool Bar(工具栏)组成。Content Editor(内容编辑器)为上图中左上方较大的矩形区域,这是放置、移动、和变换控件的地

2009-01-04 18:15:00 2952

原创 Torque引擎系列之脚本入门

本人接触TGE引擎已差不多有两年时间,TGE是国外的一款相当不错游戏引擎。价格低廉(只需99 dollar)、支持脚本、并内建GUI编辑器、粒子编辑器、场景编辑器。最致命的缺陷是在网络部分,只能支持100多个客户端,所以要开发多人在线游戏需要更换它的网络部分。不过你要是想开发一个单机或者是局域网游戏的话,TGE引擎确实是个不错的选择。以后我们分几篇文章介绍一下Torque引擎,包括脚本、编辑器的使

2009-01-04 18:01:00 2777 1

原创 计算机简史(三):从图灵机到IBM

自从图灵机的概念被提出之后,当时的计算机界掀起了一股计算机热潮。不久之后,冯·诺依曼则提出了更加实用的计算机思想。冯·诺依曼的重要三条思想是: 1、计算机硬件是由5大基本部分组成:运算器,控制器,存储器,输入设备,输出设备。 2、采用二进制。 3、程序和数据一样存放在存储器中。从中可以看出该思想和现在的计算机已经十分接近了,实际上现代计算机的理念基本上是传承与冯氏思想的,不同的只是硬件,现代计算机

2009-01-03 17:56:00 2474 2

原创 计算机简史(二):从乘法机到图灵机

虽然乘法机能够进行简单的四则运算,但是人们需要一种更加聪明的机器,能够按照人类的意愿自动完成任务的机器。1819年,巴贝奇制作了一台"差分机"。所谓"差分"的含义,是把函数表的复杂算式转化为差分运算,用简单的加法代替平方运算。1812年,20岁的巴贝奇从法国人杰卡德发明的提花编织机上获得了灵感,差分机设计闪烁出了程序控制的灵光──它能够按照设计者的旨意,自动处理不同函数的计算过程。巴贝奇耗费了整整

2009-01-03 16:06:00 3184

原创 计算机简史(一):从算筹到乘法机

每件事物都有它的一段历史,现代计算机更是经历了加法机、乘法机、分析机、图灵机等阶段。如今的电脑到底是怎么发展到如今这个样子的呢?我相信你一定很感兴趣。最早的人们我猜想是用手指头来算数,所以大部分的古代文明都是用的十进制。但是发现十个指头不够用,于是人们使用一些木棍、石头、草绳之类的东西来计数。不过世界上第一个真正意义上的计算工具是中国在春秋时期发明的算筹。在算筹计数法中,以纵横两种排列方式来表

2009-01-02 20:17:00 3533

空空如也

空空如也

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

TA关注的人

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