游戏开发

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

2
有效消除游戏中的死物?
我正在使用for循环或foreach循环(无关紧要)来遍历所有需要更新或绘制的对象。但是,当某个对象被杀死时,我希望它再次从集合中删除。 为此,我将对象添加到一个死对象列表中,然后,在绘制并更新了所有内容之后,我将遍历此列表中的所有内容,并将列表中的对象也从原始源中删除。 有更好的方法吗?
10 xna  c#  xna-4.0 

1
如何在OpenGL中创建“夜空”效果?
我正在使用OpenGL创建游戏,我想渲染其中有几颗星星的夜空的效果。 我想在天空中产生闪亮的黑色效果,以便看起来不错。有人可以帮忙进行下去,也可以提供指向好教程的链接吗?
10 opengl  sky 

2
XNA游戏服务和荣耀的全局变量之间有什么区别?
该Microsoft.Xna.Framework.Game班有一个服务属性,它允许程序员通过提供一流的类型和类Add方法的一个实例,一个服务添加到他们的游戏。 现在,不必将传递AudioComponent给需要它的所有类和方法,而只需传递Game实例并查找服务即可。(服务定位器) 现在,由于游戏具有许多服务(GraphicsDevice,SceneGraph,AudioComponent,EffectsManager等),因此您现在基本上将Game传递给了一切。 那么,为什么不只将这些实例设置为Singleton呢?好吧,因为单例很糟糕,因为它们具有全局状态,可以防止测试,并使您的设计更加脆弱。同样,服务定位器被视为对许多人的反模式,因为您传递的是服务定位器(游戏),而不是将依赖项传递给对象,该服务定位器将此类与其他服务耦合在一起。 那么,为什么在XNA和游戏开发中推荐“服务”呢?是因为游戏不同于常规程序,并且与它们的组成部分高度交织在一起,并且必须通过类的功能所必需的每个组成部分都非常繁琐吗?游戏服务是游戏设计中必不可少的邪恶吗?是否有其他选择不涉及冗长的参数列表和耦合?
10 xna  c#  architecture 

2
在不通知用户的情况下将有关用户计算机的信息传输到我自己的服务器是否错误?
假设我在多个平台上发布了游戏。我的游戏代码检测到有关基础系统的一些琐碎问题,例如本地设置,“国家/地区”,操作系统,图形卡种类等。 假设我发布的游戏中包含代码,该代码会将这些信息发送到主服务器,在该服务器中,我收集和管理所有用于构建图表等的数据。 在多人游戏中,这样做很合理,因为与该服务器的连接完全合理。尽管如此,在单人游戏中,如果您被告知有关此操作的信息,则可能会令人怀疑。 将这种数据收集系统嵌入到游戏中是错误的吗?您认为在进行任何收集和传输之前,它绝对应该获得用户的事先授权吗? 如果用户开始拒绝该“协议”,我将无法真正执行100%有意义的数据。有什么想法吗?

3
多久更新一次有关世界的游戏客户端?
使用socket.io,我的通讯与其他MMORPG相似,与消息保持稳定连接。 到目前为止,在我的设计中,客户端随每个更新帧发送播放器的位置和动画帧。服务器收到该消息后,会将其广播给所有客户端,然后客户端将相应地移动图形。 例如,每1/10秒一次“收集”并广播它们是一个更好的主意吗? 另外,客户是否应该在出现后立即发送许多不同的消息(获得的经验值,单击的项目),或者仅收集一条消息?第一个将更容易实现。

5
如何模拟碎玻璃?
我需要用扔石头通过玻璃窗进行模拟。我该怎么做? 我的意思是,我当时正在考虑在3D Studio Max 2012中制作石头和玻璃的3D模型,将玻璃破碎,然后将两者导出为.x模型。然后在XNA中制作动画-编写我自己的物理引擎。有可能吗?撞击后有可能破坏XNA中的玻璃吗?还是应该在3DS Max中这样做?“破坏玻璃”是指将一些以前破碎的玻璃钻头彼此断开,因为取决于石头的开始速度和重量以及玻璃的电阻(硬度?)(所有用户定义),这些钻头将与玻璃断开连接。彼此以不同的方式。
10 xna  physics  xna-4.0  3dsmax 

