游戏开发

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

11
游戏美术人员和程序员的工作时间和生产率期望
我有一家预算有限的初创公司,最近雇用了一名程序员和一名艺术家。在他们开始该项目之前,我制定了一个项目路线图,其中包含有关需要完成的工作和截止日期的大量好的文档。 要求两个人就如何满足这些期限制定时间表。对于艺术家,我提到如果工作量过多,可能需要在他们需要帮助的情况下再雇用一两个月的承包商。 我已经开始听到类似的消息,“好吧,我可能需要一些额外的帮助”和“我不确定目前要花多长时间,因此这些时间表只是非常粗略的估计。” 而且,我明白了,他们试图不让自己陷入失败之中,但是作为一名经理,我还需要知道到底发生了什么。 因此,这里有两个问题: 我经常看到我的员工都使用非公司的Slack,接听电话消息并在手表上进行生活管理。当我有9岁的公司政策时,他们在第一周就已经迟到了一次以上。并指责我对项目范围不够了解。另一方面,我意识到在大型公司中,这可能是其他地方的规范。在工作风格和生产力方面,艺术家/程序员通常会期望什么?灵活性和懒惰有什么区别? 我的艺术家已经开始拒绝其他作品(营销资产的作品等),原因是他们已经做好了很多工作并且需要管理期望。如果我没有看到他们迟到,在Slack上回答消息,并且通常做与工作无关的事情,我可以处理。另一方面,我不知道这对广告素材来说是否正常/必要。是吗? 如果可以帮助您: 该工作室位于欧洲。 我没有书面政策,但是工作时间是合同义务。 我们正在使用敏捷项目管理。 我们是3个人从事该项目。两者都是“领导”,因此他们做出与自己的领域(艺术和代码)相关的决策

