游戏开发

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

3
发生某些事情时播放声音的好方法?听起来如何?
因此,我一直在考虑我的课程在很多时候会变得多么单板。例如,在Character类的Jump方法中,可以引用声音效果对象并进行播放。就其本身而言,这很好,但是当考虑到物理,动画,碰撞等因素时,Jump方法将变得非常庞大,并且Character该类对许多不同的事物具有很多依赖性。不过,这可能很好。但是,如果我们不再希望角色跳跃时播放声音该怎么办?现在,我们必须在混乱的代码中找到特定的代码行,Jump并将其注释掉。 所以..我在想.. 相反,如果有某种AudioSystem类,而它所做的只是订阅它对其他类感兴趣的随机事件,那该怎么办?例如,Character类可能有一个Jumped事件(我想也是静态的),该事件Character在方法的类内引发。然后,Character班级对角色跳跃时播放的声音效果一无所知。那AudioSystem将是一个巨大的类,程序员可以撤退以通过使用静态事件将声音效果与游戏中发生的某些事件联系起来。然后,如果它得到太大,它可以在像子分离EffectsAudioSystem,BackgroundAudioSystem,AmbientAudioSystem,等等。 然后,在游戏的选项中,可以有一个复选框来启用或禁用这些声音,而要做的只是用一个简单的单个布尔标志禁用一个系统。系统的概念也可以扩展到物理,动画等方面,以至于玩家行为所导致的大多数游戏响应都通过这些精心设计和分离的系统进行连接。 好的,我的问题可能有点含糊,但是这种声音听起来如何?我真的从未听说过有关这种系统的很多讨论。目前为止,这一切都在我的脑海中进行,到目前为止,尚未进行任何编码,因此,这也许是“理论上不错,但实际上却不好”的交易之一。这种系统是否可以在更大的游戏上使用,还是最终会崩溃,甚至比原始系统更像是意大利面条般的混乱?
10 c#  architecture  sound 


2
在3D空间中绘制一条像素宽的线
我想在3D空间中画一条线,无论距相机有多远,该线始终在屏幕上始终只有一个像素宽。(单点也一样)。 关于我该怎么做的任何提示?
10 xna 

