游戏开发

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

4
如何解决地面检查问题?
我注意到Unity的第三人称控制员的地面检查出现问题。 地面检查应检测玩家是否站在地面上。它是通过在播放器下方发出光线来实现的。 但是,如果玩家站在两个盒子的顶部和中间,并且在两个盒子之间有一个空间,则射线会射入空隙中,并且玩家会认为他没有与地面接触,如下所示: 我无法动弹。您可以清楚地看到射线在间隙中,因此播放器动画师的机载混合树处于活动状态。 解决此问题的最佳方法是什么? 我当时正在考虑从同一来源但以不同角度拍摄多条光线。并且OnGround仅当这些光线的X%到达“地面”时才应为真。或者,还有更好的方法?

1
我如何知道内存处理不正确?
每当我加载纹理时,我的(2D)游戏的内存占用似乎都在增加,例如,当我启动游戏时,在穿越〜367mb的背景文件后,它使用30 mb的专用RAM,因此有时它全部在RAM中,它会增加到54 mb专用RAM。 在经过相同的距离但在两个点之间反复来回之后,会发生相同的事情。 但是,我的读数显示,纹理退出屏幕后大约一秒钟,该程序正确地调用了glDeleteTextures。valgrind没有发现任何泄漏。 我怎么知道我是否应该为此担心,或者这仅仅是操作系统页面存储方式的怪癖?
12 opengl  memory 

1
用户参与度的预期数字
我运行了一个免费的在线游戏,其中涉及收集生物并只需单击一个按钮即可为它们提供少量EXP。这个想法是为其他人做的,他们很可能会回报您的青睐并帮助您取得自己的进步。 初始教程将指导您完成基本概念,直到您成功获得完整的6人聚会,然后再使用自己的设备来制定自己的目标和东西。 我注意到,通过本教程进入游戏的玩家往往对游戏充满兴趣,但我也发现了以下数字: 25%的用户加入但从未完成本教程的第一步,即他们从未孵化出自己的第一个Egg。 在完成本教程之前,还有25%的用户退出游戏,因此只孵出1-5个鸡蛋。 实际只有50%的注册用户完成了该教程。 问题是我以前从未玩过这种游戏。这是我的第一个实际项目,但是已经进行了几年。对于预期的数字,我没有任何基准。 我只能想象现在的原因,例如,对于人们来说,要取得进步,他们必须帮助他人取得进步,并希望他们回馈青睐,这是非常令人震惊的。 因此,在完成本教程之前,大约有一半的用户离开。这种事情正常吗?我是否为此担心太多?

3
如何制作扩展的子弹图案形状?
我想制作一系列可扩展的子弹图案,以形成正方形,三角形等形状。在下面的视频中可以看到我所追求的一个例子,当收集星星时,子弹会以膨胀星: https://youtu.be/7JGcuTWYdvU?t=2m41s
12 java  libgdx 

3
识别游戏引擎中的资产?
我想识别我已加载的资产,但是我不知道应该选择哪一个。有2个选项: 名称(字符串) 对于unordered_map(O(1)),这是最简单也最快的方法,但是比使用整数慢。 在代码中容易理解。 整数 最快的。 用代码无法理解。 我知道字符串不是那么安全或快速,但是那样不好,还是仅在AAA标题中算作不好?我可以使用整数来枚举枚举,但是如果我在运行时从文件加载场景,资产等,则不能使用枚举。如果这些整数是在运行时生成的,是否可以使这些整数可读? 我知道这个问题在互联网上有很多线索,但是我无法确定在什么情况下这很重要。

