游戏开发

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

15
MMORPG限时播放器设计
我相信,有一个巨大的玩家市场会喜欢MMORPG的探索和交互方面,但是根本没有时间参加无休止的马拉松比赛,而这正是MMORPG的一部分。 MMORPG都是关于玩家之间的互动。但是,当不同的玩家有不同的时间投入游戏时,那些花费较少时间的人很快就会落后于他们的实力雄厚的朋友,并且将无法与他们互动。 解决此问题的一种方法是限制玩家每天可以取得的进步,这样一天玩不超过一两个小时根本就没有意义。但是,即使是最忙碌的休闲玩家有时也喜欢在整个星期天的下午玩电子游戏。仅在两个小时后将其停止会非常令人沮丧。这也给每天使用每日进度限制带来了压力,因为否则玩家会觉得自己浪费了一些东西。这种压力将对休闲游戏玩家不利。 在每周玩40个小时以上和不超过10个小时的玩家之间,还有什么其他方法可以实现公平的竞争呢? 编辑:感谢您的所有答案。他们都很鼓舞人心,给了我一些有趣的想法。我决定要做的第一件事就是休息机械师,因此我接受了Orin MacGregor的回答。但是我也提出了许多其他答案。如果您对我的休息机械手的初稿感兴趣,可以在我的开发博客上阅读它:http : //ontraindevelopment.blogspot.com/2012/10/rest-system.html
38 game-design  mmo 

1
如何创建对玩家和敌人有反应的粒子?
我目前正在使用自己的游戏引擎制作游戏,该引擎是用C ++编写的,并且使用的是最新的Directx SDK。 该游戏是一款自上而下的太空射击游戏(具有非常有趣的变化),我希望玩家能够飞过这种星云。我真的想尝试并钉牢好几百种微粒,使其在飞入它们的过程中从玩家飞船中移出时产生良好的触感。有点像粒子如何在XBLA上的《 Geomtry Wars》中移出播放器。 在C ++方面,我是一位经验丰富的程序员。但是,我不知道如何开始实现这种效果。有没有人想提出任何很棒的想法或设计选择?随意回答您喜欢的任何深度。
38 c++  directx  particles 


7
关于浮点精度以及为什么仍要使用它
在大世界中,浮点数一直是精度问题。 此文章解释了背后的幕后,并提供明显的选择-定点数。一些事实确实令人印象深刻,例如: “高达64位的精度使您可以达到亚微米级精度的冥王星距太阳最远的距离(74亿公里)。” 亚微米精度远胜过任何fps所需的精度(对于位置甚至速度),这将使您能够构建真正的广阔世界。 我的问题是,如果定点具有这样的优势,为什么还要使用浮点数呢?大多数渲染API和物理库都使用浮点数(并且存在浮点数的缺点,因此开发人员需要绕开它们)。 他们这么慢吗? 另外,您如何看待可扩展的行星发动机(例如:outerera或infinity)能够大规模处理?他们使用固定点作为位置还是有一些空间划分算法?
38 graphics  physics 

