游戏开发

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


3
通过版本控制,将游戏引擎与类似游戏中的游戏代码分开
我有一个完成的游戏,想要在其他版本中拒绝。这些游戏将是类似的游戏,或多或少具有相同的设计,但并非总是如此,基本上情况可能会发生变化,有时会有所变化,有时会有所变化。 我希望将核心代码与游戏分开进行版本控制,以便如果说我修复了游戏A中发现的错误,则该修复将出现在游戏B中。 我正在尝试找到最好的方法来管理它。我最初的想法是这样的: 创建一个engine模块/文件夹/所有内容,其中包含可以概括的所有内容,并且与游戏的其余部分100%独立。这将包括一些代码,但也包括游戏之间共享的通用资产。 将此引擎放在自己的git存储库中,该存储库将作为一个git submodule 我苦苦挣扎的部分是如何管理其余代码。假设您有自己的菜单场景,此代码是特定于游戏的,但大多数代码也往往是通用的,可以在其他游戏中重用。我不能将其放在中engine,但是为每个游戏重新编码都效率很低。 也许使用某种git分支变量可以有效地解决这一问题,但我不认为这是最好的方法。 任何人都有一些想法,经验要分享或与此有关的任何事情?

2
使平台的可见性与背景不同
我有一个2D无限亚军类型的游戏,背景不断变化其颜色。同时,平台的颜色保持不变。这样,平台在某些时候(当它们的颜色与背景颜色相同时)对播放器“不可见”。 我该如何创造性,短期而又方便地避免团结问题? PS我已经尝试添加有光泽的材料,但它没有工作。
15 unity 

3
如何渲染无限的宇宙?
我很好奇游戏开发行业中渲染3d Universe的最佳做法是什么? 更加具体: 数据点是给定的,并且是静态的。每个点都有位置,颜色和大小。 整个数据集比可用内存大得多。 用户应该能够“放大”以立即看到更大的图片; 最幼稚的方法是将宇宙拆分为多维数据集并仅渲染可见的内容。我不确定在这种情况下应如何实现“缩小”。是否应该为每个可能的缩放级别预先计算多维数据集?也许有更好的方法? 我正在寻找技术不可知的解决方案。

3
“动态生成”和“过程生成”之间有什么区别?
当我想到一个动态生成的游戏时,我会想到诸如暗黑破坏神之类的随机生成关卡。当我想到程序生成的游戏时,我想到了《飞扬的小鸟》和其他无限跑步者。 但是这两个都只是随机化一个级别。是程序生成的游戏不断被生成,而动态生成的游戏都被预先生成吗?还是这些术语可以互换? 动态生成的游戏和程序生成的游戏有什么区别?

1
出售使用Unity 3D免费版创建的游戏或从中获利合法吗?
使用Unity 3D编程和游戏软件创建适用于Android和iOS的手机游戏应用程序可以吗?我使用的是Unity 3D的免费版本,并计划将其发布到Google Play上以销售我当前创建的游戏应用。我还通过将其设置为带有广告的免费应用程序来使用这种方式来赚钱。 我看到一些开发人员依靠使用免费版本的Unity 3D来创建游戏,并通过App Store或Google Play发布了该游戏。如果有的话,由于我使用免费版本来依靠为企业生产多个游戏应用程序,我是否应该向Unity开发团队支付或分享收益来赚钱?

