Questions tagged «multiplayer»

由多个玩家共同或竞争地在本地或远程播放。

6
有什么方法可以防止或减少在线多人游戏中的作弊行为?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 存在Punkbuster只是为了防止作弊,但是在启用Punkbuster的游戏中作弊很普遍。最终用户无法运行Modern Warefare 2,因为他们只能运行自己的服务器或进行任何Mod修改,并且欺诈行为不断发生。 对于每个客户端都在PC上运行的多人游戏,可以采取哪些措施来减少或消除作弊行为?

1
游戏客户端如何知道服务器正在其LAN上运行?
在许多多人游戏中,都有LAN播放选项。我的问题是,客户端如何知道服务器在局域网中的位置? 我能想到的唯一方法 通过广播地址发送广播。这样做的缺点是有时会被不同网络环境中的路由器或交换机过滤。 尝试连接到子网中每个IP上的服务器。这样做的缺点是速度较慢(特别是如果网络使用10.XXX.XXX.XXX作为IP地址)和小型ddos攻击,但不会被过滤。 尤其是在其他网络环境中,游戏如何做到这一点?

6
玩家位置以哪种变量类型存储在MMORPG(例如WoW)上?
我什至听说J. Carmack很快就谈到了... 在如此巨大的世界中,软件如何能够如此精确地跟踪玩家的位置,而无需在区域之间加载,并且可以在多玩家规模上进行跟踪?数据通过网络代码时如何格式化? 我可以理解顶点是如何存储在图形卡的内存中的,但是当涉及到同步多人游戏时,我无法想象什么是最好的。

12
在线PvP游戏中的平衡
我不知道这个邪恶的问题是否有公认的解决方案。我正在考虑在线PvP游戏的设计。游戏的一个关键方面,这只是给定的,而不是我的选择,是人们会在非常不同的时间加入游戏。在已经建立了强大的玩家之后,新玩家仍然可以出现。 如何平衡这样的游戏,以使后发者不会立即被强大的玩家所压倒?我玩过这样的几款游戏,而减轻这种情况的唯一方法是定期重启游戏,定期发布新游戏世界,以使所有人都有一个良好的开端。在我自己的一款游戏中,我尝试了一种保护系统,新玩家可以免受攻击25天。一直进行到25天,直到开始正常破碎为止。 这种情况会给新玩家带来很多挫败感,并使其中许多人立即退出。有什么天才的解决方案可能会有所帮助?我想到的是让新玩家与旧玩家之间的距离更远,因此功能强大的玩家需要一段时间才能找到新手,从而给他们留出时间来捍卫自己。有什么想法吗?


3
使用Elo与两名以上的球员进行的球员排名
我想使用Elo来跟踪某个游戏的比赛之间的玩家排名,但是在一场比赛中最多可以玩4个玩家。我见过像卡尔卡松这样的游戏使用Elo时有两名以上的玩家在玩,但我对Elo超出1-1的比赛并不熟悉。 从维基百科的文章中,我想扩展的两人方程式是: E a = 1 /(1 + 10 (R b -R a)/ 400) E b = 1 /(1 + 10 (R a -R b)/ 400) R x 新 = R x 旧 + 32 *(W – E x),如果X赢,则W = 1,如果X输,则W = 0。 给定两个以上的参与者,E x和W 的计算将如何变化?

6
创建无缝循环的2D多人游戏关卡?
最近出现了有关如何创建可以进行循环关卡设计的2D横向滚动多人游戏的讨论(《星际思考》及其世界如何循环)。 我认为最简单的方法是制作一个带有触发区域的矩形地图,该区域可以将玩家从一侧转移到另一侧。但是,这种方法的明显问题是在地图边缘一次有多个玩家的情况。您不希望只是将玩家传送到彼此面前,而是需要一种在不让其他玩家消失的情况下运送玩家的方法。 为了补充这个想法并解决问题,我提出了以下建议:设置一个触发区域(图像中的红色正方形),玩家可以在其中看到“克隆区域”(绿色正方形)。在这个绿色方块中,来自触发区域另一侧的对象将被复制到其相应的克隆区域(可以通过A和B形状看到)。当玩家到达“克隆区域”的起始边缘时,他们将被传送到地图的另一侧。 在此示例中,玩家2会认为他们正在看玩家1,但是实际上他们会在看到他的克隆,反之亦然。 对于当前的问题,这似乎有些极端和复杂。我现在的问题是要知道此解决方案是否是解决该问题的好方法,还是有解决此问题的更简单方法?