3
如何在基于组件的实体系统中正确实现消息处理?
我正在实现一个具有以下内容的实体系统变体: 一个实体类是多一点的ID结合部件一起 一堆没有“组件逻辑” 的组件类,只有数据 一堆系统类(又名“子系统”,“管理器”)。这些完成所有实体逻辑处理。在大多数基本情况下,系统只是遍历它们感兴趣的实体列表并对其进行操作 甲MessageChannel类对象被所有的游戏系统共享。每个系统都可以订阅特定类型的消息以进行收听,还可以使用该频道将消息广播到其他系统 系统消息处理的初始变体是这样的: 依次在每个游戏系统上运行更新 如果系统对某个组件执行了某些操作,而其他系统可能对此操作感兴趣,则该系统会发送一条适当的消息(例如,系统调用 messageChannel.Broadcast(new EntityMovedMessage(entity, oldPosition, newPosition)) 每当实体移动时) 订阅特定消息的每个系统都会得到其消息处理方法,称为 如果系统正在处理事件,并且事件处理逻辑要求广播另一条消息,则立即广播该消息,并调用另一条消息处理方法链 在我开始优化碰撞检测系统之前,这个变体是可以的(随着实体数量的增加,它变慢了)。首先,它只是使用简单的蛮力算法迭代每个实体对。然后,我添加了一个“空间索引”,该索引具有一个单元格网格,该网格存储特定单元格区域内的实体,因此仅允许对相邻单元格中的实体进行检查。 实体每次移动时,碰撞系统都会检查该实体是否与新位置的物体发生碰撞。如果是,则检测到冲突。并且,如果两个碰撞的实体都是“物理对象”(它们都具有RigidBody分量,并且打算彼此推开以免占据相同的空间),则专用的刚体分离系统会要求运动系统将实体移动到某个将他们分开的特定职位。这进而导致运动系统发送消息,通知已更改的实体位置。碰撞检测系统旨在做出反应,因为它需要更新其空间索引。 在某些情况下,这会引起问题,因为单元的内容(C#中的Entity对象的通用列表)在进行迭代时会被修改,从而导致迭代器抛出异常。 那么... 如何防止碰撞系统在检查碰撞时被打断? 当然,我可以添加一些“聪明” /“棘手”逻辑来确保正确地迭代单元格内容,但是我认为问题不在于碰撞系统本身(在其他系统中也存在类似问题),而是消息在系统之间传播时得到处理。我需要某种方式来确保特定的事件处理方法能够正常工作,而不会造成任何干扰。 我尝试过的 传入消息队列。每当某个系统广播消息时,该消息就会被添加到对该消息感兴趣的系统的消息队列中。当每帧调用系统更新时,将处理这些消息。问题是:如果系统A将消息添加到系统B的队列中,则如果系统B的更新要晚于系统A(在同一游戏框架中),则它工作良好;否则,它将导致该消息处理下一个游戏框架(某些系统不希望使用) 传出邮件队列。当系统处理事件时,它将广播的所有消息添加到传出消息队列中。消息无需等待系统更新被处理:在初始消息处理程序完成工作后,它们将立即得到处理。如果对消息的处理导致其他消息被广播,它们也将添加到传出队列中,因此所有消息都在同一帧中进行处理。问题:如果实体生存期系统(我用一个系统实现了实体生存期管理)创建了一个实体,它将通知某些系统A和B。当系统A处理该消息时,它将导致一系列消息,这些消息最终导致所创建的实体被破坏(例如,在与某个障碍物碰撞的位置处创建了一个项目符号实体,这会导致项目符号自毁)。在解析消息链时,系统B没有获得实体创建消息。因此,如果系统B也对实体破坏消息感兴趣,它将得到它,并且只有在“链”完成解析之后,它才会得到初始实体创建消息。这将导致销毁消息被忽略,创建消息被“接受”, 编辑-回答问题,评论: 碰撞系统迭代时,谁修改了单元格的内容? 当碰撞系统正在对某个实体及其邻居进行碰撞检查时,可能会检测到碰撞,并且该实体系统将发送一条消息,其他系统立即对此进行响应。对消息的反应可能导致其他消息被创建并立即处理。因此,即使先前的碰撞检查尚未完成,其他一些系统也可能会创建一条消息,表明碰撞系统随后需要立即进行处理(例如,移动了一个实体,因此碰撞系统需要更新其空间索引)。 您不能使用全局传出消息队列吗? 我最近尝试了一个全局队列。它引起新的问题。问题:我将储罐实体移动到墙实体(储罐由键盘控制)。然后我决定改变坦克的方向。为了将水箱和墙壁的每个框架分开,CollidingRigidBodySeparationSystem将水箱从墙壁上移开的最小可能量。分离方向应与水箱的移动方向相反(游戏图纸开始时,水箱应看起来好像从未移入墙壁)。但是方向变成了与新方向相反的方向,因此将储罐移动到与最初不同的另一侧。发生问题的原因:这是现在处理消息的方式(简化代码): public void Update(int deltaTime) { m_messageQueue.Enqueue(new TimePassedMessage(deltaTime)); while (m_messageQueue.Count > 0) { Message message = m_messageQueue.Dequeue(); this.Broadcast(message); } } …

11
如何鼓励玩家升级多个角色?[关闭]
在我的游戏中,可以制作多个角色。您可以根据需要制作任意数量。我通常所做的(几乎所有玩家都做)只是制作一个角色并将其升级为很多,然后将其用于所有操作。 一些游戏试图通过具有多个“类”或执行不同功能的角色类型来解决此问题,但这通常导致每个“类”只有一个。 我该如何鼓励玩家不要制作一个或两个真正的高级角色,而是要拥有一些目前正在升级的高级角色,一些中级角色和一些低级角色? (注意:我不接受以前接受的答案,因为我似乎有很多新的答案。(对不起,托马斯·马内尔,您的答案仍然很棒:)))


7
装甲点的作用是什么?
我在许多游戏中都看到过一种称为“装甲点”的机制,例如雷神之锤,反恐精英等。通常,尽管玩家拥有这些装甲点,但他受到的伤害较小。 但是,它们的行为与健康点的行为类似:您由于受到伤害而失去了它们。 为什么要设计这样的功能?这是Health 2.0,还是我缺少什么? 对我而言,装甲仅在RPG游戏中才有意义,在RPG游戏中,装甲是决定您抵抗力的常数。但是我不知道为什么在战斗中需要减少它。

