随笔 - 386  文章 - 23 评论 - 15 阅读 - 16万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

10 2010 档案
解决SupeSite聚合Discuz提示论坛路径设置错误
摘要:解决SupeSite聚合Discuz提示论坛路径设置错误 在SupeSite的文件路径下找到admin文件夹,打开admin_bbs.php文件 查找到下面一行代码: $txt = sreadfile($_SC['bbsurl'].'/viewthread.php', 'r', 1); 修改为如下: $txt = sreadfile($_POST['bbsurl'].'/index.php',... 阅读全文
posted @ 2010-10-26 10:10 AlexCheng 阅读(233) 评论(0) 推荐(0) 编辑
C#获取本周,本月,本年,本季度等时间
摘要:DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d"))); //本周周一 DateTime endWeek = startWeek.AddDays(6); //本周周日 DateTime startMonth ... 阅读全文
posted @ 2010-10-25 10:18 AlexCheng 阅读(641) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——编写自定义内容导入器
摘要:2.14 编写自定义内容导入器 问题 你想通过内容管道将一个自定义格式的文件导入到XNA项目中。因为你的文件的扩展名和/或结构与XNA支持的文件格式不同,默认XNA内容管道无法知道如何导入并处理你的文件。 解决方案 你需要编写一个自定义内容导入器,它可以从磁盘中读取文件,将有用的数据格式化为一个对象,做好被内容处理器处理的准备。因此,这个教程假设你知道如何创建自己的内容处理器,可以参见教程... 阅读全文
posted @ 2010-10-23 10:19 AlexCheng 阅读(190) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——创建一个模糊(Blur),(发光)Glow Post-Processing Effect
摘要:2.13 创建一个模糊(Blur),(发光)Glow Post-Processing Effect 问题 你想在最终图像上添加模糊效果,或给场景中的物体添加光泽。 解决方案 这两个effect都是post-processing effect。可参见前面的教程学习如何建立一个post-processing框架。 你可以通过计算每个像素和一些周围像素的颜色值平均值并用这些值替换像素的原始颜色... 阅读全文
posted @ 2010-10-23 10:14 AlexCheng 阅读(491) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——创建一个Post-Processing Framework
摘要:2.12 创建一个Post-Processing Framework 问题 你想在最终的图像上添加一个2D post-processing effect,诸如模糊,扭曲,摇晃,变焦,边缘检测等。 解决方案 首先将2D或3D场景绘制到屏幕,在Draw过程的最后,在后备缓冲的内容还没有发送到屏幕前,你需要将这个后备缓冲的内容存储在一张2D图像中,解释请见教程3-8。 然后,将这张2D图像绘制... 阅读全文
posted @ 2010-10-23 10:04 AlexCheng 阅读(440) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——创建一个ROAM地形
摘要:2.11 创建一个ROAM地形 问题 虽然你可以使用前一个教程的四叉树技术让XNA只绘制在相机视野中的地形小块,这个方法还不是最好的。那些远离相机的方块仍会以离相机很近的方块的同样细节进行绘制,而有些三角形在屏幕上的绘制大小不超过一个像素。 因此,你想使用Lecvel-Of-Detail(LOD)方法让远离相机的方块以低细节绘制,当使用不同的细节层次绘制地形时,你会发现在边界上会出现破裂。 ... 阅读全文
posted @ 2010-10-23 09:56 AlexCheng 阅读(345) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——使用四叉树隐藏不在视野中的部分网格
摘要:2.10 使用四叉树隐藏不在视野中的部分网格 问题 地形绘制是游戏中的一个重要组成部分。但是,使用教程5-8中的方法,当绘制一个很大的地形时会导致帧数下降。 解决方案 你可以使用一个四叉树简化绘制大地形的工作流程,四叉树类似于八叉树,因为你要将地形分割成更小的方块直到这些方块不大于指定的大小。 这个处理过程如图2-13左图所示。一个16 × 16大小的方块被分割成四个方块,每个小方块再被... 阅读全文
posted @ 2010-10-23 09:42 AlexCheng 阅读(404) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——只绘制在相机视野中的物体:八叉树
摘要:2.9 只绘制在相机视野中的物体:八叉树 问题 如果你使用教程2-5的方法检查相机视野中的每个模型,那么由于网格太多会极大地拖慢程序。你需要一个可扩展的方法决定场景的哪些部分需要被绘制。 解决方案 定义一个很大的立方体包含整个3D世界和所有模型。如果这个立方体包含太多模型,那么把这个立方体分割成小的子立方体。如果这些小的子立方体包含太多模型,那么再把这些立方体分割成更小的子立方体,直到立方... 阅读全文
posted @ 2010-10-23 09:35 AlexCheng 阅读(300) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——天空盒
摘要:2.8 天空盒 问题 你想在游戏中中添加一个场景,而不是单一颜色的背景。 解决方案 你用不着将物体充满场景的每个部分,只需简单地绘制一个很大的立方体,在立方体内部的六个面上贴上风景或房子内部的纹理,然后把相机放在立方体内部。 工作原理 有几种方法可以将一个天空盒放置在场景中,最简单的方法是导入一个模型文件,这个文件拥有自己的纹理和effect。如果你想获得完全控制权,你也可以自己定义一... 阅读全文
posted @ 2010-10-23 09:28 AlexCheng 阅读(645) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——创建一个相机飞入效果
摘要:2.7 创建一个相机飞入效果 问题 你想平滑地将相机从一个位置移动到另一个位置,当然你也让相机的观察目标也能平滑地移动。 具体的的说,你想要一个功能让相机能沿着一条平滑的曲线从开始位置到结束位置。这个移动过程应该是平滑的,在过程结束后,你想让相机回到常规状态,将它作为一个第一人称相机。 解决方案 这个过程需要一个时间变量,当相机在开始位置时这个变量为0,到达结束位置时为1。 通过指定第... 阅读全文
posted @ 2010-10-23 09:26 AlexCheng 阅读(424) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——检测相机与模型,墙或地形的碰撞
摘要:2.6 检测相机与模型,墙或地形的碰撞 问题 你想检测相机是否已近靠近物体防止它穿过这个物体。 解决方案 要进行相机和模型的碰撞检测,你应将相机表示为一个包围球,使用这个包围球检查与模型的包围球或包围盒的碰撞。对应用户自定义的网格,诸如墙或地形,你必须首先找到墙或地形上的三角形任意位置的精确3D坐标。 工作原理 相机碰撞可分为与模型的碰撞和与已知顶点高度的三角形网格的碰撞。 相机与模... 阅读全文
posted @ 2010-10-23 09:17 AlexCheng 阅读(374) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——检查对象是否可见
摘要:2.5 检查对象是否可见 问题 你想检查对象是否可见来决定是否要绘制这个物体。 解决方案 XNA拥有BoundingFrustum类支持这个功能,你可以通过传递View和Projection矩阵创建一个BoundingFrustum类,然后就可以很容易地在这个类中检查对象是否包含在视锥体中。 工作原理 视锥体定义了相机可以看到的范围,类似于削去顶部的金字塔,如图2-4所示,它的边是由视... 阅读全文
posted @ 2010-10-18 21:32 AlexCheng 阅读(423) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——创建一个第一人称射击游戏(FPS)的相机:Quake风格的相机
摘要:2.3 创建一个第一人称射击游戏(FPS)的相机:Quake风格的相机 问题 你想创建一个类似于第一人称射击游戏的相机。你想使用鼠标旋转相机,使用键盘移动相机。 解决方案 首先使用教程2-2中的方法,只要检测到用户输入就更新相机的位置和旋转。相机的旋转矩阵会根据鼠标的移动进行改变,按Up或Down键让相机前后移动,按Left或Right键左右移动。 工作原理 通常,在FPS游戏中,玩家可以自由地... 阅读全文
posted @ 2010-10-18 21:17 AlexCheng 阅读(425) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——创建一个Freelancer风格的相机:使用四元数的3D旋转
摘要:2.4 创建一个Freelancer风格的相机:使用四元数的3D旋转 问题 译者注:《Freelancer》应该是指Digital Anvil制作,微软发行的游戏,中文译名《自由枪骑兵》,好像曾获2003年E3大展最佳PC游戏奖,是一个太空冒险游戏。 你想创建一个可以朝任意方向旋转的相机,例如,一个空战游戏。你需要能绕着三根轴旋转才能实现这点,但是因为万向节锁(Gimbal lock)(一... 阅读全文
posted @ 2010-10-18 21:15 AlexCheng 阅读(414) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——指定相机的目标
摘要:2.2 指定相机的目标 问题 当定义View矩阵时,你需要指定Target向量作为参数,这个向量设置了相机的旋转。 解决方案 当选转相机时,相机的位置会保持不变。这意味着旋转取决于相机的Target点和Up向量的变化。你可以通过使用 (0,0,-1)Forward向量并将旋转施加到这个向量上获取Target向量,这会产生一个新的Target点。你可以使用相同的方法获取Up向量。 工作原理... 阅读全文
posted @ 2010-10-18 21:05 AlexCheng 阅读(456) 评论(0) 推荐(0) 编辑
在3D世界中创建不同的相机模式——创建一个相机:Position,Target和View Frustum
摘要:2.1 创建一个相机:Position,Target和View Frustum 问题 在将3D世界绘制到屏幕之前,你需要相机的View和Projection矩阵。 解决方案 你可以在一个矩阵中保存相机位置和方向,这个矩阵叫做View矩阵(视矩阵,观察矩阵)。要创建View矩阵,XNA需要知道相机的Position,Target和Up矢量。 你也可以保存视锥体(view frustum),... 阅读全文
posted @ 2010-10-17 20:35 AlexCheng 阅读(751) 评论(0) 推荐(0) 编辑
XNA 3.0——将数据保存到文件,从文件读取数据
摘要:1.9 将数据保存到文件,从文件读取数据 问题 你需要在游戏中实现保存功能。解决方案虽然保存功能通常是创建游戏的最后一步,但你肯定需要在游戏中实现这个功能。首先,XNA使用默认的.NET文件I/O 功能,这意味着创建/打开/删除文件是很容易的。接着,使用XmlSerializer类能非常容易地将数据保存到文件并在以后加载数据。 唯一的问题是找到在PC平台和Xbox360平台都能保存的位置,要... 阅读全文
posted @ 2010-10-17 20:24 AlexCheng 阅读(294) 评论(0) 推荐(0) 编辑
XNA 3.0初步——突现GameServices
摘要:1.8实现GameServices 问题 如在教程1-6中解释的那样,你可以将代码放在可复用的GameComponent类中,这些组件可以是相机、粒子系统,用户输入,billboard等。 使用GameComponent类的一个最主要的好处是你可以很容易在它们之间切换,例如相机模式。要把第一人称相机模式变到四元数相机模式只需在Game类的Initialize方法中包含一条代码即可。 但你必须保证在... 阅读全文
posted @ 2010-10-17 20:20 AlexCheng 阅读(223) 评论(0) 推荐(0) 编辑
XNA 3.0初步——使用GameComponents
摘要:1.7 使用GameComponents 问题 你想将应用程序分离为GameComponent 类,实现组件的复用。 解决方案 程序的特定部分可以从程序中分离出来。在一个XNA程序中,大多数此种类型的部分都需要被更新和绘制,例如粒子系统和billboard(通常翻译为公告板或广告牌)系统(见教程3-11和3-12)。 正确的做法是为这些特定部分创建一个单独的类。在XNA Game 类中,... 阅读全文
posted @ 2010-10-17 20:10 AlexCheng 阅读(369) 评论(0) 推荐(0) 编辑
黄金法则和技巧
摘要:黄金法则和技巧 以下是这本书提到的一些“黄金法则”和诀窍。 诀窍 你需要在Xbox 360上有一个Xbox 360 Live帐户,当年开发和测试您的XNA游戏是它必须一直在线。 请确保您的PC和Xbox 360都在同一网络中并可以可以“看到”对方。您可以从电脑上pingXbox 360的IP或将Xbox 360游戏机作为媒体中心连接到您的PC机上。 ... 阅读全文
posted @ 2010-10-17 17:11 AlexCheng 阅读(172) 评论(0) 推荐(0) 编辑
调整和改编赛车游戏——总结
摘要:总结 漫长的一章和漫长的一本书。但考虑到这是我写的第一本书,我还是希望你能喜欢它,并从游戏示例中学到东西。我很喜欢本书的游戏示例,我认为编写游戏的实践方法能帮助初学者,对于高级读者可以跳过简单的部分,并看看游戏编程世界中的更复杂的东西。 这本书几乎涵盖所有学习XNA和游戏的知识,但每个专题分布在不同章节中。例如,物理学一章对于一些普通物理计算也是有用的,但把它与赛车游戏联系在一起能更容易地思考... 阅读全文
posted @ 2010-10-17 17:08 AlexCheng 阅读(225) 评论(0) 推荐(0) 编辑
调整和改编赛车游戏——挑战:编写自己的改编游戏
摘要:挑战:编写自己的改编游戏 本书的最后一个挑战是创建自己的赛车游戏改编版本。您可以实现自己的游戏构思,也可以跟随下面Speedy Racer编写代码的过程。 正如你在本章一开始就看到的,Rocket Commander有相当多的改编版本。仅2006年一年就有超过12个项目,也许还有更多,但相有关人士可能羞于分享他们的游戏或他们不想让别人知道他们使用了Rocket Commander引擎。当... 阅读全文
posted @ 2010-10-17 17:05 AlexCheng 阅读(335) 评论(0) 推荐(0) 编辑
调整和改编赛车游戏——更多的想法
摘要:更多的想法 游戏现在已经运行得很好了,如果你已通过最终的测试它就可以发布了。但即使您可能还没有全部完成,你也可能要尝试更多的想法或思考未来的扩展。我发现自己经常重用现有的引擎来测试新的游戏构思。使用您已经熟悉的现有引擎比从头开始更容易。 本节的内容是关于我在游戏开发时甚至在开发前的一些额外构思。 更多汽车 有更多的车辆模型是我的愿望之一,但由于我不是一个模型设计师,也没有我认识的模型设计师... 阅读全文
posted @ 2010-10-17 17:01 AlexCheng 阅读(283) 评论(0) 推荐(0) 编辑
调整和改编赛车游戏——最后的单元测试和调整
摘要:最后的单元测试和调整 现在您拥有了游戏的所有类,但还没完。我们已经谈到了几次Player类,但你从来没有见过它的调用。原因是XNA分隔了更新和渲染代码。如果你看一下RacingGame类的Update方法,你终于可以看到对Player类Update方法的调用: /// /// Update racing game /// protected override void Update(Gam... 阅读全文
posted @ 2010-10-17 16:54 AlexCheng 阅读(354) 评论(0) 推荐(0) 编辑
调整和改编赛车游戏——游戏屏幕
摘要:游戏屏幕 赛车游戏中有很多不同的游戏屏幕,这些都是由RacingGame类中的gameScreens堆栈管理的。本节介绍游戏中使用的大部分屏幕和对应的功能。大多数游戏屏幕相当简单,但其他的有点复杂并实现了一个单元测试,通过单元测试能更好地了解这个类。例如,Credits屏幕是相当简单的,它只显示一个背景纹理,但主菜单很复杂并具有所有能进入另一个屏幕的按钮。Options屏幕介绍了许多新的控制选项... 阅读全文
posted @ 2010-10-17 09:53 AlexCheng 阅读(421) 评论(0) 推荐(0) 编辑
调整和改编赛车游戏——游戏构思
摘要:游戏构思 在你开始游戏屏幕和游戏逻辑之前,快速浏览一下这个游戏的原始构思,这样你能理解为什么某些东西实现了而有些却没有。在游戏的主要功能实现后,一些部分才在后面添加。这方面的一个例子是阴影映射,这始终是游戏引擎的复杂部分,因为你要花费大量的时间进行调整,直到它看起来正确。还有些东西必须跳过或故意排除在外,因为它们实在太复杂,在短时间内很难实现。最好的例子是道路上的障碍物(例如柱子),如果玩家不小心... 阅读全文
posted @ 2010-10-17 00:17 AlexCheng 阅读(396) 评论(0) 推荐(1) 编辑
调整和改编赛车游戏——概览
摘要:概览 终于到本书的最后了,只剩最后一章了。你将了解赛车游戏所有的细节。本章你将学习所有的游戏屏幕、游戏逻辑、记分系统以及一切你您需要的东西。场景和赛道的大多数渲染技术已经在第12章讨论过了,但本章会增加一点阴影。因为上一章已讨论过物理学和汽车控制,现在应该可以插入此代码,并开始测试游戏本身。 本章的主要目的是让你熟悉赛车游戏和底层代码。在本章最后你应该知道一切以创建自己的改编赛车游戏。游戏改编... 阅读全文
posted @ 2010-10-17 00:14 AlexCheng 阅读(257) 评论(0) 推荐(0) 编辑
物理学——总结
摘要:今天物理学已成为了游戏的一个重要组成部分,但你也看到它不是很容易将一个现成的物理引擎在XNA中实现。但是,你仍然可以通过自己的方式实现物理引擎,并可运行于Xbox 360上,而Xbox 360上是不允许非托管代码的。 物理学有许多议题,可以肯定全部都自己实现是不容易的,即使有一个良好的物理引擎你还必须做大量的调整和测试。然而,如果与你竞争的另一个游戏有大量的物理效果又不破坏游戏的乐趣,那么相对你... 阅读全文
posted @ 2010-10-16 23:58 AlexCheng 阅读(215) 评论(0) 推荐(0) 编辑
物理学——挑战:实现道路碰撞检测
摘要:如果前一章你觉得容易,现在将有点难。你的任务是查看CarPhysics类并弄懂如何相同的物理代码和碰撞检测是如何将车保持在赛道上,以及如何处理与护栏(不是一条直线)的碰撞。 要完成此项任务,最好是写一个单元测试,它绘制赛路,并让你以在TestCarPhysicsOnPlaneWithGuardRails单元测试中同样的方式控制汽车,以同样的方式处理游戏本身。但是,你也可以在CarPhysics类的... 阅读全文
posted @ 2010-10-16 23:57 AlexCheng 阅读(223) 评论(0) 推荐(0) 编辑
物理学——车辆碰撞检测
摘要:车辆碰撞检测 借助于前面的代码,我们已经知道如何检测汽车与护栏的碰撞。只需创建两个碰撞平面,每个护栏一个,然后检查四个轮子与这两个平面的碰撞。因为赛车不仅是一个球体,因此无法像小行星那样做简单的处理,四个面都必须检测,但只检测四轮的位置(或至少是赛车的最外层)仍能实现基本碰撞检测(见图13-15)。 Figure 13-15 碰撞检测的代码在CarPhysics类的ApplyGravityAn... 阅读全文
posted @ 2010-10-16 23:56 AlexCheng 阅读(708) 评论(0) 推荐(0) 编辑
物理学——实现物理效果
摘要:实现物理效果 现在可以深入讨论赛车游戏所需的物理学了。今天你能看到许多强大的物理引擎的一些功能,但因为它们很难被实现而且也没有用.NET编写,所以你将通过自己的方式实现物理引擎。 在本章开始你处理了汽车控制和简单的重力效果。目前缺少的是准确的碰撞检测系统,当撞上一个护栏时你的车应该停止。你还将处理一些比较复杂的情况,比如说通过环形轨道等。环形轨道不难实现。借助于上一章的赛道生成代码,你能很容易地... 阅读全文
posted @ 2010-10-16 23:52 AlexCheng 阅读(493) 评论(0) 推荐(0) 编辑
物理学——物理引擎
摘要:物理引擎 有了基本物理学的新知识,现在你可以较容易地比较现有的物理引擎了。实现了基本的东西和确定在系统中已定义了正确的常量并感觉良好之后,你应该考虑一下游戏的需求。物理引擎往往可以做很多不同的东西,许多物理演示和教程看上去很酷,但往往不能用于大多数游戏。第一次看到一堆箱子互相碰撞很有趣,但很少有游戏允许直接控制箱子并推动它们,而且看多了箱子翻倒就会觉得无趣,这就好象再一次回到了幼儿园一样。 但是,... 阅读全文
posted @ 2010-10-09 09:10 AlexCheng 阅读(658) 评论(0) 推荐(0) 编辑
物理学——牛顿运动定律
摘要:牛顿运动定律 让我们快速浏览一下运动学的重要定律。图13-2显示了看到这些物理规则: 第一定律——物体总保持静止或匀速直线运动状态,直到有外来迫使它改变这种状态。这很容易,因为所有物体运动都有一个运动向量或速度向量,除非你施加了力让其减速,加速或改变方向,否则不要改变该值。 第二定律——当施加一个外力时,这意味着你可以使物体加速或减速,如果超过一个维... 阅读全文
posted @ 2010-10-09 08:51 AlexCheng 阅读(525) 评论(0) 推荐(0) 编辑
物理学——概览
摘要:概览 近些年来在游戏中使用物理学变得越来越流行。老游戏没有任何物理学,但最近许多射击游戏具有复杂的物理系统,这些系统只有通过计算能力的巨大提升和和多核系统才有可能实现。最近还出现了硬件PPU(物理处理单元),类似于GPU处理图形,这些处理器只计算物理系统。 使用物理学最多的游戏是第一人称射击游戏,特别是在那些玩家具有较大的自由度并允许自由走动并和场景发生互动的游戏中。其中最流行的游戏是2004年底... 阅读全文
posted @ 2010-10-09 08:45 AlexCheng 阅读(190) 评论(0) 推荐(0) 编辑
创建场景和赛道——总结
摘要:总结 在这一章中你学到了很多关于渲染复杂3D物体的知识,如场景、赛道和在赛车游戏中创建关卡。希望也可用于其他游戏,当为游戏创建场景时你要记得下列几件事: 总是先判断玩家是如何看场景的。看上去很棒的场景其实没多大意义,这种场景只在近距离看时很棒,这种场景在策略游戏、RPG游戏或赛车游戏中只覆盖了50米2面积。而在这类游戏中你需要面积更大,这意味着你要么重复纹理或有更好的渲染技术... 阅读全文
posted @ 2010-10-08 11:27 AlexCheng 阅读(337) 评论(0) 推荐(0) 编辑
创建场景和赛道——挑战:为赛道建立一个新的单元测试
摘要:本章处理了不少复杂的问题,你很可能会觉得难,所以这次我布置了一个简单的任务。进入TrackLine类并为一个简单的赛道添加新的单元测试。你只需要新增一些顶点并测试它们直到赛道看起来足够好。 图12-22显示了一个这种自定义赛道的例子。请注意,这本书中为了看上去更好,我颠倒了截图。你也可以使用一个如第8章中所展示的倒置post-screen shader。 Figure 12-22 如果你还有精... 阅读全文
posted @ 2010-10-08 11:25 AlexCheng 阅读(217) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示