【参考文档】directinput范例-精选word文档 (25页)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!
== 本文为word格式,下载后可方便编辑和修改! ==
directinput范例
篇一:Direct3D网络游戏程序实例全解
C++面向对象大作业实验报告
(1)问题描述
项目选题为做一个飞行射击游戏。
游戏中有各总各样的敌机和武器,敌机按一定的几率出现,玩家消灭敌机后可得分数奖励,达到一定分数后会升级,游戏难度随着玩家级数的增加而增大。
游戏有很多爆炸场面,增加了刺激性。
(2)系统设计 GameWorld类
描述:控制整个游戏过程的类
主要数据成员:
(A) 静态数据成员
const int Width, Height;
const double PI;
(B) 对象指针
DisplayPlayer
*pScreen; *pPlayer;
// 屏幕 // 玩家
// 玩家子弹系统 // 敌方子弹系统 // 敌机系统 // 碰撞系统
// 游戏区域的宽和高 // 圆周率
BulletSystem
*pPlayerBulletSystem, *pEnermyBulletSystem;
EnermySystem *pEnermySystem; CollisionSystem *pCollisionSystem;
主要成员函数:
GameWorld( HWND); void ShowInfomation()
// 构造函数
// 显示屏幕信息 // 游戏状态更新 // 处理按键 // 按键释放
// 敌人发射子弹 // 玩家发射子弹
// 重置玩家角色
// 在屏幕上输出角色
void Update(); void KeyDown(WPARAM KeyCode); void KeyUp(WPARAM KeyCode);
void EnermyFire(Enermy *pEnermy); void PlayerFire(Player *pPlayer); void ResetPlayer(); void DrawSprite(Sprite *pSprite);
Display类描述: 实现游戏画面输出的类
主要成员函数:
Display(GameWorld*);
// 构造函数
void SetClientSize(HWND hwnd, int Width, int Height)
// 设置窗口客户区大小
void Clear()// 清除画面
void DrawToOffscreen(int x, int y, int w, int h, int sx, int sy, bool bTransparent)// 把图形绘制到缓冲画面中 void DrawAllToScreen() // 把缓冲画面输出到屏幕 HDC GetOffscreenDC()// 返回内存设备场景句柄
Bitmap类描述: 封装位图文件的类
主要成员函数:
Bitmap(char *fn, BOOL transmode=false,
COLORREF transcolor=RGB(255, 0, 255)): void CreateMask();
// 构造函数
// 为实现背景色透明创建图像掩码
void Load(char *fn)// 载入图像文件 void Draw(HDC ddc, int dx=0, int dy=0,
int dw=0, int dh=0, int sx=0, int sy=0);
// 输出到设备场景上
BulletSystem类描述: 管理子弹的类
主要数据成员:
list<Bullet*> BulletList; // 子弹列表 list<Bullet*>::iterator pCurElement;// 当前子弹 intBulletIndex, // 当前子弹索引
BulletCount;
主要成员函数:
BulletSystem(GameWorld *pgw);
void FireHappened(Bullet::BULLET_TYPE BulletType,
int x, int y, double sprite_vx, double sprite_vy); Bullet* GetFirstBullet(); Bullet* GetNextBullet(); void Update();
EnermySystem类
描述: 管理敌机的类主要数据成员:
list<Enermy*
EnermyList;
// 敌机列表 // 当前敌机
// 当前敌机索引
// 当前敌机总数
// 难度, 与敌机出现的几率有
// 处理发射子弹的事件 // 返回第一个子弹对象 // 返回下一个子弹对象 // 刷新所有子弹
// 列表中的子弹总数
list<Enermy*>::iterator pCurElement; intEnermyIndex, Int
EnermyCount;
Difficulty;
关
主要成员函数:
EnermySystem(GameWorld *pgw); Enermy* GetFirstEnermy();Enermy* GetNextEnermy();void CreateEnermy(int x, int y); void AddDifficulty(); void ResetDifficulty(); void Update();
// 构造函数
// 返回第一个敌机对象 // 返回下一个敌机对象 // 创建新敌机 // 增加难度// 重设难度 // 刷新所有敌机
CollisionSystem类
描述: 碰撞检测系统主要数据成员:
PlayerEnermySystem BulletSystem
*pPlayer; *pEnermySystem;
// 玩家对象指针
// 敌机系统对象指针 // 玩家子弹系统对象指针 // 敌方子弹系统对象指针
*pPlayerBulletSystem, *pEnermyBulletSystem;
主要成员函数:
void Update()// 刷新,检测所有碰撞 void CheckForCollision(Enermy
*pFighterPlane, Bullet *pBullet);
void CheckForCollision(Player *pFighterPlane, Bullet *pBullet); void CheckForCollision(Player *pPlayer, Enermy *pEnermy);
// 三个实现碰撞检测的重载函数
Sprite类描述: 所有角色类的基类
主要数据成员: double x, y;
// X坐标和Y坐标
// 在素材位图中的位置矩形 // 碰撞检测用矩形 // 速度
// 生命, 攻击力 // 爆炸动画帧数 // 爆炸动画当前帧 // 标记是否应被丢弃
int sx, sy, w, h; int cx, cy, cw, ch; double dx, dy; int int Bool
Life, Atackness; ExplosionFrameCount, ExplosionFrameIndex; Used;
主要成员函数:
Sprite(GameWorld *pgw, int x_value, int y_value); // 构造函数
void AdjustPosition(); // 已左上角作为中心点调整位置 void
Update();bool OutOfClient(); bool OutOfSight();
// 刷新, 刷新位置和输出画面 // 判断是否超出窗
口客户区 // 判断是否在视线范围之外
Bullet类
描述: 由Sprite类派生, 所有子弹类的基类
主要成员函数: Bullet(GameWorld *pgw, int x_value, int y_value,
double sprite_vx, double sprite_vy);
// 构造函数
void SetMovement(double speed, int angle); // 根据速率和角度
计算分速度 void Update(); // 刷新 static int
GetFireInterval(BULLET_TYPE BulletType);
// 返回给定类型的子弹的发射时间间隔
PlayerBullet_Fire类, PlayerBullet_Missile类,
PlayerBullet_RoundBullet类, EnermyBullet1类, EnermyBullet2类, EnermyBullet3类描述: 由Bullet类派生的子弹类
FighterPlane类描述: 由Sprite类派生的抽象战斗机类
主要数据成员:
bool Firing;
// 是否正在开火
int LastFireTime; // 上一次开火的时间主要成员函数: void SetLastFireTime(); // 设置一个随机的上次开火时间 void Update(); // 刷新,增加爆炸、开火
void StartFiring(); void StopFiring();
// 开始开火 // 停止开火 // 开火, 纯虚函数
virtual void Fire()=0;
Enermy类
描述: 由FighterPlane类派生的敌机类主要成员函数:
void Update(); void Fire();
// 刷新,增加检测是否可见、自动开火
// 开火
Enermy_Tom类
描述: 由Enermy类派生的敌机类,会自动改变运动方向
Enermy_Jack类描述: 由Enermy类派生的敌机类, 斜向发生子弹, 成群结队出现 Enermy_Mimi类描述: 由Enermy类派生的敌机类, 横着发射子弹,运动速度快
Player类描述: 玩家战机类
主要数据成员:
double speed; int KillEnermy, Score; 主要成员函数: void Update();
void ChangeWeapon();
// 速度
// 杀敌数目,得分 // 刷新,不让超出边界死了自动重设数据 // 换武器
void Action(ACTION NewAction); // 动作指令
(3)使用说明
操作: 按方向键飞行,按Tab键换武器,按空格键开火
篇二:游戏开发基础篇
零、基础篇的目的
有了一个目标之后,往往人们比较有信心和动力。
所以,我重新修改了一下教
程的安排,在这儿插入了“零”篇。
在基础篇里,我们将逐步学习关于游戏制作的基本知识,为后续的开发工作奠
定基础。
那么,在基础篇结束的时候,我们可以弄出个什么东西呢?我们看图:这是我写的一个演示程序的截图,暂时定为我们基础篇教程的目标。
该演示程序包含了一些基本要素,如: Windows 程序的基本框架、DirectDraw 的基本使用方法、精灵的使用和一些简单的关于 DirectInput 的东西。
但是,这个程序没有对障碍和遮挡进行处理,也就是说,人物会走到任何地方去。
因
为一些关于地图方面的知识,我将会放到提高篇里。
注:
本范例在以下环境中通过:VC6.0、DirectX 7.0/8.1 SDK、Win201X/WinXP
附件:
说明 [本范例演示程序下载]
一、游戏的动画原理
其实现在网上关于游戏编程的技术文章越来越多了,但是我发现关于最基本的
了解游戏的文章还是比较少的。
大多数文章是以 DirectX 作为开始教学起始的,因此,我觉得花点时间写下这篇文章还是值得的。
今天,我就开始介绍一些关
于游戏编程的基础东西,以便大家能够真正的开始了解游戏,从而能够很快的
转入游戏开发。
由于是针对新手的,如果您已经转入程序编写阶段,您完全可
以抛开了。
我将采用一种不同于网络上现有的教学方法,来讲一下游戏程序开
发的奥秘:)
大家可以看到游戏中主角连贯的出招动作、华丽的场景、震撼的战斗效果,这
一切似乎很难让人想象程序是怎么实现的。
也许您在上课无聊的时候尝试过在
课本的角上画上几个人物动作的分解图,然后一遍又一遍地翻着它,觉得很好玩。
其实您已经在无形之中接触了游戏动画的基本原理。
其实游戏动画的步骤
可以想象成这样:
手中拿着两张纸,把一张放在后面。
其实这个就是 DirectDraw 的两个成员。
我们先把一个分解动作画在背后的那张纸上。
那么,我们当前看到的就是一个“白屏”而已。
然后,我们“快速地”将后面的那张纸拿到前面来。
呵呵,你
现在看到的是第一个分解动作了吧!那么,怎么“快速地”呢?不要紧张,这
些问题都被 DirectDraw 完美的解决了,别急,今后会详细的讲解的。
现在,
当前的两张纸已经交换了,而且也看到了动作(一个静态的而已),那么后面
的“白纸”怎么办呢?我们先拿“橡皮”将纸擦一遍,然后,将第二个分解图
画上,
接下来?呵呵,自己干吧,应该明白了吧。
经过再次的交换,我们已经在屏幕
上看到第二个动作了。
我们继续把后面的纸擦干净,再画第三个动作,再交换,继续下去......由于我们的“快速地”动作相当快,所以感觉不到有任何问题。
或许有人会问:为什么不直接在第一张纸上进行“擦->画->擦->画”的动作呢?这个就是为了我们平常所说的“闪屏”问题而进行的解决方案。
由于直接进行
动作,速度相对较慢,有时用户会在屏幕上看到一闪一闪的现象。
我们用“两
张纸”的话,就完美的解决了这个问题。
(啊?还闪屏?呵呵,你小子把显示
器坏了的问题都怪我啊·#¥%??*)
二、基于动画原理的提高
既然上面的游戏的“内幕”已经掌握,那么我们来看看在上一节中涉及的“武器”和基本知识。
或许本篇所涉及的东西是基于理论的多数,但是,这将为理
解在后面即将写的程序部分会打下很好的基础的。
所以咬咬牙,看完吧!(啊?没有牙了啊?大家应该鼓掌吧!连牙都没有长齐的“3、4点种的太阳”都开始
学习了,你们还有理由吗?恩?是大娘啊?那更应该值得学习了!跑题:)
首先要介绍的第一位主角是 Windows 编程中的必要元素: RECT 。
是英语rectangle 的简写,意思是矩形。
它有什么用呢?我们在上面不是讲到了动作
的分解动作吗?我们看右图:
这个图就是一个简单的行走动作分解图,复杂的可能有10帧左右哦:)那么怎么在程序中实现自动在纸上画出正确的图片呢?(其实我一直在考虑是否将这
部分内容加上,因为实在太基本了。
但是每个人都这么想的话,基础的谁来教呢?算了,让别人的口水淹死我吧!)假设您已经有点 C++ 语言的基础了。
这个教我教的话,说不过去吧:)请看下面的代码:
#define m_Width32// 每个动作的宽度
#define m_Height 48// 每个动作的高度
void ShowThePic()
{
static RECT rect;// 矩形对象,用于精确定位所要的当前动作 static int CurrentFrame = 0; // 当前动作的编号
static int Direction = 0; // 当前的方向
rect.top = Direction; rect.bottom = (Direction+1)*m_Height; // 对当前矩形的大小定义,数学的问题哦
rect.left = CurrentFrame; rect.right = (CurrentFrame+1)*m_Width; // 根据英文的意思也可以知道在给谁赋值
BltPicToScreen();// 一个伪函数,作用是将当前矩形内的图形复制到屏
幕上。
CurrentFrame++;
if( CurrrentFrame==3 )
CurrentFrame = 0; // 这个步骤能够保证动作的循环
}
不知道这么个函数你能否看懂。
之所以要采用 static 静态变量,是因为我们这个函数程序要循环运行。
如果直接写个 int 的话,每次执行都会被赋回原值0,那么图片就不会变了。
上面这段代码其实并不是那么理想。
因为程序自己在那儿一个劲地运行,完全没有我们控制的份儿。
别急!来看下面这份修改过的伪代码:
#define m_Width32// 每个动作的宽度
#define m_Height 48// 每个动作的高度
void ShowThePic()
{
static RECT rect; // 矩形对象,用于精确定位所要的当前动作
static int CurrentFrame = 0; // 当前动作的编号
static int Direction = 0; // 当前的方向
rect.top = Direction; rect.bottom = (Direction+1)*m_Height; //对当前
矩形的大小定义,数学的问题哦
rect.left = CurrentFrame; rect.right = (CurrentFrame+1)*m_Width; //根据英文的意思也可以知道在给谁赋值
BltPicToScreen(); // 一个伪函数,作用是将当前矩形内的图形复制到屏幕上。
if( LeftArrowDown() ) // 如果左箭头被按下
{
Direction = 1; // 赋值方向为 1
CurrentFrame++;
}
if( RightArrowDown() )
{
Direction = 3;
CurrentFrame++;
}
if( UpArrowDown() )
{
Direction = 2;
CurrentFrame++;
}
if( DownArrowDown() )
{
Direction = 0;
CurrentFrame++;
}
if(CurrrentFrame==3)
CurrentFrame = 0; // 这个步骤能够保证动作的循环
}
经过这么一修改,问题再次得到解决。
上面的代码就能够响应用户的操作了。
当然,你这么直接在程序里输入这些代码是不行的:)因为是“伪代码”。
你
得根据实际情况,自己相应地做些修改,才能使程序运行!
(题外话:不晓得这么进行教学,你是否能够一点一点的积累到知识?这种教
程是不是合适?请到论坛内发表意见,我真的很想能够摸索出大家接受的方法,有利教学)
欢迎回到教程中来!有人或许会问,为什么这么麻烦要把图形放在这么个图片
里头,不一个动作一个图啊?呵呵,想想,那要多少图片啊,很难于管理的。
况且,这样并不能避免使用这种常用手法,因为 RECT 已经是一个成员。
游戏
里不能不用他的!
哇,口水干了。
(其实是手累了:)我们下回再见吧。
下回预告:
少年侦探柯南为了查清楚事情的真相,他......(?还真的预告啊?)
不好意思,习惯性用语了:)在下回,我会讲一下,如何将今天的代码整合到
程序中去。
三、游戏的基石: 窗口的建立
Welcome back!很高兴再次与你相遇教程。
废话不多说,继续。
上次的代码片段,说实在,拿在手里没有用。
为啥?因为不能运行的啊:)我
们这次就按照上次的安排,讲如何将显示图片的代码片段整合到程序中,让它
能够具体的体现出来。
我将在这儿讨论 Windows 编程,而不是 MFC 。
关于 MFC 和 Windows 的不同
和各自的优点,我们不多涉及了。
MFC 就是微软的一个封装开发库,极大程度的降低了 Windows 开发的复杂。
但是,我们还是继续 Windows 编程,呵呵。
我们来看,一个基本的 Windows 程序是一个窗口对吧:)我们所玩的游戏,其实也是有窗口的,只不过是看不见的,而且被 DirectDraw 掩盖了而已。
那么,如何创建一个窗口呢?我们来看:
BOOL Init(HINSTANCE hInst, int nCmdShow)
{
HWND hWnd;// 窗口的句柄,就是一个储存窗口的对象 WNDCLASS WndClass; // 用于注册窗口的对象
WndClass.style = CS_HREDRAW | CS_VREDRAW; // 定义窗口的类型
WndClass.lpfnWndProc = WinProc;// 指定了窗口消息的处理函数 ** 关键!WndClass.cbClsExtra = 0; // 没有特定意义
WndClass.cbWndExtra = 0; // 没有特定意义
WndClass.hInstance = hInst; // 窗口的实例
WndClass.hIcon = LoadIcon(hInst, IDI_APPLICATION); // 指定窗口的图标
WndClass.hCursor = LoadCursor(hInst, IDC_ARROW);// 指定程序的指针
WndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); // 指定背景色为黑色
WndClass.lpszMenuName = NULL; // 指定菜单为无,游戏不需要
WndClass.lpszClassName = "GDIM_GAME_ENGINE"; //这个程序注册的名字
RegisterClass(&WndClass);// 注册程序
hWnd = CreateWindowEx(WS_EX_TOPMOST, "GDIM_GAME_ENGINE", "GDIM_GAME", WS_POPUP, 112, 84, SCREEN_WIDTH, SCREEN_HEIGHT, NULL, NULL, hInst, NULL);
// 这段代码就是实现了一个窗口的创建
// 我们可以通过来检测是否创建成功。
如果失败将返回一个 FALSE 的值。
if(!hWnd) return FALSE;
ShowWindow(hWnd, nCmdShow); // 显示窗口
UpdateWindow(hWnd); // 更新窗口
}
好了,到这儿呢,我们就成功的创建了一个窗口。
我们回头看我注了“**”的
地方,关于这个函数,我们得写个同名函数来处理 Windows 的消息。
呵呵,不好意思,再看一个函数:
BOOL bActive = FALSE; // 用于判断程序是否运行的变量
long PASCAL WinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch(message)
{
case WM_ACTIVATE:
bActive = TRUE;// 当程序被激活时,赋值 TRUE
break;
case WM_SETCURSOR:
SetCursor(NULL); // 设定鼠标为不显示
return TRUE;
篇三:游戏设计参考书
书名:大型多人在线游戏开发MASSIVELY MULTIPLAYERGAME
DEVELOPMENT
作者:亚历山大
译者:史晓明
说明:本书是一本系统介绍MMP(大型多人,Massively Multiplayer)在线游戏
开发知识的文集,汇集业内最优秀的游戏开发人员智慧的精华。
本书不仅从MMP游戏的角度对客户端技术进行了讨论,还深入剖析了MMP游戏设计、架构、服务端开发、数据库技术以及MMP游戏核心系统等特定于MMP游戏的知识。
对
于广大MMP游戏开发人员来说,本书是不可多得的参考资料。
书名:C++游戏编程
作者:(美)罗比斯李鹏贾传俊
说明:本书从游戏开发的角度出发,把C++应用到游戏软件领域。
介绍一些C++的实战经验,用常规的C++技术解决游戏开发者经常遇到的问题。
重点讲述已
经在实际的项目中应用的技术,而不是大段地罗列代码。
本书是游戏开发经典
丛书系列之一,适合游戏开发人员、业余游戏软件开发爱好者和有关游戏软件
开发培训班使用,也可以人秋大专院校相关专业的参考书。
书名:Visual Basic 6.0/.NET游戏开发实例
作者:姜波宁峰
说明:本书是一本面向广大编程爱好者的游戏设计类图书。
本书最大的特色在
于以游戏开发案例为主要的内容。
书中涉及到的游戏都是大家耳熟能详的。
比
如推箱子,俄罗斯方块,五子棋,坦克大战等。
为了使您紧跟技术进步的潮流,我们还为您介绍了目前非常流行的智能设备编辑。
我们不仅做到了通俗易懂,
图文并茂。
本书适用于游戏编程爱好者,程序设计人员和Visual Basic的初学者。
也可作为培训机构的培训教材。
书名:盛大游戏原画设计精选
作者:上海盛大新华网络发展有限公司南京艺术
说明:本书介绍如何品味游戏的角色设计和原画创作,从游戏脚本到初级造型——体会《神迹》,充分理解脚本意图,提炼与夸张《神迹》的场景,塑造个
性(上)——走进《梦幻国度》,自身比例关系之Q版造型,《梦幻国度》的
场景,塑造个性(下)——走进《英雄年代》,自身比例关系之传统造型,
《英雄年代》的场景,关于道具——解析《三国豪侠传》,营造视觉效果——
感受《传奇世界》……
书名:3D游戏卷1:实时渲染与软件技术
作者:Alan Watt,Fabio Policarpo
译者:沈一帆陈文斌朱怡波
说明:综合介绍当前流行的三维游戏开发技术,主要内容包括:建模及基础数学,经典的三维图形学,实时渲染,对象的控制,二维技术,软件技术等。
书
中的所有内容都是围绕一个功能强大的游戏开发引擎,即Fly3D来写的。
其目
的是使你可以编写源代码来实现自己的想法,或是通过编写或修改插件来对现
有的实例进行试验,甚至可以开发属于自己的游戏。
随书光盘给出了完整的
Fly 3D SDK及一些演示片段和图片。
书名:3D游戏:卷2 动画与高级实时渲染技术
作者:Alan Watt,Fabio Policarpo
译者:沈一帆陈文斌朱怡波
说明:本书从实践的角度出发,详细介绍3D游戏开发的高级技术,并具体描述了一个游戏引擎的构建过程。
全书着重讨论三个主题:游戏开发的一般过程
(构造过程、实时处理过程和软件设计);实时渲染过程;角色动画。
所有主
题均围绕一个具体的游戏开发系统Fly3D SDK 2.0(包含在光盘中)加以介绍。
本书旨在为当今的三维游戏引擎技术提供一个综合的解决方案,将游戏理论技
术与具体引擎代码分析相结合,使读者尽快地进入开发者角色,了解整个游戏
开发过程和客户(游戏设计者)的需求,并初步具备游戏引擎开发能力。
本书
适合作为高等院校相关专业的教学参考书,同时可供相关技术人员和游戏开发
人员阅读。
书名:Visual C++角色扮演游戏程序设计
作者:坂本千寻
译者:博硕文化
说明:本书适合已有VC++使用经验的读者,书中共分十个章节,从最基本的RPG的角色扮演游戏设计要素开始介绍,再来教您Windows窗口程序设计与RPG 游戏配合的基本知识、图形文件的显示与全盛地图与人物相关的坐标处理、人
物角色移动的思维与逻辑、战斗的设计与程序判断、RPG里所产生的事件的处理、角色参数的编辑设定和程序设计重点、音效加入与故事的整合等,每一章
节都有完整高水准的程序实例配合解说,对想要学习游戏制作的读者提供了极
佳的参考。
书名:Visual C++冒险游戏程序设计
作者:坂本千寻
译者:博硕文化
说明:本书针对冒险型游戏(AVG),从游戏策划与设计开始介绍,然后再以
VC++为实际开发工具,完整详细地指导读者开发一套高水准的冒险型游戏。
书中着重的不是华丽的演出或新技术的说明,而是务实且仔细地审视冒险游戏最
基本的本质思维与逻辑部分。
再者,书中许多程序的观念与技巧内容也适用于
游戏以外的程序设计,这些技术都是作者经验累积的成果,不是一般入门书会
提供的,书中许多内容与观念都是想要进阶与提升技术的读者所需要的,不仅
适用于想要开发冒险型游戏的读者,也适合想要以“游戏”为题材来学习程序
设计的读者。
书名:C++游戏编程
作者:(美)Noel Llopis
译者:李鹏/ 贾传俊
说明:本书从游戏开发的角度出发,把C++应用到游戏软件领域。
介绍一些C++的实战经验,用常规的C++技术解决游戏开发者经常遇到的问题。
重点讲述已
经在实际的项目中应用的技术,而不是大段地罗列代码。
本书是游戏开发经典丛书系列之一,适合游戏开发人员、业余游戏软件开发爱
好者和有关游戏软件开发培训班使用,也可以人秋大专院校相关专业的参考书。
名:Cg教程:可编程实时图形权威指南
译者:洪伟刘亚妮李骑丁莲珍
说明:Cg是最早的为可编程图形硬件设计的高级编程语言,本书教你如何编写Cg程序。
本书共10章,第1章简要介绍Cg语言。
随后的每一章分别介绍Cg中的一个概念和技术的说明,包括最简单的Cg程序,参数、纹理和表达式,如何进行顶点变换,如何用Cg实现光照模型,如何用Cg顶点程序实现模型的动画和变换,
如何实现环境贴图,如何实现凹凸贴图,雾、卡通光照、投影聚光、阴影贴图
和复合技术,目前可用的Cg的顶点和片断的简要描述(Profile)等内容。
书名:网络游戏开发
译者:姚晓光恽爽王鑫
说明:本书出自两位世界级资深网络游戏专家之手,全面介绍了如何构架、发
行和维护网络游戏,专业而又详尽地讲述了网络游戏制作、发行及运营中的一
些实际细节。
书中汇集了网络游戏开发历程中的经验与教训。
对于从事网络游戏开发的业内人土,特别是管理人员,本书是不可多得的佳作。
本书同样适合于对网络游戏开发有兴趣的玩家和读者。
网络游戏已经出现———不再是未来的梦想!如果你是网络游戏从业人士。
就绝对不能错过本书!
“本书汇集了许多大型网络游戏开发的优秀经验,采用书中的这些建议可以为
公司节省数百万美元的成本” Gordon Walton,Maxis公司副总裁,《模拟人
生在线》执行制作人。
书名:Windows游戏编程大师技巧(第二版)
原名:Tricks of the Windows Game Programming Gurus,2nd
说明:本书是著名游戏程序设计类书籍作者André LaMothe的两卷本《Windows 游戏编程大师技巧》中的第一卷的第二版。
和作者撰写的其他畅销书一样,在
书中随处可见许多有趣但又有一定难度的源程序。
作者循循善诱地从程序设计
的角度介绍了在Windows环境下进行游戏开发所需的全部知识,包括Win32编
程以及DirectX中所有主要组件(包括DirectDraw、DirectSound、
DirectInput和DirectMusic)。
书中还用单独的章节详细讲授了2D图形学和
光栅化技术、游戏算法、多线程编程、文本游戏和解析、人工智能(包括模糊
逻辑、神经网络和遗传算法)、物理建模(完全碰撞反应、动量传递和正反向
运动学)及实时模拟等游戏程序开发中的关键技术。
书名:Visual C++网络游戏建模与实现
作者:苏羽王媛媛
说明:本书讲述如何使用UML进行棋牌类网络游戏建模、如何用Visual C++编
程实现该游戏,书中集作者近年来从事网络游戏开发之经验。
全书共分14章,
1~6章介绍网络通信编程,是网络游戏设计的基础;7~12章介绍如何用UML对
网络游戏进行可视化建模;第13章介绍如何用Visual C++编写有一定难度的
客户端程序;第14章介绍如何使用数据库管理游戏数据。
由于本书重点在于介绍网络游戏整体框架的建模和编程,所以在讲解时只给出了编程思想和实现的
过程,并没有提供全部实现过程的源程序,但提供了关键的实现代码和设计类
框图。
使你对网络游戏编程有较深入的理解。
本书适用于软件工程师、网络程
序员、大学计算机软件专业和网络专业的学生,以及从事网络游戏开发的程序
设计人员。
书名:Visual C++游戏设计(第二版)
作者:荣钦科技
说明:本书用浅显生动的语言、经典的案例带领您进入游戏设计的美妙世界,
帮助您实现开发游戏的梦想。
书中参照开发大型游戏《仙剑奇侠传》所需要的
技术,如:镂空动画、半透明动画、碰撞检测、斜角卷动的地图、人工智能、
3D动画、3D音效等,对游戏的设计和开发过程进行了系统而又详细的介绍。
使您能清楚地了解游戏设计过程中的各种知识,包括Visual C++的基本操作、游
戏画面的坐标系统、规划游戏的主要架构,以及使用DirectX来设计3D游戏等。
本书理论与实例并重,讲述了多种游戏设计的思想和技巧,适合作为游戏程序
设计爱好者和新鲜人士阅读,也可供多媒体开发人员参考使用。
书名:PC游戏编程(网络游戏篇)
译者:CG实验室/王鑫/罗金海/赵千里
说明:本书的作者都是第一线的网络游戏开发人员,书中的所有内容都整理自
完整的网络游戏项目,是实践经验的总结。
第二章到第十四章的内容,基本
是从一个多人在线冒险型网络游戏项目中整理而来,第十五章则整理于一个即
时战略游戏项目。
在内容的讲述中尽量避免了和具体游戏内容的关联,以便更
具有通用性。
本书的目标是帮助读者掌握常见类型的网络游戏的开发环境、流。