1
通过Alpha混合精灵查看着色器的轮廓
我想在Unity中实现类似于以下示例中的透视效果: 在我的特定情况下,有两个要求: 子画面使用Alpha混合,并且子画面具有透明区域。 遮挡字符有2种元素。一个应创建轮廓效果,而另一个应具有正常的行为。 对于遮挡创建轮廓的元素,我启用了ZWrite,并为没有轮廓的元素禁用了它。 对于角色,我尝试将着色器的队列设置为transparent + 1,并添加了此步骤: Pass { ZTest Greater Lighting Off Color [_Color] } 效果部分起作用: 轮廓绘制在整个角色上,甚至透明的部分。透明的部分不应创建轮廓。 当角色在精灵后面时,即使该精灵的那部分是透明的,也会创建轮廓。在精灵的透明部分后面不应创建轮廓。 角色出现在其余元素的前面,即使它位于它们的后面。我猜这是因为将队列设置为“透明+1”。但是,如果我将其保留为“透明”,则会以正确的顺序绘制角色,但永远不会看到轮廓。 我尝试遵循某人给我的这些提示,但无法使其正常工作: 1)保留渲染精灵的过程。 2)添加一个写入z缓冲区的通道,但是具有一个着色器,该着色器使用clip()丢弃基于alpha的像素。如果不使用MSAA和alpha-to coverage,则不能使用z缓冲区进行软性z测试。这样的质量不会很好,但是这是您可以做到的最好的。更快的替代方法是图案或噪声抖动,或者,如果您的精灵都具有相当尖锐的边缘,则可以使用老式的阈值。 3)向使用z测试绘制遮挡颜色的可遮挡对象添加第三遍,并确保将其绘制为最终遍。 我是着色器的新手,尤其是在Unity中,我只是想不出如何使其正常工作。

2
将我的Pixel Art Platformer从720p缩放到1080p
我正在开发适用于PC和智能手机的像素艺术2D平台游戏,但仍然遇到了技术问题。 我选择了32x32瓦片分辨率和64x64字符精灵分辨率。将这些级别划分为多个部分,这些部分称为“屏幕”,在每个屏幕中,我都有40x22.5瓦片,大约为40x23,因此最低分辨率为1280x720。 在游戏中,我具有双重跳跃机制,因此我需要在每个“屏幕”上都具有良好的垂直视角范围。 问题来了:1280x720分辨率不是很高。在高清显示器上,窗口不会很大,如果将分辨率提高2倍,则分辨率将达到2560x1440,并且窗口将比实际的高清显示器大得多。如果我尝试将尺寸设置在1280x720到2560x1440之间,则图形会开始变得口吃或变形。 我该如何解决这个问题?有没有一种解决方案不需要我以16x16格式重新绘制所有图块和精灵?

1
运动模拟器平台上的Oculus Rift
我目前正在为现有的(物理上的)大型运动模拟器平台开发一个VR环境。用户可以坐在这个运动平台上,并加速并倾斜以在研究汽车模拟器环境中引起运动的感觉。就像在PC上一样,Oculus Rift位置跟踪器已经安装在用户面前的移动平台上。 我当前使用的3D引擎是Unity 5.3。平台的旋转角度和线性加速度已输入到Unity中。结果不是我想要的。只要我们倾斜平台,旋转补偿就可以正常工作,但是一旦角速度变为零,跟踪器就会重置,而不会被我调用或触发它这样做的事件。线性加速度补偿总是在真实的静止点附近抖动。 我已经尝试使用本机Unity VR实现以及Oculus插件。但是,传感器融合在此级别上不可用。Oculus论坛上有许多有关此问题的主题,但是我找不到任何解决方案。 是否有其他选择可以尝试在移动平台上使用Oculus? 我理想地要做的是在进一步处理之前从Oculus传感器数据中减去感应运动。我已经考虑过打补丁,例如LibOVR,但是我在那也找不到与传感器融合相关的任何有用功能。
12 unity  motion  oculus 

2
在MMO的服务器端存储每个对象的坐标
在MMORPG中: 将每棵树,灌木丛等的坐标存储在服务器端以进行碰撞检测是典型的还是可行的? 如果是这样,什么是存储如此大量坐标(数据结构等性能问题处理)的可行方法? 如果不是,这种冲突检测是否完全在客户端完成,而服务器根本不检查? 还是有中间立场,由客户端检查冲突并由服务器验证?如果是这样,服务器又如何在不将坐标保存在服务器中的情况下进行验证?

1
OpenGL绑定和实体之间的关系
这主要是一个文档问题。我希望这是一个适当的地方,而不是例如程序员或stackoverflow。 我没有阅读OpenGL规范,但是从书籍(《红皮书》)和各种教程中,我无法正确掌握API的不同对象和部分是如何交互和关联的。 例如,我知道如果绑定了VAO,则绑定VBO并设置属性将导致VBO绑定到VAO。 但是对象很多,它们之间的关系可能会有所不同。例如,VAO与当前的着色程序完全无关,但是绘制操作的结果可能取决于两者。 在所有各种OpenGL组件中,我可以看到一些诸如C绑定到B或A和B的关系。所有这些关系在确定如何改变上下文状态,如何改变事物,如何将事物保存在一起并进行优化方面是一致的。 我要寻找资源解释只是这些关系。就像UML图,图形,甚至是文本文档一样,它们不关注调用,而是以紧凑的方式描述了各种OpenGL组件如何交互以及如何相互关联。 您知道在哪里可以找到这样的资源吗?

