游戏开发

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

2
我会为事件处理程序疯狂吗?我的设计是否走错了路?
我想我已经决定我真的很喜欢事件处理程序。我可能会因分析瘫痪而受苦,但是我担心会使我的设计变得笨拙,或者在我的设计决策中遇到其他无法预料的后果。 我的游戏引擎目前使用平移式高架摄像机进行基本的基于Sprite的渲染。我的设计看起来像这样: 场景处理程序 包含实现SceneListener接口的类的列表(当前仅限于Sprites)。每个刻度调用一次render(),并发送onCameraUpdate(); 消息发送给SceneListeners。 InputHandler 每个刻度轮询一次输入,然后将简单的“ onKeyPressed”消息发送给InputListeners。我有一个Camera InputListener,它包含一个SceneHandler实例并触发updateCamera();。基于输入的事件。 AgentHandler 每个刻度一次在任何代理(AI)上调用默认操作,并将检查堆栈中是否有已注册的任何新事件,并根据需要将它们分配给特定的代理。 因此,我有一些基本的Sprite对象,它们可以在场景中移动并使用基本的转向行为进行移动。我已经开始进行碰撞检测了,这是我不确定我的设计方向是否正确的地方。拥有许多小型事件处理程序是一种好习惯吗?我想我必须要实现某种CollisionHandler。 我会更好地使用一个更统一的EntityHandler来处理一个类中的AI,碰撞更新和其他实体交互吗?还是只是实现许多不同的事件处理子系统就可以了,它们会根据事件类型将消息传递给彼此?我是否应该编写一个仅负责协调所有这些子事件处理程序的EntityHandler? 我意识到在某些情况下,例如我的InputHandler和SceneHandler,它们是非常特定的事件类型。我的游戏代码很大一部分都不关心输入,而很大一部分则不关心纯粹在场景渲染中发生的更新。因此,我感到孤立那些系统是合理的。但是,我要问的是专门针对游戏逻辑类型事件的问题。

1
在MUD样式的基于文本的世界中组织关卡/房间
我正在考虑编写一个小型的基于文本的冒险游戏,但是我不确定如何从技术角度设计世界。 我的第一个想法是使用XML进行设计,其设计如下所示。对大量XML表示歉意,但我认为完全解释我在做什么很重要。 <level> <start> <!-- start in kitchen with empty inventory --> <room>Kitchen</room> <inventory></inventory> </start> <rooms> <room> <name>Kitchen</name> <description>A small kitchen that looks like it hasn't been used in a while. It has a table in the middle, and there are some cupboards. There is a door to the north, …

4
如何让AI代理沿着曲线移动?
目前,我非常基本的AI框架中的代理沿着由一系列点组成的锯齿状路径移动。 他们只需将位置从一个点移动到另一个点即可。当他们到达下一个点时,他们会前进到下一个,依此类推。如何更改此设置,以便它们沿着路径的弯曲版本平滑移动,以及如何生成曲线?

