游戏开发

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

3
我以及如何将输入和游戏对象的关注点分开?
在每个游戏中,开发人员都必须以某种方式处理输入,可能是简单的键盘和鼠标事件,触摸事件或加速度计输入。该输入直接间接影响游戏中的对象。有时相同的输入会影响不同的对象。现在,我一直在考虑如何对此建模。我的看法有两种不同的方法。 让游戏对象自己处理它,订阅事件并调用它自己的方法。这具有使游戏对象自己决定哪些输入导致哪个动作的优点。缺点似乎是输入代码与“核心”游戏对象代码混在一起。而且,游戏对象不知道游戏其余部分的状态,并且有时可能不应对输入事件起作用。这似乎不正确。 让一般的输入控制器负责所有输入,并决定谁来处理什么事件。这似乎可以更好地分离关注点,但是紧密地将输入控制器类与游戏对象耦合在一起。它需要以某种方式知道谁想要接收哪个事件和哪个状态。这似乎也不正确。 您正在使用什么策略来解决这个问题?

9
当用户被迫按顺序进行关卡而不是让他们选择并玩游戏时,这是否会使游戏变得更加有趣?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 在我的游戏中,我第一次陷入真正的设计困境。我想那是一件好事;)我正在建立一个单词拼图游戏,它有五个级别,每个级别都有30个拼图。当前,用户必须先解决一个难题,然后再解决下一个难题。但是,我发现用户偶尔会陷入困境,这时他们只有解决了问题才可以玩。这显然很不好,因为很多人可能会退出游戏并删除该应用程序。 我能找到的帮助玩家摆脱困境的唯一优雅解决方案是更改游戏的设计,以使用户可以随时选择要玩的任何难题。这样,如果他们陷入困境,他们可以稍后再来,至少在此期间他们还有其他难题要玩。但是,我认为,这种新的流程设计不能像原始流程设计那样使游戏变得有趣,在原始流程设计中,玩家必须先完成拼图,然后才能继续下一个。对我来说,这就像其他任何事情一样,当您只有一种东西时,它会更有趣;但是,当您只有30种东西时,它就远不会那么令人愉快。实际上,当我向用户提供30个难题供您选择时,我担心我可能会让他们觉得这是他们必须做的很多工作,但这很糟糕。 我的问题是... 你同意/不同意吗? 您对我如何帮助玩家解脱有任何建议吗? 非常感谢您的想法! 编辑:我应该提一下,我已经考虑了其他一些解决方案来帮助用户解决问题,但是这些解决方案似乎都不是好主意。他们是... 添加更多提示:当前,用户在每个难题中都会得到两个提示。如果我增加了提示计数,它只会使游戏变得更加简单,而且仍然可能使用户陷入困境。 添加一个“显示解决方案”按钮:这似乎不是一个好主意,因为我认为这对许多人来说都是无聊的游戏,如果他们没有快速的选择来查看解决方案,他们可能会解决难题。

4
计算两军交战的输出
我正在使用Flash编写战略游戏。该游戏的工作原理与著名的游戏“ Travian”非常相似。 我的问题如下:我试图计算由于两支军队之间的战斗而损失的部队。两国军队的单位类型不同。他们中的一些对其他某些单位更强,而对其他类型则较弱。 如何将这种差异的影响体现在战斗方程式中? 如果它们仅具有at和def点,这似乎很容易,但是当涉及到单元类型依赖项时,我会迷路。

8
跨平台音频API建议
我目前正在考虑为游戏添加声音。我已经看过OpenAL和SDL,但我想知道那里还有什么。您可以推荐任何好的跨平台音频API进行游戏开发吗?
20 assets  sound 

5
noSQL-它是基于Web的游戏的有效选择吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 6年前关闭。 出于机会和无聊,我和一个朋友决定制作一个基于网络的游戏。这是我将要制作的第一个“游戏”,因为通常我会在Django中编写Web应用程序。 我选择在游戏中使用相同的框架,但由于无法预见未来的需求和与数据库相关的问题,因此我对数据存储并不完全确定。最近,noSQL运动逐渐兴起,我想探索这一领域。 因此,我有以下问题: noSQL数据存储(基于文档,例如MongoDB)是否适合基于Web的游戏? 使用传统的RDBMS(例如MySQL)可能会出现什么问题? 如何在玩游戏或定时事件(例如cron作业)期间,确保使用MongoDB的用户之间的数据一致性? 游戏概述:典型的冒险游戏,玩家与怪物战斗并获得物品等。 所有玩家的一些数据都是静态的:物品,武器,药水,地图等。 与玩家相关的一些数据:清单,指标(统计数据),进度等。 一个玩家可能需要知道另一个玩家的状态和状态 计划任务将在特定时间间隔运行


6
用于插值和线程处理的数据结构?
我最近一直在处理游戏中的一些帧速率抖动问题,看来最好的解决方案是Glenn Fiedler(游戏开发人员)在经典的“ 修复您的时间步伐”中提出的解决方案!文章。 现在-我已经在使用固定的时间步进行更新。问题是我没有进行建议的插值渲染。结果是,如果渲染速率与更新速率不匹配,我将获得双倍或跳过的帧。这些可以在视觉上引起注意。 因此,我想在游戏中添加插值法-我很想知道其他人如何构建数据和代码来支持这一点。 显然,我将需要存储(在何处/如何?)与渲染器相关的游戏状态信息的两个副本,以便可以在它们之间进行插值。 另外-这似乎是添加线程的好地方。我想像一个更新线程可以在游戏状态的第三个副本上工作,而将其他两个副本保留为渲染线程的只读状态。(这是一个好主意吗?) 看来,有游戏的状态的两个或三个版本可能会引入性能和- 远更重要的是-可靠性和开发人员的生产力问题,相比于仅具有单一版本。因此,我对缓解这些问题的方法特别感兴趣。 我认为应该特别注意的是如何处理游戏状态中添加和删除对象的问题。 最后,似乎某种状态不是直接需要渲染的,还是要跟踪不同版本的状态太难了(例如,存储单个状态的第三方物理引擎)-因此,我想知道如何人们已经在这样的系统中处理了这类数据。

