地图系统和道具系统,我们使用数据结构来解决。战斗系统则套用之前开发的游戏《樱桃》,剩下的存储系统,我们用文件管理功能和JSON。
先搞定地图系统,一个好的地图能节约你的时间,不管是在游戏里还是现实中。冒险探索类型的游戏想要满足玩家的需求,地图系统是必须的。
从APRG,逻辑游戏,射击游戏,几乎都提供地图。每当你要探索未知地区时,你都需要一个好地图,这样你才能做好计划安排。
电子游戏中的地图有很多种,从充满细节的真实地图到基本图形的地图。我们开发的游戏类型是类银河恶魔城的游戏。它们提供两种地图:驻留在HUD中的小地图,或者您也可以访问完整的地图,在里面显示所有可用的区域,方便计划旅程。
我们在设计地图时,要专注于可读性、清晰性和信息性。因为,地图是一个以探索为中心的游戏中频繁使用的东西,它必须是清晰明了的,这样玩家才不会感到困惑。
举个例子《空洞骑士》的地图。 这是一张复杂而美观的地图,它的特点是可以在探索时添加备注,以标记感兴趣的地方,如BOSS战、NPC、商店、存档点等等。
而且,你可以从一个地图制作者那里购买地图,也可以边旅行边探索世界。这为地图的存在提供了一个理由,它增加了玩家的游戏沉浸感。
无论地图是多么的详细美观,背后总是有一个数据结构来互连的。今天,我们将使用DS Grid,来创建一个基本的地图系统。
DS Grid是一个二维数组,如图
我们可以想像成一个桌子,有XY轴,里面的小格子,可以用XY值来定位,X是列,Y是行,也就是X列Y行。
与普通数组相比,这种数据结构的优点是可以按值执行相当快速的搜索,调整网格的大小,对其进行排序,移动,还能对网格的特定区域进行操作。
创建一个网格的代如下
var my_grid=ds_grid_create(width,height);
创建后,获取里面的元素用ds_grid_get,或者用井号#,当然X列Y行是必须要指定好的。
var val=ds_grid_get(my_grid,x,y);
或者
var val=my_grid[# x,y];//x前面有空格
这两个方法都可以用。
最后,你可以在网格里给定一个区域,用于搜索数据。代码如下
var row=ds_grid_value_x(my_grid,reg_x0,reg_y0,reg_x1,reg_y1,my_val); var col=ds_grid_value_y(my_grid,reg_x0,reg_y0,reg_x1,reg_y1,my_val);
例如,在如下红色区域搜索
代码可以写成如下
var row=ds_grid_value_x(my_grid,2,1,5,4,my_val); var col=ds_grid_value_y(my_grid,2,1,5,4,my_val);
左上角开始点(2,1),结束点为(5,4)。
现在我们开始制作属于自己的地图系统,并让它显示在小地图和大地图上。
暂无关于此日志的评论。