鸿 网 互 联 www.68idc.cn

游戏地图无缝链接

来源:互联网 作者:佚名 时间:2015-08-10 07:54
前段时间在开发2D游戏地图,经过探索,实现了地图的无缝链接,今天抽空把基本思路记录下来,供 分享和 交流。 构建雄伟壮观的游戏场景,总少不了开阔的游戏地图做支撑。然而,抓襟见肘的内存资源总让游戏开发者苦恼不已。 一般处理以上问题的方法是:内存中

前段时间在开发2D游戏地图,经过探索,实现了地图的无缝链接,今天抽空把基本思路记录下来,供分享和交流。

构建雄伟壮观的游戏场景,总少不了开阔的游戏地图做支撑。然而,抓襟见肘的内存资源总让游戏开发者苦恼不已。

一般处理以上问题的方法是:内存中只加载大地图的一部分,即当前区域地图,在玩家移动到地图边界后再切换到新的区域地图。通过这种方式,地图可以做得很大,但缺点是切换地图的加载过程需要玩家等待,体验感较差。

地图无缝链接的基本原理是通过缓冲加载,使玩家感觉不到地图的加载过程,并控制好内存中保留的地图大小,从而实现地图无限延伸的效果。

为实现以上方案,我们把一张大的地图分割为若干个同等大小的小地图,这些小地图是连续的,且称之为“区(zone)”,把玩家所在的区定义为center zone。

玩家登录后首先加载玩家所在的center zone,玩家移动的过程一直检测屏幕与center zone所有边界的距离,当发现屏幕移动到与某一边界的距离在设定的范围内时,开始加载这条边界所对应的zone,如下图。

 

上图是玩家向东北方向移动(8个方向操作的情况),这时检测到三个方向的边界都接近了,所以需要同时加载这三个zone,而加载的过程中,玩家还有一段距离的活动空间,只要玩家走完这段距离之前加载完成,玩家则不会感觉到地图的加载情况。玩家走进新的zone之后,必须把该zone设为center zone,然后依照同样的方法检测和加载新的zone。

当然,别忘了还有关键的一步:释放掉已经不需要的zone!依然以检测边界的方法,当center zone的某一边界已经离玩家屏幕超过设定的距离时,果断将其remove。

 

地图的无缝连接关键在于内存的控制,稍有不慎则可能造成内存溢出,除了控制好以上的步骤还需要衡量zone的规模和资源、数据量。使内存达到可持续地利用,对付再大的地图也只是游戏包和内容的问题了。

网友评论
<