游戏开发

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


1
制作夜景而不会在监视器上变暗
这将是使3D场景看起来像“漆黑的夜晚”的好方法,而又不会在监视器上那么黑,以至于很难看清东西(尤其是在明亮的房间中玩耍时)。 我一直在尝试使自然光变成浅蓝色,并具有相当暗的环境成分和较亮的漫反射成分,但根据确切的参数,我发现结果要么有点缺乏光泽,要么仍然太暗。 有什么好的例子要学习吗?

5
游戏机器人如何看待游戏世界和其他实体?
这个问题在我心中已经存在了一段时间……主要是因为我看到了诸如《魔兽世界》之类的各种游戏的机器人。我的问题是;机器人如何知道屏幕上出现了什么?我没有玩《魔兽世界》,所以我的示例可能是错误的,但是例如,如果有一个怪物,机器人将如何知道屏幕上该怪物的位置以及如何与之交互? 您可以将其应用于任何游戏还是针对每个游戏?如果问题不清楚,我感到很抱歉...我不是在问如何制造机器人,而是要问他们如何在屏幕上检测到东西,这对我非常着迷! 提前致谢 :)
52 bot 

3
程序生成的地形中的降雨+河流创建算法
最近,我对程序化地形可以完成的事情着迷,并开始尝试一些构建世界的尝试。我希望能够通过将各种地图网格化而创建的生物群系来制作像矮人要塞这样的世界。 因此第一步已经完成。使用菱形平方算法,我创建了一些不错的hieghtmaps。下一步是我要添加一些水特征,并根据降雨实际生成它们。我已经读过几种不同的方法,例如从地图的最高点开始,然后“逐步”下降到最低的相邻点,在其下降到海平面时进行合并/腐蚀。 是否有任何记录在案的算法,还是袖手旁观? 会喜欢任何建议/想法。

