请教关于游戏地图生成的问题

2017-11-27 17:17:37 +08:00
 LucasW
使用 cocos 引擎。
需要大概 9000 * 9000 像素宽高的地图,同时需要寻路,地图内大概有 500+ 动态节点。
请教各位这样的地图该怎么设计,我们测试了在虚拟物理格子上根据玩家的移动做九宫格拼接的方式,没有完全解决问题。
各位大佬有没有更成熟的方法推荐的。
4358 次点击
所在节点    游戏开发
15 条回复
moyaka
2017-11-27 17:40:13 +08:00
最近尝试了一下 Mapbox Unity。cocos 就不知道了。
noli
2017-11-27 18:04:20 +08:00
放弃格子, 不使用静态切分地图的数据结构,使用例如 R 树 之类的空间数据结构。
寻路也不使用格子,而是每个地图制作拓扑点。
linus3389
2017-11-27 18:15:29 +08:00
LucasW
2017-11-27 18:16:35 +08:00
@noli 大佬,没有听懂啊,能简单点解释下吗
LucasW
2017-11-27 18:17:30 +08:00
@linus3389 主要纠结在大地图性能问题,寻路算法很成熟
noli
2017-11-27 18:51:32 +08:00
@LucasW

哪里没听懂? 提供几个关键字,你自己搜集一下资料做对比吧。
R 树,KD 树,四叉(八叉)树。

我倒是好奇,你的寻路怎么做,格子有多大,9000 像素 500+ 单位寻路居然性能不成问题?
moyaka
2017-11-27 18:53:34 +08:00
@LucasW 他意思大概是地图用矢量的不要用栅格的,类比即时渲染和 CG。
cinextio
2017-11-27 19:02:59 +08:00
Tiled Map?
afpro
2017-11-27 22:54:33 +08:00
大型地图寻路还是 navmesh 吧 动态物体可以考虑用 local avoidance 会快很多
LucasW
2017-11-28 10:13:17 +08:00
@cinextio Tiled 渲染是即时的吗?寻路的话 Tiled 数据有没有方案?
LucasW
2017-11-28 10:15:19 +08:00
@noli 不是以像素作为寻路点的,不然还了得。寻路格子大概 100 * 100 像素.
koalli
2017-11-28 13:51:57 +08:00
@LucasW 这个性能问题具体是指什么?
LucasW
2017-11-28 14:02:50 +08:00
@koalli 我现在遇到的问题是地图增大,节点会增多,帧率下降
koalli
2017-11-28 15:37:12 +08:00
@LucasW 有几点比较常见的优化点你可以参考一下:
1、看看 DrawCalls,DrawCalls 过高的话你得降低同时渲染的节点数,Unity 可以用 Camera 来剔除 GameObject ( creator 好像也支持了),我用 cocos2dx 的时候是把屏幕外的节点尽可能的设置成不可见,如果剔除后 DrawCalls 还是很高,可能得减少同时显示的节点了
2、批量渲染,我记得 cocos2dx 从 3.3 开始应该是自动批量渲染了,但是好像是有个什么限制
3、上面也有哥们吐槽了性能居然不成问题,那应该数据结构有做过优化了,那么你可以优化一下节点的使用,比如类似 Unity 对象池(Object Pool)之类的方法来管理节点
cinextio
2017-11-28 17:42:46 +08:00
Tiled map 你可以通过代码改变某个方格的贴图,自动寻路就是一套算法。你自己查查,我以前(两三年,3.x 的版本)用时,cocos2dx 对 tiled map 大小支持有限制,现在应该好一些了吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/409972

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX