游戏服务器之地图配置

本文详细介绍了游戏服务器中关于地图的配置,包括地图初始化、阻挡配置(安全与普通区域)、怪物地图配置等。地图阻挡配置涉及阻挡编辑数据的加载和特定文件格式。怪物配置则包含普通地图与副本地图的怪物生成信息,如出生位置、重生间隔和移动路径等。
摘要由CSDN通过智能技术生成

本文的地图配置是针对游戏服务器中的场景和副本用到的地图相关配置。

设计上:

地图配置类型有

1)地图进入需求配置
2)地图阻挡配置(地图编辑器编辑 :地图阻挡 。 安全区域和普通区域)
3)地图区域配置(跳转点、地图特殊区域类型、复活区域、特殊怪出现区域)
4)副本地图怪物配置(npc出生信息)
5)普通地图的怪物配置(npc出生信息)
6)功能性npc配置(功能型npc出生信息)


1、地图配置初始化

场景对象继承场地地图基类,初始化时会读取所有的场景地图配置。

地图配置初始化如下:

bool scene_map_base::init(nXMLParser& nxml)

{
	if(!map_base::init(nxml))
	{
		return false;
	}
	//1)地图进入需求配置
	if(!nxml.getNodeAttrStr("xmlname", xmlFileName, MAX_NAME_LEN)//地图配置文件名字
	            || !nxml.getNodeAttrInt("checklevel", &this->enter_level)//进入等级
	            || !nxml.getNodeAttrInt("needmoney", &this->enter_money))//进入金钱
	{
		assert(false && "加载地图大小失败.");
		return false;
	}

        g_log->debug("name:%s,level:%u,money:%u",this->name.c_str(), this->enter_level, this->enter_money);
	//2)地图阻挡(地图编辑器编辑 :地图阻挡 。 安全区域和普通区域)
	if(!load_map_block())
	{
		assert(false && "加载阻挡失败.");
		return false;
	}
	
	//3)地图区域配置文件(跳转点、地图区域类型、复活区域、特殊怪出现区域)
	if(!loadMapConfig())
	{
		assert(false && "加载地图配置文件失败.");
		return false;
	}
	
	if(((maptype & SceneMapType_Demon) || (maptype & SceneMapType_Castle) || (maptype & SceneMapType_Fort) 
	|| (maptype & SceneMapType_Activity_1)))
	{
		//4)副本地图怪物配置文件(npc出生信息)
		if (!loadMapSummonNpcConfig())
		{
			assert(false && "加载副本地图NPC配置文件失败.");
			return false;
		}
		debug_log("map id = %u, maptype = %u", this->id, this->maptype);
	}
	else 
	{
		//5)普通地图的怪物配置文件(npc出生信息)
		if(!loadMapMonsterConfig())//加载怪物配置文件
		{
			assert(false && "加载怪物配置文件失败.");
			return false;
		}
	}
	//6)功能性npc配置文件(功能型npc出生信息)
	if(!loadFuncNpcConfig())
	{
	    assert(false && "加载地图配置文件失败.");
	    return false;
	}
        
	return true;
}



2、地图阻挡配置

地图分为安全区域(不可战斗区域)和普通区域(可战斗区域)。

这两个区域都是含有阻挡和非阻挡的格子。加载地图阻挡时会读取地图编辑器生成的配置文件数据到内存的地图数据数组。


阻挡配置文件数据包含:

地图宽高、地图id、名字

普通区域阻挡和可行走区域

安全区域(阻挡和可行走区域)

(1)加载阻挡编辑数据

bool scene_map_base::load_map_block()
{
	char tempid[32];
	nGraphAlgo::int2str(this->id,tempid);
	
	std::string temp_file = ""
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值