迷宫随机生成算法

迷宫生成算法是游戏中各种随机生成都可能用到的最基本的算法。下图展示了一个随机场景生成器的迷宫生成部分。

依次经过了6个步骤:生成迷宫=》调节占空比=》自动手绘效果=》平滑=》腐蚀=》移除死胡同.

首先生成迷宫,比较有名的是prim算法,可以生成主路扭曲型 和自然分岔型迷宫。

主路扭曲型迷宫一般分岔较少,有一条明显的主干道,适合于闯关游戏。

自然分岔型迷宫则分岔较多,没有明显的主路,比较适合于rpg类游戏。

prim算法生成的迷宫有一个特点,所有的路和墙都只有一个格子的宽度,通常不适合直接用于游戏中,需要做一系列的后期处理。

调节占空比:将墙和路随机拓宽 

结合寻路算法拓宽主路:

添加手绘效果:

添加房间及斜向移动:

 其它 迷宫生成算法

随机筑线法:先将整个地图初始化为路,然后随机筑一些线墙

 噪声阈值法:先生成平滑的噪声图,噪声值小于阈值的地方挖出路径。

 tsp、mst算法:利用巡回销售员算法 或最小路径树算法开挖路径。这是一个效果相当不错的算法,当然也可以使用只能直角拐弯的tsp、mst算法。

递归分割算法 

圆形迷宫:

 3d迷宫:

截图见下一篇文章

横版迷宫

迷宫算法在地形生成中的运用:

迷宫生成 :

//========================================================
//  @Date:     2016.05
//  @File:     Include/Render/Maze.h
//  @Brief:     Maze
//  @Author:     LouLei
//  @Email:  twopointfive@163.com
//  @Copyright (Crapell) - All Rights Reserved
//========================================================

#pragma once

#ifndef  __Maze__H__
#define  __Maze__H__

#include "Math/MathLib.h"
#include "Texture.h"
 
enum MazeMethod
{
	LoadFromFile_,
	//随机筑路法 persent=road密度
	RandRoad,
	//随机筑墙法 persent=wall密度
	RandWall,

	//!方案一:自然分岔型  类似prim 但没有保存回退链表
	//不出现明显的主路,分岔路比较多,更复杂,即玩家需要做选择的次数可能比较多。
	NatureSingleMaze,

	//筑墙法 横版过关  persent=wall密度
	Horizontal,

	//乱线筑墙法 
	Line,

	//prim算法:自然分岔型  
	//不出现明显的主路,分岔路比较多,更复杂,即玩家需要做选择的次数可能比较多。
	//width 奇数  入口在奇数边上 为四边封闭
	//width 偶数  入口在偶数边上 为四边开放
	//其它为四边半开半闭
	PrimNature,
	PrimNature2,

	//prim算法:主路扭曲型
	//有一条明显的主路,即一条特别长、贯穿大部分区域的路线,适合rpg
	PrimTrunk,

	//prim算法:自然分岔型 带room
	PrimNatureRoom,

	//prim算法:主路扭曲型 带room
	PrimTrunkRoom,

	//prim算法:自然分岔型 带直行桥
	PrimNatureWeaver,

	//prim算法:主路扭曲型 带直行桥
	//PrimTrunkWeaver,

	//pr
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值