问题标签 [xna]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
797 浏览

xna - XNA 项目 - 谁负责绘图?

我只是在玩 XNA,我需要在每一帧中绘制几个不同的模型。目前,Game 对象持有对我所有模型的引用,并一个接一个地绘制它们。每个人都有自己不同的绘画方式——一个有两个独立的纹理,另一个可能镜像到另一侧,等等。

我想知道是否可以只添加一个

public void Draw(SpriteBatch spriteBatch)

方法到我的所有模型(当然来自 BaseModel),并让每个类负责绘制自己,或者我应该坚持让类根据 Update 方法上的事件(KeyboardState)设置它们的数据,并保持Game 类中的所有图形逻辑。

有没有首选的方法来做到这一点?

0 投票
5 回答
2470 浏览

visual-studio-2008 - 是否可以使用 Visual Studio 和 MS XNA Game Studio SDK 编写商业 XBOX 游戏?

我知道大多数商业游戏开发都是用汇编或 C/C++ 完成的,但有没有人尝试过使用 XNA 和 VS 2008 来创建一个适合在大街上发布的实时密集型应用程序,而不是仅在 XBOX Live 上发布。您遇到的限制是什么,您获得了什么样的帧速率以及分辨率是多少?

显然你可以用它来写冠军经理/摇滚乐队之类的东西,但你能用它来开发像 Pro Evo 这样的游戏吗?

我怀疑我已经知道答案,但我很想听听其他人使用 XNA 和 Visual Studio 2008 的经验。

0 投票
4 回答
1555 浏览

xna - 动态更改或破坏 Texture2D 以进行绘图和碰撞检测

我将 XNA 用于 2D 项目。我有一个问题,我不知道用什么方法来解决它。我有一个被绘制到屏幕上的纹理(图像),例如:

现在我希望能够破坏该结构/图像的一部分,使其看起来像:

所以现在的碰撞也适用于新图像。

哪种方式会更好地解决这个问题:

  1. 用另一个纹理交换整个纹理,在它被破坏的地方是透明的。
  2. 对 spriteBatch.Draw(sourceRectangle,destinationRectangle) 使用一些技巧来绘制所需的矩形,并以某种方式对此进行碰撞检查。
  3. 将纹理拆分为 4 个较小的纹理,每个纹理将负责其自己的绘图/碰撞检测。
  4. 使用我不知道的其他一些聪明的方法。

任何帮助,将不胜感激。如果您需要更多说明/示例,请告诉我。

编辑:为了澄清,我将为此提供一个使用示例。想象一堵 4x4 的墙,当被射击时,它的一小部分 1x1 被摧毁。

0 投票
3 回答
2007 浏览

c# - 单元测试 XNA:我需要模拟我的 GraphicsDevice

我在玩弄 XNA 框架。
为了帮助我,我制作了一个看起来像这样的辅助类:

现在我想对这个类进行单元测试。但正如您所见,我的构造函数需要一个图形设备和一个内容管理器。虽然我认为这在我的应用程序中有意义,但在我的测试中却没有。
我应该模拟这两个只是为了进行单元测试还是我的设计有缺陷?

--UPDATE--
我找到了一个可能有帮助的项目的链接:http ://scurvytest.codeplex.com/ 还没有任何 xp,因为编码必须为社交生活腾出一点空间。

--注意--
对不起,我的UML法语,我的公司不使用它,所以我除了在学校外从未使用过它。

0 投票
9 回答
6005 浏览

xna - 可用的游戏网络协议定义语言和代码生成

我一直在寻找一个好的通用二进制网络协议定义框架,以提供一种以多种语言(例如 Java 后端服务器和 iPhone 前端)编写实时游戏服务器和客户端(想想魔兽世界或雷神之锤 III)的方法用 Objective-C 和 Cocoa 编写的客户端)。

我想支持 Windows 上的 Java Flash 客户端、iPhone 客户端和 C# 客户端(以及 XBOX 上的 XNA 客户端)。

我正在寻找一种通过 TCP/IP 或 UDP 套接字流连接有效发送/接收消息的方法。我不是在寻找可以通过 HTTP Web 服务发送的东西,比如 JSON 或 XML 编组对象。虽然 Hessian 的二进制 web 服务协议是一个非常有趣的解决方案

我想要一种网络协议格式和客户端/服务器基本实现,它允许客户端连接到服务器并在定义的协议中发送任何消息并在协议中接收任何消息,而无需绑定到某种 RPC 端点。我想要在我的协议传入和传出的任何消息的通用流。这样我就可以支持服务器每 100 毫秒向所有客户端发送游戏中各种实体的位置之类的东西。

0 投票
6 回答
2614 浏览

