/
Procedural Level Design Procedural Level Design

Procedural Level Design - PowerPoint Presentation

min-jolicoeur
min-jolicoeur . @min-jolicoeur
Follow
379 views
Uploaded On 2017-11-10

Procedural Level Design - PPT Presentation

in Eldritch David Pittman Minor Key Games About me Whats Eldritch A Lovecraftian action roguelike A firstperson action game inspired by roguelikes immersive sims and H P Lovecraft ID: 604274

module maze design generation maze module generation design rooms prescribed spawner level overview entity room reference modifications spawners enemies

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Procedural Level Design" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Procedural Level Design

in Eldritch

David Pittman

Minor Key GamesSlide2

About meSlide3

What’s Eldritch?

“A

Lovecraftian

action roguelike.”“A first-person action game inspired by

roguelikes, immersive sims, and H. P. Lovecraft.”

We’re all professionals here, right? What I really meant was…Slide4

Dishonored…Slide5

+

Spelunky

…Slide6

+

Cthulhu

…Slide7

- Money…Slide8

= EldritchSlide9

By the numbers

Solo development

Less than 8 months

~1500 person-hours“9/10” - Polygon90% positive Steam user rating

~1000% ROISlide10

Level design goalsSlide11

Why procedural level design?

Perennial discovery

Project constraints

Team strengthsContent reuseMultiple ways to use it

Runtime vs. offlineSupplement handcrafted levelsProcedural level generation is DESIGN!Slide12

Eldritch level goals

Compact

Handcrafted

ContinuousSemi-coherentSlide13

Lovecraft reference

He talked of his dreams in a strangely poetic fashion; making me see with terrible vividness the damp Cyclopean city of slimy green stone—whose

geometry

, he oddly said, was

all wrong…

“The Call of Cthulhu

”Slide14

Art reference

Marc

Simonetti

,

R’lyehSlide15

Art reference

Giovanni Battista Piranesi,

Carceri

Plate XIVSlide16

Art reference

Right angles

Cyclopean masonry

Complex layoutsVerticalityAtmosphereSlide17

ResultsSlide18

OverviewSlide19

Overview

Build a 3D mazeSlide20

Overview

Build a 3D maze

Fill it with room modulesSlide21

Overview

Build a 3D maze

Fill it with room modules

Add enemies and itemsSlide22

Overview

Build a 3D maze

Fill it with room modules

Add enemies and items

Links:http://eldritchgame.com/about.html#source

http://tinysubversions.com/spelunkyGen/Slide23

Maze generationSlide24

“Maze” is a four letter wordSlide25

Maze generation

Prim’s algorithm/growing tree

Start from a single visited cell

Randomly open a path to any adjacent unvisited cellRepeat until all cells are visitedSlide26

Maze generationSlide27

Maze generationSlide28

Maze generationSlide29

Maze generationSlide30

Maze generationSlide31

Maze generationSlide32

Maze generationSlide33

Maze generationSlide34

Modifications

Bias expansion from most recent room

Balance horizontal/vertical paths

Randomly knock down wallsSlide35

ModificationsSlide36

ModificationsSlide37

ModificationsSlide38

Prescribed rooms

Not all space is alike

Don’t search maze for fit

Seed maze with prescribed roomsSlide39

Prescribed roomsSlide40

Prescribed roomsSlide41

Prescribed roomsSlide42

Prescribed roomsSlide43

Module designSlide44

Module design

Handbuilt

voxel

modules6 exits = 64 configurationsMust connect to any other moduleSlide45

Module designSlide46

Module designSlide47

Module designSlide48

Module designSlide49

Module designSlide50

Module transforms

Rotation about z-axis

Reflection about x- or y-axisSlide51

Module transforms

Rotation about z-axis

Reflection about x- or y-axis

24 configurations instead of 64Statistical report of configuration frequency~60 modules per worldSlide52

Themes

Visual coherency

Partial module setsSlide53

Feature modules

Complement of prescribed rooms

[

Feature_Water_Bank

]

SliceMinX

= 0

SliceMaxX

= -1

SliceMinY

= 0

SliceMaxY

= -1

SliceMinZ

= 1

SliceMaxZ

= -1

Chance = 0.666

NumRoomDefs

= 2

RoomDef0 = "Rooms/Water/bank-

n.eldritchroom

"

RoomDef1 = "Rooms/Water/bank-n-2.eldritchroom"Slide54

Feature modules

Complement of prescribed rooms

Not generated elsewhere

Shops, banks, shrines, “hero rooms”Slide55

Entity populationSlide56

Entity goals

Challenge (enemies, traps)

Incentive to explore (loot)

Placed in sensible locationsControlled group populationsSlide57

SpawnersSlide58

Spawners

Basic

[

Spawner_Player

]

Entity = "Player"

OffsetZ

= 0.3078125Slide59

Spawners

Basic

Random chance

[Spawner_Snare_33]

Chance = 0.333

Entity = "

TrapBolt"Slide60

Spawners

Basic

Random chanceWeighted random entity

[

Spawner_BankArtifacts

]

Chance = 0.75

NumSubSpawners

= 2

SubSpawner0 = "

Spawner_Artifact

"

SubSpawner0Weight = 2.0

SubSpawner1 = "Spawner_Artifact5"

SubSpawner1Weight = 3.0Slide61

Resolve groups

Control population

Enemy AIs, healing fountains

Minimum distance from player spawnSlide62

Spawner

placement

Loot in dead ends (1 exit)

Traps in hallways (2 exits)Enemies at junctions (3+ exits)Slide63

Thank you!

http

://minorkeygames.com

@dphrygiandavid.pittman@gmail.comSlide64

Bonus SlidesSlide65

Navigation

Path search on

voxel grid

Collidable entities rasterized into gridFlags for [locked] doors,

refcountAI capabilities: jump, fly, doorsSlide66

Visibility and culling

Maze provides coarse

vis info…

…but geo can be removed during playWorst case: every room is visibleLazy solution: always use the worst case

View frustum and distance culling onlySlide67

Performance

Maze generation is negligible

Module placement is negligible

Spawner selection is negligibleConstructing world mesh is expensiveSpawning entities is expensiveSlide68

0:

000b

1:

001b

2: 010b

3: 011b

4: 100b5:

101b

6:

110b

7:

111b

001b

: Mirror X

010b

: Mirror Y

100b

: Rotate 90

Module transforms