Questions tagged «c#»

C#是Microsoft与.NET平台一起创建的一种多范例,托管,强类型,垃圾回收的编程语言。

1
在加载屏幕期间,我应该给垃圾收集器打电话吗?
因此,出于好奇,我最近阅读了一些有关Garbage Collection的内容,并且经常重复执行某些操作:垃圾收集会导致程序突然变慢,具体取决于收集的“深度”。 但是在视频游戏中,有时用户并不能真正注意到一个小的延迟:加载屏幕。因此,我认为,在加载阶段(通过Collect())继续进行完整的垃圾收集可能会很有用,因为必须等待一两秒钟才不会真正影响用户。 我的问题是,这真的有用吗,或者这样做没有真正的好处?
9 c# 

3
运输游戏图形(例如许多小的BMP文件)时的最新技术水平是什么?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 去年关闭。 我们有很多小BMP文件,如果将它们组合在大TAR / ZIP /任何文件中,我认为它们会更容易复制。 运输游戏图形的最新状态是什么? 我们正在使用C#,并且知道zlib。只是集思广益,看看是否有比zlib更好的解决方案。

2
Lua与Python作为XNA / C#平台的脚本语言的优缺点是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我正在考虑将一种古老的想法付诸实践。该游戏的核心点是游戏环境和对象的功能自定义的可能级别(例如修改太空船武器的行为)。为此,游戏需要编写脚本。我也不打算将其商业化,这对我来说只是一个有趣的编程挑战。 由于我主要是.NET专家,因此我将在游戏本身中使用XNA / C#。对于脚本,我考虑使用Python或Lua。我以前有使用Python的经验,没有反对它的语言。另一方面,Lua对我来说几乎是全新的,除了我在这里和那里所做的一些魔兽世界插件的小改动之外,它看起来很有希望。所以这是我的问题: Lua与Python作为XNA / C#平台的脚本语言的优缺点是什么? XNA / C#中的其中之一是否更容易使用?与XNA / C#一起使用时,其中之一具有某些特定的优点或缺点吗?为什么要为XNA / C#推荐一个?
9 xna  c#  scripting 