3
如何使多人游戏在NAT之后可靠地工作?
当客户端位于NAT之后,即使是100%客户端/服务器的游戏有时也会出现问题。小便对等游戏甚至是更大的问题。某些游戏需要使用多种传输方式(例如UDP和TCP)或多种连接方式(例如用于语音的其他UDP端口)。 有什么方法可以确保游戏在NAT路由器后面运行时可靠运行? 对等:不存在集中式服务器。玩家A开始游戏,而玩家B想加入 客户端-服务器:知名地址(主机名)上的集中式服务器接受所有传入连接。每个客户端仅与该服务器通信。 组合:服务器只是配对,但游戏更新是对等的。不同的对等方可能会看到每个播放器具有不同的IP /端口(例如,某些客户端位于同一NAT之后,而某些客户端位于不同的路由器上)


6
自上而下射击中的敌人产卵方法
我正在使用类似于DoDonPachi,Ikaruga等的自上而下的射击游戏。通过玩家能够在相机可见区域内移动,相机会自动处理相机在整个世界中的移动。 一路上,敌人被脚本脚本沿路径的特定点生成。尽管这听起来很简单,但我可以看到两种定义这些点的方法: 相机的位置:当相机经过这些点时产生“触发” 沿途时间:“ 30秒,产生2个敌人” 在这两种情况下,都将定义摄像机相对位置以及敌人的行为。 我的看法,定义这些要点的方式将直接影响“关卡编辑器”或您的工作方式。 一种方法比另一种方法有什么好处吗?

4
资源经理-他们有什么好处吗?
我已经在源代码中见过很多次了,诸如此类[嗯,这更多是我的伪C ++想法] typedef shared_ptr<Resource> ResourcePtr;// for ease ResourcePtr sound1 = resourceManager.Get<SoundResource>("boom.ogg"); sound1->Play(); ResourcePtr sprite = resourceManager.Get<Image>("sprite.png"); 我只是想知道像这样的课程有多有用: 加载的媒体文件 将它们存储在内存中 在关卡开始时执行此操作-加载屏幕。 清理了 而不是具有以下系统: 资源仅由实体持有,或由实体持有。 负责自己加载到内存中。 首先是这样的“经理”;我觉得这表示使用错误。但是,它允许传递类似资源名称的向量之类的东西,而不必费力寻找需要加载的所有内容。

11
XNA开发教程[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 3年前关闭。 有人可以指导我从哪里获得使用XNA框架进行开发的基本入门教程?
20 c#  xna 

6
使用什么坐标系来处理2D UI?
在长宽比问题之后,我很想听听其他人在2D UI系统(最有可能是他们自己开发的解决方案)上工作时正在使用什么。具体来说,如何处理坐标系。我认为有三种选择: 硬编码的坐标(例如:0-> 720,0-> 576) 归一化的坐标(0.0-> 1.0,0.0-> 1.0),在渲染之前映射到真实坐标 虚拟坐标(例如:0-> 1600、0-> 1000),在渲染之前已映射到真实坐标 硬编码显然仅在以下情况下有用:在固定平台上并且事先知道屏幕空间坐标是什么,或者准备为每组可能的屏幕尺寸编写屏幕布局。 归一化的坐标很好,但是当屏幕的宽高比不固定时(例如0.75映射到宽屏而不是4:3时,则0.75映射到不同的物理坐标)会产生歧义。同样,对于作者来说,将UI元素声明为(0.2 x 0.2)真的违反直觉,只是发现渲染时它实际上不是正方形。 虚拟坐标是明确的,但在重新映射阶段遇到与标准化坐标相同的问题:很小的十进制差异会导致偏离一对一的错误,这意味着应该平铺的UI元素之间现在有接缝。 同样,当您有固定分辨率的屏幕时,归一化坐标和虚拟坐标都意味着很难保证UI图像中艺术家的精细像素与屏幕上像素之间的1:1映射,这意味着您存在以下风险:令人讨厌的缩放伪影(假设您在屏幕上渲染为带纹理的四边形)。 我们采用了虚拟坐标方法,特别是为了避免对宽高比产生歧义。因此,当渲染到16:10屏幕时,UI空间为(0,0)->(1600,1000),但是当渲染为4:3时,可用的UI空间实际上为(133,0)->(1467 ,0)。 有我不知道的更好的解决方案吗?有什么好的策略可以最小化这三种方法的问题?
20 rendering  gui 

7
XNA有哪些已知的2D / 3D物理引擎?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我正在寻找要在XNA项目(2D或3D)中使用的物理引擎。因为它用于XNA,所以需要满足一些要求: 不一定免费,但是接近它显然是首选 仅托管代码(否则将无法在360上运行) 对于3D,我知道-BulletX(它可以工作,并且我现在正在使用它,但是它不活跃并且可以使用更多工作) 对于2D我知道-Farseer
20 c#  xna  physics-engine 

10
MMO在PvP期间如何/应该如何处理断开连接?
在MMO(甚至不一定是MMORPG)中,有哪些技巧可以处理玩家在PvP中间断开连接的问题? 特别是-您如何避免对因网络(甚至现实生活)问题而断开连接的人们造成不利影响,而又不对与他们互动的人们造成不利影响? 而且,重要的是,如何确保断开连接不能用作作弊方法?

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.