游戏开发

专业和独立游戏开发人员的问答

2
在两个联网状态之间插值?
我在客户端上模拟了许多实体(它们的速度以每帧为基础添加到它们的位置中),我让它们自己推算。他们发送有关上次被查看的地点及其速度变化的更新。效果很好,其他玩家也看到了这项工作。但是,一段时间后,这些播放器开始不同步。这是因为延迟。 我想知道如何在状态之间进行插值,以使它们看起来处于正确的位置。我知道玩家最后一次看到的位置以及他们当前的速度,但是插值到最后一次看到的状态会导致玩家实际向后移动。我根本不能对其他客户使用速度,而只是将它们“拖”向适当的方向,但是我认为这会引起锯齿运动。有哪些选择?

1
呼吸游戏/电影角色
呼吸(胸部和面部特征的移动):我想问一下是否很难建模以及计算是否昂贵。我最近注意到它在马达加斯加3电影中产生了巨大的影响,但是(请纠正我,如果我错了)不记得在任何游戏中都看到过(除了冷/冬场景中的蒸汽云),而且很少有动画电影可以看到明显的程度(例如在情节或情况有必要时)。 从电影图形和游戏图形的角度,我将不胜感激。

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

2
如何在2D平台游戏机中使角色在不平坦的墙壁上行走?
我想要一个可玩的角色,他可以以任何角度(包括侧身和倒置)在有机表面上“行走”。通过具有倾斜和弯曲特征的“有机”水准仪代替90度角的直线。 我目前正在从事AS3(中等业余经验)的工作,并使用Nape(几乎是新手)来进行基于重力的基本物理学,该行走机械手显然是一个例外。 有没有可能使用Nape约束的程序方法来进行这种步行动作?还是最好按照水平面的轮廓创建明确的步行“路径”,并使用它们来约束步行运动?

2
将角色的技能和能力作为命令,很好的做法?
我正在设计一款包含具有独特进攻技能和其他能力(例如建造,修理等)的角色的游戏。玩家可以控制多个这样的角色。 我正在考虑将所有这些技能和能力放到单独的命令中。静态控制器会将所有这些命令注册到静态命令列表中。静态列表将包含游戏中所有角色的所有可用技能和能力。因此,当玩家选择一个角色并单击UI上的按钮以投射咒语或执行一项功能时,View会调用静态控制器从列表中获取所需命令并执行该命令。 但是,鉴于我要在Unity中构建游戏,因此我不确定这是否是一个好的设计。我想我可以将所有技能和能力作为独立的组件,然后将其附加到代表游戏角色的GameObjects上。然后,UI将需要保留角色的GameObject,然后执行命令。 对于我正在设计的游戏,什么是更好的设计和实践?


4
如何在不破坏每个实体单一类型的一个组件的情况下,为每个实体使用多个网格?
我们只是从基于层次的游戏引擎切换到基于组件的游戏引擎。我的问题是,当我加载具有网格层次结构的模型时,我的理解是,基于组件的系统中的实体不能具有相同类型的多个组件,但是每个组件都需要一个“ meshComponent”在模型中进行网格划分。那么我该如何解决这个问题。 他们在此站点上实现了基于组件的游戏引擎:http : //cowboyprogramming.com/2007/01/05/evolve-your-heirachy/

1
为什么Unity的OnCollisionEnter不能给我表面法线,最可靠的方法是什么?
Unity的on碰撞事件为您提供了Collision对象,该对象为您提供了有关发生的碰撞的一些信息(包括具有击中法线的ContactPoints列表)。 但是您不会得到的是所命中的对撞机的表面法线。这是说明的屏幕截图。红线来自ContactPoint.normal,蓝线来自RaycastHit.normal。 这是Unity隐藏信息以提供简化API的实例吗?还是标准的3D实时碰撞检测技术只是不收集这些信息? 对于问题的第二部分,确保碰撞产生表面法线的方法是一种肯定有效且相对有效的方法? 我知道射线投射可以为您提供表面法线,但似乎我需要针对所有场景进行多次射线投射才能做到这一点(也许接触点/法线组合在第一次投射时错过了对撞机,或者您可能需要对所有物体进行平均接触点的法线以获得最佳效果)。 我目前的方法: 备份Collision.contacts[0].point其正常命中 对播放正常的否定命中的光线float.MaxValue,Collision.collider 如果失败,请对非负法向重复步骤1和2。 如果失败,请尝试执行步骤1至3 Collision.contacts[1] 重复4,直到成功或直到所有接触点耗尽为止。 放弃,返回Vector3.zero。 这似乎可以捕获所有内容,但是所有这些射线广播都使我感到不安,并且我不确定如何在足够的情况下测试这种方法是否奏效。有没有更好的办法? 编辑 如果这确实是3D冲突的处理方式,那么在一般情况下为什么要概述为什么与Unity特有的东西一样受欢迎。

2
在2D阵列中找到形状,然后进行优化
我刚刚被允许使用一张图像...下面的游戏图像显示了一些变暗的块,这些块被认为是“ T”形的一部分。可以看出,代码使带有红色斑点的块变暗,而没有看到带有绿色轮廓的“ T”形。 我的代码遍历x / y,将块标记为已使用,旋转形状,重复,更改颜色,重复。 我已经开始尝试以极大的恐惧来修复此检查。当前的想法是: 遍历网格并记下所有模式出现的情况(不使用标记框),并将其放入数组中 再次循环遍历网格,这次注意哪些块被哪些模式占用,因此哪些块被多个模式占用。 再次遍历网格,这次注意哪些模式阻碍了哪些模式 感觉不错... 我现在该怎么办? 我想我必须 尝试各种形状相互冲突的组合,从首先阻碍大多数其他图案的形状开始。我该如何处理? 使用说我有3个相互冲突的形状占据8个块的理性,每个形状是4个块,因此我最多只能有两个形状。 (我也打算合并其他形状,在进行冲突形状处理时可能需要考虑分数加权,但这可能是另一天) 我不认为这是一个垃圾箱包装问题,但是我不确定要寻找什么。希望有道理,谢谢您的帮助 编辑尽管有明确的问题,每个人似乎都已经了解了,是的, 我想在每种颜色中找到最大的“ T”形 (因为如果我给你2分,而你又获得3分,你会有点生气)

