Questions tagged «xna»

XNA是Microsoft的一种游戏框架,允许部署Windows,Windows Phone和Xbox 360。

4
XNA的方向在哪里?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我爱XNA。我是真的 作为我学校游戏开发俱乐部的主席,我们使用它并教给我。但是我很担心。 我一直想知道,有没有迹象表明XNA会变得不仅仅是原型/街机游戏语言?我总是感到微软正像放弃Managed DirectX一样放弃它。Xbox Live Arcade是一个了不起的主意,但它被推到了一边,当我觉得如果微软给予更多重视的话,那么“真正的” Xbox游戏将给它带来更多的潜力。 现在仅使用XNA 4.0 CTP(仅适用于Windows Phone 7),它似乎正在演变为仅用于电话的某种形式。我真的不确定他们为什么要这么做。 XNA的当前状态如何,发展方向如何?它是否仅用于移动设备,还是最终会发布4.0以供Xbox和台式机使用? 换句话说,这是一种将时间和金钱投入到不断被恐惧抛弃的语言中,还是应该只是暂时性地发展这种语言吗? 当我问这个问题时,我正在谈论台式机和Xbox游戏,因为我可以很清楚地看到它是Windows Phone 7平台的首选游戏框架。 由于此问题有些主观(但是我实际上是在根据您的观点寻找事实!),我将此作为CW。
13 xna 

4
如何处理2D游戏中的任意大图像?
题 当您拥有使用非常大图像(大于硬件可以支持的图像)的2D游戏时,该怎么办?也许对这个问题有一些有趣的解决方案,这在我之前从未发生过。 我基本上是在从事某种图形冒险游戏的制作。我的目标受众是几乎没有游戏开发(和编程)经验的人。如果您使用的是这样的应用程序,是不是更希望它在内部处理问题而不是告诉您“拆分图像”? 语境 众所周知,图形卡对其可使用的纹理大小施加了一组限制。例如,使用XNA时,取决于您选择的配置文件,最大纹理大小被限制为2048或4096像素。 通常,在2D游戏中这不会带来太大问题,因为大多数游戏都具有可以由较小的单个块(例如,图块或变形的精灵)构建的关卡。 但是,请考虑一些经典的点按式图形冒险游戏(例如Monkey Island)。图形冒险游戏中的房间通常是整体设计的,很少或没有可重复的部分,就像画家在风景上一样。或像《最终幻想7》这样的游戏使用了大型的预渲染背景。 这些房间中的一些可能会变得很大,经常跨越三个或更多屏幕宽度。现在,如果我们在现代高清游戏的背景下考虑这些背景,它们将很容易超过最大支持的纹理大小。 现在,解决此问题的明显方法是将背景分成适合需求的较小部分,并排绘制。但是,您(或您的艺术家)是否应该成为拆分所有纹理的人? 如果您使用的是高级API,它是否应该准备好应对这种情况并在内部进行纹理的拆分和组装(作为XNA的内容管道等预处理程序或在运行时进行)? 编辑 从XNA实现的角度来看,这就是我的想法。 我的2D引擎只需要Texture2D功能的很小一部分。我实际上可以将其简化为以下接口: public interface ITexture { int Height { get; } int Width { get; } void Draw(SpriteBatch spriteBatch, Vector2 position, Rectangle? source, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth); } 我使用的唯一依赖Texture2D的外部方法是SpriteBatch.Draw(),因此我可以通过添加扩展方法在它们之间建立桥梁: public …
13 xna  c#  2d  graphics  textures 

7
什么是存储tilemap数据的好方法?
我正在与一些uni朋友一起开发2D平台游戏。我们基于XNA Platformer入门工具包,该工具包使用.txt文件存储切片地图。尽管这很简单,但是它在关卡设计中并没有给我们足够的控制和灵活性。例如:对于多层内容,需要多个文件,每个对象都固定在网格上,不允许旋转对象,限制字符数等。因此,我正在研究如何存储关卡数据和地图文件。 这仅涉及切片图的文件系统存储,而不涉及游戏运行时要使用的数据结构。瓦片贴图已加载到2D数组中,因此此问题与填充数组的源有关。 DB的推理:从我的角度来看,我发现使用数据库存储切片数据的数据冗余较少。具有相同特征的相同x,y位置的图块可以在各个级别之间重复使用。似乎很容易编写一种方法来从数据库中检索特定级别中使用的所有切片。 JSON / XML的推理:视觉上可编辑的文件,可以通过SVN轻松跟踪更改。但是有重复的内容。 与另一个相比,它们是否有任何缺点(加载时间,访问时间,内存等)?以及行业中常用的是什么? 当前文件如下所示: .................... .................... .................... .................... .................... .................... .................... .........GGG........ .........###........ .................... ....GGG.......GGG... ....###.......###... .................... .1................X. #################### 1-玩家起点,X级出口,。-空的空间,#-平台,G-宝石
13 xna  c#  xml 

