迷宫生成算法是游戏中各种随机生成都可能用到的最基本的算法。下图展示了一个随机场景生成器的迷宫生成部分。
依次经过了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

最低0.47元/天 解锁文章
4576