2
游戏主机应该是授权机构,还是另一个愚蠢的客户?
当设计一个网络多人游戏时,一个玩家托管,另一个玩家连接,我知道两种策略: 让主机玩家的游戏为权威,所有其他玩家为哑客户端,试图赶上当前的游戏状态。在代码中,将有很多特殊情况,具体取决于当前播放器是否是主机。 通过在另一个线程上运行隐藏的专用服务器,使主机像其他所有人一样成为哑客户端。专用服务器将成为授权者,而主机将像其他所有人一样(通过localhost)连接到它。 每种优点/缺点是什么?哪个是最常用的(或者它因游戏类型/大小而异)?

9
将多人游戏添加到HTML5游戏中
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 6年前关闭。 我对制作目前具有合作社经验的游戏感兴趣,但是我对在HTML5中实现这一目标的最佳方法感到好奇。 我在使用直线C插槽之前以及在SDL的Net库中进行过游戏。 在基于画布的环境中执行此操作的最佳选择是什么? 目前,我所能提供的要么是AJAX /数据库解决方案(具有高刷新率),要么是实现以某种方式通过套接字集中数据的PHP服务器。 总体游戏玩法将是2.5D平台式的游戏,因此两个客户都需要不断更新玩家的位置,敌人的位置,射弹,环境数据等。

2
多人游戏实施,如果我选择以后可以实施吗?
我计划使用XNA构建游戏项目。目前,我不确定是否要添加多人游戏功能,因为我还有很多其他问题需要解决,但我仍然很陌生。我不希望这个项目一定失控。 我的问题是,如果我不打算添加多人游戏支持而进入我的项目,是否容易倒退(通常不是)并添加必要的代码来捕获多人游戏?


2
停止播放器时,如何阻止播放器因本地输入预测而漂移?
我正在开发2D服务器-客户端多人游戏引擎(您可以在此处尝试)。它使用WebRTC DataChannel。(连接是对等的,但主机对等方仍充当服务器。) 除了连接性之外,最大的问题是本地输入预测。我们照常做:在按键时,玩家立即移动,告诉主机按下了哪些键,从主机接收回数据并将其与历史位置进行比较。如果存在差异,则随时间校正位置。即使ping高,这在低丢包率或PDV情况下也能很好地工作。 如果存在损耗或PDV,则偏差可能会更大。我认为这是因为,如果第一个指示输入变化的数据包被延迟或丢弃,主机将稍后发现,并在其本地输入条件显示之前开始更改该玩家。 如果玩家正在移动,我们会提高校正的幅度,因为它不太明显。这似乎弥补了开始移动和移动时的空白。但是,如果它们突然停止,则更明显。然后,如果PDV或丢失表示主机认为主机稍后停止,则主机超调,发送回数据,表示主机距离主机稍远,而校正会使播放器稍微偏离一点。在不稳定的连接中,玩家通常在停下来后通常会漂移。 我没有在其他游戏中注意到这一点。如何缓解这种情况?

4
如何保护您的实时在线射击游戏不受潜在机器人的攻击
我正在寻找一个自上而下的多人射击游戏。当我阅读了有关不同主题的文章时,我可以看到他们面临一些实际挑战,但是我全力以赴。 我无法理解的一件事是,我应该如何保护游戏免受尝试创建机器人的人的侵害? 我的意思是,据我所知,以保护玩家无法创建监听正在发生的事情并理解它的程序的方式来保护网络流量是不可能的。 所以让我担心的是,人们可以创建机器人来监听竞争对手玩家的当前位置,并发送模仿玩家的通讯,好像玩家正在精确的“完美”位置射击以赢得比赛。 那么,什么样的技术被用来保护这种机器人的实时游戏呢? 我还要提及的是,我曾尝试搜索讨论(这听起来像很多人都在苦苦挣扎),但没有找到关于它的任何具体信息,只是作为有关实时游戏网络的更广泛问题的一部分。如果我本应该看起来更努力一点,请随时把我放在我的位置:)