3
2.5D游戏相机
我希望有人能像我5岁时向我解释这个问题,因为我一直在努力奋斗了几个小时,根本无法理解我在做什么错。 我Camera为我的2.5D游戏写了一个课程。目的是支持这样的世界和屏幕空间: 相机在右边是黑色的东西。该图像中+ Z轴朝上,-Z朝下。如您所见,世界空间和屏幕空间的左上角都有(0,0)。 我开始编写一些单元测试,以证明我的相机可以正常工作,而这正是事情开始变得奇怪的地方。我的测试在世界,视图和屏幕空间中绘制坐标。最终,我将使用图像比较来断言它们是正确的,但是现在我的测试仅显示结果。 渲染逻辑用于Camera.ViewMatrix将世界空间转换为视图空间,并将Camera.WorldPointToScreen世界空间转换为屏幕空间。 这是一个示例测试: [Fact] public void foo() { var camera = new Camera(new Viewport(0, 0, 250, 100)); DrawingVisual worldRender; DrawingVisual viewRender; DrawingVisual screenRender; this.Render(camera, out worldRender, out viewRender, out screenRender, new Vector3(30, 0, 0), new Vector3(30, 40, 0)); this.ShowRenders(camera, worldRender, viewRender, screenRender); } 这是我运行此测试时弹出的内容: 尽管我怀疑z轴正在进入屏幕而不是朝向查看器,但世界空间看起来还不错。 视图空间让我完全困惑。我期望摄影机位于(0,0)上方并朝场景中心看。相反,z轴似乎绕错了方向,并且相机位于我期望的相反角上! …
12 xna  matrix  projection 