2
我在两个轴上旋转一个对象,那么为什么它一直绕着第三个轴扭曲?
我看到很多问题经常出现,但都涉及到潜在的问题,但是它们都被给定功能或工具的细节所困扰。这是尝试创建一个规范的答案,我们可以在出现时向用户推荐-提供大量动画示例!:) 假设我们正在制作第一人称相机。基本思想是左右摇摆应偏航,上下左右俯仰。因此,我们编写了如下代码(以Unity为例): void Update() { float speed = lookSpeed * Time.deltaTime; // Yaw around the y axis using the player's horizontal input. transform.Rotate(0f, Input.GetAxis("Horizontal") * speed, 0f); // Pitch around the x axis using the player's vertical input. transform.Rotate(-Input.GetAxis("Vertical") * speed, 0f, 0f); } 或许 // Construct a quaternion or …

7
有什么方法可以使玩家参与无尽的游戏?
无休止的游戏由不断重复的相同游戏机制组成。只要有可能,您就必须继续做几乎相同的事情。 因此,让玩家感到厌倦很容易。人们可以在游戏设计中实现哪些概念以保持玩家的参与度? 更具体地说,我的游戏是一种无尽的攻丝游戏,在这种游戏中,您必须挖掘火箭,使它们爆炸成烟花,有时还坠落在流星上。

4
当Unity中Time.time变得很大时,会发生什么?
正如这里所说的: 时间 该帧开始的时间(只读)。这是自游戏开始以来的时间(以秒为单位)。 据我所知,时间存储在float中。因此,我的问题是,当时间价值变得非常大时会发生什么?它会溢出吗?它会失去精度并导致错误吗?游戏会崩溃还是会崩溃?
37 unity 

9
如何量化画线的直线度?
我正在开发一款游戏,要求玩家在Android设备的屏幕上从点A(x1,y1)到另一点B(x2,y2)画一条线。 我想找出该绘图与一条直线的拟合程度。例如,如果结果为90%,则表示工程图几乎完全适合线条。如果玩家从A到B绘制一条曲线,则得分会较低。 终点未知。我怎样才能做到这一点?

9
如何使4X游戏中的后期游戏更加精彩?
我最近玩了很多不同的4X游戏(例如,《文明》系列,例如eXplore,eXpand,eXploit,eXterminate),并且注意到其中大多数都遭受相同的问题:一旦一名玩家的能力大大超过其他人,那个球员几乎无与伦比。主导角色比其他角色拥有更多的资源。而且,该玩家在研究方面具有显着优势,这意味着其他派系很快就会落后于技术,从而为功能强大的玩家提供了更多工具,而这些功能较弱的派系无法应对,因此使他们的游戏更加轻松。 在此阶段,很明显,该玩家将不可避免地获胜。但是,游戏通常不会在这里停止。它持续了几个小时,而优势玩家又一次将所有较弱的玩家逐一淘汰。这对他们没有挑战,因为它们功能强大得多。因此,游戏的这一阶段对每个人来说都是沉闷而无聊的工作。主导玩家将他们的单位从一个敌人的基地/城市/星球转移到另一个敌人,他们知道只要他们避免了一些容易避免的错误,他们在那里遇到的任何东西都不会阻止他们,而其他玩家则无奈地沮丧地注视着他们,而没有任何办法来阻止他们消亡。 如何设计4X游戏来避免这种无聊而乏味的残局?

13
有什么替代划痕损坏的方法来解决战斗僵局?
刮擦伤害是一种游戏机制,任何成功的攻击总是造成最小程度的伤害。这通常用于减法战斗系统中,在这种系统中,防御是直接从攻击者造成的伤害中减去的。因此,目标将始终受到最小的伤害。 至少对我而言,这种系统的弊端在于它是黑客。它采用一个简单的公式,例如,Damage = Attack - Defense然后将其变成(稍微)更复杂的公式:Damage = max(Attack - Defense, 1)。 我也觉得这有损于球员发展角色的能力。不管他们获得多少防御加值,每次攻击都会造成少量伤害。那么,如果这毫无意义的话,为什么还要提高自己的防御能力呢? 此外,这现在鼓励对Hp和损坏使用更大的数量,因此刮擦损坏确实可以忽略不计。毕竟,如果最小伤害是1,而您只有10 Hp,那仍然是您健康的10%。即使20 Hp,也就是5%。我宁愿避免使用更大的数字,除非绝对必要。 但是,刮擦损坏有一个非常重要的方面:它解决了死锁问题。 当任何一方都无法对另一方造成损害时,就会发生死锁。如果您将所有资源投入到防守,几进攻击,那么你的角色可能不会受到伤害,但它们将不能够处理非常任。因此,您可能遇到任何一方都无法造成伤害的遭遇,因此战斗将永远持续下去。尤其是如果您没有像重击一样的随机机制(我也讨厌)。 至少受到刮擦伤害,最终有人会获胜。它可能只是攻击次数最多或攻击次数最多的一种,但是战斗将结束。 所以我喜欢一个总能取得成果的战斗系统。但是我不喜欢有划痕的损坏。我有什么选择? 不涉及滚动随机数的替代方法;我希望战斗是100%确定性的。如果进行了相同的战斗,那么必然会发生完全相同的结果。 如果您想在游戏玩法上有细节,可以考虑回合制战斗,在这种战斗中可以自动进行战斗(您可以设计部队,然后与其他部队对抗)。

9
如何制作一个受先前事件影响的“随机”生成器?
我希望实现一个基于机会的系统,该系统受先前事件的影响。 背景:几年前,我记得《魔兽世界》的一个更新,宣布他们实施了一个新的机会计算器,可以抵消棘手的事件链。(例如,进行严厉打击或连续躲避几次)。这个想法是,如果您避开某个命中,那么您躲避下一个命中的机会就会减少,但是这将双向起作用。不回避命中同样会增加回避下一个命中的机会。这里的主要技巧是,在几次试验中,闪避几率仍然与他或她的状态表中给予该球员的百分比相对应。 这种系统当时非常吸引我,现在我处于需要这种解决方案的情况。 这是我的麻烦: 我猜想我将能够找到有关实施这种系统的在线资源,但是我可能缺少找到它的相关口号。 我还需要这种方法来适应不是二项式(即两个结果),而是包含4个互斥事件的系统。 我当前的方法类似于抽奖券系统。当事件发生时,我更改权重以支持所有其他事件。如果这四个事件具有同等可能性,那么这可能会起作用,但就我而言,这需要更加普遍。但是,由于普遍事件发生的频率更高,它使其他事件的权重偏移比预期的高得多,而且我似乎找不到为使平均故障单数量保持在事件的初始值附近所需的权重转移的数字。给定的。 一些方向指针或一个清晰的例子将不胜感激。
37 random 

4
游戏中的补丁程序如何工作?
控制台和PC游戏有时会修复一些补丁,以解决开发人员错过/没有时间修复的错误。 我的问题是这些如何工作? 有时,补丁文件的大小为几兆字节。我不了解小文件如何更改已编译的程序。
37 console  pc  patching 

6
在OpenGL中创建复古样式的调色板交换效果
我正在开发类似Megaman的游戏,需要在运行时更改某些像素的颜色。供参考:在Megaman中,当您更改所选武器时,主角色的调色板会更改以反映所选武器。并非所有精灵的颜色都会改变,只有某些会改变。 由于程序员可以访问调色板以及像素和调色板索引之间的逻辑映射,因此这种效果在NES上很常见并且很容易实现。但是,在现代硬件上,这更具挑战性,因为调色板的概念并不相同。 我所有的纹理都是32位的,并且不使用调色板。 我知道有两种方法可以达到我想要的效果,但是我很好奇是否有更好的方法可以轻松实现此效果。我知道的两个选项是: 使用着色器并编写一些GLSL来执行“调色板交换”行为。 如果着色器不可用(例如,因为图形卡不支持着色器),则可以克隆“原始”纹理并生成具有预先应用的颜色更改的不同版本。 理想情况下,我想使用着色器,因为它看起来很简单,并且与重复纹理方法相反,几乎不需要其他工作。我担心复制纹理只是为了更改颜色而浪费了VRAM,我不应该为此担心吗? 编辑:我最终使用了可接受的答案的技术,这是我的着色器供参考。 uniform sampler2D texture; uniform sampler2D colorTable; uniform float paletteIndex; void main() { vec2 pos = gl_TexCoord[0].xy; vec4 color = texture2D(texture, pos); vec2 index = vec2(color.r + paletteIndex, 0); vec4 indexedColor = texture2D(colorTable, index); gl_FragColor = indexedColor; } 两种纹理都是32位的,一种纹理用作查找表,其中包含多个大小相同的调色板(在我的情况下为6种颜色)。我将源像素的红色通道用作颜色表的索引。这就像实现类似于Megaman的调色板交换一样具有魅力!

6
保存游戏数据的良好文件格式是什么?[关闭]
我需要保存一些自定义游戏数据。地图,播放器等 它们都将具有“子对象”。例如,地图和地图将具有图块的“阵列”。即分层数据。希望没有二进制文件。 什么是这些的好格式? 到目前为止,我已经考虑过: 序列化:这是快速且容易的,但是当我更改基础类时往往会中断:( XML:我真的很讨厌解析这个。我的测试用例超过了100多行代码,即使是非常简单的格式,也似乎需要大量的“忙碌工作”。 INI:对于分层数据来说真的很笨拙。 Protobuf:从未使用过它,但请阅读,如果您更改班级,则必须做很多手动修改,然后休息。 还有其他选择吗?这就是为什么我在这里! 编辑:这是Java顺便说一句。 编辑2: 我选择了“受控二进制序列化”(见下文)。 优点: 它很快 它很小(在磁盘上),可以在读/写过程中轻松压缩/解压缩。 从游戏和工具集读取/写入非常容易。 我可以决定要包含/排除对象的内容。 对象/数据可以嵌套。 缺点: 无法手动编辑(例如XML,YAML等) 使用脚本无法轻松读取/修改它 与其他实现相比,默认情况下,Java序列化速度相当慢/膨胀,但它稳定且有效
37 java  file-format  xml  data  file 

5
将Lua纳入C ++游戏的利弊是什么?
我有一本C ++游戏编程书,其中有Lua部分。我已经开始阅读Lua一节,这听起来很有趣,但是我无法确定在我的C ++游戏中使用Lua的优缺点。我目前能想到的唯一好处是,您可以通过Lua进行一些编码更新,而无需重新编译。除此之外,我什么都没想到。那么将Lua添加到C ++游戏中的利弊是什么? 示例将不胜感激。
37 lua 

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.