游戏开发

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

2
具有连接路径的过程二维地图算法
要解决的问题:为所有房间相连的基于图块的游戏生成随机的2D地牢地图。 我正在寻找比目前更好的解决方案。 我当前的解决方案是运行两种算法。第一个生成带有其房间的地牢。第二个要确保所有房间都已连接。我很好奇还有什么其他解决方案。更快和/或更容易等。速度并不是真正的问题,但是如果可以免费获得速度,那将是一件好事。更重要的是,我和其他阅读者可以学习不同的方法来解决问题。 以下是我当前的实现。房间目前没有出口,也没有任何2、3或4个方向的出口。 生成地下城房间 设置:将当前房间设置为左上方的房间。 获取该房间的有效房间类型(其中有效的房间类型是在地牢中没有出口,并且其出口与上方房间和左侧房间的出口相匹配的类型。只需要在上方和上方进行检查即可)由于下面的第2步而离开)。 放下房间,将x坐标前进一个步骤。如果x坐标超出地牢宽度,则将x坐标设置为0,并将y坐标前进一个步骤。如果y坐标超过地牢高度,则完成。 从#1开始重复。 然后,我检查是否所有房间都已连接。如果还没有全部连接,我运行第二种算法,该算法以非性感但在地下城布局方面肯定足够好的方式穿过这些房间并进行更改,以便所有被连接起来。 检查是否所有房间都连通 设置:创建一个表示路径的整数2D映射,并将条目初始化为“未处理”(尚未遍历)值-1。将跟踪当前路径的起始路径索引整数设置为1。通过将当前房间添加到要检查的房间堆栈中,将当前房间设置为左上房间。 如果堆栈中包含要检查的房间,则将其弹出以将房间的路径索引设置为当前路径索引。如果堆栈中不包含任何房间,请增加路径索引并尝试逐列逐行前进以获取房间,直到获得尚未处理的房间。如果找不到房间,我们就完成了。 检查房间是否在左侧有出口。如果已添加左侧空间,则将其添加到堆栈中。 对向下,向右和向上方向重复步骤2(因为我们使用的是堆栈,这意味着从顶部方向开始以顺时针顺序遍历房间)。 从步骤1开始重复。 如果路径索引计数大于1,则表示房间已断开连接。 如果存在断开连接的房间,则将房间按其路径索引分组,获取最大路径的索引,然后将所有其他房间连接到这些房间。这是一项正在进行中的工作,但是我的(当前的,“粗俗的”)计划是要遍历一个房间组(第一个房间除外)中的每个房间,以检查是否有通往Biggeset房间组的水平或垂直路径,并且如果是这样,请通过在其间注入/更新房间来在其中创建水平/垂直路径。冲洗并重复。丑陋的,是的,但是就视觉模式而言,这是不明显的,因此可以在这种意义上发挥作用。

2
六角形网格/平铺教程[关闭]
是否有任何有关创建基于六边形网格的地图/游戏的平台或语言不可知(最好是逐步介绍)的教程?我主要对网格/平铺基础知识感兴趣,而不对高级游戏引擎感兴趣。到目前为止,我已经找到了这些: 用于游戏和其他项目的六角形网格 六角网格数学

3
如何在MMO游戏中处理大量拾音器
Minecraft之类的游戏或任何带有拾音器的MMO游戏如何处理它们? 假设您每次挖掘地形时都会产生3滴“污垢”。假设每个项目都有每帧计算的旋转动画。如果全世界的取件数量非常高,那么对于给定服务器中的客户端而言,这将是无用的大量帧开销,因为很可能其中许多取件项距离您仅光年。 所以我认为您只需要在接近本地玩家的拾音器上“做东西”,但这仍然意味着我必须检查每一帧是否有其他拾音器项目足够近以至于必须开始动画。 我的实际问题是:其他MMO如何解决此问题?


7
Microsoft是否建议使用适用于游戏开发的C#属性?
我知道有时您需要一些属性,例如: public int[] Transitions { get; set; } 要么: [SerializeField] private int[] m_Transitions; public int[] Transitions { get { return m_Transitions; } set { m_Transitions = value; } } 但是我的印象是,在游戏开发中,除非您有其他理由,否则一切都应尽可能快。从我读过的书中给我的印象是Unity 3D不确定通过属性内联访问,因此使用属性会导致额外的函数调用。 我是否经常不理会Visual Studio不使用公共字段的建议?(请注意,我们会int Foo { get; private set; }在显示预期用法的地方使用优势。) 我知道过早的优化是不好的,但是正如我所说,在游戏开发中,只要有类似的努力就可以使它更快,但事情不会变慢。

