自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AdamChen游戏开发

为学日益,为道日损

  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

转载 RTTI

自从1993年Bjarne Stroustrup 〔注1 〕提出有关C++ 的RTTI功能之建议﹐以及C++ 的例外处理(exception handling)需要RTTI﹔最近新推出的C++ 或多或少已提供RTTI。然而,若不小心使用RTTI﹐可能会导致软件弹性的降低。本文将介绍RTTI的观念和近况﹐并说明如何善用它。什么是RTTI﹖    在C++ 环境中﹐标头档(header

2011-11-16 14:24:20 777

转载 从有限状态机、图灵机到现代计算机

转自:http://blog.sina.com.cn/s/blog_64ac3ab10100ges2.html 一、有限状态机 引子让我们先来看几个简单的概念:状态        -  系统的基本数学特征。状态机      -  一个离散数学模型。给定一个

2011-09-29 13:18:19 24644

转载 用GDB调试程序

GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。

2011-05-17 15:24:00 1416

转载 软件复杂度概述

在硬件的可靠性设计中,有一条基本原则“简单就是可靠”。这个原则同样也适合软件,与功能的增多或增强相伴的是不断升级与补丁。现在已经有若干种软件复杂性的度量方法可供参考,其中McCabe QA是比较出色和实用的方法,它能够计算出多种软件复杂度,由此可对软件进行检查、分析和查明那些可能导致错误的代码。

2011-03-19 15:23:00 2907

转载 纹理的滤波方式

我们的纹理是要贴到三维图形表面的,而三维图形上的pixel中心和纹理上的texel中心并不一至(pixel不一定对应texture上的采样中心texel),大小也不一定一至。当纹理大于三维图形表面时,导至一个像素被映射到许多纹理像素上;当维理小于三维图形表面时,许多个象素都映射到同一纹理。当这些情况发生时,贴图就会变得模糊或发生错位,马赛克。要解决此类问题,必须通过技术平滑texel和pixel之间的对应。这种技术就是纹理滤波。

2011-03-14 16:56:00 5021

转载 CString实现原理

Cstring是对于原来标准c中字符串类型的一种的包装。因为,通过很长时间的编程,我们发现,很多程序的bug多和字符串有关,典型的有:缓冲溢出、内存泄漏等。而且这些bug都是致命的,会造成系统的瘫痪。因此c++里就专门的做了一个类用来维护字符串指针。标准c++里的字符串类是string,在microsoft MFC类库中使用的是Cstring类。通过字符串类,可以大大的避免c中的关于字符串指针的那些问题。这里我们简单的看看Microsoft MFC中的Cstring是如何实现的。当然,要看原理,直接把它

2011-03-14 11:52:00 732

转载 图形世界分裂的两派——理清D3D和OpenGL的脉络

一篇06年的文章,主要介绍了两种图形API的发展过程和各大主流厂商之间恩怨。虽然是基于06年市场上的主流硬件所写,但其中涉及的技术和发展思想还是颇有学习和借鉴的价值。是一篇不可多得的好文章。

2011-03-13 11:01:00 1498

转载 OpenGL Blend的高级教程

混合是什么呢?混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。

2011-03-11 18:05:00 843

转载 OpenGL性能优化

今天我将结合OpenGL状态机和一个典型的D3D9硬件体系结构探讨如何对OpenGL应用程序的性能进行优化。MSDN的OpenGL帮助也提到了关于性能优化方面的问题,但是这已经是多年以前的article,而随着图形加速硬件的发展,许多新的技术不断涌现,我们应该跟上时代发展的步伐。

2011-03-11 17:45:00 2047

转载 Lua的协同程序

协同程序(coroutine)与多线程情况下的线程比较类似:有自己的堆栈,自己的局部变量,有自己的指令指针(IP,instruction pointer),但与其它协同程序共享全局变量等很多信息。线程和协同程序的主要不同在于:在多处理器情况下,从概念上来讲多线程程序同时运行多个线程;而协同程序是通过协作来完成,在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只在必要时才会被挂起。

2011-03-11 13:53:00 4244 1

转载 Mono 把 .NET 应用程序移植到 Linux

Mono 是基于 .NET 的开放源码开发平台,它让您可以使用各种 .NET 兼容语言创建强大、灵活的 Linux® 应用程序,同时利用跨平台的能力。本文带领您在系统上安装 Mono,并开发第一个用 Mono 编译的可同时在 Linux 和 ® Windows® 上运行的 C# 应用程序。C# 语言是一种面向对象的语言,用于为 Microsoft .NET 平台快速构建各种应用程序。C# 和 .NET 的目标是把您从底层的编程问题中解脱出来,如类型安全问题、内存管理、库构造等,以便把精力集中到构建应用程

2011-02-23 16:22:00 1896

转载 Objective C简单介绍

XCode:你可以把它看成是一个开发环境,就好像Visual Studio或者Netbeans或者SharpDevelop一样的玩意。你可以将Interface Builder认为是Visual Studio中用来画界面的那部分功能单独提出来的程序。Objective-C:这是一种语言,就好像c++是一种语言,Java是一种语言,c#是一种语言,莺歌历史也是一种语言一样。Cocoa:是一大堆函数库,就好像MFC、.NET、Swing这类玩意,人家已经写好了一堆现成的东西,你只要知道怎么用就可以了。

2011-02-23 15:53:00 1011

转载 Objective-C持有计数(Retain Count)

Objective-C使用了一种叫做持有计数(Retain Count)的机制来管理内存中的对象。 在 Objective-C中每个对象都对应着他们自己的持有计数(Retain Count),持有计数可以理解为一个整数计数器,当使用alloc方法创建对象的时候,持有计数会自动设置为1。当你向一个对象发送retain消息时,持有计数数值会增加。相反,当你像一个对象发送release消息时,持有计数数值会减小。当对象的持有计数变为0的时候,对象会释放自己所占用的内存。

2011-02-22 13:17:00 1238

转载 考察数据结构 第二部分:队列、堆栈和哈希表[译]

本文是"考察数据结构"系列文章的第二部分,考察了三种研究得最多的数据结构:队列(Queue),堆栈(Stack)和哈希表(Hashtable)。正如我们所知,Quenu和Stack其实一种特殊的ArrayList,提供大量不同类型的数据对象的存储,只不过访问这些元素的顺序受到了限制。Hashtable则提供了一种类数组(array-like)的数据抽象,它具有更灵活的索引访问。数组需要通过序数进行索引,而Hashtable允许通过任何一种对象索引数据项。

2011-01-26 18:06:00 1039

原创 Boost 使用方法

关于Boost库的使用网上有很多文章介绍,但随着boost的发展,一些老的方法已经失效,这里列出最新的使用方法备查!

2011-01-25 15:43:00 4874

原创 Google Protocol Buffer 用法

在网上查了一下,虽然有很多文章介绍Protocol Buffer,但是实际使用起来,还是会遇到很多问题,所以我想应该有一个指南一样的东西,让新手很快就能使用它。Protocol Buffer简写为Protobuf,是Google开发的一种储存数据的方式,功能与XML一样,但更方便,数据量更小,速度更快,在序列化和反序列化的时候使用,有很大的优势。比如,网络游戏的通讯协议编写。更重要的是,它是一个开源项目。

2011-01-19 16:58:00 4152

转载 向量的旋转

基础的2-D绕原点旋转在2-D的迪卡尔坐标系中,一个位置向量的旋转公式可以由三角函数的几何意义推出。比如上图所示是位置向量R逆时针旋转角度B前后的情况。

2010-11-18 20:26:00 966

转载 核心路由器的交换矩阵设计

在设计一个路由器时,第一步就是要决定交换矩阵的工作方式以及交换矩阵与板卡(或物理端口)之间的界面,而不是板卡的种类或是转发芯片的功能。只有在交换矩阵的结构设计完成后,板卡的设计才能启动。而随着需求的变化,板卡可以被重新设计,交换矩阵的界面却不可以,否则旧的板卡就不能和新的板卡兼容。因此,交换矩阵是用来区分路由器最好的界标。

2010-08-13 10:06:00 1866

转载 网络模型综述

本文介绍了网络游戏开发中常用了几种网络模型,分析了各种模型之间的优劣。在文章的最后给出了几种成熟的框架,是不可多得的概括性好文!

2010-08-06 16:52:00 1456

转载 linux socket的select函数例子

使用select函数可以以非阻塞的方式和多个socket通信。程序只是演示select函数的使用,功能非常简单,即使某个连接关闭以后也不会修改当前连接数,连接数达到最大值后会终止程序。

2010-06-18 14:11:00 456

转载 epoll模型使用(一)

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。

2010-06-18 13:44:00 502

转载 epoll模型

Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后    首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数,在我用的2.6.15-25-386内核中,该值是1024,搜索内核源代码得到:include/linux/posix_types.h:#define __FD_SETSIZE

2010-06-18 13:31:00 542

转载 Lua 中的捕获

捕获是这样一种机制:可以使用模式串的一部分匹配目标串的一部分。将你想捕获的模式用圆括号括起来,就指定了一个捕获。

2010-06-08 10:47:00 537

转载 Lua 中的元表和元方法

Lua中每个值都可具有元表。 元表是普通的Lua表,定义了原始值在某些特定操作下的行为。你可通过在值的原表中设置特定的字段来改变作用于该值的操作的某些行为特征。例如,当数字值作为加法的操作数时,Lua检查其元表中的"__add"字段是否有个函数。如果有,Lua调用它执行加法。我们称元表中的键为事件(event),称值为元方法(metamethod)。前述例子中的事件是"add",元方法是执行加法的函数。

2010-06-08 10:10:00 970

转载 Lua 模式匹配

与其他脚本语言不同的是,Lua并不使用POSIX规范的正则表达式[4](也写作regexp)来进行模式匹配。主要的原因出于程序大小方面的考虑:实现一个典型的符合POSIX标准的regexp大概需要4000行代码,这比整个Lua标准库加在一起都大。权衡之下,Lua中的模式匹配的实现只用了 500行代码,当然这意味着不可能实现POSIX所规范的所有更能。然而,Lua中的模式匹配功能是很强大的,并且包含了一些使用标准POSIX模式匹配不容易实现的功能。

2010-06-08 09:53:00 857

原创 Avatar状态机设计

Avatar状态机设计看似非常简单,其实深究每个细节则会发现并没有想象中那么容易,如何让设计合理、符合玩家操作习惯是一个很大的话题,我结合实际工作中的设计实例,来做一些分析,本文的素材来源是公司的实际项目,文中引用到一些参与者的设计和言论,并不是最终设计结果,参与讨论者的观点也是即时观点,有倾向性的观点也只对本文内涉及的内容有效。 注释:本文为实际项目中的对答,文中给出的设计图需各位看官分

2010-03-15 15:31:00 3466

原创 状态机中使用事件优先级的探讨

发件人: Chen Chao 发送时间: 2010年3月11日 16:37收件人: Shen Yetao; zhang jin; Chen Hai; Zeng fanjian; Lu Yuan抄送: Ding ling主题: 答复: 关于状态机中的优先级问题 分析这个问题要从两个层面来看一、策划提供的优先级参考,可不可以作为状态机设计的依据根据ProjectX_战斗系统 8.2 节

2010-03-15 15:08:00 2581

转载 【转】我对CTO的理解 CTO要有技术魅力

原文地址:http://news.csdn.net/a/20100201/216843.html 【观点】我对CTO的理解 CTO要有技术魅力编者按:关于CTO这个热门职业的理解总会引发热议,下面这篇博文出自资深从业人员,观点来自实践,很尖锐也很有见地。1)错误都是自上而下 当事情出现混乱的时候,人们总是寻求寄托于Process的制定,很多的管理者,觉察到事情的失控,却不明白根源所

2010-02-26 17:27:00 712

转载 《星际争霸2》图像技术全解析

  为一个拥有10年辉煌历史的游戏开发续作显然需要承受巨大的压力与挑战,特别是暴雪这种精益求精的公司,实际上《星际争霸1》的第一个内部开发版本就因为画风太过于类似魔兽2而被彻底推翻重来,暴雪对作品要求的严格程度由此可见一斑。而如今面对这个十年磨一剑的续作,我们不难猜想暴雪对其重视程度已经达到呕心沥血的程度!为了完成这个艰巨的目标,暴雪为《星际争霸2》的引擎开发小组提出下列要求:  首先最主要的

2009-11-25 11:37:00 1794

转载 OpenGL 性能优化

 OpenGL 性能优化 作者: Yang Jian ([email protected]) 日期: 2009-05-04 本文从硬件体系结构、状态机、光照、纹理、顶点数组、LOD、Cull等方面分析了如何优化 OpenGL 程序的性能。 OpenGL状态机(State Machine)OpenGL状态机的目前只

2009-11-04 19:06:00 7921

原创 英雄连两个版本美术对比分析

英雄连勇气传说在画面质量上比一代有很大改善,下面对比图片进行一些分析先看看这个谢尔曼坦克 左边是新的,从贴图上来看,并没有太大变化,模型几乎完全一样,唯一不同的是贴图的色调有明显的变化,仔细对比可以发现,老版本的坦克偏绿,和草地看起来有些近,这样不能把坦克从地面突显出来,新版本色调偏深黄褐色,红色调增多了,更有一种废旧钢铁的意思在里面,坦克看起来稍微亮了一点,这样能让玩家看到更多细

2009-09-16 13:46:00 3662

转载 Unity的shader

Shaders: Getting started来源网址:http://unity3d.com/support/documentation/Manual/ShaderTut1.htmlUnity Manual > Advanced > Shaders > Shaders: Getting startedThis tutorial will teach you how you can creat

2009-08-28 09:43:00 3601 2

原创 地图编辑器功能

普通碰撞标记如图所示,红色区域代表一个Tile,地图上每一个菱形空格代表一个区域(下文统一称为“地图片”),地图编辑器需要具备这样一种功能,就是标记哪些区域可以通过。假设下图中蓝色外边框为屏幕边界,那么内部的菱形方片区域就可以看作是一个错开的二维数组(或者就是一个一维数组)。标记这些区域(地图片)也就很容易了,就像图中的蓝色标记连接成一条道路,到底是标记为0是道路,还是标记为1是道路其实并

2009-07-19 12:45:00 2487

原创 小游戏坦克大战游戏设计

本设计只提供一个概括性的思路,具体实现过程中仍然存在修改和优化的可能,具体实现也可能有所不同,更多的作用是让我们大致了解这些功能模块之间的关系。   本周工作主要集中在地图编辑器上,地图编辑器是游戏中最重要的组成部分之一,但设计相对独立,因此我们现在就着手制作。地图编辑器功能点概要:以Tile方式拼接地图每个Tile中心放置一个节点相邻的Tile有边相互连接

2009-07-03 13:22:00 1154

原创 Map Editor 制作分析

根据Map Editor生成的文件大致可以知道地图文件主要分3部分,第一部分是节点,第二部分是边,第三部分是物件一个典型的文件如下:3Index: 0 PosX: 11 PosY: 11Index: 1 PosX: 11 PosY: 25Index: 2 PosX: 11 PosY: 742m_iFrom: 0 m_iTo: 1 m_dCost: 14 m_iFlags: 0 ID: -1

2009-07-02 13:38:00 1668

原创 一张原画~

这张图原本是为我设计的一款游戏作为插图而画的,在绘制的时候产生一种有趣的想法,它的全貌应该是怎样的?于是就完成了它....我希望它是一块净土,必定是在一个世外桃源一般的地方,就向我内心向往的那样,我们必须依山傍水,村外有一个棵大树,那是一颗多么大的树呀,从村子诞生之初它就在了,它象征着永恒,寄予人们对幸福的向往和对生命的尊敬,人们在村子中央建立了一座教堂,这代表他们的信仰,没有信仰的人们,总是会与

2009-02-11 17:31:00 872

原创 CodeWarrior新建NDS项目配置

打开CodeWarrior选择新建项目,如果安装好了NDS的SDK,则会有NDS应用程序选项,选好SDK版本,点确定,新建完毕! 然后将其他的文件copy到当前项目目录下,官方范例一般是三个目录 src include data,前面两个不用说了,最后一个data很容易忘记,一般nds程序跑起来都需要数据文件,都在这个目录中,需要注意,此目录必须打包的时候一起打到ROM中去,否则程序跑起来

2008-12-30 14:35:00 1880 1

原创 怪物猎人online 日服 注册流程(原创)

也许你错过了魔兽的美服、韩服、欧服,要体验Capcom的大作,成为真正的hardcore玩家,就是现在!看看我们需要做些什么?1、游戏客户端(日服的)2、官网注册用户帐号3、到淘宝购买WM卡,用来冲值4、冲值并用冲好的dp点数购买MFH的使用权5、修改系统位置和时区到“日本 东京”6、启动代理软件,启动游戏,等待自动更新7、进入2号服务器,并找到你的战友怪物猎人 边境 online 以下简称 边境

2008-04-09 23:46:00 5619 1

原创 我的PSP游戏

符合中国人品味的psp,不能说是一台很好的游戏机,但是应该能称作一台不错的mp4吧,我试图让它能表现出更多的特性,比如一台学习机?呵呵,谁知道呢!看样子还是有很多人喜欢我做的这个东西CET4不过现在.....都不想碰它了,真是极大的反差呀。其实不是我没有恒心毅力,实在是开发跟不上sony的更新速度,操作系统版本从1.50一路飙升到3.72,更新速度之快实在让我应接不暇,这都归功与那些黑客不停的破解

2008-03-25 17:17:00 6366 7

原创 新的开端

今天怀着无比崇敬的心情开始了《地狱邻居2》的移植工作了,好几年前花了几个通宵打爆这个游戏,想不到今天能有机会制作这个游戏的NDS版本,真是世事难料呢! 说是移植,要做的工作还真不少,发行商给我们了PC、PS2和XBOX版本的源代码,可是一个都不好用,因为技术平台不同,各个版本的资源和剧情都不一样,真是!感慨一下,原来这种世界级的游戏,版本控制也这么混乱!不管怎么说,这件事情都值得记录一下,

2008-03-25 16:33:00 1125 1

Unity3D引擎脚本入门

在Unity中脚本是必不可少的组成部分,因为它将定义你游戏的各种行为.这个教程将介绍JavaScript的基本使用.

2009-07-01

空空如也

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

TA关注的人

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