3
针对多个正方形的基于图块的高效碰撞检测?
目前,我正在自己开发一款基于图块的游戏(想想Terraria,但不要太幻想了(我认为这是一个词?如果不是,抱歉)。 无论如何,我目前有碰撞检测功能(甚至适用于极端情况!),这对我来说是一大进步。看到一个精灵没有穿过一个块,这让我非常高兴。但是后来我有了基准测试的想法。馊主意。 1000平方,没问题。10,000平方,对于3个字符来说有点滞后。100,000平方(真是巨大的地图),无法显示3个字符。 我遇到的问题是,我什至不想考虑与玩家,角色,物品等距离太远的块,但我不想不断地将这些块装入内存。 到目前为止,这是我的算法,请随时批评。 foreach (Block in level) { if (distance from block to player > a specified amount) ignore this block; else { get the intersection depth between the two bounding boxes if (depth of intersection != Zero-vector) { check y size vs x size resolve on smallest …

4
我应该使用什么技术来促进XNA GameComponents之间(或游戏中任何类型的组件之间)的通信?
我从第一个“适当的”游戏项目开始,并且不可避免地遇到障碍,试图决定XNA中的游戏组件应该如何通信。 从以前的(Java)GUI编程事件来看,处理程序和侦听器似乎是前进的道路。因此,我将拥有某种类型的事件总线,该事件总线可以接受事件注册,并可以订阅这些事件的类,并由处理程序来处理它们。例如(伪代码): class SpriteManager Update(){ if(player.collidesWith(enemy) // create new 'PlayerCollisionEvent' } class HUDManager onPlayerCollisionEvent(){ // Update the HUD (reduce lives etc) } 但是,我不确定完全完成此操作所需的代码设置(在C#中)。是什么跟踪事件(某种公共汽车?),它的结构如何? 在游戏服务上似乎也有很多提及,您可以在Game.cs主类中注册一个GameComponent,然后从引用了主要“ Game”对象的代码中的任何位置获取它。我已经使用SpriteBatch对象尝试了此操作,这看起来非常简单..但是,我看不到它像事件模型那样灵活。 以敌人死亡时为例。我们要更新游戏分数。使用服务,我可以获得对在Game1中创建并作为服务添加的StateManager对象的引用,然后将“得分”设置为新值。我认为“ onEnemyDeath”事件可以由多个类以不同的方式处理,但是由相关“敌人死亡检测”部分中的一行代码启动,比单独转换每个必需的GameComponent然后调用任何东西更好。方法是必需的。 还是这些次等策略比其他策略好? 我意识到这和游戏通信范例一样,在一定程度上是我对C#的不充分了解,但是我真的很想弄清楚这一基本知识。 更新资料 看过服务时,我不太相信它的细节-它基本上是在传递一个全局变量(据我了解)。 更新2 看过有关事件处理和测试示例代码的基础教程之后,看来事件将是我所讨论的逻辑选择。但我在所看到的示例中使用的却很少。有一些明显的原因为什么不应该这样做?

1
波浪纹波效应?
我从事塔防游戏已有一段时间了,到目前为止,我对结果非常满意。但是,我想补充一件事。 我在这里观看了适用于Windows Phone 7的GeoDefense视频:http : //www.youtube.com/watch?v= YhPr4A4LRPQ 注意如何(当一个单位被杀死或一个弹丸击中一个单位时),背景以某种波效应起伏。 我该如何做一个等价物?我以为我需要以某种方式在顶点着色器中执行此操作,因为它的顶点由许多顶点组成。 你打什么电话 编辑需要特别注意的是,我的XNA游戏不是针对Windows Phone而是针对Windows PC。
9 xna  c#  hlsl 

3
如何找到被移动的圆圈扫过的2D网格单元?
我正在基于2D网格制作游戏,其中有些单元格可以通过,有些则不能。动态对象可以独立于网格连续移动,但需要与不可逾越的单元碰撞。 我编写了一种算法来追踪射线对着网格,从而为我提供了所有与射线相交的单元。但是,实际对象不是点大小的。我目前将他们表示为圈子。但是我无法找到有效的算法来追踪运动的圆。这是我需要的图片: 数字显示圆与网格单元碰撞的顺序。有人知道找到这些冲突的算法吗?最好使用C#。 更新圆可以大于单个网格单元。

2
AABB碰撞造成的平台跳跃问题
首先参见图: 当我的AABB物理引擎解析交点时,它会通过找到穿透较小的轴来实现,然后“推出”该轴上的实体。 考虑“向左跳转”示例: 如果力度X大于力度Y,AABB将实体沿Y轴推出,从而有效地停止跳跃(结果:玩家停在半空中)。 如果VelocityX小于velocitY(未在图中显示),则程序将按预期运行,因为AABB将实体沿X轴推出。 我怎么解决这个问题? 源代码: public void Update() { Position += Velocity; Velocity += World.Gravity; List<SSSPBody> toCheck = World.SpatialHash.GetNearbyItems(this); for (int i = 0; i < toCheck.Count; i++) { SSSPBody body = toCheck[i]; body.Test.Color = Color.White; if (body != this && body.Static) { float left = (body.CornerMin.X - …

2
在线多人游戏基础知识
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 6年前关闭。 我目前正在实时开发ac#在线多人游戏。目的是使用UDP协议建立基于客户端/服务器的连接。到目前为止,我已经使用UDP进行玩家的移动,并使用TCP进行事件(玩家射击,玩家丧命),因为我需要确保这些数据将到达连接到服务器的所有玩家。我知道UDP被称为“不可靠”,并且某些数据包可能会丢失。但是我到处都读到永远不要混用TCP和UDP,因为它会影响连接。 主要问题是我应该如何组织我的网络? UDP是无连接的,我该如何保存谁是谁?我应该在列表中保存客户端的IP地址吗? 我应该使用TCP处理重要事件还是使用UDP?如果需要使用UDP,如何确保数据不会丢失? 通过同时使用TCP和UDP,我需要为每个播放器将其IP保存在一个列表中(用于UDP),并将TcpClient保存在另一个列表中(对于UDP)。我如何才能使其更有效?

2
在设计或渲染时缩放像素艺术文件?
如果创建以后需要在屏幕上按比例放大的像素艺术文件,则单个像素将变成4像素的盒子。我应该使用2x2像素创建像素图还是应该使用1x1像素创建像素图,以便稍后可以在XNA中以1:2比例将其缩放到2x2像素? 我倾向于认为1:1会导致过多的细节而不是像素美工效果,因此我希望最终的结果采用2:1样式,其中我想要的精灵的1x1像素将在屏幕上占据2x2像素。
9 xna  c#  sprites 

2
模拟漂浮在水面上的物体
我正在研究自上而下的钓鱼游戏。我想对绕湖运动的船实施一些物理和碰撞检测。我希望能够实现来自主电动机或拖曳电动机的推力,风对物体的影响以及水对物体的阻力。 我一直在研究Farseer物理引擎,但是没有使用物理引擎的经验,因此我不确定Farseer是否适合此类应用(大多数演示似乎都是将重力应用于垂直方向)。顶部/底部型号)。 Farseer引擎合适吗?还是其他引擎更合适?

7
维基百科A *寻路算法需要大量时间
我已经在C#中成功实现了A *寻路,但是速度很慢,而且我不明白为什么。我什至尝试不对openNodes列表进行排序,但仍然相同。 映射为80x80,并且有10-11个节点。 我从维基百科这里获取了伪代码 这是我的实现: public static List<PGNode> Pathfind(PGMap mMap, PGNode mStart, PGNode mEnd) { mMap.ClearNodes(); mMap.GetTile(mStart.X, mStart.Y).Value = 0; mMap.GetTile(mEnd.X, mEnd.Y).Value = 0; List<PGNode> openNodes = new List<PGNode>(); List<PGNode> closedNodes = new List<PGNode>(); List<PGNode> solutionNodes = new List<PGNode>(); mStart.G = 0; mStart.H = GetManhattanHeuristic(mStart, mEnd); solutionNodes.Add(mStart); solutionNodes.Add(mEnd); openNodes.Add(mStart); // …

2
使用向量在XNA / C#中移动精灵
我目前正在研究使用C#语言开发XNA游戏。 我有两个类:主游戏处理程序和“ sprite”类。以下是一些基本的伪代码,我希望可以充分描述问题。 Game.cs class game { sprite the_sprite; void update(time) { var mouse = mouse.state if(mouse.clicked) { this.the_sprite.moveTo(mouse.x, mouse.y) } this.the_sprite.update(time) base.update(time) } } Sprite.cs class sprite { vector2 location; vector2 move_to; void moveTo(x, y) { this.move_to = new vector2(x, y) } void update(time) { if(this.location.x > this.move_to.x /* …
9 xna  c#  vector  movement 

1
创建棋盘游戏AI
我想编写一个棋盘游戏,名字叫Okey,在土耳其最受欢迎。http://en.wikipedia.org/wiki/Okey 但是我有一些关于AI的问题。 Firslty让我解释一下游戏。 该游戏由4位玩家进行。 在这个游戏中,共有106张磁贴,其中2张是假小丑。其他104个瓷砖分为4种颜色,通常为绿色,黑色,蓝色和红色。所有颜色都有两组瓷砖。一组ise包含13个图块,其顺序为1到13。 每个玩家开始14个磁贴(一个是开始15,然后首先开始),然后将下一个玩家抛出最不需要的磁贴之一。下一个玩家可以获取此图块,也可以从桌子中间的堆栈中获取另一个图块。游戏以逆时针方向播放。 该游戏的目的是尽快找到14个图块的有效序列。玩家可以使用相同的颜色按顺序编号对齐图块,直到13。例如绿色1,绿色2,绿色3。这里有一个例外,可以跟1到13。例如红色12,红色13和红色1是有效集。但是红色13,红色1和红色2无效。 或者玩家可以按相同编号的颜色对齐图块。例如绿色1,黑色1,红色1,蓝色1。 每个集合必须是3个或更多的图块才能有效,并且每个集合都称为“每”。少于3个图块对完成无效。有效的整理集可以是这样的。G:绿色,B:蓝色,R:红色,BL:黑色G1 | G2 | G3 B2 | R2 | BL2 R9 | R10 | R11 | R12 BL13 | R13 | G13 最后一件事,当开始游戏时,选择一个图块来确定小丑(okey)。例如,如果选择“蓝色3”,则选择“蓝色”。蓝色4将是小丑(okey),玩家可以使用此图块,而不是玩家赢得或完成一组(每张)所需的任何图块。 当然,这些规则是一般性规则,可以概括以解释问题。如果您可以阅读英文,则可以查看此链接以获取更多信息http://tr.wikipedia.org/wiki/Okey或Google Translate的翻译页 http://translate.google.com/translate?js=n&prev=_t&hl= zh-CN&ie = UTF-8&layout = 2&eotf = 1&sl = tr&tl = zh-CN&u = http://tr.wikipedia.org/wiki/Okey 那我可以使用哪种AI算法?我搜索了minimax理论和alpha beta修剪。但是这些理论通常是大约2个象棋或井字游戏的玩家游戏。 原始问题在stackoverflow上:https …

1
使用Windows API在XNA中呈现任意文本?
在Andrew关于我的另一个问题的评论中,他指出可以使用Windows API将文本呈现到Texture2D,而不是直接使用SpriteBatch绘制文本。怎么做?我猜在将图像数据写入Texture2D之前有一个中间步骤。 我之所以问是因为,这将使我能够即时渲染Unicode字符,而不是需要使用SpriteFont预先渲染所有需要的字形(可悲的是,韩文和日文中的字形太多,以致于该路线不可行)。谢谢!
9 xna  c#  windows 

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.