Questions tagged «xna»

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

2
我如何在XNA中收集微型游戏,使用户可以下载微型游戏包,而主.exe可以在不更改的情况下运行它们?
我目前正在用XNA制作PC游戏。它实际上是一个小游戏的集合(目前有3个小游戏),但是我计划制作和添加更多可下载的“包”。 我的问题是,实现此目标的最佳方法是什么? 目前我的想法是: 创建一个“游戏”界面 为此接口构建游戏,但将其创建为.dll。 让主.exe文件扫描目录并在运行时加载.dll。 我并没有对此想法产生太多的混乱,但是我知道至少有一些应用程序使用了这种插件方法(Notepad ++似乎),但是我不确定有没有做过的游戏(尽管我敢肯定)它们必须存在)。但是,这似乎是一个以前已经解决的问题,所以我想知道是否存在任何形式的既定最佳实践。
12 xna  c# 

2
XNA“ XBox 360项目”也可以在Windows上使用吗?
我知道XBox 360的XNA项目将使用.NET Compact Framework的专用版本。但是,假设我要针对XBox 360和Windows发行。 如果为Windows发行,XBox版本(使用紧凑型框架)是否仍然可以使用,还是我需要针对常规框架(或非Xbox CF)进行重建才能发行?
12 xna  windows  xbox360 

5
如何在基于组件的游戏中正确处理碰撞?
在围绕组件设计的游戏中,尝试绕过正确处理碰撞的方法。 我看到许多示例PhysicsComponent在实体的组件列表中添加了某种示例,但实际的实现使我感到困惑。 为了PhysicsComponent使它起作用,需要访问周围的环境。这对我来说没有直觉。组件不应该不仅意识到其容器(实体),还没有意识到其容器的容器(世界)吗? 对我来说,听起来好像关卡或场景应该维护这些实体的列表,并且每次游戏更新都会遍历这些实体以确定哪个碰撞。 我的问题是,首先,这是否是好的设计,其次,如何确定哪些实体会发生冲突。我想实体实体可以实现一个空的IRigidBody接口,以便该级别可以确定列表中的哪些实体支持冲突。但这会破坏组件设计吗? 相反,它们应该包含一个空的RigidBody成分吗?实际上,这可能会更好,因为它可能并不总是空的,而且这种方法更适合未来。唯一的问题是复杂性。场景不仅必须遍历每个实体,还必须遍历每个实体的组件,以确定它是否具有此RigidBody组件。 第三,当它们确实发生碰撞时,应该以某种方式告知两个实体,我也不确定如何做到这一点。 假设两个实体都包含一个HealthComponent,并且当它们碰撞时,两个实体的健康状况都会降低一些任意值5。我想当场景中检测到两个实体之间发生碰撞时,要负责处理此问题? 但是,现场是否要承担太多责任?当场景负责实体不应该访问的许多事物时,我可以看到这种情况可能会变得一发不可收拾并且变得笨拙。 编辑:问题已更新,具有更多详细信息。


4
使玩家平稳地上楼梯
我有一个2D平台游戏,其中玩家始终向右行驶,但是地形并不总是水平的。例: 我实现了一个边界框碰撞系统,该系统仅检查与玩家框和其他方块的交点,以防止遇到大方块时玩家无法奔跑,因此必须跳下去,但是当我上楼梯时,我希望他就像他在水平地面上一样平稳运行。使用碰撞系统,您必须跳楼梯才能通过! 我考虑过要在楼梯的边缘之间生成一条线,并在那条线上强加玩家移动……您如何看待?还有更聪明的事情吗?

1
如何知道播放器是否已登录?
我想知道是否有办法知道“玩家”是否已登录? 像这样: if (GamePad.GetState(PlayerIndex.Two).IsConnected && !Gamer.PlayerTwo.IsSignedIn) 这样就可以连接控制器并可以使用它,但播放器未登录到帐户。有点像猜测。

2
XNA / MonoGame的便携式缓冲键盘输入?
作为一个初步的解决方案,我目前在C#/ XNA游戏项目中使用Nuclex框架来缓冲键盘输入。可悲的是,nuclex依赖于SlimDX.Directinput.dll,因此据我所知只能在Windows操作系统下使用。但是,我使用MonoGame定位其他平台(Linux,OSX等),因此我正在寻找一种可移植的方式来集成所有平台上的缓冲键盘输入。有没有?

6
在没有图形的情况下运行XNA游戏
想知道是否仍然可以运行XNA游戏而不显示任何内容。 我有一个在客户端服务器设置中运行的工作游戏,其中一个玩家是主机,其他人可以连接到他的游戏。 现在,我希望能够在没有显卡的专用服务器上作为主机运行游戏,基本上我根本不想运行任何Draw()逻辑。 我真的需要遍历整个游戏并删除对XNA的所有引用吗? 人们是如何做到的? 编辑:我想要这样做的原因是因为我在游戏中安装了可运行的客户端服务器,并且我不想制作单独的“无头”服务器程序。
11 xna  xna-4.0 

