- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 Libtcod 和 Python 构建一个回合制策略游戏。游戏 map 具有可变地形,每个方 block 可以是 5 种类型中的一种:
每种类型都有自己的移动成本,例如,穿过平原比穿过森林需要更少的“移动点”。我想显示一个单位在给定移动范围/起始移动点后可以移动到的所有方 block 。
Libtcod 具有为 A* 和 Dijtskra 构建的寻路功能,并且在不考虑地形的情况下显示给定范围内的所有方 block 是微不足道的。
但是,我不知道如何在不必编写自己的寻路算法的情况下实现地形成本。查看文档我知道它与以下内容有关:
def path_func(xFrom,yFrom,xTo,yTo,userData) : ...
path_new_using_function(宽度,高度,path_func,user_data=0,diagonalCost=1.41)
dijkstra_new_using_function(width, height, path_func, user_data=0, diagonalCost=1.41)
但我不知道自定义函数应该做什么。根据文档,它应该
...return the walk cost from coordinates xFrom,yFrom to coordinates xTo,yTo. The cost must be > 0.0f if the cell xTo,yTo is walkable. It must be equal to 0.0f if it's not.
但是,这不是 dijtskra 算法的出发点吗?也就是说,该算法应该考虑每个瓦片的可变成本,然后相应地构建路径。
map 本身已经应用了地形和移动成本,我只需要一种方法将这些数据与寻路联系起来。
最佳答案
我自己实现了用于美学步行路径生成的 A* 算法;根据 A*,考虑到增加的步数,其中包括仅在可能时才放置的桥:
https://github.com/lillian-lemmer/sshrpg/blob/master/plotbrush/mapgen.py#L622
如您所见,您需要做的就是操纵 A* 算法来增加 map 上特定类型/属性的图 block /点的暂定分数(开始成本)。
如果您查看第 660 行,我将水的 tentative_g_score
(从开始开始的成本)增加了 8,所以这就像说“如果备选方案是走 8~ 步就可以建一座桥”周围。”在您的 A* 算法中包含切片数据,而不仅仅是笛卡尔坐标,是根据 map 的属性对算法进行调整的好方法。
关于Python Libtcod : How to do pathfinding with variable move cost terrain?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30408098/
目前我正在开发一个小项目,只是为了一点乐趣。它是一个使用 OpenGL 的 C++、WinAPI 应用程序。 我希望它能变成一款在六边形网格上玩的 RTS 游戏,当我完成基本的游戏引擎时,我计划进一步
我想实现一个 3D 赛车游戏,我需要近似地形上任意点的坡度的大小和方向。 地形数据格式: - heights[ ][ ]: 2D 浮点数组(以米为单位表示高度) - unit: (i, j) - (i
我在我的 gwt 项目中使用 cesium,我在地形中使用 cesium-terrain-server。 (不是 cesium-gwt ,用 jsni 开发我自己的代码)我的问题:我在地形上创建图形(
我最近正在探索和研究 Sebastian Lague 的 Procedural Landmass Generation 的部分内容系列。绝对优秀的系列,我会推荐给任何想要了解更多关于 Unity 和
我可以使用 2D Perlin 噪声函数来生成高度值,但我不明白为什么要使用 3D Perlin 噪声函数。在 Notch's blog ,他提到在 Minecraft 上使用 3D Perlin 噪
我正在尝试实现我找到的一些源代码 online使用柏林噪声生成高度图。我已经成功地使用 Noise3 函数获取了高度图,其中第三个坐标是随机“种子”,以允许随机高度图。 我的问题是生成的地形相当沉闷
问题:我想使用具有自己样式的 google maps v3 地形图作为自己的 mapType。 我从这段代码开始: var mapOptions = { scrollwheel: false,
我在 Three.js 中开发了一个带有纹理散布的地形生成系统,但我无法对其应用法线贴图。我该怎么办?此代码目前功能齐全。 我查看了一些 WebGL 着色和法线贴图的教程,但找不到适合我的代码的教程。
我正在使用带有 VBO 和索引等的现代 OpenGL。 首先我从高度图加载地形,然后我把它分成 block (在我的例子中是 128x128)我将所有顶点加载到 VBO(对于每个地形 block )然
我有一个程序生成的 Terrain,它基于 Unity 的地形系统。 现在我想要一张来自Terrain 的Map,不是迷你 map 而是完整 map ,保存为2D Texture。 首先我想到了一个R
你好我可以同时将水变暗并更改为样式化 map ,以便重置其他值。我想要的是一张像 MapTypeId.TERRAIN 这样的绿色景观和深色水域的 map 。我可以设法让水变暗,现在也想要像 MapTy
我尝试使用以下代码将树木添加到我的地形中: // Create Trees for (int x = 0; x (); TreeInstance treeTemp =
我想使用 Mapbox 的 terrain-rgb 瓦片作为 Mapbox GL map 中的图层。我看到的操作 terrain-rgb 数据的示例使用 L.tileLayer 为新层构建图 bloc
我非常喜欢 Google map 的 Terrain map 类型。 但是 map 的默认背景不是绿色,我怎样才能把颜色变成黄色呢? 最佳答案 Terrain 没有黄色版本 map type .您可以
我正在使用 Libtcod 和 Python 构建一个回合制策略游戏。游戏 map 具有可变地形,每个方 block 可以是 5 种类型中的一种: 平原 - 移动成本 1 森林 - 成本 2 河流 -
我有一条随时间移动的路径。我使用 Cesium.sampleTerrain 获取位置高度并将它们覆盖在地形上。问题是,即使所有点都在地形上,连接 2 个点的线有时也会在地形下方。我怎样才能在地形上也覆
我目前的理解是,当用户将鼠标悬停在 map 按钮 (MapTypeId.ROADMAP) 上时,google maps api3 MapTypeId.TERRAIN 显示为一个复选框选项。我想把它分成
我正在尝试为我的地形映射的第一部分绘制一个三角形网格,但是有一个小错误,我不确定我哪里出错了。有人可以指出我的错误或解释如何正确构建此网格。 为了澄清,请查看网格的右侧,这不应该发生。 顶点: vec
使用这个 stackoverflow question ,我尝试将一些自定义样式应用于 Android map View 。 造型基本上就是把水弄黑 mapstyle_json.js: [ {
所以我创建了一些自定义 JSON 来使海洋呈现更饱和的蓝色,但现在似乎无法将 map 默认设置为 TERRAIN View ,它只是转到标准 ROADMAP View ,似乎无法正常工作为什么会这样,
我是一名优秀的程序员,十分优秀!