游戏开发

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

2
文字游戏-董事会实施?
我正在使用libgdx开发适用于android的Boggle类型游戏。向用户显示一个4x4的字母网格,用户必须通过在其字母上拖动手指来找到单词。 我不喜欢笨拙,我希望用过的字母消失。其余字母将掉落(固定到板子的底部,屏幕方向固定),然后从顶部重新装满板子。用户可以旋转电路板,以通过战略性的单词选择来尝试在更好的位置使用难于使用的字母。 一个例子: d g a o u o r T h v R I d G n a 如果我选择单词GRIT,则这些字母将消失,其余字母将掉下来: d u g a h o r o d v n a 然后换成新字母 d w x y u g a z h o r o d v n a 我一直在努力弄清楚如何代表木板和瓷砖。 …
12 android  libgdx 

4
MMO具有最高限额的原因是什么?
在许多MMO玩家中,角色的进步是人为限制的,例如60级或90级或100级或其他。为什么MMO首先拥有这些级别上限?为什么不通过数学设计的水准测量系统让角色继续到任意水平,使水准的体验有趣而永无止境? 回答该问题可能有助于我们了解该功能背后的原因,并决定是否以及如何在MMO中​​实施此功能。

4
如何在字符网格中找到有效的单词?
我正在创建一个类似于Tetris的游戏,但有两个主要区别:屏幕已经开始填充图块(例如在Nintendo DS和PC的Puzzle Quest中),每个图块中都有一个字母。玩家的目标是通过与它们形成有效的单词来消除它们。单词是通过将字母以除斜线以外的任何方向彼此相邻而形成的。 玩家可以将整行瓷砖向左或向右移动,也可以将整列瓷砖向上或向下移动,以获得所需的空间(如果行/列的移动超出了棋盘的限制,则超过限制的字母将“循环”,出现在行/列的另一端)。玩家采取行动后,游戏应检查整个棋盘以寻找有效的单词,并从棋盘中删除构成这些单词的字母。被删除的字母上方的字母将落在被删除的字母的位置,并且新字母将从屏幕顶部掉落,直到板子再次装满为止。 我已经写了一个线性算法,给定一个字符序列,可以确定它是否是一个有效的英语单词。我遇到的问题是:如何检查板上的有效单词?暴力是唯一的方法吗?测试电路板上所有可能的组合以查看它们是否有效,即使对于小型(5x5)的电路板也非常慢。任何帮助将不胜感激,谢谢!

3
纯函数式编程和游戏状态
在功能编程语言中,是否存在一种通用的技术来处理状态(通常)?每种(功能)编程语言都有解决全局状态的解决方案,但我想尽可能避免这种情况。 以纯功能方式的所有状态都是功能参数。因此,我需要将整个游戏状态(包含世界,玩家,位置,得分,资产,敌人等的巨大哈希图)作为要在给定输入或触发器上操纵世界的所有函数的参数。函数本身从游戏状态Blob中提取相关信息,对其进行处理,操纵游戏状态并返回游戏状态。但这似乎是解决这个问题的穷人解决方案。如果我将整个游戏状态放到所有函数中,那么与全局变量或命令式方法相比,对我没有任何好处。 我可以只将相关信息放入函数中,然后返回将为给定输入执行的操作。一个功能将所有动作应用于游戏状态。但是大多数功能都需要大量 “相关”信息。move()需要物体的位置,速度,碰撞图,所有敌人的位置,当前的健康状况……因此,这种方法似乎也不起作用。 所以我的问题是我该如何处理功能性编程语言中的大量状态-特别是对于游戏开发? 编辑:在Clojure中有一些用于构建游戏的游戏框架。部分解决此问题的方法是将游戏中的所有对象作为“实体”穿入并放入一个大袋子。一个吉甘特的主要功能是保持屏幕和实体和处理事件(:on-key-down,:on-init这个实体,...),然后运行主显示屏循环。但这不是我要寻找的干净解决方案。