6
Unity的最严重限制是什么?[关闭]
在阅读了有关Unity,UDK和ID的激烈问题之后,我很好奇:什么是Unity屡受打击,最严重的局限性? 为了使这个问题保持非主观性,我再一次谈论的是Unity的头号重复犯案者。作为Unity用户,您确实希望有人在开始使用它之前就告诉过您。 我从某人那里听说Unity不能很好地处理版本控制,因为它会生成很多二进制文件(不可更改)。对我来说,当我独自工作时,这并没有真正削弱。 有什么想法吗?
30 unity 

5
用Python编写的著名游戏[关闭]
我已经看到了其中的一些,即Java和C#/ XNA ...,最近我开始使用Python。哪种让我思考。 用Pygame / Pyglet / Pyopengl用Python编写了哪些(著名的)游戏?
30 python 


4
通过蒸汽分配的成本是多少?
我们正处于游戏开发项目的Pre-alpha阶段,尚未收到Valve的答复,该答复是关于Steam如何通过Steam发行的。我们需要这些信息来建立具有开发和发行该游戏所需的所有不同成本的业务模型。 所以我的问题是,定价结构是什么?他们占我们销售额的百分比吗?如果是这样,多少钱? 谢谢菲利克斯
30 valve  costs  steam 

11
替代游戏状态系统?
据我所知,大多数游戏都有某种“游戏状态系统”,可以在不同的游戏状态之间进行切换。这些可能是“ Intro”,“ MainMenu”,“ CharacterSelect”,“ Loading”和“ Game”之类的东西。 一方面,将它们分成一个状态系统是完全有意义的。毕竟,它们是完全不同的,否则将需要包含在大的switch语句中,这显然很混乱。它们肯定由国家系统很好地代表。但是同时,我查看了“游戏”状态,想知道这种状态系统方法是否存在问题。因为就像房间里的大象。这是巨大且显而易见的,但没人质疑游戏状态系统的方法。 对我来说,“游戏”与“主菜单”处于同一级别似乎很愚蠢。但是,没有办法打破“游戏”状态。 游戏状态系统是最好的方法吗?是否有一些更好的技巧来管理“游戏状态”?有一个介绍电影的状态并听其进入的介绍状态,然后是在资源管理器上循环的加载状态,然后是实际上可以完成所有工作的游戏状态,这可以吗?这对您来说似乎也不平衡吗?我想念什么吗?



7
Unity中的团队合作
我有一个没有任何版本控制的Unity项目,我需要与其他开发人员共享它,以便我们俩都可以从事该项目。 应该使用哪些策略与Unity Assets配合使用?

6
是否有任何视频游戏设计以有趣的方式使用非均匀随机数?
各种各样的视频游戏使用均匀分布的数字来决定事件的结果,例如“击中机会的50%”几乎总是意味着检查从0-1开始的随机浮点数是否大于0.5。许多游戏会将这些统一百分比中的一些叠加在一起,例如D&D命中率是1-20之间的均匀分布数字,除了1和20具有特殊的结果。在我看来,设计师似乎添加了一些重要的命题,以试图模仿这样一个事实:实际上,命中/失败或赢/输实际上不是二进制结果。 在许多情况下,攻击所造成的实际“破坏”量可能更接近于高斯/贝尔曲线分布,这导致中间出现,但偶尔会出现非常令人兴奋的离群值和平滑曲线,将它们连接起来。像《卡坦的殖民者》这样的骰子游戏通过将多个独立的掷骰相加来模拟高斯分布,但是我觉得我几乎从未在电子游戏中见过这种机制。 像《文明》这样的游戏(Sid Meier在GDC上广泛地谈论了玩家的感知与游戏中使用的实际数学不符)将受益于与现实世界中事物运作方式相匹配的结果。是否有任何视频游戏以有趣的方式使用了高斯或非均匀分布的随机数?

5
如何在随机数生成中避免“太”幸运/不幸的条纹?
我目前正在使用一种多人战斗系统,其中玩家造成的伤害总是乘以0.8到1.2之间的随机因子。 从理论上讲,真正随机的RNG最终可能会多次产生相同的数目(请参阅“ 俄罗斯方块困境”)。这可能导致一场比赛,其中一名球员总是造成很高的伤害,而另一名球员总是造成非常低的伤害。 我该怎么做才能确保不会发生这种情况?有些RNG在避免重复方面比其他RNG好吗?

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.