×

VB.Net游戏编程入门经典(8) VB.Net游戏编程入门经典(8) VB.Net游戏编程入门经典(8) VB.Net游戏编程入门经典(8)

Game设计

VB.Net游戏编程入门经典(8)

Kalet Kalet 发表于2009-03-20 浏览404 评论0
1.8 游戏项目开发在一个商业化的游戏项目中,开发工作始于完整的游戏开发方案(并非我们这里的简单术语描述),并以项目或基本规范说明书的形式延续下去。尽管开发方案是以自然语言形成的——以便于每个人都能理解它、批准它(包括游戏开发负责人,他可以批准或否决该项目的预算),但是项目规范说明书必须包含编程细节,它将在整个编码期间指导开发团队工作。这里,我们的目的不是要说明哪些内容应该包含在项目规范说明书里(它主要依赖于开发团队所使用的研发方法),并且这里我们也没有必要创建一个非常完整的项目,因为它不是这本书的重点。但是,如果不创建任何项目就开始编码显然是不明智的。因此,我们将快速浏览一下项目...
VB.Net游戏编程入门经典(7)

Game设计

VB.Net游戏编程入门经典(7)

Kalet Kalet 发表于2009-03-20 浏览294 评论0
1.7 游戏开发方案开发任何项目前,首先要确定该项目的范围和特征。 注意VB.Net游戏编程入门经典(7)创建游戏开发方案的主要目的就是确定明确的目标,要求所有与该游戏有关的开发人员在任何方面都完全取得一致意见。我们总结了该项目的范围和关于期望特征的清单,具体如下:●      该游戏是一个智力型游戏,称为.Nettrix。●      游戏的目标是控制不断落下的方块并努力形成完整的水平线,但不允许方块堆积到游戏区的最高点。●  ...

Game设计

VB.Net游戏编程入门经典(6)

Kalet Kalet 发表于2009-03-20 浏览288 评论0
1.6 把算法扩展到三维图形情况下在Internet上与游戏有关的网站上有许多关于先进的三维图形冲突检测算法的描述。我们并不过分强调一定要在冲突检测算法中加上z轴,只需在前面的算法中简单地进行一些扩展即可。下面的这段代码描述了一个针对类似立方体的对象的邻近性检测:VB.Net游戏编程入门经典(6)DimDxAsSingle=Math.Abs(R2.X-R1.X)DimDyAsSingle=Math.Abs(R2.Y-R1.Y)DimDzAsSingle=Math.Abs(R2.Z-R1.Z)IfDx>R1.ExtentX+R...
VB.Net游戏编程入门经典(5) VB.Net游戏编程入门经典(5) VB.Net游戏编程入门经典(5) VB.Net游戏编程入门经典(5)

Game设计

VB.Net游戏编程入门经典(5)

Kalet Kalet 发表于2009-03-20 浏览341 评论0
1.5 优化计算量随着游戏中对象个数的增长,执行全部必需的计算工作将变得异常困难,因此有必要寻找一种加速计算的方法。对计算本身而言,可以进行简化的程度已经非常受限,因此就需要把计算量尽量保持在较低层次。首先需要考虑的方法是仅仅对当前屏幕上的那些对象进行计算。如果确实需要对屏幕外的对象进行计算的话,那就对它们尽量少做一些计算(相对于当前屏幕上的对象而言)。VB.Net游戏编程入门经典(5)接下来较为理性的做法是,努力确定哪些对象是较为邻近的,然后只对这些对象进行冲突计算,使用“分区方法”(zoningmethod)可以做到这一点。一种简单的方法是,把一个较大的区域分解为几个连续的较...
VB.Net游戏编程入门经典(4)

Game设计

VB.Net游戏编程入门经典(4)

Kalet Kalet 发表于2009-03-20 浏览306 评论0
1.4 冲突检测正如本章开头所阐述的,游戏开发中最重要的问题之一就是冲突检测算法。一些游戏之所以能够占有巨大的市场,正是因为它们的冲突检测例程运行较快,从而为其他的图形操作例程留出了充裕的时间,进而使得程序能够相应地进行更多的游戏操作。我们可以想像一下不具有冲突检测机制的游戏将会是什么样子:弹球游戏中,球不能进行弹跳;三维迷宫游戏中,游戏角色直接穿墙而过并且子弹不能击中敌人;探险游戏中,光标不知道自己是否在屏幕上的某个特定目标上。可见,如果没有冲突检测,游戏就将会失去任何实际的或可预知的感知能力。VB.Net游戏编程入门经典(4)冲突检测是一个常见的研究课题,在精度和性能之间取得某...
VB.Net游戏编程入门经典(3)

