February 09, 2020

[Design] Zelda-like Games

As I begin development on Daughter of Dreams I find it critical to create a proper definition of what I am exactly trying to accomplish. The concept behind this project is a “procedurally generated Zelda-like game.” But, what exactly is a Zelda-like? How does a procedurally generated Zelda-like differ from any other procedurally generated game, such as a roguelike or a survival game? In this blog post, I will share my thoughts on the core design elements of a Zelda-like game, and elaborate further on what my goals for Daughter of Dreams are.

A Zelda-like is a game where progression is accomplished by obtaining key items.
In my opinion, this is the core design of a Zelda game, and what makes it different from other action-adventure games. In Zelda, you do not gain experience points that level up your stats. Instead, you obtain new items (the Hookshot, the Bombs, etcetera) which directly enable the player to access new areas of the game. Critically, key items unlock progression in three primary areas of the design: Combat, Puzzles, and Exploration. Here is an outline.


Key Items and Exploration
- New items unlock new areas of the overworld. (Metroidvania world design).

Key Items and Puzzles
- Key items are used to solve puzzles.
- Especially in dungeons, a staple of Zelda-likes.

Key Items and Combat
- Enemies are designed to be defeated with a particular item--they are puzzles themselves.



Key Items and Exploration: The first design element of a Zelda-like is the way in which key items allow the player to explore new areas of the game world. For instance, getting the bombs allows the player to blow up rocks that are blocking a path. This is the same style world-design that characterizes the Metroidvania genre. Every new key item allows the player to explore new areas of the world. However, compared to Metroidvanias, mainline Zelda games usually have a very linear overarching structure, where you find one item at a time. But, I do not think this is a requirement of the genre (rather an area where Zelda might improve). Thus, the distinction between a Zelda-like and a general Metroidvania must come in the other two elements.

Hollow Knight - Using the Shade Cloak ability to reach this upper ledge.

Key Items and Puzzles: Different from Metroidvanias, Zelda-like games have a very strong focus on puzzles, especially in dungeons. Particularly, the puzzles in Zelda-likes require using your key items in a specific way in order to get past the obstacle. Puzzles build on previous mechanics throughout the entire game--as you gain new key items, learn new mechanics, and discover new uses for your key items. The best Zelda puzzles require thinking of a creative use for your items, and applying it to the problem. The specific way that dungeons are designed to create this experience is a blog post all on its own. The point is that the puzzles in the game utilize the player’s items for their solutions.

Key Items and Combat: The final element of a Zelda-like is combat and enemies. Key items are not just tools for exploration and solving puzzles--they are useful in combat as well. Enemies in Zelda-games (especially bosses) are often designed to require a particular key item to be defeated. In this way, Zelda enemies are puzzles as well, and they provide a practical use for your items when you aren’t navigating dungeons or exploring new areas.

Link's Awakening (Switch) - Using the shield to stun this Bokoblin.

How to Procedurally Generate a Zelda-like?

From this definition, it becomes clear many of the challenges with creating a “procedurally generated Zelda-like.” Primarily, there is the difficulty of generating a sense of progression from the items which are collected. In a rouge-like, the order of progression does not especially matter--you work with whatever items you get, and the terrain is generally traversable with any set of abilities. In a Zelda-like, there needs to be terrain and puzzles generated according to which items you obtain. Further, these obstacles should build on previous mechanics. For example, once you get a second key item, you now should be solving puzzles which require both of your new abilities.

The element of enemy design is a little easier to manage. Enemies can be handcrafted to work well with particular key items. Thus, it is only the matter of well designed enemies, and having a large diversity of enemies for different key items. (Procedurally generating new enemies is a whole other level, which I will not be tackling any time soon).

Link's Awakening (Switch) - Using the Hookshot to cross a large gap.
The structure of a procedurally generated Metroidvania world I also do not expect to be super challenging. This can be accomplished with a simple check of locks (key items) and keys (simple obstacles). However, dungeons and especially specific puzzles will be very difficult. Dungeon overarching structure shares many elements of the overworld generation, but the puzzles within dungeons are more complicated. In part, I may create many handcrafted rooms to test certain puzzle mechanics, but the combinations of puzzles are exponential compared to what I would have to make for a normal Zelda-like, to account for every order which you could obtain the key items. I have a few ideas for this though, which I will elaborate on in the future.

This makes clear the primary challenge of this project, and what I must do to accomplish my goal. Without key items that are used to solve puzzles and progress in the over-world, I have merely made an action-adventure game. Now, that is still cool, but I want to make something more interesting than that. Hopefully I can create algorithms to structure an experience around gathering key items.

Stray Thoughts