4
如何在游戏中编写时间停止或项目符号时间?
我正在XNA 4.0中开发单人RPG平台游戏。我想添加一种使时间“停止”或放慢速度的功能,并且仅使玩家角色以原始速度移动(类似于《博德之门》系列中的“时间停止”法术)。我不是在寻找确切的实现,而是一些一般的想法和设计模式。 编辑: 谢谢大家的巨大投入。我想出了以下解决方案 public void Update(GameTime gameTime) { GameTime newGameTime = new GameTime(gameTime.TotalGameTime, new TimeSpan(gameTime.ElapsedGameTime.Ticks / DESIRED_TIME_MODIFIER)); gameTime = newGameTime; 或类似的东西。这样,我可以为播放器组件设置不同的时间,而为其余组件设置不同的时间。当然,对于像这样的翘曲时间将是关键因素的游戏来说,它还不够通用。但是我希望它能在这种情况下起作用。我有点不喜欢它会乱扔主Update循环这一事实,但是它无疑是实现它的最简单方法。我想这与tesselode建议的基本相同,所以我要给他绿色的勾号:)
11 xna  time-travel 

6
具有2000万个图块的地图会使游戏内存不足,如何避免呢?
在加载额外的巨大地图时,加载方法会在创建新的地图图块实例时抛出内存不足异常。我希望至少在服务器应用程序(如果可能的话,在客户端)上处理整个地图。我应该如何解决这个问题? UPD:这里的问题是,当仍有可用的可用内存时,如何使游戏停止崩溃。至于将地图分成几块,这是一个好方法,但不是我想要的。 UPD2:最初,我去给每个新的tile类实例分配了一个纹理,这就是占用大量内存(也需要加载时间)的原因。现在,它占用的空间减少了大约四倍。多亏了每个人,现在我可以运行巨大的地图,而无需考虑将它们分解成几块。 UPD3:重写代码以查看图块属性的数组是否运行得更快或消耗的内存更少(比相应的图块中的对象属性表示的对象属性要小),我发现不仅花了很多时间去尝试,而且并没有带来任何性能上的改进,并且使游戏难以调试。

2
Microsoft XNA Platformer示例,是否正确实施了碰撞检测?
Microsoft提供的示例似乎(从我所看到的)碰撞检测将有一个小错误。当用户与不可通过的图块碰撞时,将计算相交的深度。深度值X和Y中较小的一个用于固定用户的位置,因此它不再与图块碰撞。但是,如果用户沿对角线行驶,这是否可能导致用户无法准确地到达角色首先与图块发生碰撞的位置? 我可能是错的,但这只是我的看法。 private void HandleCollisions() { // Get the player's bounding rectangle and find neighboring tiles. Rectangle bounds = BoundingRectangle; int leftTile = (int)Math.Floor((float)bounds.Left / Tile.Width); int rightTile = (int)Math.Ceiling(((float)bounds.Right / Tile.Width)) - 1; int topTile = (int)Math.Floor((float)bounds.Top / Tile.Height); int bottomTile = (int)Math.Ceiling(((float)bounds.Bottom / Tile.Height)) - 1; // Reset …

2
如何建立一个世界玩家库存系统?
我遇到了一个尝试在XNA内实施清单系统的问题(这并不重要,可以是任何平台),但是到目前为止。这是我要解决的问题: 我如何才能从世界上获得一件物品(想想当您杀死一个怪物时,它会掉落护甲)并将其放入玩家的库存中吗? 如果库存只是物品清单,从技术上讲,如何在没有上课的情况下将世代钢剑带入玩家的库存中? 我目前有一个项目结构,其中包含一个唯一的十六进制值,一个有多少项目的计数(用于可堆叠对象,如箭头)和一个用于在库存中进行渲染的纹理,以及一些其他不重要的属性(名称,说明等) 。 如果我必须修改现有的项目类以容纳世界位置以及碰撞检测(这不希望该项目掉落到地球上),那将是一个糟糕的设计。 感谢您的考虑!
11 xna  c#  2d 

1
如何为XNA演示创建安装程序?
我有一个使用VS2008在XNA3.1中编码的演示。我真的很希望能够将此内容发送给具有PC的任何人,并让他们安装并运行它,而无需他们安装VS或.Net框架等。 我以为会是发布选项,但对此有些困惑。谁能阐明这件事? 先感谢您。

1
XNA(通过GPU)添加“火山口”效果的火山口
我目前正在XNA中进行2D“蠕虫”克隆,其功能之一是“可变形”地形(例如,当火箭击中该地形时,会发生爆炸,并且大部分地形消失了)。 我当前的操作方式是使用接近中心的“红色”值逐渐升高的纹理。我循环遍历“变形”纹理的每个像素,如果当前像素与地形像素重叠并且具有足够高的红色值,则将表示地形的颜色阵列修改为透明。如果当前像素的Red值不够高,我将使地形颜色变黑(红色值越接近阈值,它越黑)。在此操作结束时,我使用SetData更新了地形纹理。 我意识到这不是一个好方法,不仅因为我已经阅读了有关管道停顿的知识,而且还因为如果同时添加大量的陨石坑,它可能会变得很漫长。我想在GPU上重新制作Crater Generation,而不是在目标和要修改的纹理之间使用“渲染目标”“渲染”。那不是问题,我知道该怎么做。问题是我不知道如何使用这种方法保持刻录效果。 现在是刻录效果的样子: 是否有人知道我将如何创建类似的刻录效果(使形成的弹坑周围的边缘变暗)?我对Shaders完全不熟悉,但是如果需要它的话,如果有人指导我完成操作,我将非常感激。如果还有其他方法也很好。
11 xna  textures  effects 

4
渲染分辨率独立文本
我需要一种在游戏中绘制分辨率独立的文本的方法。也就是说,我需要能够放大文本,并且永远都看不到像素伪像。 谁能对我的建议提出任何建议?
11 xna  2d  3d  text 

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.