Game设计

VB.Net游戏编程入门经典(3)

Kalet Kalet 发表于2009-03-20 浏览331 评论0
1.3 创建梯度在前面的章节中,我们给出了一些通过SolidBrush对象创建红色实心长方形的代码示例。GDI+允许程序员使用特殊的梯度画笔来创建线性和路径梯度以产生丰富的色彩,从而避免了程序只是使用单调色彩的情形,梯度画笔可以带来非常有趣的效果。GDI+具有创建水平的、垂直的和倾斜的线性梯度的特点。可以创建色彩变化均一(默认行为)的线性梯度,也可以使用梯度画笔的Blend属性创建色彩变化不均一的梯度。VB.Net游戏编程入门经典(3)下面的示例代码展示了如何创建色彩变化均一的梯度画笔,并使用该画笔从左上角到右下角绘制了一个色彩从红色变换到蓝色的长方形。DimGraphasG...
VB.Net游戏编程入门经典(2)

Game设计

VB.Net游戏编程入门经典(2)

Kalet Kalet 发表于2009-03-20 浏览318 评论0
1.2 使用Graphics对象执行图形操作使用GDI+的第一步总是先创建一个Graphics对象,它有助于图形操作的执行。Graphics类提供了在特定的设备上下文中进行画图的方法。有四种方法可以获得适当的Graphics对象:从使用Paint事件接收到的e参数获得、从窗口句柄中获得、从图像中获得,或者从指向设备上下文的特定句柄中获得。这些不同的方法实际上没有本质的区别,我们可以根据程序需要使用其中任何一种方法。例如,如果在窗体的Paint事件中编写画图函数的话,则可以使用e参数获得Graphics对象。但是,如果希望编写一个类实现在窗体上画图的话,则可能需要使用窗口句柄来创建G...
VB.Net游戏编程入门经典(1) VB.Net游戏编程入门经典(1) VB.Net游戏编程入门经典(1) VB.Net游戏编程入门经典(1)

Game设计

VB.Net游戏编程入门经典(1)

Kalet Kalet 发表于2009-03-20 浏览308 评论0
本章我们将介绍GDI+的基本概念、Windows系统下本地图形操作的扩展库,并讨论游戏开发中的最重要方面之一:冲突检测算法(collisiondetectionalgorithm)。尽管游戏开发者使用GDI+函数在屏幕上绘制图像,然而图像之间的交互作用却是由冲突检测算法决定的。这将使得程序能够判断何时一个图像位于另一个图像之上,并采取合适的操作。比如:当一个球撞击一面墙时,球将产生弹跳行为。为了达到这些目标并阐明这些概念,我们将演示如何创建一个名为.Nettix的游戏。学习一门新的编程语言时,一般都会先编写“HelloWorld”程序。学习编程游戏时,Tetris是首先要尝试编写的最佳游...

Game设计

GDI+编程的10个基本技巧

Kalet Kalet 发表于2009-03-20 浏览261 评论0
创建绘图表面创建绘图表面有两种常用的方法。下面设法得到PictureBox的绘图表面。GDI+编程的10个基本技巧privatevoidForm1_Load(objectsender,System.EventArgse){//得到pictureBox1的绘图表面Graphicsg=this.pictureBox1.CreateGraphics();}privatevoidpictureBox1_Paint(objectsender,System.Windows.Forms.PaintEventArgse){//得到pictureBox1的绘图表面G...
【翻译】GDI+系列教程(三):GDI+中的坐标系(VB.NET)

Game设计

【翻译】GDI+系列教程(三):GDI+中的坐标系(VB.NET)

Kalet Kalet 发表于2009-03-20 浏览327 评论0
在大部分的图像系统中,元素的位置都是通过X,Y坐标表示的。一对坐标有两个数字组成,他们分别代表从左到右和从上到下的距离。例如,我们可以使用下面的语句来绘制一条直线: g.DrawLine(Pens.Black,0,0,100,200);后四个参数就是坐标,代表从0,0到100,200绘制两点之间绘制直线,结果如图1:【翻译】GDI+系列教程(三):GDI+中的坐标系(VB.NET)默认情况下,GDI+中使用的坐标是指像素点的位置,不过GDI+是一个独立于绘图系统的解决方案。也就是说,你可以直接使用像素点或真实世界中的英寸、毫米等单位。和整数说再见许多图像系统,尤其是一些老的Windo...