Download presentation
Presentation is loading. Please wait.
1
The Zelda Dungeon Generator:
Applying Generated Content to an Existing Game Final project at uni Procedurally Generated Zelda Dungeons Overview of project Emphasis on how I applied pre-existing grammar generation techniques to an open source game Becky Lavender
2
Me Computer Games Programming at University of Derby 22cans - Godus
Playtonic - Yooka-Laylee @SirPsychoBexy Graduated last year
3
The ZDG Foundations of Digital Games 2015 Artificial Intelligence and Simulation of Behaviour Convention 2016 Dissertation - Adopting Generative Grammars to Create Levels for Action-Adventure Games Link to dissertation if want more info on aspects of project not covered here Tommy presented
4
Adventures In Level Design - Dormans
Thing makes AA dungeons more difficult to gen is often have big structures and patterns of tasks that span the dungeon Moreso than other genres’ clear and loot. An example: [that one]. Paper identifies this and other patterns analyses one dungeon in particular from Twilight Princess found formed of two distinct structures – mission and space Mission is like a chart of actions to traverse the dungeon (including optional secrets, bonuses) space is the dungeon map. suggested generate in 2 distinct steps: mission and space. Structures eg: defeat miniboss -> get item -> use item to leave room -> use item to traverse dungeon -> defeat boss with item
5
Project Aims Create a graph grammar generator to produce dungeon missions. Create a shape grammar generator to produce dungeon maps which correspond to the generated missions. Create a simple action-adventure demo game which uses the generated dungeon maps, and demonstrates key features of a typical Zelda dungeon. First two use suggested gen methods More exotic ideas More “can the results of these generations be applied to Zelda”
6
3 Stages Map Mission ZELDA
Did implement the mission and map gen myself others more qualified to talk about first two already well documented Wanted to talk about grammars because something I find super interesting but not enough time Going to Touch on mission n map gen for understanding Going to focus on space -> game Mission ZELDA
7
Mission Generation C# WPF Graph# Graph# free graph layout framework
8
Map Generation C# WPF
9
Map to Playable Dungeon
Main bit of talk Explain one room one symbol Obviously simplest way to get playable space out of grid structure May think not representative of actual 2D Zelda dungeons BUT…
10
It’s fine, though. Face Shrine, Link’s Awakening - Griddy
Zelda dungeons have been made up of rectangular rooms Ofc very limiting, worked better for some types of rooms than others
11
Solarus “a free and open-source Action-RPG game engine” Quest Editor
Mystery of Solarus DX FANTASTIC STUFF Lots of great OS Zeldas but this really stood out Super high quality stuff – perfect LTTP Games, map editor explain got enemies, HUD for free by using parts of game OS but didn’t actually have to delve into source, could do it all using the map/quest editor
12
Creation Process Mystery of Solarus Map My Map Made maps in map editor
whole floors usually made in one file but I made my maps separate files because ways doors set up made realising grid structure relatively simple Point out doors all central Mystery of Solarus Map My Map
13
Room Layouts Multi-Part Lock Multi-Part Key Examples
ZELDA GAMES/AA games HAVE LOTS OF KEYS AND LOCKS. LITERAL AND METAPHORICAL -eg. Big gap you cant cross until you get the hookshot, -Rock you can’t get past until you have bombs Multi part Door on right is locked. Four gibdos in dungeon, each time you kill one a lantern will light. Multi-Part Lock Multi-Part Key
14
Goal Quest Item Bombs were chosen as the dungeon item,
-key for traversal -hiding secrets -combat -Mystery of Solarus game had boss who could only be defeated by bombs Reveal what was in this chest end Quest Item Goal
15
4 Way ‘Symmetry’ Don’t know which way the player’s going to come from or go to. room supposed to act as bombable obstacle they need to get past, room needed to be designed in a way that they’d need to bomb something to get from any door to any other door. Would have been possible to do something where contents of room shift depending on which way go in/out or just have different copies but I didn’t have time
16
Going Under the Hood Created all my rooms doorless Once created all rooms had to go back to space generator and come up with a way of sticking them all together to realise the generated space structure Usually doors and their destinations are specified using the map editor In order to generate these automatically, couldn’t use nice interface, I needed to go UNDER THE HOOD and see how data stored PLAIN TEXT – eg opening method
17
Example – ‘Test’ room Show one room to talk about files its stored as
Simple, defeat the two enemies and door(s) will open
18
All stuff I could do in map editor
Tile placements but also entity placements – includes baddies, pick ups, but can also use to specify where a door’s going to lead.
19
Data created from map editor stored in text form
TestMap.dat Everything you do in map editor stored like this .dat – text file big list of tiles and properties Positions, sizes, in enemies you can specify breed. General map properties like which tileset theme to use, which music to play etc. If need be I could have generated data for my doors and put it in here but there was even more convenient way, Data created from map editor stored in text form
20
Used for specifying behaviour on events
TestMap.lua Used for specifying behaviour on events Each map also had a lua script attached to it Usually used for: responding to in built Events Basically says -whenever an enemy dies, -check if all enemies are dead. -If they are, play ‘do do do do do do do do’ and open all the doors
21
‘On Start put these doors down’
However, I also used it for placing my generated doors. When click apply it -loops through all the rooms needed to make the map its generated -edits their lua files. On map started create teletransporter, all tiles around door Complicated, range of intricate tiles with different sizes and offsets required for each. [see pic] Diff tiles Diff directions etc Wanted map editor stuff to be in dat and generator gen stuff to be in lua
22
Re-Adjusting The Generator
PREFACE WITH SPOILER ALERT Tweaks I had to go back and make to space generation in order to make maps playable. Thought about big structures conceptually Problems didn’t realise until actual implementation
23
Blocking Secrets Zelda dungeon item bomb – mentioned earlier
One of reasons was because they could be used for the secret tests node as well But rules hadn’t taken into account that secrets would require the player to get the bomb item first explain pic -some cases secret test room placed in between entrance and room where player got the bomb, -impassable.
24
Secret Test - Bomb Secret Test - Default
Needed two versions of secret room. Algorithm placed down the rooms in the grid -If before room get bombs, place secret default -If after, place bomb secret Best of both worlds – could still come across bombable near entrance (see diagram) But wouldn’t get blocked Secret Test - Bomb Secret Test - Default
25
Multi-Multi-Keys Another issue was when a mission/map generated multiple sets of multi-keys. Gibdos explained earlier. When making rooms only had time to make one set of these – just gidbos. Two sets – very confusing Wouldn’t know which gibdo corresponded which lock Particularly if you access some of the keys from the second set before you’d gone through first lock. [map] Don’t look any different Could kill one from second set, wonder why lantern not lit Tweaked rules - only ever generated one set per map could have solved in a number of ways if had more time.
26
Conclusions, Possible Further Work
Successful but very limited Rectangular ‘symmetrical’ rooms Rooms don’t connect back to each other Duplicated rooms Other ways to expand Online generation Room content generation Application to Overworld or different types of game/map Works and is possible to generate this type of dungeon in this way but it is mega limited in a lot of ways – [list] could benefit from cyclic generation Started player modelling, turned else Player modelling -> analyse play style and alter the dungeon dynamically as you’re playing through it Ton of further work could be done to try and solve these issues, Eg actual tile placement generation stuff used in Lenna’s Inception, a lot you could do!
27
Keep an open mind about pre-existing tools and content you can use.
can apply generated content to stuff might not expect If you have idea want to test out don’t feel you have to create every single thing from scratch, keep an open mind for what you could use don’t feel like everything you use has to be specifically created for the purpose of PCG Solarus had absolutely nothing to do with that but it was so perfect and I had so much fun. Does time consuming but irrelevant work for you you can focus on the generation part
28
ZDG - More info Dissertation: Literature Review Mission and Space generation ‘dev blog’ Expressivity Evaluation
29
References & Links FDG paper - AISB paper - Adventures in Level Design - Graph# - Solarus Engine - Solarus Quest Editor - Mystery of Solarus DX - Images: Godus - Yooka-Laylee - Face Shrine - UNDERTALE -
30
Asset found in game with that description
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.