I have a few more things to mention regarding Zelda-like game design. First regarding open-world Zelda-likes, such as Breath of the Wild, or the original Legend of Zelda. With my definition of a Zelda-like, open world Zelda games does not utilize the way that key items are tied to exploration. In this way, I think that BotW is lacking an important aspect of what it means to be a Zelda game. It still feels like a Zelda game, because of the emphasis on puzzles (shrines), and because there isn’t progression in any other form. But, it isn’t quite the same.

What I’d like to see in the future of Zelda is a stronger emphasis on Metroidvania world design. This could make a game world where progression is tied to key items, but the exploration is also non-linear by providing many choices for the order which you obtain items. I think this could make a better Zelda game than the open-world design that we see in BotW.

Breath of the Wild - Using Magnesis ability to solve a puzzle.
In addition, there is an element of soft progression which is present in Zelda-likes. Generally, later areas in the game, even if they are technically accessible with your current key items, are designed to be more challenging than earlier areas. This encourages a particular order of play, even if that progression is not directly dictated by the items you have. This is generally good design practice, and can be used in Zelda-likes to add more structure to an open-world experience. (This is what I did in The Last Librarian).

Finally, I want to talk about the story in Zelda-likes. The Legend of Zelda series does not have a very strong emphasis on the story, but I do not think that is a requirement of the genre. The world of a Zelda-like can be greatly improved by an epic story and well developed characters, and I’d like to see that more in future Zelda games as well. This is certainly an aspect of the game that I will focus on in Daughter of Dreams (and I did so as well in The Last Librarian). The narrative in a game can serve a critical role in building the world and keeping the player engaged.

The Last Librarian - The Ebreath Mountains are balanced to be the sixth area, but you could go there as early as third.

Conclusion

So here, at least for the purposes of Daughter of Dreams my formal definition of Zelda-likes as a genre. If you think I missed something, please let me know. Here are a few other resources.
  • Mark Brown -- Boss Keys This Youtube series covers the dungeon design of every Zelda game. I can’t recommend it enough.
  • GMC Forum Thread I posted here a while ago, in preparation for writing this blog post. Feel free to add to the discussion, and see some other perspectives. (Thanks to those who helped me out with ideas for writing this!)




January 18, 2020

[Design] Main Project Goals

I have written some about Daughter of Dreams already, but today I am preparing to start sharing development progress more actively. For that purpose, I am writing a post that goes into more detail about the specific goals I have for this game. I've done a lot of design work over the last few weeks, and I think I have a much better idea of the specific tasks I will need to accomplish for this project to be completed.

For those who are new, Daughter of Dreams is a procedurally generated puzzle-adventure or Zelda-like. I have published a puzzle-adventure game already, The Last Librarian, and I would like to expand on the experience I gained to make a new game that can be enjoyed endlessly. Daughter of Dreams will feature a procedurally generated overworld, randomly generated dungeons, as well as a strong story and unique, generated lore. I am excited about this project, because it builds on what I've learned about level design for Zelda-likes, and is technically much more challenging than my previous games. I will have to use many new algorithms in order to replicate the hand-crafted puzzle experience that you would expect from this type of game. From here, I'd like to elaborate more on some specific aspects of the design for this new project.

The Last Librarian - Seroth's Tomb (Procedurally Generated Mini-Dungeon)

Procedurally Generated Dungeons

Center to the Zelda-like experience, are the dungeons. Dungeon design is my personal favorite area of game design, and I am intrigued by methods to procedurally generate a Zelda dungeon experience. For this game, I am not merely making mazes with locks and keys--that had been done before. In my experience, dungeons in procedurally generated games can often end up feeling bland or unmemorable, compared to handcrafted dungeons. I believe this is in part because it is difficult to incorporate an interconnected aspect to procedurally generated dungeons (and levels in general).

In an effort to overcome this weakness, I will be generating dungeons that feature cross-dungeon, state-changing puzzle mechanics. These kinds of dungeons are described as "puzzle-box" dungeons by Mark Brown in his video essay series on Zelda dungeon design: Boss Keys. I have designed dungeons like this before, especially the Water Palace in The Last Librarian which sees the entire dungeon being frozen or unfrozen to enable different paths. (See images to the left).

Other examples from the Legend of Zelda series include the Water Temple (OoT), Stone Tower Temple (MM), or the Lanayru Sandship (SS). What is unique about these types of dungeons is a puzzle mechanic that radically transforms the entire structure of the dungeon. Procedurally generated dungeons using a cross-dungeon mechanic will (I hope) create dungeons that more closely replicate the uniquely Zelda dungeon experience that I am looking for.

Procedurally Generated Overworld