c# - XNA 模拟游戏对象或解耦你的游戏

如果可以模拟 Game 对象以测试我的 DrawableGameComponent 组件,我在徘徊吗?

我知道模拟框架需要一个接口才能运行,但我需要模拟实际的Game对象。

编辑:这里是XNA 社区论坛上各自讨论的链接。有什么帮助吗?

0 投票
2 回答
8560 浏览

c# - 将图像的一部分渲染到位图 C# Winforms

我正在为我在空闲时间设计的 XNA 游戏开发地图编辑器。地图中使用的艺术品存储在单个纹理上,矩形存储有坐标和宽度等。

在 winforms 应用程序中,我可以通过从列表框中选择我想要的段来添加段,该列表框是从可能的段数组中填充的。

问题是我希望能够显示所选片段的预览,并且由于它存储在通用纹理上,因此我不能简单地设置一个图片框来显示图像。

无论如何使用矩形信息(.x,.y,.width,.height)来仅显示图片框中的图像部分,或者将部分位图并显示?

非常感谢

迈克尔·艾伦

0 投票
6 回答
10236 浏览

database - 游戏如何处理保存的内容?

我在 SO 上没有看到这个问题的答案,这让我担心它非常简单,我只是错过了一些东西,但这里有。

背景,随意跳过:我需要一门我多年前跳过的学士学位课程。理论上它是计算机图形学,但自从我离开后,它变得更像是游戏开发。这很棒,因为对我来说,它比填充算法和翻译以及过去的其他东西更有趣。这是每隔一年才开设的第 4 年课程,但我设法说服该部门让我对同一主题进行第 4 年的独立研究,并称这已经足够好了。

“运行”独立研究的教授不教授实际的计算机图形学课程,所以虽然他是一个聪明人,但这并不是他真正的领域。所以我的大部分问题都留给了我,一本教科书和互联网。你知道......就像一个独立的研究应该是。:)

/背景

我有一个喜欢开发游戏系统的朋友。我计划将他的一款桌面游戏制作成使用 XNA 的电脑游戏。

我没有预见到游戏机制有任何无法克服的挑战,但我很好奇的一件事是大多数游戏如何保存它们的内容?我的意思是通过几种方式,希望我能清楚地表达出来。

以您玩过的任何 RPG 为例。您可以点击“保存”按钮并保存世界、您的角色信息以及任何其他必要的信息。然后稍后您可以点击“加载”按钮并将其恢复。

还是NPC对话的情况。当我碰到 Merchant #853 时,他随机吐出 3 种不同的问候语之一。

还有其他我能想到的,但它们实际上只是同一主题的变体。即使有这两个例子,在我看来也可以使用相同的机制,但那个机制是什么?

我从事 Web 开发已有多年,所以我的思绪会自动跳到“数据库!”。数据库是任何问题的解决方案。我可以看到它在这里是如何工作的,但开销似乎相当陡峭。“这是我的 6mb 编译游戏……哦,还有 68mb 的 MySQL 安装。” 或者更糟糕的是,因为我使用的是 XNA,也许我需要找到一种方法来捆绑 SQL Server。:)

我想也许是 XML,但这对我来说也不合适。如果我想在 Xbox 上运行,它将如何工作?还是祖尼?(这些对于我正在做的事情不是必需的,但必须有一个解决方案将它们考虑在内。)

有谁知道其中的秘密?还是有一些想法?

谢谢杰夫

0 投票
5 回答
11549 浏览

xna - 在连续二维空间中进行避障的基本寻路

我正在编写一个模拟,其中一个生物对象应该能够向环境中的其他任意对象移动,在障碍物周围滑动而不是进行任何智能寻路。我不想让它规划一条路径——只是朝着一个大方向移动,并绕过障碍物。

这是一个 2D 环境(俯视图),每个对象都有一个用于碰撞检测的边界矩形。没有网格,我不是在寻找 A* 解决方案。

我还没有找到任何关于这种“愚蠢的”基于碰撞的寻路的教程,所以我可能没有使用最常用的术语来描述这一点。

关于如何实现这个(或教程链接)的任何建议?

0 投票
2 回答
2324 浏览

c# - XNA:仅将 SpriteBatch.Draw(...) 颜色应用于非透明像素

我有一个从具有 alpha 通道的 PNG 加载的精灵。该图像包含一个不透明的磁盘,其余部分是透明的。

我想使用 的color参数SpriteBatch.Draw(...)来改变磁盘的色调。然而,默认的混合行为将颜色应用到整个精灵,所以我最终在有色圆盘周围形成了一个不透明的方形轮廓。

有没有办法改变混合模式,使透明像素不受color参数影响?