2
球体的任意旋转
我正在编写一种机制,允许用户在球体表面周围移动。球面上的位置当前存储为theta和phi,其中theta是当前位置的z轴和xz投影之间的角度(即围绕y轴的旋转),并且phi是从y轴到该位置的角度。我解释得很差,但实际上theta = yaw,phi = pitch Vector3 position = new Vector3(0,0,1); position.X = (float)Math.Sin(phi) * (float)Math.Sin(theta); position.Y = (float)Math.Sin(phi) * (float)Math.Cos(theta); position.Z = (float)Math.Cos(phi); position *= r; 我相信这是正确的,但是我可能是错的。我需要能够在半径为的世界空间的起点处围绕球体表面在任意伪二维方向上移动r。例如,握持区W应相对于玩家的方向在球体上方向上移动。 我相信我应该使用四元数来表示球体上的位置/方向,但是我想不出正确的方法。球形几何不是我的强项。 本质上,我需要填写以下内容: public void Move(Direction dir) { switch (dir) { case Direction.Left: // update quaternion to rotate left break; case Direction.Right: // update …

1
有关渲染,批处理,图形卡,性能等的信息+ XNA?
我知道标题有点模糊,但是很难描述我真正想要的东西,但是这里有。 当涉及到CPU渲染时,性能通常很容易估计和直接,但是当涉及到GPU时,由于缺乏技术背景信息,我一无所知。我正在使用XNA,所以如果理论可以与之相关将非常好。 所以我真正想知道的是,当您执行特定的绘制动作时,何时何地(CPU / GPU)会发生什么?什么是批次?效果,预测等有什么影响?数据是否保留在图形卡上或是否在每个步骤中传输?当谈论带宽时,您是在谈论图形卡的内部带宽,还是从CPU到GPU的管道? 注意:我实际上并不是在寻找有关绘制过程如何进行的信息,这是GPU的业务,我对在此之前的所有开销都感兴趣。 我想了解执行动作X时发生了什么,以适应我的体系结构和实践。 非常感谢任何文章(可能带有代码示例),信息,链接,教程,它们提供了有关如何编写更好的游戏的更多见解。谢谢 :)

2
促进非程序员的XNA游戏部署
我目前正在开发RPG,以XNA的RPG入门套件为基础。(http://xbox.create.msdn.com/zh-CN/education/catalog/sample/roleplaying_game)我正在与一个小团队(两名设计师和一名音乐/声音艺术家)合作,但我是唯一的团队程序员。当前,我们正在使用以下(不可持续的)系统:团队创建新的图片/声音以添加到游戏中,或者他们修改现有的声音/图片,然后将其工作提交到存储库中,我们将在此存储最新版本一切。(代码,图像,声音等)每天,我都会创建一个新的安装程序,以反映新的图像,代码更改和声音,然后每个人都进行安装。 我的问题是:我想创建一个系统,团队的其他成员可以替换战斗声音,例如,他们可以立即看到更改,而不必等待我建立。如果我发布的话,XNA的设置方式将对所有图像和声音文件进行编码,因此团队无法进行“热插拔”。我可以在每个人的计算机上设置Microsoft VS,并向他们展示如何快速发布,但是我想知道是否有更简单的方法来执行此操作。 与使用XNA的团队合作时,有人反对吗?
12 xna  rpg 

6
球物理:在球静止时平滑最终的反弹
在我的小弹跳球游戏中,我遇到了另一个问题。 我的球反弹得很好,除了最后一刻即将停止。球的运动对于主体部分来说是平滑的,但是直到最后,当球落在屏幕底部时,它会突然抽动一段时间。 我能理解为什么会这样,但是我似乎无法解决。 如有任何建议,我将不胜感激。 我的更新代码是: public void Update() { // Apply gravity if we're not already on the ground if(Position.Y < GraphicsViewport.Height - Texture.Height) { Velocity += Physics.Gravity.Force; } Velocity *= Physics.Air.Resistance; Position += Velocity; if (Position.X < 0 || Position.X > GraphicsViewport.Width - Texture.Width) { // We've hit a …
12 xna  c#  physics 

1
2D艺术资产(例如子画面)如何工作?
我对游戏有一个想法,并计划使用Windows Phone 7的XNA开发2D游戏。 今天,我从徒手绘制一些我希望某些角色看起来像的概念艺术开始。现在的问题是采用这些概念并将其以数字形式呈现。 我首先意识到我真的不了解游戏艺术的不同部分。我知道有精灵,纹理和动画,但仅此而已。我认为纹理是3D对象上的精灵,但不确定是否正确?以下是有关游戏美术的一些一般性问题: 您是否在2D游戏中使用纹理? 您在哪里应用游戏美术的不同部分?例如,当您使用精灵与动画时。 精灵,纹理动画和其他艺术品之间有什么区别? 精灵,纹理和动画是游戏的唯一艺术元素吗? 游戏中所有的2D艺术都被视为精灵吗?字符,背景等 您将精灵表和精灵表中的每个字符制作成什么尺寸? 有什么好的书籍或教程可以教您如何从数字前景中绘画艺术?我当时在考虑获取《 GIMP圣经》,但是像这样的大多数书都比数字绘画教授更多的照片编辑。 我的目标是学习如何使用Gimp将概念艺术(背景和角色)转化为数字形式,并了解游戏艺术的不同部分。 无论如何,感谢任何可以提供帮助的人。

5
基于Tile的2D平台平台中的45°坡度
我想在基于图块的平台游戏中使用简单的45°坡度,但是我似乎无法将算法推倒。请看一下代码和视频,也许我错过了明显的地方? //collisionRectangle is the collision rectangle of the player with //origin at the top left and width and height //wantedPosition is the new position the player will be set to. //this is determined elsewhere by checking the bottom center point of the players rect if(_leftSlope || _rightSlope) { //Test bottom …
12 xna  c#  xna-4.0  platformer 

3
您如何在2物理引擎(如farseer / box2d)中遵循AI路径?
我正在将自己一直在努力的2d自上而下游戏移植到像Farseer这样的合适的刚体物理引擎中。到现在为止,我只是在需要的地方才编写了自己的物理代码。 我正在尝试在这里学习正确的做事方式。 一旦在物理引擎内部使它们成为刚体,使AI遵循设定路径的正确方法是什么? 如果我在地图上有需要AI遵循的导航节点路径,那么以前,我会通过沿下一个步骤计算它们应位于的下一个位置并将其手动设置为该位置来手动沿路径移动它们。 但是现在它们是刚体,容易受到碰撞以及任何可能撞击它们并将其击落的力。 因此,为了使AI向前迈进,我相信我现在应该向它们施加冲动/力量了吗?我不应该再手动设置每个帧的位置。 因此,我认为我需要从一个确定性世界出发,在这个世界中,我必须迫使AI严格遵循一个不确定性世界,在这种情况下,如果受到撞击,它们可能会在任何方向被撞倒,我只是将它们轻推到路径中的下一个节点让他们动起来。 是对的吗?那是别人怎么做的吗? 这就引发了一些问题,即如何避免您的AI一直走在不正确的道路上,而又如何避免它们卡在风光的拐角处?你们如何处理这种事情呢? 还是以某种方式将两者混合并让您的AI通过手动设置其位置而遵循固定的路径,并且仅在您可以轻松控制的某些情况下对其他作用力做出反应,才更好呢? 感谢您的任何建议。

1
动态模型互动
我只是想知道在许多游戏(例如arkham庇护/城市,追捕,杀手等游戏)中如何做到这一点,以便您的角色可以“抓住”您面前的角色并对其进行处理。我知道这听起来可能很令人困惑,但是举个例子,去youtube并搜索“杀手s子”,而第一个视频就是我要问的例子。 基本上,我想知道它们是如何使您的模型与您遇到的任何其他模型动态交互的,所以在《杀手》中,当您用纤维丝站在某个人身后时,您会勒住另一个角色,或者如果您使用麻醉剂,则在某个人身后当他们挣扎时,把手放在那张嘴上,然后慢慢走到地板上,放下它们。如果只是在正确的时间播放两个完全独立的动画,使它们看起来像是在实际交互,还是其他东西在一起,我是否为使用两个模型使用特定的骨骼/骨骼标识符感到困惑。 我不是动画师,所以我认为我刚才所说的大部分内容都不对,但我希望有人能理解我的意思并提供答案。 PS)我是一名程序员,并且我正在开发一款流线型游戏,因为我喜欢那种风格的游戏,而且我想增加一些有趣的东西的技能,所以如果您确实知道我在说什么,请尝试一些同时涉及模型和编程的示例(我目前使用c ++,主要使用Ogre3D,但我正在使用unity和XNA),我将不胜感激。 谢谢。
12 xna  unity  animation  models  ogre 

3
有没有一种好的方法可以在XNA中获得像素完美的碰撞检测?
XNA中是否有一种众所周知的方法(或者也许是可重用的代码)用于像素完美碰撞检测? 我假设这还将多边形(框/三角形/圆形)用于首过,碰撞的快速测试,如果该测试表明有碰撞,则它将搜索每个像素的碰撞。 这很复杂,因为我们必须考虑比例,旋转和透明度。 警告:如果您使用的是来自以下答案的链接中的示例代码,请注意,矩阵的缩放比例已被注释掉,这是有充分理由的。您无需取消注释即可开始扩展。

5
使用大量的多维数据集。改善效能?
编辑:总而言之,我有一个基于体素的世界(《我的世界》风格(感谢共产主义鸭子)),其性能不佳。我对消息来源并不满意,但希望获得关于如何摆脱它的任何建议。 我正在一个项目中,世界由大量的多维数据集组成(我会给你一个数字,但这是用户定义的世界)。我的测试之一是(48 x 32 x 48)块。 基本上,这些块本身不会做任何事情。他们只是坐在那里。 当涉及到玩家互动时,便开始使用它们。 我需要检查用户鼠标与哪些多维数据集交互(鼠标悬停,单击等),以及在玩家移动时进行碰撞检测。 现在我一开始有大量的滞后,遍历每个块。 我设法通过遍历所有块并找到哪些块在字符的特定范围内,然后仅遍历那些块以进行碰撞检测,来减少这种滞后。 但是,我仍然要压低2fps。 有人对我如何减少这种滞后有其他想法吗? 顺便说一句,我正在使用XNA(C#),是的,它是3d。
12 xna  3d  frame-rate  voxels 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.