4
在场景之间处理数据的正确方法是什么?
我正在Unity中开发我的第一个2D游戏,遇到了一个重要问题。 如何处理场景之间的数据? 对此似乎有不同的答案: 有人提到使用PlayerPrefs,而其他人告诉我,这应该用于存储屏幕亮度等其他内容。 有人告诉我,最好的方法是确保每次更改场景时都将所有内容写入保存游戏,并确保在加载新场景时再次从保存游戏获取信息。在我看来,这在性能上是浪费的。我说错了吗 到目前为止,我已经实现了另一种解决方案,即拥有一个在场景之间不被破坏的全局游戏对象,处理场景之间的所有数据。因此,当游戏开始时,我会加载一个开始场景,并在其中加载该对象。在此之后,它将加载第一个真实的游戏场景,通常是一个主菜单。 这是我的实现: using UnityEngine; using UnityEngine.UI; using System.Collections; public class GameController : MonoBehaviour { // Make global public static GameController Instance { get; set; } void Awake () { DontDestroyOnLoad (transform.gameObject); Instance = this; } void Start() { //Load first game scene (probably main menu) …
52 unity 

6
与多位艺术家合作时如何保持艺术一致性?
我制作的游戏需要大量的艺术内容,这是一个人无法创造的,因此,我寻求其他艺术家的帮助。 问题是,每个艺术家都有自己的风格,并且将所有艺术家产生的内容混合在一起会产生非常不一致的体验。图形内容和音乐内容都是如此。 我尝试过让每个艺术家都在内容的完全不同的部分上工作,例如让背景艺术家,子画面艺术家和平面设计师工作,但这显然并不能随着艺术品数量的增加或在需要我更换的情况下扩展一位艺术家,并且对音乐等内容并不陌生。 我如何与任意数量的艺术家一起工作,又如何在整个游戏中保持艺术上的一致性? 附录:当前的答案提到了艺术规格的创建,但是尽管有用,甚至可能是必要的,但这还远远不够。 在编程方面,“制定技术规范”与“制定技术规范”相似,这绝对是一件好事,但是规范本身并不能提高整体代码质量。 艺术总监也是如此。用编程的术语来说,“成为一名首席程序员”对于“如何提高团队代码质量?”不是一个非常有用的答案,尽管这是一件非常好的事情。 我正在寻找有关如何解决艺术一致性领域中常见问题的具体详细答案。例如: 进行线稿时,请使用矢量工具而不是徒手绘制它们,并使用预定的画笔参数绘制线条,以便每个人都能获得相似的线条。 有些人使用渐变工具,而另一些人使用模糊工具,结果差别很大,因此请确保每个人都使用相同的渐变技术。 对于音乐而言,一旦设定了打击乐和和弦进行时,谁来完成这首歌并不重要,因此请确保所有音乐的打击乐器和和弦进行时是由同一个人编写的。 我只是编造了这些,所以不知道它们是否有效。我问这个问题,这样的人谁做知道什么工作可以给我就如何改进艺术一致性具体提示。 在我的具体情况,我不是有一个问题还没有,但我需要为我目前规划项目容积较大的音乐。我有两位想提供帮助的音乐家,但是他们的风格(和技巧水平)截然不同。如果我让他们都做音乐,他们希望的方式,我将有一个相当不一致的结果,我想,以避免前他们开始编写音乐。 另外,我将需要大量的角色绘图,并且我有两名艺术家想要帮助(加我),但是我们的绘画风格却大不相同。特别是,这是每个艺术家绘制相同角色的方式: 请注意,即使我们都是使用相同的调色板绘制相同的角色,结果却截然不同,并且告诉所有人“所有人都必须以艺术家B的风格进行绘画”并不是很有效。



10
游戏状态“堆栈”?
我在考虑如何在游戏中实现游戏状态。我想要的主要内容是: 半透明顶部状态-可以通过暂停菜单查看后面的游戏 面向对象的东西,我发现这更易于使用和理解其背后的理论,以及保持组织规范并添加更多内容。 我打算使用链接列表,并将其视为堆栈。这意味着我可以访问下面的状态以获得半透明性。 计划:将状态堆栈作为指向IGameStates的指针的链接列表。顶部状态处理其自己的更新和输入命令,然后具有成员isTransparent来决定是否应绘制下面的状态。 然后我可以做: states.push_back(new MainMenuState()); states.push_back(new OptionsMenuState()); states.pop_front(); 要表示播放器的负载,请依次转到选项和主菜单。 这是个好主意,还是...?我应该看看别的东西吗? 谢谢。

9
面对浮点非确定性,确定性游戏怎么可能?
为了使游戏像RTS网络游戏一样,我在这里看到了许多答案,这些建议建议使游戏完全具有确定性。那么您只需要彼此转移用户的操作,并稍微延迟所显示的内容,以便在呈现下一帧之前“锁定”每个人的输入。这样,诸如单位位置,健康状况之类的事情就不需要通过网络不断更新,因为每个玩家的模拟都是完全相同的。我也听到过建议进行重放的同一件事。 但是,由于浮点计算在机器之间,甚至在同一机器上同一程序的不同编译之间是不确定的,真的可以这样做吗?我们如何防止这一事实在整个游戏中引起波动的玩家(或重播)之间产生微小差异? 我听说有人建议完全避免使用浮点数int来表示小数的商,但这对我来说并不实用-例如,如果我需要取一个角度的余弦值怎么办?我是否真的需要重写整个数学库? 请注意,我主要对C#感兴趣,据我所知,在这方面,C#与C ++存在完全相同的问题。

7
2D Platformer AABB碰撞问题
我的AABB冲突解决方法有问题。 我先解析X轴,然后解析Y轴,以解决AABB相交问题。这样做是为了防止此错误:http : //i.stack.imgur.com/NLg4j.png 当物体移入播放器且必须水平推动播放器时,当前方法可以正常工作。如您在.gif文件中所见,水平尖峰正确地推动了播放器。 但是,当垂直峰值移动到播放器中时,X轴仍将首先解析。这使得“将钉鞋用作升降机”是不可能的。 当玩家进入垂直尖峰(受重力影响而掉入)时,他被推向Y轴,因为开始时X轴上没有重叠。 我尝试过的方法是此链接的第一个答案中描述的方法:2D矩形对象碰撞检测 但是,尖峰和移动的对象是通过更改位置而不是速度来移动的,直到调用Update()方法之前,我才计算它们的下一个预测位置。不用说此解决方案也不起作用。:( 我需要以上述两种情况都可以正常工作的方式解决AABB碰撞。 这是我当前的碰撞源代码:http : //pastebin.com/MiCi3nA1 如果有人可以研究这个问题,我将非常感激,因为这个错误从一开始就一直存在于引擎中,并且我一直在努力寻找一个好的解决方案,但没有成功。这严重使我整夜都在看碰撞代码,并阻止我进入“有趣的部分”并对游戏逻辑进行编码:( 我尝试实现与XNA AppHub平台演示中相同的碰撞系统(通过复制粘贴大部分内容)。但是,“跳跃”错误发生在我的游戏中,而AppHub演示中没有发生。[跳虫:http : //i.stack.imgur.com/NLg4j.png ] 要跳,我检查播放器是否为“ onGround”,然后将-5添加到Velocity.Y。 由于玩家的Velocity.X高于Velocity.Y(请参见图中的第四个面板),因此onGround在不应该设置为true时设置为true,从而使玩家跳入半空中。 我相信这在AppHub演示中不会发生,因为播放器的Velocity.X永远不会高于Velocity.Y,但我可能会误会。 我先在X轴上解析,然后在Y轴上解析,从而解决了这个问题。但是,如上所述,这加剧了与尖峰的碰撞。

4
为什么游戏有帽子?
我注意到很多游戏都带有帽子。我想知道为什么?在游戏中添加帽子是某种传统吗?是什么使这种趋势在游戏开发中如此流行?

7
为什么没有夜空具有逼真的恒星星座?
作为业余观星者,我注意到许多有夜景的游戏都在夜空中使用纹理,而星空似乎完全是随机排列的。似乎它们是由艺术家从头开始创建的,而无需查看星图。他们为什么不使用夜空的纹理,使星星像真实的夜空那样排列,以便您可以辨认出著名的星座? 在奇幻或科幻场景中进行的游戏显然是被原谅的,但是为什么在地球上进行的游戏在现实主义上花费了如此多的工作,却忽略了这一方面,即使可以使用许多公共领域的资源创建逼真的夜空?

5
如何避免GameManager神物?
我刚刚阅读了有关构建游戏代码的问题的答案。这让我想知道普遍存在的GameManager类,以及它在生产环境中如何经常成为问题。让我描述一下。 首先,有原型。没有人会在乎编写出色的代码,我们只是尝试运行一些东西,以查看游戏玩法是否合计。 然后是一个绿灯,为了清理事物,有人写了一个GameManager。可能真的要抱一堆GameStates,也许要存储一些GameObjects,没什么大不了的。可爱的小经理。 在预生产的和平领域中,游戏的状态很好。编码人员有适当的睡眠时间,并且有很多想法可以使用出色的设计模式来构建事物。 然后开始生产,很快就会有紧要关头。均衡饮食早已一去不复返了,错误跟踪器正在解决问题,人们感到压力很大,游戏必须在昨天发布。 在那个时候,通常,这GameManager是一个很大的混乱(保持礼貌)。 原因很简单。毕竟,编写游戏时,嗯......所有的源代码实际上是在这里管理的游戏。只需在中已添加了GameManager所有其他内容的位置添加此额外功能或错误修正,就很容易了。当时间成为问题时,就无法编写单独的类,也不能将此巨型管理器拆分为子管理器。 当然,这是一个经典的反模式:上帝对象。这是一件坏事,要合并的痛苦,要维持的痛苦,要理解的痛苦,要转变的痛苦。 您有什么建议可以防止这种情况发生? 编辑 我知道怪罪命名。当然,创建一个GameManager类并不是一个好主意。但同样的事情可以发生在一个干净的GameApplication或者GameStateMachine或GameSystem那最终被管道胶带喜爱的一个项目的结束。不管命名如何,您都可以在游戏代码中的某个位置找到该类,但现在它只是一个雏形:您还不知道它将变成什么样的怪物。所以我不期待“怪罪命名”的答案。我想要一种防止这种情况发生的方法,一种编码架构和/或一个团队可以遵循的流程,因为他们知道这将在生产中的某个时刻发生。放弃一个月的错误修正和最新功能真是太糟糕了,因为所有这些现在都在一个庞大的无法维护的经理中。

5
在hack&slash游戏中寻找一种很好的角色移动技巧
我正在制作hack&slash游戏,并且希望角色像在Torchlight,Diablo等中一样移动。目前,我为地板的所有可行走区域生成了一组节点。当我单击某个位置时,播放器会通过节点的插值路径到达那里。这看起来不是很自然。玩家像机器人一样移动。敌人也使用该节点系统进行运动并共享相同的问题,但是我对它们还有另一个问题。当敌人发现玩家时,他们会以最短的路径找到他。有时他们会使用相同的路径并与玩家对齐,而不是包围玩家。我不知道如何让敌人选择不同的路径并包围玩家。你知道我该如何解决这个问题?也许我应该对角色移动使用不同的方法? 我目前的技术: 火炬之光截图: -更新- 我想知道如何处理这些情况: 情况1,我途中有动态/静态障碍 情况2,敌人有通往玩家的圣路(进入队列与我们作战)
51 ai  rpg  movement 

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.