4
故事通过子代延续的游戏[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 在《幻想之星III:世嘉创世纪的厄运》中,您定期结婚,然后故事通过您的儿子/女儿继续进行。在《 Rogue Legacy》中,当您死后,您将再次通过后人(IIRC)进行比赛。 我正在开发一个RPG,并且正在考虑类似的死亡机械师概念。我想死去使你的某些战利品/技能传给你的后代,然后他们可以从你离开的地方接(或多或少)。实施这种机制有哪些潜在的设计陷阱?我已经看到的一个问题是,如果我惩罚得太厉害,玩家将恢复到最后一次保存,惩罚得不够多,他们会故意死亡。 引用现有游戏的奖励积分(我提到的两个除外)。

1
最佳纹理大小是多少?
我最近在我的项目中添加了一个纹理打包器,该打包器会将一定数量的纹理打包到单个纹理中,如下所示: 因此,举例来说,这个尺寸为582x1023像素。添加这些压缩纹理的目的显然是为了提高性能,因此我想为OpenGL(使用LWJGL)纹理查找最佳纹理大小。我发现的事情,一个得到广泛支持的最大纹理尺寸似乎是1024×1024,根据此为一例。这让我感到奇怪,因为显然很多纹理本身都比这更大,那么这些发生了什么呢?我很确定大多数显卡都支持更大的纹理。我是否可以合理地期望大多数图形卡能够处理4096x4096纹理(或什至更大)? 第二点(我希望这仍然是一个问题,但本质上可以归结为同一问题):纹理的大小应设置为2的幂(256x256、512x512、1024x1024、2048x2048等),并且应该我将小于其的填充纹理填充到下一个2的幂?根据2011年的这个问题,这不是必须的,但可以提高性能并避免出现小错误,而2012年的这个问题说您绝对应该填充纹理。因此,我意识到这些问题以前曾被问过,但它们的日期合理,答案已经更改,而且它们每个都只能部分回答我的问题。其他项目/如何处理? TL; DR:大多数图形卡可以处理哪种纹理大小?最佳纹理大小是多少(或存在)?我应该将纹理宽度填充到下一个2的幂吗?

2
在XNA / MonoGame中解锁帧率会告诉我代码的效率如何吗?
我一直在通过以下方式解锁MonoGame中的帧率: this.graphics.SynchronizeWithVerticalRetrace = false; base.IsFixedTimeStep = false; 并以此作为我更新和绘制游戏效率的基础。 在240 x 160的分辨率下,除了帧计数器外,什么都没有绘制或更新,我得到的FPS值为9,000到11,000 FPS。 如果我重新添加所有代码,它的速度将下降到约1,100 FPS。 这是否很好地表明我的代码显着降低了GPU的速度(10倍),我是否应该担心?该游戏将以60 FPS的速度运行,所以我离它还差得很远,但是我应该关注解锁帧速率的哪一点? GPU:AMD FirePro W5000(FireGL V)

4
大型MMORPG多久更新一次物理?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 据我了解,大多数大型游戏使用固定的时间步进行稳定的模拟。 关于游戏服务器,它们施加哪个“帧速率”?或换一种说法,他们倾向于使用固定的时间步长? 我知道很多人会说:“尽快逃脱”。如果您有建立MMORPG的直接经验,我想知道这有多快。

4
您如何允许在开发的后期阶段编写网络代码?
我目前正处于编写游戏的早期阶段,最终我希望在很多方面进行改进。 我该如何跳过编写网络代码的过程,却又很容易实现,即不必为了添加游戏而重写整个游戏。 我要记住什么? 我有一个组件模式,可以将物理/碰撞检测,游戏逻辑,数据类型和动画/渲染彼此分离。 如何编写没有实现任何网络代码但可以在本地测试的客户端和服务器? 我应该在客户端中做什么,然后在服务器中做什么?我是否应该假装自己已经完成网络代码,并在服务器和客户端之间发送消息并考虑到延迟等原因,即使没有延迟也是如此? 编辑:计划成为自上而下的RPG。我在想一个简单的多人游戏,在这里为朋友托管服务器,所以作弊并不是什么大问题(谁想和作弊的朋友一起玩?)。我仍然想采用“服务器永远是正确的”方法。 编辑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.