The overworld in Daughter of Dreams will be the space the connects the dungeons together. While each dungeon is a contained, puzzle focused experience, the overworld design will be more open. This part of the game focuses on exploration, in a similar way to the overworld in The Last Librarian. For this, I am inspired by Metroidvania world design, especially Hollow Knight. The challenge will be ensuring that the explorable space expands as the player obtains new items and that the difficulty in the overworld (and the rest of the game), scales well as the player makes progress in the game.

As part of the design of the overworld, I am taking some inspiration from Cadence of Hyrule, a procedurally generated Zelda game in its own way. In Cadence of Hyrule, the underlying systems of the generation allow for many solutions to the same puzzles. For instance, you may push blocks, or move them with bombs, or pick them up with the gauntlets. I describe this as the element of interactivity, and it aids procedural content generation in always allowing for an intended solution via the game logic, but additionally allowing experienced players to get past sections in other creative ways. This element of interactivity is also seen in the level design of Breath of the Wild and is why some games, like Link to the Past work well as randomizers. (Link to the Past Randomizer).

Cadence of Hyrule - Overworld Map
In my own game, I will need to design key items and puzzle mechanics that are broadly applicable and work together as a system. This will give me the most flexibility as a designer to create procedurally generated puzzles, that will always have a solution, but do not get repetitive as there are a variety of ways to overcome the puzzles. I had some elements in The Last Librarian which allowed for finding alternative solutions to puzzles, particularly the ability to carry the bomb with the boomerang and bounce arrows off the boomerang. However, the impact of these interactions was limited, and I would like to expand on this design element much further in Daughter of Dreams.

Overarching Story and Procedural Lore

Finally, central to Daughter of Dreams will be a well-developed story. The story is an aspect that is often weak in procedurally-generated games, due to the complexity of incorporating a story into a game world that is constantly changing. The story is also not a particular focus of Zelda games either, but that is not a limitation of the genre. My goal for the story in my game is to incorporate the way that the game is procedurally generated by having the plot play out over the course of many play-throughs, remembering story progress made in previous runs.

There are two facets to the story in Daughter of Dreams. First is an over-arching story based on the changing nature of the world. This part of the story will be character-focused, allowing me to tell the story regardless of the current setting through well-developed characters. Each character has their part of the story to tell, and they will share it when they are cued to based on various factors throughout the gameplay. Additionally, the game world will be enriched through procedurally generated lore. Each playthrough will be uniquely marked by original lore, inspired by the style of lore in Hollow Knight (or--as I understand it--Dark Souls).

Hollow Knight - Overworld Map
Obtuse lore like this is ideal for procedural generation, as it is intentionally vague. So long as what is being generated is consistent with the over-arching story, there can be a lot of variation in the actual flavor text, tombstone engravings, idle dialogue, and other lore details. Thus, each player may paint their own picture of what happened in the past of Daughter of Dreams and decide on the implications of the lore on their own. I also have a budding idea about incorporating the player's own previous playthroughs into the lore, but I don't quite know how I want to do that yet.

Conclusions

I hope this gives you a better idea of my goals for Daughter of Dreams. I expect this project to be done before the end of 2022, and the time until then I will be fully focused on Daughter of Dreams as my main game project. I will do my best to share my progress and new ideas throughout the entirety of the development. Most updates will be on this blog, especially as I go into detail on the actual methods of procedural generation. I will also share updates and screenshots to my Twitter (@CloakedGamesDev). Be sure to subscribe to this blog if you are interested in the development process.

December 31, 2019

[Progress Update] Programmatic Auto-tiling

Starting a new project has been very interesting. I worked on The Last Librarian for two years, so I've practically forgotten what it's like to start a brand new project. It's a completely blank slate, and it's incredibly fun because of the experience I gained from the previous project. I am able to make so many improvements to even the most basic things.

So far, the only programming I've done is very basic engine things, but I am approaching a place where I might be able to start messing around with procedural generation. Here's what I've done so far:

  • Camera functions and screen scaling.
  • Player movement and object collisions.
  • Controller detection and input. (Set up to allow for control remapping).
  • New generation algorithms that handle auto-tiling.

The auto-tiling code is the most interesting part. This allows me to place tiles that connect seamlessly with adjacent tiles. The GMS2 room editor has auto-tiling functionality built-in, but as I wish to procedurally generate the terrain, I need to be able to do that myself programmatically. This algorithm I wrote is compatible with my older PGC library. (See GM Marketplace - Jen_scripts). Here is a GIF showing two iterations of a test room. The tiles are placed randomly and ran through the auto-tile algorithm.