2
使用实体ID系统有什么好处?
我目前正在阅读《编程游戏AI示例》一书。 该书提到为游戏中的每个实体分配唯一的ID号。通常,当实体A需要联系实体B时,A通过将B的ID号发送到EntityDatabase类来获取对B的引用。此类接收ID号并返回对实体的引用。 还可以从包含某些实体(主要游戏角色)的ID的文件中获取某些实体的ID号。 我的问题是:我为什么要这样做?为什么我不能直接使用引用?有时很难直接获得参考?使用ID系统是一种常见方法吗?是否有不使用ID的游戏? 我是游戏开发的新手。请说明使用实体ID系统的好处。优缺点。具体的例子会很棒。谢谢

6
运行APK时android性能不佳,在浏览器中无法正常运行
我已经使用Phaser引擎在HTML5中创建了一个小型游戏项目(尝试了1.1.5和1.1.6)。然后要将其移植到移动平台,请使用适用于Windows Phone 8,Android和iOS的Phonegap / Cordova。 在我的游戏中,大约有10个元素具有动画效果(从a点移动到b点并同时旋转一些)。在iOS和Windows Phone 8上,我没有遇到任何问题。 但是对于Android,性能是不可接受的。另一方面,如果我通过设备浏览器运行游戏,则游戏运行平稳,没有任何滞后。但是,已编译的APK会非常生涩,并且元素的移动速度非常缓慢且呈闪烁状态。 我已检查清单文件中的android硬件加速标志设置为“ true”。也尝试将其更改为false,但这并未反映出性能的任何变化。 我已经在三星S2设备上的Android 4.2上进行了检查,在性能上更好。但是在Asus Nexus Tab 7(运行Android 4.4)上,它非常生涩,而OS和Device都是最新的。还检查了另一台运行Android 4.3的设备(三星Galaxy Grand Duos),在该设备上的性能也根本不好。 在我的游戏中,尝试了两种WebGL / Canvas渲染(Phaser引擎使用Pixi.js,如果不支持WebGL,则会回退到2d canvas),但是没有任何变化。与easyljs类似。 如果还有其他人遇到类似的问题,并且可以建议采取任何方式获得本机般的性能。我检查了cocoonjs的示例,尽管它们看起来很平滑并且可以接受,但我不能这样做。

4
如何在LibGDX中渲染具有透明性的PNG?
我正在用LibGDX构建一个简单的井字游戏示例。我有简单的图像:十字,圆圈和木板,所有这些都是png使用GIMP在透明背景下创建的。 如何使它们呈现为Texture具有透明度? 我已经尝试使用GL10启用功能,但似乎无法正常工作。

1
如何用矩形块制作曲面?
对于类似Peggle的游戏,我要制作遵循曲线的块,如下所示: 然后,当球击中障碍物时,障碍物将消失。 我设法水平绘制了一些,但是在使它们遵循一条路径时遇到了麻烦: 我该怎么做呢?是否需要使用自定义顶点创建Box2D对象?

3
如何添加和减少凸多边形?
我有两个彼此重叠的 2D凸多边形。我正在寻找一种算法来减去和添加它们。结果必须是单个凹面多边形或(甚至更好)一组形成凹面结果的最大凸面多边形(例如三角形)。 (左:初始重叠的多边形。中:添加后得到的凹多边形。右:形成凹结果的一组凸多边形。出于性能原因,最好使凸多边形大于三角形。两个重叠的多边形将产生与左侧相同的图片,但重叠区域不属于所得多边形。) 我怎样才能做到这一点?
12 algorithm 

1
为什么剪辑空间始终被称为“均匀剪辑空间”?
到目前为止,几乎所有内容都使我注意到,“剪辑空间”一词的开头是“均质”一词。现在,我理解它的含义大致相同,但是我不明白为什么要明确说“同质剪辑空间”。剪辑空间何时不均匀,为什么我们需要区分?就此而言,我们称其为“均匀剪辑空间”到底意味着什么?相对于什么同质?顶点以什么方式“都一样”?
12 spaces 

2
什么是“距离场”,它们如何适用于碰撞检测?
当我遇到“距离场”时,我正在寻找一些有效的方法来检测具有静态和动态对象的场景中的碰撞。 我试图搜索并理解这个概念,但是我只能找到用非常复杂的语言撰写的论文。有人可以用简单的单词解释什么是距离场,以及如何将其用于碰撞检测?

