Articles of search

App Store优化 – 程序包名称

我有一个游戏商店,并试图让它在search引擎上的地方。 在我看来,包名应该和游戏标题相似。 它在search中的作用是什么? 我也做了大量的关键词研究,并在标题和描述中join了相关的关键词。 Hovewer,当我search时,我仍然看不到我的游戏在一个好的地方。 还有什么其他的事情可以让我的游戏在search结果中处于更好的位置? 非常感谢您的回答和建议。

A *实现中断?

我尝试实现维基百科的 A *寻路algorithm的版本 ,但是当我在Unity中运行时,脚本应用到的对象什么都不做,Unity最终占用了我CPU的15%。 我觉得这是一个堆栈溢出错误,但我不知道它在哪里崩溃。 这里是整个脚本: public class Walker : MonoBehaviour { public int x { get; set; } public int y { get; set; } public MapView core { get; set; } public Node goal { get; set; } public float DistanceBetween(Node a, Node b) { return Mathf.Abs(ax – bx) + Mathf.Abs(ay – by); […]

我可以用什么来在游戏中search瓷砖

我正在创建一个类似于扫雷的基于磁贴的游戏。 当用户点击一个瓷砖,而不是一个地雷或数字空间,我需要search和暴露相邻的瓷砖是空的,并停止时,它击中一个数字或板的边缘。 我现在正在工作,这样它将清除所点击的瓷砖的行,并停在编号的瓷砖或电路板的边缘。 我所拥有的将会很快变得丑陋,我相信有这样一个更简单的方法。 是否有一个searchalgorithm,我可以使用它会发现所有相邻的瓷砖,玩家点击只停止一旦它击中板的边缘或击中一个编号瓷砖?

求职algorithm

我的问题对我来说似乎很简单,但是我不能把它分解成能够将它编入我的游戏的基本要素。 首先不同的职业需要不同的技能,这些技能都包含在class里面的Person 。 我有一个world map ,我可以要求所有空的建筑物,从而find所有可用的工作。 有了这些信息,我想从一些权重来计算,玩家可以在每个职业上修改填补某个职位的重要性。 所以我目前的做法是这样的伪代码: Job findJob(wm : WorldMap) { Queue priority <- empty; for each building { queue.add(skill * need); } return prority.max(); } 这听起来愚蠢无效,或者你看到任何你认为我应该知道的特殊情况吗?

重叠检测,最近的邻居

我试图得到类似于最近邻居问题的东西,除了我只想要半径重叠的邻居,以及所有这些。 在解释我认为我需要的之前,我会解释我的问题。 我有实体由体素制成,我想要在所有体素之间完全碰撞。 我只会在“this”实体的最大半径范围内对其他实体加上其速度幅度( 包括其他实体的半径)进行碰撞检查。 这本身就是另外一个问题,但我可以处理。 我现在需要的是填充这个“需要检查的碰撞列表”的方法。 取一组具有任意大小/半径的实体,将线/圆/球移出其半径; 给予其中一个领域,得到所有其他领域的重叠列表。 如果立方体的速度快得多,立方体也可以代替球体。 当然,我可以迭代所有的实体,但这将是n ^ 2次,我想有成千上万的实体。 我也许可以用计算着色器来强制它,但我想避免这种情况。 Sofar我一直在想有一个K树存储所有的实体位置,然后让每个实体在节点上做一个足迹作为一个步骤,在下一步,检查属于这个也有另一个足迹的节点实体。 那么我怎样才能以一种可以设置的方式制作四叉树,并且以一种不可怕的方式获取脚印呢? 还是有一个完全不同的更好的方法? 编辑: 发现这篇文章,但它相当于我的头

Z-阶曲线 – 如何查询所有最近的邻居?

TLDR:如何以最小的努力查询所有最近的邻居? (遍历一个更大的邻接区域,并过滤掉不是直接邻居的元素?) 假设有以下情况: 在一维数组(OpenCL缓冲区)中存储一组3D点的离散网格位置, 您已经为每个点指定了Z-index / Morton代码 您根据Z索引对数组进行sorting 您将生成一个查找数组,其中包含第一个数组中的相同-Z-索引值粒子的连续区域的开始和结束索引 接下来假设你有一个OpenCL内核,它为每个单独的粒子执行。 在这个内核中,您需要遍历当前处理的粒子(对于2D情况可能是9个邻居,对于3D可能是27个)的所有最近的相邻粒子 (不仅是网格单元) (包括当前处理的粒子本身)。 所有相邻的粒子(对于处理的粒子)被存储在最近的相邻网格单元中。 请注意,一个单元格中的粒子数量可能很高(例如,查看下面图像的右下角单元格)。 问题:如何遍历所有相邻的粒子(理想情况下是连续的)? 如果这不能通过Z阶曲线解决,我可以使用其他的方法? 示例伪代码: __kernel void process_stuff(…) { foreach ( neighboring_particles ) { // <- how to achieve this efficiently? // perform computation } } 图像传说: 红线 = Z阶曲线 蓝点 =当前处理的粒子 黄点 =另一个粒子 绿色区域 =当前的粒子邻域 – 我需要迭代的一组粒子

为Pacman实现一个AI控制器

我目前正在实施一个AI控制器类,用于确定ms.pacman应该采取的措施来收集药丸和避免鬼魂。 为了确定在游戏的每个状态(configuration)中哪个是最好的移动,我使用广度优先search在每个状态下search决策树。 我已经让控制器工作(至less在某种程度上)深度优先search,所以我试图在这里应用相同的逻辑。 DFS的想法是从一个“根”或驱动函数开始,它将遍历可能的移动ms。 pacman可以在决策树中的每个状态下做出调用,然后调用一个recursion函数来search树,find最高值(例如最高分数)的terminal状态(所有药丸被吃掉的点)。 该值是从recursion函数返回并存储在根函数中的variables中。 根函数返回树中具有最高值的移动(超出可能的移动)。 由于BFS不是recursion的,所以我认为不需要像这样的驱动函数,所以我决定把它放在一个函数中。 基于DFS,我使用一个队列来实现BFS,该队列存储当前状态的所有相邻状态,并按FIFO顺序访问每个状态。 一旦达到所有药丸已被吃掉的状态,则应该返回当前的移动。 我不确定这是否是最好的方法,但是它是我能想出来的。 问题是这个函数的代码需要很长的时间才能运行,而ms.Pacman会立即向左移动并跑到墙上。 我假设这是因为terminal状态永远不会被发现。 这里是函数(在Java中): public MOVE bfs(Game state){ EnumMap<GHOST,MOVE> ghostMove = new EnumMap<>(GHOST.class); MOVE bestMove = MOVE.NEUTRAL; Queue<Game> q = new LinkedList<>(); q.add(state.copy()); while(!q.isEmpty()){ Game current = q.peek(); q.remove(); for (MOVE move : current.getPossibleMoves (current.getPacmanCurrentNodeIndex())) { Game neighbor = state.copy(); neighbor.advanceGame(move, ghostMove); q.add(neighbor); if ((current.getNumberOfActivePills() […]

扫描二维瓷砖地图和检测区域?

我可以访问地图上的所有点/瓦片,最右上角的点是(0,0)。 最简单的遍历地图的方法是使用for循环,一个嵌套在另一个中以遍历x轴,然后是y(遍历行)。 但要解决这个问题,我可能需要以更智能的方式扫描地图。 重要的是要注意的是,我只能一次检查一个图块,看看它是什么types。 所以t.getCoordinates()会返回类似于(32,54)的内容,而t.senseTile()会返回:WALL,ROAD,OFF_MAP等 我想扫描整个地图,并将其划分为多个地区。 这些地区将有两种:“开放”和“path”。 对于开放区域,我只想填充整个区域,直到它开始触及边界,墙壁/障碍物等,并在适当的时候停止填充。 一个开放空间的规则是玩家应该能够从一个边缘到另一个边缘采取任何path,角度等,而不会碰到一些墙壁/障碍物。 对于path,有一定数量的区域是有限的瓦片,然后一个新的区域开始(见lightBlue和灰色)。 此外,path应该有入口/存在也存储,并连接到哪些地区。 例如,像这样扫描地图(见图),应该生成这些区域。 不知道使用哪个数据结构来连接它们,但是可能是一个树形/graphics如下所示: Gray | LightBlue | Pink | Yellow | \ Red Black 编辑:我认为Dijkstra的searchalgorithm可能是一个很好的起点,虽然我从来没有实现过。 这只能解决问题的一小部分。 它仍然不能解决如何检测区域。 另外,恐怕迪杰斯特拉在时间/performance方面的成本太高(两者都非常重要)。

高效的雾战能见度search

我看到的每一场使用战争迷雾的游戏都倾向于AI完全忽略了战争迷雾。 我开始明白为什么。 我正在做一个RTS游戏,有很多单元在移动。 所有的单位都在网格上,我使用预定义的search模式扫描单元周围的网格点以find最近的目标。 到现在为止还挺好。 不过,我还有另一个单位types的工作,就是在地图上跑来跑去,从被摧毁的单位收集废品。 与战斗单位一样,我希望它环顾四周,select最接近的废料。 然而,与战斗单位不同的是,这个search并不局限于它自己的视野半径。 它应该能够利用玩家的整个战争迷雾。 如果另一个单位或建筑物发现了一些废料,应该可以让该单位去拿。 在扫描单元的视觉半径很简单的情况下,我很难想出一个有效的方法来确定在这个更大的情况下扫描哪个网格点。 建筑物内的任何网格点都是相当静态的,但其他单位看到的网格点会随着它们不断移动而改变每一帧。 我看到的两个选项是logging网格点本身的每个播放器的可见性标志,然后(以某种方式)更新每帧的标志,或者只是循环遍历所有单位和建筑物,并执行单个search来建立一个可见的废料列表。 如果没有重新扫描整个地图,第一个将很难保持更新,如果在一个小区域有很多单位或建筑物,第二个将是非常多余的。 考虑到这个观点在不断变化,我还有另外一种方法可以用来在玩家的整个战争视野中建立一个可见的废品清单吗?

在体素网格(3D数组)中查找中断

我在Unity的dynamic体素引擎工作(像空间工程师),玩家可以从体素创建对象,推动它们,损坏和分裂到其他对象。 我将所有数据存储在3D数组中,1个平均体素,0表示空节点。 所以我寻找解决scheme来打破对象(数组)。 例如,当我删除足够的体素对象应该分成两个。 00000000 00000 0000 01110110 ====> 01110 0110 01110110 01110 0110 00000000 00000 0000 在2D例子中,它应该像这样分割。 我尝试使用BFSsearch,但速度不够快;(对于5x5x5这样的小网格,当我创建5x5x50网格时,它在断点数组之前几秒钟就可以工作。 我的algorithm:1)首先find空节点2)当你find空节点从该节点启动BFS时,收集所有非空节点,当你找不到空节点完成。 如果存在中断,它将只收集数组的一部分,以便find中断,如果没有中断,则返回整个数组。 问题是速度问题; /如何使速度更快?