1
网络客户端-服务器消息交换和时钟同步帮助
我正在做一个快节奏的物理游戏,它是桌上曲棍球。有两个槌和一个冰球。游戏运行在iPhone / iPad上,我正在通过GameCenter做多人游戏。 这就是网络系统的工作方式。带有匹配标记的客户端将作为服务器进行结算,接受匹配请求的将是客户端。 “服务器”具有物理功能,响应是即时的,客户端也具有物理功能,因此在消息交换之间看起来很流畅。我作为服务器的工作是,我将客户的冰球速度和位置发送给客户端,客户端调整与服务器有关的冰球速度/位置以使其保持同步。否则,物理场将失去同步,并且将其拧紧。 当网络延迟很好,在100毫秒以下时,效果很好,我在客户端获得了流畅的可玩游戏,并且怪异的行为降到了最低。当滞后时间约为150到200毫秒时,就会发生此问题。在那种情况下,发生了我的客户冰球已经碰到边缘和反向的情况,但是它收到了来自服务器的延迟消息,并且它后退了一点,从而引起了对球行为的怪异感觉。 我已经阅读了一些有关它的内容: 傍网示例 单击同步示例 维基百科上的时钟同步 那么,我该如何解决呢?据我所知,最好的选择是使用时间戳在服务器/客户端上进行时钟同步,这样当我收到与时钟相关的延迟消息时,我就忽略了,然后让客户端模拟执行工作。你们同意吗?而且由于我发送的数据不可靠(UDP),所以我可能会收到延迟的消息或混乱的消息。 如果那是最好的方法,我如何实现时钟同步。我已经阅读了有关如何操作的步骤,但我不太了解。 它说: 客户端在“时间请求”数据包上标记当前本地时间,然后发送给服务器。 服务器收到后,服务器会在服务器上盖章并返回 客户端收到后,客户端从发送时间中减去当前时间,然后除以2以计算延迟。它从服务器时间中减去当前时间,以确定客户端-服务器时间增量,并加上半延迟以获取正确的时钟增量。(到目前为止,此algothim与SNTP非常相似) 客户重复步骤1至3五次或更多次,每次都暂停几秒钟。在此期间可能允许其他流量,但应将其最小化,以获取最佳结果。数据包接收的结果将被累积,并以最低延迟到最高延迟的顺序进行排序。中值等待时间是通过从此有序列表中选择中点样本来确定的。 丢弃与中位数相差大约1个标准偏差的所有样本,并使用算术平均值对其余样本取平均值。 按照这个例子,我会有这个: 让我们假装游戏已经加载并且我的客户端时间现在是0,所以我向服务器发送我的时间是0。 消息需要150毫秒才能到达服务器,但是服务器的时钟已经启动,并且比客户端提前1秒。服务器收到消息后,时间将是:1.15并将该时间发送给客户端,我们还好吗?假设我们的滞后时间恒定为150ms。 现在客户端接收时间1.15,并从发送的时间中减去当前时间,然后除以2以计算延迟。Wich为:0.3-0 = 0.3 / 2-> 150ms。 它从服务器时间中减去当前时间以确定客户端-服务器时间增量,并添加半延迟以获取正确的时钟增量: 客户端时间:0.3服务器时间1.15 0.3-1.15 = .85 +等待时间(.15)= 1 如何同步?我想念什么? 这是我第一次玩多人游戏和网络游戏,所以我有点困惑。 谢谢。


2
在图节点之间随机生成边的好方法是什么?
我正在为4X太空游戏制作随机地图生成器。 游戏中的每个节点都放置在2d网格上的随机(x,y)坐标上。一个节点可以具有到另一个节点的一个或多个双向边缘(代表虫洞)。所有节点必须至少有一个虫洞,并且所有节点都必须属于同一图。 理想情况下,虫洞不应超过最大长度,并且如果可能,虫洞不应相互交叉。 我天真的实现是遍历所有节点,并使该节点链接到最近的3个节点。但是,我最终得到了许多子图。生成节点边缘的好方法是什么?

1
在进行Android开发时创建动画的最佳方法是什么?
我正在尝试创建自己的第一个Android游戏,并且目前正在尝试(与负责绘图的人员和另一个程序员一起)弄清创建动画的最佳方法是什么。(动画,例如角色移动等) 起初,设计师说她可以绘制对象/角色并用闪光灯对其进行动画处理,因此她不必绘制动作的每一帧。另一个程序员和我不太了解Flash,所以我建议从Flash动画中提取所有图像,并在动画开始时让它们一个接一个地显示。 他说,这样做最终会占用过多的CPU资源,我倾向于同意,但是我真的不明白我们应该如何制作流畅的动画,而又不会在硬件上过分费力,如果可能的话,设计人员在Adobe Illustrator上绘制每个框架。 有经验的Android游戏开发人员可以帮助我平衡这一点,以便我们继续进行游戏的其他部分,因为我不知道创建动画的最佳方法是什么。

3
Python游戏可以在多个平台上运行吗?
我计划用Python和一些SQL编写游戏。我担心我的程序在完成后会具有怎样的通用性,理想情况下,我希望它可以在Windows,Mac,Android和iPhone上运行...但是我有种感觉,手机将无法使用此功能那类的东西。我将如何编写可在多个平台上运行的程序?对于初学者来说,这是否可行?


3
脚本应该与引擎的抽象交互吗?
我正在使用Java和Jython,经过一些研究,我发现让脚本直接访问引擎接口可能是一个错误,因为它将两者紧密结合在一起。 看起来大多数脚本都允许mods通过某种抽象来创建和管理实体。出于这些原因存在这些抽象,还是只是为非程序员提供了一种更直观的方式来修改游戏?
10 java  python  scripting 

2
如何检测本机支持哪些OpenGL纹理格式?
例如,如何检测我的视频卡是否不支持“ bgr8”并将其转换为另一种格式,例如在软件模式下为“ rgba8”。 更新:很抱歉造成混乱。当我在glTexImage2D中将internalFormat设置为“ bgra8”之类的东西,但视频驱动程序在内部将数据转换为另一种格式(例如“ rgba8”)时,此问题更多地与情况有关。

6
是否有包含机器学习AI的游戏?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 6年前关闭。 这里有人可以参考实现机器学习AI的商业AAA游戏吗?
10 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.