2
突围碰撞:检测碰撞的一面
我正在写一个突破性的克隆游戏(我的第一场比赛),我完全不知道该如何打砖头。 我有一个碰撞检测方法,如下所示: DetectCollision(Object a, Object b) x = distance(a.x, b.x); y = distance(a.y, b.y); if (x is smaller than the combined width & y is smaller is than combined height { return true; } return false; 这完全可以正常工作,但是我需要知道碰撞的一面以及相对于中心的位置,以便正确响应。 过去几天我一直在偷看,但迷路了。

2
角色/对象交互动画在等距游戏中如何工作?
我正在计划一个等距的商业模拟游戏,玩家可以看到带有普通家具(例如书桌,白板等)的办公室。 游戏中的角色(工作人员/ NPC)应通过执行一些预定义的任务(例如,在办公桌上的键盘上打字或在白板上书写等)来与这些对象进行交互。 我特别感兴趣的是以下情况: 角色穿过办公室(1)移到他的办公桌(2),坐下并开始打字(3)。 据我了解,我会有一个用于角色移动的精灵表(1)和一个用于桌面的静态精灵(2),但是我不太了解如何处理第三步? 是否有同时包含桌子和角色的组合精灵?我假设没有,否则我将需要为每个桌子和角色组合使用一张精灵板。 通常如何处理? 编辑: 这是游戏主题医院的特定示例动画。您可以在此处观看视频。 据我所见,动画分为几个步骤。 步骤1-角色在桌子和椅子之间移动。 这表明椅子和桌子实际上是分开的精灵。 第2步-角色坐下动画 请注意,在最后一帧中椅子是如何离办公桌更近的。 第3步-桌面动画 第4步-站立动画 与坐下相同,但反向玩。 第5步-离开 使用普通的移动动画移开。 我的问题是如何最好地分离这些动画,图形艺术家通常将如何提供这些动画? 角色坐在桌子上打字实际上是三个不同的角色(桌子,角色和椅子)吗?有谁知道类似动画的示例精灵? 编辑2: 我想我最担心的是,我对精灵的实际外观有正确的期望。我不能自己绘制它们,所以我必须付钱给别人做,而且我认为有某种最佳实践可以制作这种动画?

2
渲染字符,四肢被割断(Java / OpenGL中的Blender模型)
如果我希望肢体可分离,在创建角色动画和渲染类时应该考虑哪些方面?我已经开发了详细的身体系统,可以定义到神经系统的所有内容。我的目标是达到与《矮人要塞》中详细的伤害程度相似的水平。例如,当角色对其上臂造成伤害时,可能会出现神经受损,从而使整个手臂失去能力。否则他们可能会完全失去手臂。 我写了一个系统来处理其中的数据部分。每个角色都有一个箱子,里面有附属物和内部零件。每个附件也可以具有子附件和内部部件。如果禁用或删除了父附件,则将禁用/删除子附件。如果生命中需要任何禁用/拆除的附件或内部零件,角色将很快死亡。 我现在正在研究的是绘图/动画部分。如何定义动画以了解在当前身体状态(缺少手臂/腿等)下允许哪些动画?如何设置绘制系统以不绘制缺少的四肢?每个肢体/附属物都必须是自己的模型吗(我想在地面上画出切除的附属物)? 我正在转换的简单系统(我只是将其编写用于测试)将动画的所有关键帧作为完整模型导入到VBO(以及关键帧开始/停止位置的顶点计数)。它不会导入或利用Blender中定义的骨骼,也不会在帧之间进行插值。 这可能是一个很大的问题,所以我也在寻找可以使我走到哪里的资源。 编辑 我询问有关动画的动画,因为我希望将其设置为在缺少所需肢体的情况下执行其他动画。考虑了这一点之后,我想我会在激活动画之前执行该检查,然后激活相应的动画。

4
渲染地图上地球大小的Minecraft需要什么样的硬件?
我一直在思考这个问题。使用当前技术是否可以在基于体素的游戏中创建地球的1:1复制?存储这张巨大地图的最佳数据结构是什么?应该使用哪种算法实时呈现此数据结构? 这些问题做出以下假设: 每个体素的分辨率为1立方米。 为了简单起见,每个体素仅需要1个字节的元数据信息。该信息将用于存储识别体素的“类型”(地球,水,岩石等)。 土方体积为1 * 10ˆ21立方米。 在“当前技术”中,我包括市售的任何东西,但不包括超级计算机。 仅将地球地形和测深法用于生成地图。排除人类建筑,植物或洞穴。地下街区将根据地质研究进行选择,例如:如果深度大于3000 km,则渲染“岩浆”体素。 就像在《我的世界》中一样,地图不是静态的,可以在游戏中进行修改。 “无限”的绘制距离是一个很大的优势,如果您不能飞起来观察整个星球,那么将整个地球放在地图上有什么意义呢? 当我想到这个问题时,我得出的第一个结论是,以线性方式存储地球数据是不可行的,假设每个体素仅占用1个字节的内存,那么仍然需要1个零字节来存储地图。因此,需要某种压缩方式。 我认为体素八叉树可以压缩地图,但是我不确定多少。该体素贴图的熵可能很低,因此我猜想可以实现很高的压缩水平。 免责声明 这是一个理论问题,我无意编写体素地球 编辑 ESA GOCE已经以1cm-2cm的精度绘制了大地水准面。我相信这些信息可用于生成非常精确的地球高度图。这样就无需使用算法来填补地球地形中的空白。

2
连续物理引擎的碰撞检测技术
我正在使用一个纯粹的连续物理引擎,因此我需要选择用于宽相和窄相碰撞检测的算法。“完全连续”表示我从不进行交叉测试,而是想找到方法在每次碰撞发生之前将其捕获,然后将其放入由TOI排序的“计划的碰撞”堆栈中。 宽相 我能想到的唯一连续的宽相方法是将每个物体围成一个圆圈,并测试每个圆圈是否会相互重叠。但是,这似乎效率极低,并且没有任何剔除。 我不知道对于今天的离散碰撞剔除方法(例如四叉树),可能存在什么连续的类似物。我应该如何防止不适当且毫无意义的广泛测试,例如分立引擎?我还希望能够看到超过1帧的碰撞。 狭窄阶段 我已经设法使狭窄的SAT适应连续检查而不是离散检查,但是我敢肯定,您可能遇到过的论文或网站中还有其他更好的算法。 您建议我使用哪种快速或准确的算法,每种算法的优点/缺点是什么? 最后说明: 我说的是技术而不是算法,因为我尚未决定如何存储可能是凹形,凸形,圆形甚至有孔的不同多边形。我计划根据算法的要求对此做出决定(例如,如果我选择将多边形分解为三角形或凸形的算法,我将以这种形式简单地存储多边形数据)。

1
变形表面
我正在尝试完成水平曲面的变形物理行为,但到目前为止,尚不知道如何从实现开始。 无论表面的形状(平面,立方体,球体……)如何,我都希望在游戏实体(玩家,敌人,物体……)的位置上有小凹痕。 解释起来有点复杂,所以我说明了我在说什么,这是一个带有球体的示例: 因此,这些表面应该能够使其自身稍微变形(看起来像是真正柔软的床或沙发)。我的曲面可能需要很高的顶点数才能获得平滑的变形,但是我的大问题是计算该变形的数学方法。 我正在用OpenGL用C / C ++进行编程,但是在正确方向上的任何建议都可以。

2
查找哪些瓷砖与一条线相交,而无需遍历所有瓷砖或跳过任何瓷砖
我已经盯着这个问题几天了。我整理了此图形以帮助我直观地看到问题:( 从图形中我们知道线与[1,1],[1,2],[2,2],[2,3]相交,以[ 3,3]) 我想沿着直线移动到每个网格空间,并检查网格空间的材质是否牢固。我觉得我已经知道所涉及的数学,但是我还不能将其组合在一起。我正在使用它来测试视线并在通过我的寻路算法找到路径后消除节点-我的代理无法看到实体块,因此它们无法通过实体,因此不会从路径中消除该节点,因为它需要导航一个角。 因此,我需要一种算法,该算法将沿着直线移动到它相交的每个网格空间。有任何想法吗? 我看了很多常见的算法,例如布雷森汉姆算法,以及沿着线以预定间隔步进的算法(不幸的是,如果它们与比步长小的楔形相交,则此方法会跳过这些图块)。 我现在用大量floor()和ceil()函数填充我的白板-但是它变得过于复杂,我担心它可能会导致速度变慢。

4
HTML5或Javascript游戏引擎来开发浏览器游戏[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 7年前关闭。 我想开始开发诸如Travian或Ogame之类的MMO浏览器游戏,可能还涉及一些更复杂的图形功能,例如玩家与2d地图或类似内容进行实时交互。 我的主要疑问是我应该使用哪种开发工具:我在服务器端使用PHP和MySQL,在客户端使用Javascript(和jQuery)方面拥有丰富的经验。从头开始编写所有代码当然会非常痛苦,所以我想知道是否应该使用JavaScript游戏引擎。您会推荐(可能免费)游戏引擎吗?他们足够擅长开发大型游戏吗? 另外,最近我看到了很多HTML5游戏的出现,但是现在我确定使用HTML5是否是个好主意。你会推荐吗?使用HTML5有哪些优缺点?如果您推荐它,您是否有关于使用HTML5开发游戏的良好链接? (PS:我知道HTML5和Javascript引擎不是互斥的,我只是不知道如何制定适当的标题,因为英语不是我的主要语言。所以,请回答关于HTML5和游戏引擎的优缺点分别)

4
射击前计算轨道周围的导弹轨迹
我正在使用Unity3D构建游戏。这是《重力战争》的副本。玩家和AI炮塔都向对方发射导弹(给出一个角度和一个Power变量),试图不使导弹坠落在行星上。但是,这是我的问题:在考虑导弹的引力的同时,如何使AI在射击导弹之前先计算功率和角度?


1
SharpDX是否已经成熟到可以采用,还是我现在应该立即开始使用SlimDX?
我将停止在XNA中的游戏项目,因为据我所知,它的开发即将结束(并且它已经落后于当前技术了)。因此,我需要采用新的框架或API。 我花了2天的时间研究C ++,并认为它确实不适合我-但是我确实发现对DirectX的原始访问很有吸引力。SharpDX听起来是一个不错的起点,但是它没有文档,也没有代码注释。我觉得还没准备好使用。 我对使用过这两个框架之一或两者的人们的观点感兴趣,以帮助我确定应该学习哪个框架?感谢您的任何建议。
10 xna  slimdx  sharpdx 


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.