4
RTS本地回避如何完成?
当前,我正在模拟物理冲击力以局部避开单位,但是这种方法有时会将单位推离地层,并且当单位结块时会产生非常不利的影响。 对于像《星际争霸2》这样的RTS游戏,如何进行局部回避?是物理模拟还是全能控制器决定一切应该在哪里?我知道这个问题可能有点笼统,所以我专门问如何实现《星际争霸2》的局部回避行为。尽管任何有效的方法都将不胜感激。 我不是在寻找任何代码-只是有用的资源或有关Starcraft 2(或类似游戏)如何处理本地回避的解释。 目前,我已经实现了碰撞检测(带有穿透向量),碰撞力和速度移动。检查每个单元是否相互碰撞-如果它们发生碰撞,则物体会立即被渗透矢量偏移,然后施加碰撞力。然后,另一个循环按其速度移动对象,并将阻力施加到该速度。偏移减轻了施加在结块单元上的过大碰撞力的问题,但是单元有时仍会射出。 我正在寻找的解决方案需要满足以下要求(例如在Starcraft 2中): 对象不会重叠;至少必须解决重叠问题。 物体不会将彼此推开超过必要的距离,因此2个单位可以在一个编队中直立并相互靠近。 当对象聚集到同一目的地时,不应有任何奇怪的行为。 可以支撑不同尺寸甚至不同凸面形状的单元。 到目前为止,我一直在思考的不是检测冲突,而是检测将来的冲突,这样就不会发生重叠。然后应用约束,确保2个单位的速度不会导致它们重叠。我仍然在修改限制重叠之外的移动的算法。

2
如何使Quake 3等精密网络游戏的服务器-客户端时钟保持同步?
我正在研究2D自上而下的射手,并尽力复制类似Quake 3这样的网络游戏中使用的概念。 我有一个权威服务器。 服务器将快照发送到客户端。 快照包含时间戳和实体位置。 实体插值在快照位置之间,因此移动看起来很流畅。 根据需要,实体插值会稍微“过去”发生,因此我们可以在多个快照之间进行插值。 我面临的问题是“时钟同步”。 为了简单起见,让我们假设一下,在与服务器之间传输数据包时,延迟为零。 如果服务器时钟比客户端时钟早60秒,则快照时间戳将比客户端本地时间戳早60000ms。 因此,在客户端看到任何给定的实体进行移动之前,实体快照将收集并静置约60秒钟,因为客户端时钟要花很长时间才能赶上。 通过设法在每次接收快照时计算服务器时钟和客户端时钟之间的差异,我设法解决了这一问题。 // For simplicity, don't worry about latency for now... client_server_clock_delta = snapshot.server_timestamp - client_timestamp; 确定实体插入插值的距离时,我只需将差值添加到客户的当前时间即可。但是,这样做的问题是,由于快照比其他快照更快或更慢地到达,这两个时钟之间的差异将突然波动,这将导致混乱。 如何才能使时钟足够紧密地同步,以使唯一可感知的延迟是硬编码用于插值的延迟,而该延迟是由普通网络延迟引起的? 换句话说,如何在时钟严重失步时防止插值开始得太晚或太早而又不引起混乱呢? 编辑:根据Wikipedia的说法,NTP可以用于在几毫秒内将互联网上的时钟同步。但是,该协议似乎很复杂,也许在游戏中使用会显得过分杀伤力?

2
没有走廊和房间依赖性的地牢生成
我正在用游戏开始时创建的程序生成的世界制作游戏,其中包括由网格表示的多个区域(例如8x8、9x6,大小理想情况下是任意的)。这些区域应该通过依赖关系列表相互连接。 当在这两个区域之间至少有3个网格暴露时存在连接。在该3个空间连接区域的中间单元中是区域之间的门口: 我一直在尝试找到一种连接它们的方法,但是随着您需要同时考虑更多领域,它变得越来越复杂。 我已经尝试过一些纸张原型制作,虽然在视觉上进行打印是一个非常简单的过程,但是我还没有找到一套好的数学表达式可以通过代码以相同的效率放置房间。 这是我目前正在苦苦挣扎的“简单”示例: 区域“ a”需要连接到“ b”和“ c” 区域“ b”需要连接到“ a”和“ d” 区域“ c”需要连接到“ a”和“ d” 区域“ d”需要连接到“ b”和“ c” 为简单起见,请考虑按房间的出现顺序将它们放在列表中(我尝试过其他方法)。因此,我正在将此作为您的标准程序Dungeon Generation算法。 我们将“ a”放置在板上的任何位置,因为它是第一个区域。接下来,我们随机选择一堵墙,由于该墙没有任何连接,因此可以在其中放置“ b”: 现在我们需要放置“ c”,但是“ a”已经在板上,并且已经占用了墙,因此我们决定将其放在另一墙上。但是并不是每个位置都可以,因为“ d”即将到来,并且它也需要连接到“ b”和“ c”: 我尝试了一个可能的限制,即具有相同依赖性集的2个房间不能在相对的墙上,但是即使这样也不能保证成功: 在其他情况下,如果区域的大小不同,则可以在相对的墙壁上工作: 另外,不考虑使用过的墙是一个错误的假设,因为它排除了有效的解决方案: 我曾尝试寻找其他过程生成算法或类似算法的研究,例如“最佳矩形包装”和“图形布局”算法,但通常这些算法没有考虑到此问题的所有约束,并且很难混合在一起。 我考虑过很多方法,包括放置区域和回溯直到找到合适的位置,但是它们似乎非常依赖于反复试验,并且在计算方面非常昂贵。但是,鉴于对我提到的最后两个问题的广泛研究,这可能是唯一/最佳解决方案? 我只是想看看过去是否有人遇到过类似的问题,或者愿意帮助我解决这个问题,并为我提供一些有关应该从哪里开始算法的建议。或者,否则,我将不得不放松设置的约束。