3
在多人游戏中插值位置
为了节省多人游戏的带宽,我不会在每个服务器滴答声中更新每个对象,而是每个对象都有一个updateRate来告诉游戏该对象应在每个X服务器滴答声中进行更新。 当我收到某个对象的更新消息时,我会计算出我希望下次更新的时间: origin = serverCurrentPosition diff = serverNextPosition - origin arriveTime = now + timeBetweenTicks * updateRate 当我绘制对象时,我计算了到下一次更新为止的剩余时间,并据此插值位置: step = 100 / timeBetweenTicks * updateRate delta = 1 - step * ((arriveTime - now) / 100) position = origin + diff * delta 它可以工作...但是在图形中仍然有些抖动,尽管按照我的理论,每件事都可以解决,因为缩放应该照顾一些滞后,应该吗? 所以这里的问题是,这是最好的方法吗?我应该在计算中加入实际滞后吗?如果是这样,我该怎么做?我做了一些实验,但抖动只会变得更糟。

3
P2P网络隐藏位置?
我一直在致力于安全游戏的P2P架构,并且已将问题分为五个子问题: 非法修改发送的游戏状态 准确掉落作弊者 同意游戏状态 避免“前瞻”作弊 隐藏对手的敏感信息 我几乎解决了前四个问题,但我遇到的是最后一个问题。 在详细介绍之前,我只想问一下在建立“防欺诈” p2p网络列表中是否缺少任何内容。我对诸如使用aimbots之类的作弊方式不感兴趣,仅对使p2p网络像集中式服务器一样安全不感兴趣。 因此,到目前为止,在隐藏敏感信息方面,我一直专注于游戏中玩家的位置,在这种情况下,对手的位置并不总是应该知道的。然后,问题就变成了如何确定是否应该在不知道对手位置的情况下将位置发送给对手。 我已经排除了诸如对手发送多个错误位置供您比较您的错误位置之类的方法,因为您的对手很容易滥用这样的系统,因为如果其中一个错误位置碰巧从您的位置“可见”,他就会获得您的位置。 我一直专注于一种方法,在这种方法中,您会收到对手的“视野”,从而可以确定您是否应该发送职位。但是,这在英雄联盟之类的游戏中是个问题,在该游戏中,对手的视野也是高度敏感的信息。我试图通过使用奇异矩阵变换视野来解决此问题,这意味着您不能从视野的变换版本返回原始版本,但是由于它是线性变换,因此您仍然可以弄清楚您的位置是否在内部视界与否。 但是,这并不完美,转换后无法恢复确切的视场,但是可以获取有关视场中“坡度”的信息(视场由多条线构成,并且可以确定每条线的斜率)修复后,可以用于相对便宜地重建原始视野。 从本质上讲,我需要的是一个可以确定某个位置是否“可见”的函数,并且重建此函数/视野必须在计算上如此严格,以至于一旦完成重建视野,它就不再与游戏进行中。有没有超级聪明的人碰巧知道这种方法? Edit People对整个“视觉领域”感到有些困惑,因此我打算在这里给出更详细的解释。视野由一组线组组成,您只需检查您的位置在线的哪一侧,即可轻松检查某个位置是否在这些组中,如果您知道该组中所有线的位置在同一侧它在那个小组内部,因此在视野之内。 但是,发送的信息不是此行,而是行的变换和变换(矩阵乘以2 x 2),您仍然可以通过使用接收到的变换首先对其进行变换,以检查位置在行的哪一侧并将该值与转换后的行进行比较。这里的关键是变换是奇异的,这意味着不可能找到逆向返回到原始行。但是,可以通过仅检查变换后的线的哪一侧位于许多点上,直到精确地确定了直线的原点,比不知道的计算便宜得多,从而确定使直线重构的直线的斜率线的斜率。 我正在寻找一种确定点是否在区域内的方法,根据该方法无法重建该区域(我怀疑这种方法存在,因为您总是可以对其进行暴力破解),或者计算量很大。

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.