1
是否有可以处理不同运动类型的寻路算法?
我正在为BattleTech桌游模拟器http://en.wikipedia.org/wiki/BattleTech开发一个机器人,它是回合制的。 木板分为六边形,每个都有不同的地形类型和标高。您驾驶一个在它们上方移动的机器人,以摧毁其他机器人。 我只知道Dijkstra和A *寻路算法,但是问题是有3种类型的运动:步行,奔跑和跳跃几个六角形(每个都有自己的规则)。走路和跑步几乎相同。 最佳路径可以是组合,也可以是每种运动类型。这是地图的示例http://megamek.info/sites/default/files/isometric_view.png 您是否知道用于这种复杂寻路的好算法,或者为每种运动类型组合A *结果的方法?

1
如何停止Substance的运行时纹理缓存?
如果您关闭缓存,一次修改一个公开的变量,频繁地对其进行修改,甚至只有在尝试对其进行2或3次修改之后,Substance Engine的过程纹理似乎就会非常快速地更新。 但是,我基本上希望相反。例如,单位有一个“血”变量,在受到伤害时会在身上产生不同的血液;还有一个“战役”变量,会产生划痕和凹痕,但在恢复时不会恢复原状。 因此,要强制不缓存变量,我必须将其设置为某个虚拟值,然后恢复为正常值,然后调用RebuildTexturesImmediately。 我该如何告诉Substance在运行时不要缓存变量,所以我可以更改一次并快速重新生成纹理?

3
2.5D游戏相机
我希望有人能像我5岁时向我解释这个问题,因为我一直在努力奋斗了几个小时,根本无法理解我在做什么错。 我Camera为我的2.5D游戏写了一个课程。目的是支持这样的世界和屏幕空间: 相机在右边是黑色的东西。该图像中+ Z轴朝上,-Z朝下。如您所见,世界空间和屏幕空间的左上角都有(0,0)。 我开始编写一些单元测试,以证明我的相机可以正常工作,而这正是事情开始变得奇怪的地方。我的测试在世界,视图和屏幕空间中绘制坐标。最终,我将使用图像比较来断言它们是正确的,但是现在我的测试仅显示结果。 渲染逻辑用于Camera.ViewMatrix将世界空间转换为视图空间,并将Camera.WorldPointToScreen世界空间转换为屏幕空间。 这是一个示例测试: [Fact] public void foo() { var camera = new Camera(new Viewport(0, 0, 250, 100)); DrawingVisual worldRender; DrawingVisual viewRender; DrawingVisual screenRender; this.Render(camera, out worldRender, out viewRender, out screenRender, new Vector3(30, 0, 0), new Vector3(30, 40, 0)); this.ShowRenders(camera, worldRender, viewRender, screenRender); } 这是我运行此测试时弹出的内容: 尽管我怀疑z轴正在进入屏幕而不是朝向查看器,但世界空间看起来还不错。 视图空间让我完全困惑。我期望摄影机位于(0,0)上方并朝场景中心看。相反,z轴似乎绕错了方向,并且相机位于我期望的相反角上! …
12 xna  matrix  projection 

3
默认情况下,如何设置应用程序在高性能GPU上运行?
如今,许多笔记本电脑都配备2个GPU-高性能的GPU和省电的GPU(功能不那么强大)。我在笔记本电脑上使用的大多数应用程序都与集成的(省电)GPU一起运行,但其中一些应用程序仍将通过高性能卡打开。我试图将要构建的应用程序默认配置为在高性能GPU上运行,但是我在任何地方都找不到有关该主题的任何信息。我希望有人能对此有所启发。我将使用NSIS安装程序分发应用程序,我想我必须将应用程序的路径添加到NVidia / ATI卡的应用程序列表中。该应用程序使用C#编程。另外,有人知道台式机的状况如何吗?如果一台PC有2个GPU,而我必须选择功能更强大的GPU,会发生什么? 米尔乔
12 c#  gpu 

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.