3
创建精灵的尾随,重影效果
我想创建快速移动的精灵的拖尾,重影状效果。与Sonic的这张图片非常相似(不好意思,这是我能找到想要达到的效果的唯一示例) 但是,我不想在Sprite工作表级别上执行此操作,以避免必须将地图集中的Sprite数量实质上增加一倍(或可能是四倍)。这也是非常劳动密集型的。 那么还有其他方法可以达到这种效果吗?可能是由一些着色器伏都教魔法引起的?如果有帮助,我正在使用Unity和2D Toolkit。

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


12
应用程序可以破坏显卡吗?
快速说明:我知道这是一个游戏开发问答网站,但我想你们中的大多数人都知道并具有图形卡的经验,因此我向您解决了这个问题。如果您认为这完全是题外话,请引导我访问适当的网站/论坛。编辑:实际上,这是与gamedev有关的:如果错误的代码可能导致卡过热或损坏,那么游戏开发人员应意识到这一点,并确保其应用程序不这样做。 这似乎是一个怪异或愚蠢的问题,但实际上是否有可能编写这样的图形渲染应用程序以任何方式破坏图形卡? 让我问这个问题的直接原因是(我不足为奇)我自己的破损显卡。维修完后,军人说他们测试了各种应用程序(游戏),并且运行良好。但是,当我启动自己的应用程序(延迟阴影演示)时,它将其加热到100摄氏度以上。因此,我的卡终究没有被修复,但重要的是,问题似乎仅在运行自己的应用程序时发生。 我在上面玩过各种需要GPU的游戏(例如《孤岛危机》),并且经常将其推到极限甚至更高(设置太高以至于游戏以5 FPS的速度运行),还有一些基准测试...所以我给出了我的卡很多次都无法承受(因此FPS低),但工作量却很大,但从未达到危险的温度。但是我自己的应用程序设法实现了这一点(至少在关闭v-sync时)。:P因为这只是我自己的应用程序,所以我认为不是冷却系统不好的原因。 因此,我想问-您是否认为(或也许知道)是否可以通过某些恶意代码破坏显卡(以任何方式,而不仅仅是过热)? 更新: 乔·斯温德尔说,过热可能是问题所在(嗯,它肯定会损坏卡)。但是(在任何情况下)适当的冷却系统是否不应阻止这种情况的发生? 北方公司指出了另一个问题。如果我理解正确,FPS受CPU和GPU约束(是吗?)。因此,低FPS可能表示较高的CPU负载或较高的GPU负载。但是,再次重申-即使显卡“一直以100%的速度使用”,合适的散热系统也不能防止GPU过热吗?
15 gpu  hardware 


3
什么是缓动功能?
我找到了这个很酷的游戏开发网站,并且提供了一系列轻松功能: 尽管该站点包含了它们的用途描述,但它却使我感到头疼。什么是缓动函数?它们的作用是什么? 更新资料 我从Phaser.io的源代码中找到了一个更好的函数示例。这些功能比这里建议的答案要简单得多。它们仅采用一个参数k。作为答案的一部分,我想知道如何使用它们。

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.