4
固定价格的Mmorpg世界中可以存在通货膨胀吗?
假设: 工艺材料是无限的。限制是玩家的无聊。 玩家只能通过拍卖行进行交易。所有价格都是固定的。玩家无法决定任意价格。 拍卖行中的商品会无限期保存,并且拍卖创建者不能撤回(除非他支付100%的物品价格+ 10%的拍卖费)。 出售算法为FIFO(任何玩家放置的第一件物品均为出售的第一件物品)。 手工艺和聚会行业每天有10个手工艺点的冷却时间。 要讨论的问题/要点: 所有玩家将很高兴,公平的100%价格,免费骗局,无需参与证券交易市场即可通过手艺获利。即使新玩家到达游戏的时间太晚,他们也会有相同的体验。 金钱永远不会失去其价值,您可以将金钱存储在银行中,十年后才可以玩游戏,并以相同的价格购买所有东西。与《魔兽世界》相反的是,一个简单的铜矿石在游戏开始时价值10银,现在已经结束时为200银。那是2000%的通货膨胀率。 通过具有固定价格,您可以保证即使宇宙中的所有玩家的口袋里都有99999999999g,这些商品的价值也一样。这样可以保证通胀率为0%。黑客可能会哭泣,但商品价格永远不会改变。 为什么《魔兽世界》 /《暗黑破坏神III》没有使用该模型?他们将凭借10%的抢钱技巧成为亿万富翁。 顺便说一句:我之前关于经济溢出的问题从未得到回答,可能那个站点已经死了。/economics/14609/understanding-inflation-in-a-video-game

3
团队如何防止覆盖源文件中的工作?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 4年前关闭。 在我看来,有一种可能性,例如由多个人同时处理游戏引擎时,如何防止覆盖? 假设开发者一在工作,Audio.cpp而开发者二也在工作Audio.cpp,这在大型团队中通常如何进行管理以应对覆盖?(换句话说,要阻止开发人员2打开文件,直到开发人员1完成)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

6
为了避免侵犯版权,足球比赛的发明名称必须如何“伪造”?
我知道,除非权利持有人(球员,球队等)给予授权(通常非常昂贵),否则不能在视频游戏中使用真实的球员名称。 正如这里和这里所解释的。 此处讨论了可能的来源,可以用来确定您是否侵犯了任何版权问题,但是并没有对我的问题做出任何具体说明(至少据我所知,鉴于我的理解力很差,专业知识)。 我的问题很简单:是否有任何规则可以确定从真实名称到虚拟名称(或假名称)的差异(在字符,声音,长度,语音特征等方面)假? 例如,如果我创建了一个足球电子游戏,其中有一个具有克里斯蒂亚诺·罗纳尔多(Cristiano Ronaldo)的特征(在特征,统计等方面,而不是在外观上)的强大进攻型中场球员,该如何称呼该球员以避免侵犯版权? 克里斯蒂安·罗纳德?克里斯托·罗马尔迪(Cristo Romaldi)?克里斯蒂安诺·罗纳尔多(Christiano Ronnaldo)? 有一个著名的ISS PRO(足球游戏)发行版使用了虚假名称-这是列表-与真实名称非常相似。 是否有特定的规则/法律规定哪些是好的,哪些不是?
26 copyright 


2
如何产生闪电效果?
有生成雷电的算法吗? 我想要一种算法,该算法生成指定螺栓将在何处着陆的线段或点对象的列表。该方法将需要一个起点参数以及一个端点。螺栓应具有随机的分支,并以随机的间隔曲折弯曲。结果将是随机的闪电效果,看起来像这样 (来源:wikimedia.org) 如果有人知道可以使用的算法,将不胜感激!

3
轮廓物体效果
如何获得类似于《英雄联盟》或《暗黑破坏神III》中的轮廓效果? 使用着色器完成吗?怎么样? 我希望答案不限于任何特定的引擎,而是可以适应我正在使用的任何引擎的答案。

1
Freeglut vs SDL vs GLFW
我需要将我的游戏项目从Android(用C,OpenGL ES 2.0编写,感谢NDK)移植到Windows和Linux平台。当然,我将需要重写一些依赖于平台的代码,但是现在我想知道哪个库可以创建OpenGL和使用输入句柄。 迅速搜寻一下,即可获得3名候选人: 1)Freeglut-重写并免费提供良好的旧GLUT。 2)SDL-最广为人知的一个库,用于许多游戏中。 3)GLFW-一种新的但简单实用的功能。 我对PC的开发还很陌生,并且看不到任何明显的差异。您能帮我选择哪一个吗?我显然只需要核心鼠标/键盘输入和OpenGL上下文的创建,我也将使用GLEW轻松实现现代OpenGL。
26 opengl  windows  linux 


9
有没有一种工具可以从1000个PNG中制作一个Spritesheet?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 4年前关闭。 我的图形设计师在单独的PNG文件中制作了图形。是否有一个巧妙的工具/脚本将它们混成一张Spritesheet? 我可能自己也可以编写一些代码,但是为什么要重新发明轮子呢:)

4
游戏开发的版本控制-我应该何时分支?
我最近开始在我的项目中使用版本控制(即使我一个人在工作)。我发现它提供了一种很好的方式来保留整个开发过程的历史记录(带有问题跟踪),并且使我能够一路保留项目的备份。 当我慢慢发现使用版本控制的功能和优点时,我陷入了分支的念头。我什么时候应该做? 是我每次去开发一个新功能,还是每隔一段时间才达到某个里程碑? 显然,当单独工作时,分支是没有用的,但是我宁愿现在养成良好的习惯并习惯它。 当我阅读Mike McShaffry撰写的《Game Coding Complete》一书时(这是一本很棒的书),当作者建议保留三个分支时,我完全迷失了方向,大致如下: 主要:定期进行更改的主要开发部门。 黄金:保留最后一个里程碑的黄金分支。 研究部:用于测试可能严重影响Main分支的东西(修改游戏引擎的重要组件等)的分支。 那应该是这样吗?与大型开发人员团队一起在游戏开发领域中如何真正发挥作用? 基本上:什么时候通常会在游戏开发中分支(并合并)?

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.