1
执行游戏动作的模式
在游戏中执行各种动作是否存在一种公认的模式?玩家执行动作的方式,以及AI可能执行的动作,例如移动,攻击,自毁等。 我目前有一个抽象的BaseAction,它使用.NET泛型来指定由各种操作返回的不同对象。所有这些都以类似于Command的模式实现,在该模式中,每个动作都对自己负责并完成其所需的全部工作。 我之所以这么抽象,是因为我可以只有一个ActionHandler,并且AI可以将实施baseAction的不同操作排队。而且之所以通用,是因为不同的动作可以返回与该动作相关的结果信息(因为不同的动作在游戏中可能具有完全不同的结果),以及一些常见的beforeAction和afterAction实现。 那么...是否有更可接受的方式来执行此操作,或者听起来还不错吗?

3
如何做几何大战引力效果好
我不是在这里谈论背景网格,而是在重力井周围旋转的漩涡状粒子!我一直很喜欢这种效果,并决定将其复制是一个有趣的实验,我知道GW到处都使用胡克定律,但是我不认为使用弹簧来完成“粒子到井”效果,它看起来像是距离平方函数。 这是演示效果的视频:http : //www.youtube.com/watch?v=YgJe0YI18Fg 我可以对某些粒子实施弹簧或重力作用,这很容易。但是我似乎无法获得类似于GWs效果的效果。当我观察游戏中的效果时,似乎粒子是从井自身发出的,是成束的,它们围绕井的中心向外螺旋旋转,最终被扔向井外,向井后退,然后重复。 生成时如何使粒子向外螺旋?在井附近时,我如何将粒子束保持在一起,而当它们向外抛出时,它们如何彼此分开扩散?我如何使颗粒牢固地附着在井上? 编辑: http : //www.youtube.com/watch ?v= 1eEPl8kOXN8 <-视频https://dl.dropbox.com/u/49283213/gw.gif <-粒子路径的GIF 我禁用了GW中的随机化功能,以使粒子效果更容易看清,这是一个分钟的视频,您可以看到蓝绿色的排水孔散发出一堆粒子。红色粒子来自通常在各处出现的爆炸。我从视频中得出的一些观察结果: 粒子从排水管的中心(或中心附近)发射 所有粒子都被迫绕着中心沿顺时针方向运动,因此应用了某种切向运动,当红色爆炸粒子接近排水口时,您可以轻松地看到这一点。

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 

5
您是否需要昂贵的服务器和高档主机才能制作多人游戏?
我已经完成了RPG的开发工作,将其制作成多人游戏似乎更加有趣。SFML具有联网功能,我认为这是可能的,但是再说一次,我一生中从未尝试过有关联网的基本知识,实际上,我对联网的了解非常有限。 从资源角度来看,制作多人游戏需要什么?我不是在谈论MMO,更像是一种合作游戏。我需要大量现金来支付托管和服务器费用吗?
11 c++  multiplayer  sfml 

2
如何将点击拖动动作限制在某个区域?
对于某些通用标题,我深表歉意。我真的对如何完成我想做的事情并不了解,这甚至使研究可能的解决方案变得更加困难。 我正在尝试实现各种路径标记(也许有一个最合适的名称,但这是我能想到的最好的名称)。 在玩家前面将有一个路径标记,它将确定玩家完成转弯计划后的移动方式。玩家可以单击并拖动标记到他们选择的位置,但是标记只能在定义的工作区域(灰色位)内移动。 所以我现在遇到两个问题: 首先,我应该如何准确定义该可行区域?我可以想象,可能有两个向量以玩家为起点来形成可行的角度,也许这两个弧线可能来自以玩家为中心的圆,但是我绝对不知道如何将所有这些一起。 其次,在定义了可以放置标记的区域之后,如何强制标记应仅停留在该区域内?例如,如果玩家单击并拖动标记,则标记可以在工作区域内自由移动,但不能离开该区域的边界。因此,举例来说,如果玩家开始向上拖动标记,它将向上移动,直到碰到工作区域的末端(下面的第一张图),但是如果此后玩家开始侧向拖动,则标记必须跟随拖动同时在区域内(下面的第二张图)。 我希望这不会太令人困惑。谢谢你们。 编辑:如果这有所作为,我将C + +与Marmalade SDK结合使用。

2
您如何为游戏中的“气味痕迹”建模?
假设您要创建3D游戏,并且让玩家或手机能够通过追踪他们的气味来吸引其他实体。是否存在与此用例相匹配的已知数据结构? 如果您只有很少的人,您可能可以做类似3D坐标到实体ID的映射的操作,但是实际气味的工作方式有所不同,因为它会随着时间的流逝而逐渐消失。而且在大多数时间里,您只能大致了解到那里发生了什么,以及大概有多少种该类型的东西在那里发生了。随着时间的推移,这种近似变得最糟,直到消失。 我想这有点像以一个确切的数字开头,然后慢慢地删除最低有效数字,直到您也失去了最高有效数字。但这并不能真正帮到我,因为实体ID除了单独的ID外,通常不会编码为包含实体类型。
11 ai 

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.