I used bitmasking for most of the tile checks. Here is a more detailed article on the topic: Tile Bitmasking with Auto-tiling. Each position tests for adjacent tiles then chooses the appropriate tile index for the conditions. Bitmasking worked for the broad strokes, but I needed additional special cases to take care of corners and diagonal tiles. My solution also uses a default "invalid" tile, which is shown as the double squares in the GIF. A tileset artist for the game can decide to use that tile or leave it blank, depending on how it fits into the rest of the tileset.

I would show more images, but this is kind of all I've got. Stay tuned for more updates in the future.

December 17, 2019

[Progress Update] Introducing Daughter of Dreams

Today I have finally started serious design work for my next project, which will be titled Daughter of Dreams. This will be a dev-blog focused on my progress designing and developing Daughter of Dreams. I do not have very much tangible progress to show yet, but I'd like to write a bit about my concept for this game to lay the foundation for progress going forward.

Daughter of Dreams will be a procedurally generated adventure-puzzle game. I made The Last Librarian as an adventure-puzzle game inspired by Legend of Zelda. Now I would like to make another game like that, but this time it is procedurally generated. This includes the dungeons, overworld terrain, NPCs, game lore, puzzles, and more. This will be very challenging because nearly all of the content in adventure-puzzle games like these are hand-crafted. There are not many existing solutions for procedurally generating the complex world and puzzles that you would expect to find in a game like this.

Shown here is a flowchart of the gameplay experience I would like to create. This is basically modeled after the gameplay flowchart for a standard Zelda game, with a few small differences. Key items would be found in the overworld environment, and thus would be used to gain access to each dungeon. The dungeons themselves will not have key items, as they do in Zelda. Additionally, in Daughter of Dreams, it would be expected that the player would play through multiple times in order to take advantage of the procedurally generated world. To that end, the length of one cycle would be much shorter (I am thinking only two dungeons) but it would loop again with the final boss when the game is fully cycled.


The story would progress further each time you defeated the final boss, so you would play many times to discover the entire story. It is key that the over-arching story would be related to the way that the game is constantly resetting. There is an explanation for that phenomenon, and the main characters are aware that the game is resetting. This allows the story to continue through many cycles, and have certain progress carry over to future cycles.

I believe there will be two main parts to the story in Daughter of Dreams. The first is a unifying primary storyline that would be the same every time you played, maybe with branching storylines based on decisions the player makes. The second part would be world-building and lore that can be procedurally generated. To make the story as engaging as possible, I want to incorporate elements of the procedurally generated world into the story, so that each play-through remains as different as possible. I have done some brainstorming for the primary story-line, but nothing is really decided yet. I do have some concept art for the three main characters though. I will leave them as a mystery for now, however.


I have a lot of ambitious goals for this project. The vision for this game is much more complicated than my previous games. First, I will need very careful design to ensure that every interlocking system works together to create the intended experience. Then, I will need to develop algorithms for procedurally generating each part of the game. But, I am very excited. Procedural generation is my favorite area of video game programming, and I believe that what I am attempting will end up being incredibly cool, and a unique experience.

Please look forward to more updates from me about Daughter of Dreams. Soon I will share more details of the primary story-line, ideas for the generation algorithms, and some concepts for a gameplay engine designed to encourage interactions between the player and the environment.

October 02, 2019

[Progress Update] Starting the Development Blog

I have been working on The Last Librarian for almost two years now, but I am finally close to finished. Early access starts October 19th, and the full release will be only a short few months after that. There is still more work to do, of course, but in the meantime, I am beginning early design work for my next major title, Daughter of Dreams. For that, I am starting this development blog.

I have begun this blog for two primary reasons. The first is to fulfill my own personal desire to share what I'm working with, in a long-form. I am very excited about Daughter of Dreams so I'm hoping to let out that excitement just a little bit by writing about it here. Additionally, as this project is aiming to be a capstone project for my college education, I am using this blog to help document the development process and record some information so that I can write about it in detail later. In that regard, I hope this blog will be useful to other people as well, as I share about my design process and systems implemented in Daughter of Dreams and future projects.

I am not quite ready to announce exactly what Daughter of Dreams will end up being, as I need to get The Last Librarian into early access first. But I will say that I am ecstatic to finally begin development on this project. It has been in the back of my mind for almost as long as I was making The Last Librarian. It is incredibly ambitious and technically complicated, and I think will provide a game experience that is unique, or at least very rare in the game industry.

Maybe this is all just to hype you all up--or myself--for what is coming next. At any rate, as I no longer have design work to do for The Last Librarian, I have officially started the design document for Daughter of Dreams. I am attempting to design the entire game system on paper before I start actual prototyping. I believe it will be necessary to do so for the complexity of this project. I already have several pages detailing a physics/chemistry engine borrowing concepts from Breath of the Wild, and some brainstorming for the primary story and game lore.

I look forward to writing more about Daughter of Dreams in the future. Thanks for reading!