8
HTML5手机游戏开发与本地游戏应用程序的比较[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 与HTML5技术集(包括CSS3和JavaScript库,例如RaphaelJS,Impact,gameQuery)相关的游戏引擎,框架,库和转换的当前状态如何;与开发本机应用程序(尤其是iOS和Android)相比,最好的方法是什么? 特别是在性能,视觉效果和获得“原生感觉”方面。 也对诸如Appcelerator和Corona SDK之类的解决方案的想法表示赞赏。关于Unity3D,是否可以在其中进行开发并且仍然可以在浏览器上玩游戏(至少是当前版本的Chrome或Firefox),而无需任何依赖关系或无需用户安装任何东西(没有统一的网络播放器) 。 我正在寻找的是如何在Web标准中进行开发,以达到最大数量的平台(包括外部移动设备),同时仍然保留移动设备的本机体验,而无需重新为iOS和Android实施游戏。

4
对可以互相看到的单位进行分组的最快方法?
在我正在使用的2D游戏中,游戏引擎可以为我提供每个单位在其视图范围内的其他单位的列表。 我想知道是否存在一种将单元划分为组的既定算法,其中每个组将由彼此“连接”(甚至通过其他单元)的所有那些单元定义。 一个例子可能有助于更好地理解这个问题(E =敌人,O =自己的单位)。首先,我将从游戏引擎获取的数据: E1 can see E2, E3, O5 E2 can see E1 E3 can see E1 E4 can see O5 E5 can see O2 E6 can see E7, O9, O1 E7 can see E6 O1 can see E6 O2 can see O5, E5 O5 can see E1, …
12 algorithm 

3
我应该如何安装第一人称相机?
我是一名初学者程序员,正在创建一个项目,该项目使我可以通过第一人称相机在房间中走动。到目前为止,我已经绘制了建筑物并继续进行,但现在我受困了,不知道如何制作第一人称视角的相机让我走来走去。 谁能指出我可以使用的相机类别或一些有用的代码?
12 c++  directx  camera 

1
质量和病毒报告的难题:我们的游戏可发布吗?
我刚刚与独立游戏工作室的首席执行官谈论了我们即将完成的一个项目。我们出于以下原因考虑对整个项目进行罐装: 部分地存在一些质量问题。战斗可能很有趣而且很深入,但是在大多数情况下,您可以使用混搭按钮来完成战斗。留下的感觉是,高级战斗确实只是为了添加一些东西而被标记。实际上,有很多工作要做。 游戏没有按预期结束。当最初的故事计划很重要时,它真的变成了无意识的格斗游戏。现在这个故事已经不存在了。 可能是最大的问题。相反,最近我们收到了测试人员的报告,称该游戏被报告为病毒(在某些情况下)。我们调查了一下,发现这是制造引擎的方式。我们使用的是3rd party引擎,虽然最初制造商很容易接近,但他变得相当遥不可及,对我们的问题无动于衷。 我和他在此问题上讨论了很长时间,我们认为它不会发布。对于首席程序员来说,这也将是一个巨大的打击,因为他花了相当长的时间在此上,将近一年。 如果发布此消息会产生什么后果?有人告诉我它可能会流行起来,而且我认为它可能被拉扯并确实损害了我们的形象。我还提到过,如果发布者认为病毒问题欺骗了我们,那么我们可能会被我们重新列入名单。我们可以被起诉吗?您认为它可释放吗? 我认为这是每个游戏工作室可能必须做出的非常重要的决定,我真的希望获得尽可能多的信息。 谢谢 [edit]同样有可能我们已经为html5制作了另一个版本的游戏,该版本正在内部使用我们自己的自定义引擎进行开发。我们正在考虑仅专注于此并从错误中学习。

4
我的角色会在哪里停下来?
许多年前,我为预算伪3D游戏编写了一些AI。我从来没有真正计算出最好的方法,这是计算一次,如果敌人现在停下来了,那敌人会去哪里。例如: 敌人目前位于X = 540.0。 敌人以每帧10像素向右移动。 当敌人想要停止时,它的速度将每帧降低1像素,直到达到零。 有没有一个简单的公式可以让我知道敌人完全停止时其最终位置?我最终对可以满足我的需求的偏移量进行了预先计算和硬编码,但对于速度不同的敌人,则必须分别计算。

2
如何使用GLSL创建高效的Bloom Shader?
我已经在网上搜索了与使用GLSL渲染光晕效果相关的资源,但没有发现任何东西。尽管Philip Rideout网站上的教程不错,但在我的Nvidia GPU上却表现不佳。 谁能指导我如何解决这个问题,并建立相当有效的布隆效应实现方法?
12 shaders  glsl  bloom 

3
不断发展的地形生成器
我最近才问这个问题,得出的结论似乎是,尚未真正使用基因编程(GP)进行程序游戏内容创建。我想改变那个。 我相当确定可以部署GP来帮助查找新的地形生成器。我要解决的问题是如何实现? 所有GP都有一些可以归纳为所有GP的基本部分(父母选择,重组,突变,存活)。我可以自己解决这些问题。问题出现在特定问题部分。这些就是您在代码中表示问题的方式(通常使用一棵树),以及如何评估生成器的性能(可以是一个或多个值)。 简而言之,这些问题是: 您将如何以可以解析为树的方式表示地形生成器? 这将产生什么样的地形?(高度图,顶点图...) 基于hightmap的信息越少越好。 用什么来评估解决方案的适用性? 例如:我们想要有趣的地形,因此我们可以让其中一个值为地形上每个顶点的法线平均变化。

5
我如何开始为3D游戏制作纹理?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 6年前关闭。 只是想知道在哪里可以找到有关制作3D游戏纹理的良好教程? 此外,通常是拍摄照片并将其转换为游戏纹理还是设计师自己绘制纹理? 更新: 为了使情况更加具体,我尝试制作一个简单的游戏,其中游戏角色位于一栋小建筑物中,因此我将为计算机,桌子,椅子,门,窗户,墙壁等制作纹理。建筑物基本上无关紧要。尽管我正在考虑使用Blender,但我没有3D建模方面的经验。
12 3d  textures  art 

3
如何在JavaScript中处理多人游戏?
我只是对用于移动多人游戏的技术进行了一些研究。 目前,这只是一个实验,因此,玩家唯一需要了解的就是其他玩家。 如果这是一个典型的Web应用程序而不是一个游戏它只会一直触发HTTP请求-但是由于这是一个游戏,因此性能和准确性将成为一个问题。 由于该游戏针对多个电话平台,因此可以说客户端将使用JavaScript或基于JavaScript的框架编写。服务器技术是完全开放的。 每个玩家都需要做一个HTTP帖子,并且只能使用更快的协议。基于网络的多人游戏的原因是,跨蓝牙或其他本地网络的多人游戏在平台之间的差异太大,可能会引起问题。 因此,问题归结为可用于JavaScript多人游戏的良好协议/技术是什么?关于服务器端的东西有什么建议吗?有什么理由我应该放弃这种两层体系结构并直接进行电话到电话的连接?

3
Minecraft动画是否已硬编码到游戏中?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 5年前关闭。 我想知道动画系统在《我的世界》中的运作方式。我觉得所有小怪都是硬编码到游戏中的。刻痕真的坐在那里,用手为所有动画骨骼创建矩阵吗? 我喜欢重新创建有趣的游戏,所以我想知道他是如何做到的。另外,如果他确实对它们进行了硬编码,还有更好的方法吗?

2
正确的方法来抽象XBox控制器
我有一个XBox360控制器,我想将其用作应用程序的输入。 我无法解决的是通过接口公开此内容的最佳实践方法。 在幕后,处理控制器的类依赖于轮询按钮状态。 我最初尝试了一些链接: Event ButtonPressed() as ButtonEnum 这里ButtonEnum是ButtonRed,ButtonStart等... 这是有一点限制的,因为它仅支持按钮按下,不支持按住/模式(按两次,等等)。 下一个想法是简单地向应用程序公开按钮状态,例如 Property RedPressed as Boolean Property StartPressed as Boolean Property Thumb1XAxis as Double 这是非常灵活的方法,但实际上它会迫使应用程序投入过多工作,并且需要应用程序进行轮询-如果可能的话,我更喜欢事件驱动。 我考虑添加多个事件,例如: Event ButtonPressed(Button as ButtonEnum) Event ButtonPressedTwice(Button as ButtonEnum) Event ButtonHeldStart(Button as ButtonEnum) Event ButtonHeldEnd(Button as ButtonEnum) 但这似乎有些笨拙,并且在“绑定按钮”屏幕上确实很痛苦。 有人可以给我指出处理控制器输入的“正确”方法。 注意:我在实现接口的类中使用SlimDX。这使我可以非常轻松地读取状态。任何可以解决我的问题的替代方案也将受到赞赏

2
有关XNA游戏架构的问题
因此,我终于开始玩XNA了,并一直在制作2D游戏(我从iOS上开发它的朋友那里得到了很多美术资产) 许多事情似乎很容易做到,而且开箱即用,但是由于大多数文献(例如,我买的书)对2D的关注都不多,所以我一头雾水。 对于以下问题的任何澄清或指向更多信息,我将不胜感激: 游戏服务的意义是什么?我了解将对象注册为服务的全部习惯,以便任何其他GameComponent都可以抢占它,但是如何击败这个问题却仅仅是使其成为公共的还是静态的?例如,我的书建议在Game.cs类中注册SpriteBatch对象。我不确定将其简单地设置为公共/静态是多么可取,因为无论如何应该只存在一个Game实例(单个)? 我对何时应该从GameComponent或RenderableGameComponent继承感到困惑。我正在尝试遵循管理器/控制器的设计,以便所有实体都由一个管理器创建/拥有,其他事物也一样。我目前有每个Manager / Controller都继承自GameComponent,但是如何让Game对象拥有所有Manager并手动调用它们的更新并绘制呢? 我注意到初始化是在 ContentLoad()之前调用的,我发现这很烦人,因为在我的Initialize中我想创建一些实体(即Sprite,Player等),但是我无法为其加载它们由于尚未调用SpriteSheets或Textures,因此尚未进行调用。我可能是初始化不正确,还是人们只是在ContentLoad中进一步分配纹理? 那些似乎是我最大的“ WTF ”,不是很了解

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.