Showing posts with label Daughter of Dreams. Show all posts
Showing posts with label Daughter of Dreams. Show all posts

June 13, 2023

Daughter of Dreams Beta Announcement

 

Notice: This blog is not updated regularly. Instead, follow me on itchio or subscribe on YouTube. The following post has been reposted from the original here.

~ ~ ~

My latest big project is finally in public beta! Daughter of Dreams is an epic fantasy tactical RPG with an ever-changing world. The first chapter is available for free, on Windows and Linux. But, the rest of the details are on the game page. Instead, I will write a few personal thoughts.

Daughter of Dreams was originally conceived as a puzzle-adventure game in the same style as my previous game, The Last Librarian. It would have been more of the same. Yet, the last three years have transformed it into something entirely unexpected and special to me. Strategic turn-based combat created a fresh amalgam of genres. Procedural generation expanded exploration, making old areas new.

Finally, Daughter of Dreams is a personal reflection on my own deconstruction of supremacist institutional religion. It is a story that I hope resonates with people that have similar religious trauma. And, it is an exploration of where to go next. There is Another Way, one that lies comfortable with the nuance of reality, and rejoices in the magical. This magic is why Daughter of Dreams is a fantasy game, a space to explore what Could Be...

However, Daughter of Dreams is far from finished. There will be three more chapters, with the most poignant moments yet to come. The next step will be preparing for a crowdfunding campaign, launching later this year. In the meantime, Play the Game, join the Discord Server, and subscribe on YouTube. This game cannot exist without your support! <3

- Cloaked Games

Screenshots



January 31, 2022

[Progress Update] What is Daughter of Dreams?

This year, my goal is to write one blog post per month (I sure pushed it pretty late for January). To start, I want to once reintroduce my main project: Daughter of Dreams. Since I first wrote about this game in 2019, the project has changed drastically. With the time I've had to refine the design, it seems worthwhile to touch base on what exactly I am making now. Here it goes:

Daughter of Dreams is a puzzle-adventure game with strategic turn-based combat, an epic fantasy story, and an ever-changing procedurally generated world.

Throughout this post, I will break down this definition into each of its components, and explain my reasoning for each. Really, this post is a writing exercise to help me define my game for myself, more than it is for anybody else. But, I hope to provide at least some insight for other game designers.

Adventure

I think about the design of this game in layers. The base layer is an adventure game, and the other elements are modifications to that original concept. For the "adventure" layer I am drawing on the level design of The Legend of Zelda and Metroidvania games. This was also the inspiration of my first game, The Last Librarian, so I have some experience to build on already.

The level design of The Legend of Zelda is characterized by the way it is interconnected. The game world is a shared-space, and can be explored freely by the player. Navigation is restricted only by the abilities of the player, and so new areas unlock as the player obtains more abilities. The player will often need to backtrack to previous places in order to use their new abilities. The goal is to reward exploration, and challenge the player's navigation and spatial reasoning.

A treasure chest by a lake in the Enchanted Grove.
Finding a treasure chest in the Enchanted Grove. Also there is a bird.

My game will take place in a hand-crafted world, with open areas to explore, and many paths that require special abilities to navigate. Between the open areas will be the dungeons, which are more contained space featuring puzzles and a specific reward at the end. I consider the whole game world to be an intricate puzzle box, meant to be solved by the player as they explore and open up new areas. This puzzle box world will be the staging ground for the rest of the game.

Combat

Zelda-style adventure games typically feature real-time combat. However, they don't have to, and so I am developing a turn-based combat system instead. Turn-based combat emphasizes strategy and problem-solving, with less demand for real-time execution. I believe this is complementary for an adventure game with an emphasis on navigation and puzzle-solving. Additionally, I personally enjoy turn-based combat better, and find it more well-suited to my development skill-set. My primary goals for the combat system are the following:
  • Tactical: Combat is positional. Attacks target locations instead of specific enemies.
  • Strategic: Abilities allow many strategies and powerful synergies.
  • Customization: Stats are affected by special items, allowing for many strategies.

I have already developed the combat system, and you can learn more about here. The most important part of my system is the Charms, which are inspired by the Badge system from Paper Mario. The player's stats and abilities are determined by their Charms. Charms can be equipped to any party member, allowing for many different viable strategies. Charms are obtained throughout the game by solving puzzles, beating dungeons, or vanquishing enemies.

Battling enemies on a bridge.
Battling some enemies on a bridge. There is also another bird.

Procedural Generation

Procedural generation (procgen) has always been a particular interest of mine. It's elegant because a procgen system can create new content or add variety for as long as the player continues to play the game. Procgen can be used to create "infinite re-playability" and it is can be considered a holy grail of game development. After all, why not write code that can make the game for you?

I originally wanted to procedurally generate my entire game, the world, the dungeons, and the story. However, such attempts (especially from a solo developer like myself) reliably fall flat. When the level design is such an important part of a game, procgen is usually much less effective than simply creating the level by hand. So my game will have a hand-crafted world (according to the "adventure" layer of the design), but I will use procgen to introduce variety on top of that.

My goal is to make Daughter of Dreams an "ever-changing world" using procedural generation. Exploring an adventure world often involves backtracking, especially after getting new items. I will make this part of the game more interesting by providing variation to areas the player have already explored. So far I am using procgen to generate combat encounters, shops, loot chests, and foliage. Some contained areas of the world can even be generated from a selection of options, so that when the player visits an area there might be a graveyard, a grove of trees, or a ruined house.

A graveyard that was generated in the Enchanted Grove.
Procedurally generated graveyard located in the Enchanted Grove.

Fantasy Story

The final layer of the design is the story. Story is the final layer not because it is unimportant, but because is integrated with the level-design, combat, and procedural generation. The ever-changing nature of the world is known to the characters in the story, and is relevant to the plot. The level-design relies on the world-building and lore, as the places you explore have significance to the story.

Furthermore, I believe that video games can be literature, and tell impactful stories. I do not fancy myself a masterful writer, but I do want to go beyond a merely serviceable narrative. For this project, I am exploring themes of Deconstruction, Reparations, and Sacred Community. My goal is to portray a realistic religion within a fantasy world, and explore how religious institutions can cause harm as well as heal communities.

Speaking to Ellie-Anne. She says: "Prophet? Hah, not me! I'm just a common farmer, albeit one 'too big for her britches' as Mother says."
Speaking to an NPC who is hanging out in the forest for some reason.

Stray Thoughts

This is certainly a lot to cover, and there are so many details I could've included. However, I hope this serves well as an overview. It certainly helped me straighten out these ideas in my head, as articulating complex thought as written words often does. For that reason, I hope to write a new post each month this year. I have a few more planned already, so hopefully I will finish writing at least one of them before the end of February! See you then.

August 12, 2021

[Progress Update] Charms

As I continue development over the summer, I find blog posts to be a task on my back burner, but I will update today on the major systems I have finished over the last few months. I have worked on many improvements for the combat system, including a major rebalancing, new enemies, and lots of quality of life updates. However, the main system I developed was the inventory. In particular, equipable charms that modify player stats.

Overview

The inventory in Daughter of Dreams is fairly similar to the inventory system I developed for the real-time combat prototype. In this case, I opted to include multiple pages for items of different types. This allows the item information (lore and affected stats) to be shown at the same time as selecting items since the item slots take up less screen space.

Note: I am showcasing the inventory with the new (WIP) Temple of Light and Enchanted Grove tilesets to add some variety. I'll write some posts about those areas once they are completely done!

Selecting items and switching pages in the inventory.
Selecting Items: Quest Items, Materials, Consumables, and Charms

The player can scroll through each page in the inventory and select items with the cursor. A selected item showcases its name and description below the inventory box. The right side shows the currently selected character's HP, MP, AP, and other combat stats. When selecting a charm the stat list will preview the stats that would be modified by equipping that charm.

Item Types

Each page in the inventory contains a different type of item. I intend for the inventory to have infinite space as well, so in the future additional pages will be inserted if a particular type exceeds the limit of a single page. For now, there are a couple of item types used to keep them organized.
  • Quest Items: These are story-related items such as Sonya's Sorrite Spear. Some of these will be only for lore purposes, but others may have practical uses on the overworld, or relate to particular abilities unlocked by the characters as part of the story progression.
  • Materials: These are the "useless" items that are dropped by mobs or loot chests. Like Globber slime and bits of string. They will be able to be sold to merchants or sometimes traded.
  • Consumables: These are potions or healing items that will be able to be used during combat, to recover HP or apply status effects. Consumable items aren't implemented yet, they will be in the next alpha-version as they are somewhat complicated to develop.
  • Charms: These are equipped to characters to change their combat stats, such as increasing their attack or defense, or providing unique passive bonuses. This is an essential component of the combat system, as charms provide customization and strategic diversity.
The gelatinous goo left behind by a Green Globber. Pretty gross, but it could be useful?
Selected the Green Glob under Materials

General Charms

Charms modify the stats and abilities of equipped characters, similar to badges from Paper Mario or charms from Hollow Knight. You can change them around between battles to equip them with different characters, and you are only limited by the number of charm slots you have. The goal of charms in Daughter of Dreams is to allow players to invent their own strategies and create different ways of playing. It is also a method of making the player stronger over time, by providing them with more charms and thus more powerful options during combat. There are different types of charms that work with slightly different mechanics.
  • Personal Charms: These are the most common type of charms. They simply modify the stats of a single character. For example, Pendant of Light grants +1 Light Damage and -1 Magical Resistance. Others might grant a passive bonus instead, such as Primed Hourglass which causes the user to start the battle with Charge (a status effect) for one turn.
  • Aura Charms: These provide a passive bonus to the entire party, such as increased treasure drop-chance. I have not fully implemented Aura Charms yet.
  • Life Charms: These can be equipped to a single character and provide both entirely unique passive bonuses, and permanent upgrades such as maximum HP or MP. I will cover these in more detail in the next section.
An eternally flowing hourglass which contains unfathomable energy.
Selected the Primed Hourglass under Charms

When selecting a charm in the inventory, the stat modification offered is listed on the stats page, allowing you to view your current stats and what would change if you equipped or removed a certain charm. Nearly every value referenced during combat is stored as a combat stat, making it trivial for me to implement a charm that modifies anything I want, including movement speed, max HP, damage, armor, attack range, ability cost, etcetera. For passive abilities, I add a new combat status that represents that specific bonus, so that the effect is reflected in the stat preview.

-1 Magical Resistance / +1 Light Damage
Selected the Pendant of Light under Charms

Life Charms

One of the unique mechanics with the charm system in Daughter of Dreams is Life Charms. These are a replacement for traditional XP leveling systems that are usually part of RPGs. In Daughter of Dreams, you have Life Charms which can be equipped for your chosen party, and find consumable items that can be used to upgrade the Life Charms to provide permanent bonuses.
  • Each character may have at most one Life Charm equipped at any given time.
  • Any Life Charm may be equipped for any character.
  • All Life Charms provide a completely unique passive bonus.
  • Life Charms can be upgraded to provide increased max HP, MP, and AP.
On kill, gain charge.
Blessing of Ta'Reya Life Charm Granting +10 HP and +1 AP

Life Charms are designed to provide additional strategic depth with how you increase the strength of your characters, by allowing Life Charms to be exchanged between characters. Additionally, Life Charms address a few issues I find with traditional character-specific leveling systems.

  • Underused or new party members can be under-leveled compared to the rest. In this case, a new character can just be given your previously leveled Life Charm and they are raring to go.
  • You can use Life Charms to create strategies around specific upgrades instead of every decision being permanent. For instance, you can make a Life Charm that grants lots of extra MP or a different one that grants extra HP, and use whichever makes more sense depending on the circumstances or for the specific character.
  • This ties leveling up to collecting items instead of gaining XP, which means I can pace out the distribution of upgrades more deliberately, and there is no need to grind killing enemies for XP. (That has a place, don't get me wrong, but I don't want it in this particular game).
  • I may introduce more Life Charms as you play longer, which can provide more risky play or advanced strategies. A less experienced player can stick with their old Life Charms that have already been invested in.
Regenerate MP at the start of each turn.
Holy Grimoire Life Charm Regenerated MP Each Turn

Stray Thoughts

There are a few other aspects of the inventory which I cannot cover in detail. You can sort your items, there are item rarities and drop tables, selling and purchasing items... Many things are either planned or implemented internally already and I'm making rapid progress.

My next steps include actually developing the start of the overworld exploration, which you can see by the WIP tilesets in the screenshots for this post. I'm ecstatic to share my progress in this regard. I'm proud of the combat system, but I think my plans for the overworld are what will make this game truly original. So yeah, I can't wait to share about that. Thanks for reading!

June 23, 2021

[Progress Update] Combat Prototype

Last December I made a major change to the design of Daughter of Dreams as I pivoted from real-time combat to turn-based combat. Over the last few months, I worked to develop a prototype turn-based combat system. A little bit ago, I finished the entire system and produced a version that I shared with my internal alpha-testers. This post is a wrap-up on the turn-based prototype. I will document the progress I've made so far, and share what improvements I plan to make next.

For this progress update, I created a commentated video that showcases the entire combat system. If you are not familiar with the project thus far, I recommend skimming through it a bit. It is easiest to understand how the game works when it is shown in actual gameplay.

There are a few primary systems implemented in this version:

  • Performing actions and attacks on the turn-based grid-based battlefield.
  • Damage handling, modifiable combat stats, and status effects.
  • Simple enemy AI and a few basic enemies.

There are also two characters implemented, with a full set of unique combat abilities each. There are posts covering their abilities in detail here [Sonya] [Lydia]. Their abilities are not finalized (I have major changes already planned). However, what I have so far does showcase the overall idea I have for both of their characters, and how I plan to design abilities generally.

Conclusions

This is actually the second prototype I developed, the first one being a real-time combat engine that I developed last summer. That one ended up feeling stale, and unoriginal. I wanted to do something more interesting and within my skillset, so I pivoted to turn-based combat. I talked about this in-depth in a previous blog post.

Overall, I am extremely pleased with this new system. From the alpha-testers gameplay, I saw that they were all able to quickly understand the combat system (even without a tutorial). Furthermore, I was able to develop some mechanics that I have genuinely not seen in any other games. Fire Emblem (if you only had gambit attacks) and the upcoming Project Triangle Strategy are the closest direct comparisons, but I am also drawing inspiration from Chrono Trigger, Paper Mario, and traditional JRPGs. I really believe that what I have has the foundation to be something unique and incredible. I will be moving forward with this prototype to develop the full game, and I am excited to see what I can do with this game!

Future Development

My next update will be focusing on two things. (1) Polishing the combat system, and (2) adding the inventory and equipable charms, which will be a foundational mechanic for creating custom strategies. The specific changes I have planned address each of these points:
  • The combat system needs to be more readable and provide more information to the player. I will be adding context-sensitive UI and more information about attack types and enemy weaknesses. I will also be streamlining the controls, and updating the UI.
  • I will be adding charms that can be equipped to modify a character's combat stats. Along with this, I need a way to view the current stats for each player and show how different stats will affect their abilities during combat. This mechanic is similar to charms from Hollow Knight and badges from Paper Mario and I think it's really important to encourage strategic play.
  • I will be updating the enemy AI to be more nuanced and easier to understand. Due to the complex nature of attacks, it is currently hard to tell where on the battlefield is safe or in range of enemies. I will try to simplify the design of enemies and provide some telegraphed indicators of what the enemies will try to do.
  • The current abilities are not well balanced. Sonya in particular is unable to effectively synergize with her abilities. I have plans to refactor all of the combat abilities and damage values, including some significant adjustments to the AP system. I don't think this will be very hard fortunately since the foundational mechanics are already in place.

Stray Thoughts

It has been a long while since I wrote a blog post. This alpha-version was actually finished a while ago. At one point I wanted to write once per month, but other things took priority. Now I am into summer break, however, and I believe that development for Daughter of Dreams will be pretty consistent for the next few months. Stay tuned for more updates on this project, and some of the other things I am working on!

January 26, 2021

[Design] Sonya, Chosen Luminary

As I move forward with the Daughter of Dreams combat prototype, I am working to develop each characters' combat abilities to be unique and synergistic. I wrote previously about the story and personality of each character, and their combat abilities will reflect this design as well. I want every character to have an entirely different approach to combat, using a unique style of weapon attacks as well as magic. Additionally, each character will have powerful synergies both with their own set of abilities, and in tandem with their allies to allow for elaborate strategies, setups, and awesome powerful attacks.

In this post, I will do a deeper analysis of Sonya, the Chosen Luminary. I will show each of her combat abilities, and explain how they are intended to synergize with the design of the character. I will also cover more details about Sonya's story specifically, and some of the ideas I have for the combat system overall. In the future I hope to write a similar post for each of the characters as well.

The Sorrite Spear

The first distinction between each character will be their primary weapon. Most characters will have basic attacks they can always perform using their signature weapons. Lydia fights with a chakram, Duran has a knife, Angela has a bow. Sonya carries her legendary Sorrite Spear, a glowing spear of light elemental magic, made of Sorrite, a magically enchanted metal.

Sorrite Strike and Sorrite Slash Attacks
In combat, her spear functions as a primary melee (close-ranged) attack, though with a bit more range than other characters due to its length. Sonya herself is a warrior, so her melee attacks are powerful, and she will usually serve a role at the forefront of combat, taking damage so that other characters may act from a distance. Her basic attacks are a melee strike (which hits in a straight line) and a slash, which does more area damage around her.

Action Points

The actions that the player can take during their turn of combat is limited primarily by their Action Points (AP). Different abilities take different amounts of AP, and when the player has used all of their AP for that turn, the phase ends and the enemies get a chance to attack. Action points are shared across the entire party, so the player can choose how to spend their AP. The total AP refreshes at the start of each player phase. Magic Points (MP) is also used for magical attacks, and are refilled in other ways.

Using Charged Slash consumes 2 AP and 1 MP

All the characters use AP to perform their abilities, but it is different for Sonya. One approach I am taking to make each character unique is to give them a different resource to manage. For Sonya, this resource is AP. Sonya's actions not only use AP, but they manipulate total AP, grant bonus AP, and consume extra AP to perform more powerful attacks and spells. Eventually, Lydia's abilities will depend on magic, while Duran will use abilities that consume his own health.

Special Attacks

Special attacks are generally more powerful variants of the character's primary weapon attack. For Sonya, her special attacks are designed to help her gain extra AP, and use that extra AP to deal extra damage.

Using Dynamic Strike to gain +1 AP

Dynamic Strike: This attack is both a more powerful spear strike, and a method to gain extra AP to synergize with Sonya's AP based attacks. The attack deals more damage, and if it kills an enemy, the party will gain +1 AP at the start of the next turn. It is a high-damage finishing move that can chain into more powerful attacks the next turn.

Using Charged Slash with 3 AP

Charged Slash: This attack is a wider slash attack that deals damage proportional to the party's total AP when it is used. In this case, the AP is three, so Charged Slash deals (x2) and does six damage. With this attack, Sonya might increase her AP with other abilities, then follow up with a Charged Slash to deal massive damage.

I debated for a while about how to implement the bonus AP ability for Sonya's attacks. I decided on a delay like this, so that the bonus AP applies on the next turn. This was for a few reasons. First, this method means that no single turn will be able to last forever, since Sonya can only increase AP for the next turn. Additionally, by delaying the bonus AP usage, the player must think further ahead to effectively use their AP, which encourages planning and cool strategy.

Ordered Magic

Somnar is a potently magical world. There is no isolated mage class in Daughter of Dreams, rather everyone has their own assortment of magic abilities to take advantage of. Sonya's magic plays into her strength as a warrior, enabling her to power her attacks with bonus AP, and reduce the damage she takes from physical attacks.

Using Dynamic Deference and following up with Charged Slash

Dynamic Deference: This spell consumes a large amount of AP initially, in exchange for deferring all of it to the next turn instead. This is a more simple ability, but I hope it will lead to interesting decision making. It allows Sonya to effectively sacrifice her turn in exchange for much more power in the next turn. In this case she idles so the Green Globber will move within range, then follows up with a massive twelve damage Charged Slash.

Also, since AP is shared for the entire party, any bonus AP abilities, such as Dynamic Deference, will complement the other characters' abilities also, by giving them an opportunity to perform their own extra powerful sequence of attacks.

Using Stalwart Focus to avoid the second Green Globber attack

Stalwart Focus: Finally, Sonya can resist physical damage using Stalwart Focus. This spell applies a Shield effect proportional to the party's total AP. The next attack that would deal physical damage to Sonya will be reduced by the value of the Shield effect. In this example, Sonya gains +3 Shield, completely negating the second attack by the Green Globber which deals only two damage.

Part of the philosophy behind this ability is the idea that combat should always be possible without taking damage. In addition to the ability for characters to move to safe positions to avoid attacks, abilities like Stalwart Focus will allow for alternative strategies to reduce or avoid damage. A new player may still take damage, and heal with items, but I want an experienced player to be able to strategize to complete fights without losing health at all.

Stray Thoughts

I hope this gives a good representation of my ideas behind Sonya's character and combat design, as well as more information about the combat system generally. I look forward to sharing more about the other characters as well. Duran in particular will be very interesting to design. Also, bear in mind as always that this is only showing the initial prototype of Daughter of Dreams and things are subject to change and grow over time.

December 28, 2020

[Design] Character Introductions

What I find most inspiring about creativity is the ability to craft a fantasy world, beautiful, new, magical, and completely alien. I have written before about the world-building in Daughter of Dreams and how I wish Somnar to be something different and unique. I consider this game to be a work of epic fantasy, and the story-telling is one of my key design pillars going into this project. The story may not be realized in the game itself until much later in the process, but I have begun designing characters and writing snippets of dialogue from the start. Today I want to introduce those characters. They are merely concepts, so they may change throughout development, but I think their essence will remain the same, only refined.


Sonya is the Hero of Light, who once lead the charge against the City of Shadow, and drove away the enemy, in an event known as the Great Victory. Now, she has been summoned from the ancient past to defend Somnar once again from the dark sorcerer Charon. She is a disciple and soldier of Ta'Reya, and fights with a Sorrite spear destined to defeat the darkness.


Lydia is the Prophet of Light, sent to aid Sonya in her mission. Lydia is an ardent follower of Ta'Reya, and was chosen for her kindness, sincerity, and loyalty. However, the weight of responsibility makes her uncertain, and the grim necessities of war lead her to question even her most deeply held beliefs. But she must persevere in the face of darkness, lest Charon succeed in his nefarious goals.



Duran is an outcast, unwanted by the followers of Light and the common-folk alike. He suffers from a Cinder addiction, a substance which leaves him nonfunctional on the best of days. Furthermore, he bears a dangerous curse, one more terrifying in its power than even the dark magic of Charon. He joins Sonya in an effort to finally commit himself to something valuable, and perhaps free himself as well.




Angela and her familiar, a Void Owl named Kree, herald from a distant land. Angela is an investigative historian, hoping to uncover the lost legends of Somnar, the truth of what happened in the Great Victory. Among those tales, she hopes to find evidence of her ancestors, whom she believes to have originated from the heart of Somnar, yet fled when the City of Shadows fell.




Charon, the dark sorcerer, and the last witness... He has returned to wreck his revenge of the followers of Light, for they once vanquished him generations ago with the aid of Ta'Reya. But they have weakened since, and now he hopes to reverse the flow of time and return the City of Shadow to its former glory. Yet he will find his efforts stymied by an anomaly--Sonya the Hero of Light, human and yet immutable and nearly invulnerable to magical attacks.





Ta'Reya, the God of Light, is the beacon of hope for the followers of Light. The legends say that when the people prayed, Ta'Reya set fire to the Moon of Night, and she is the reason that Somnar has two suns, and will never again to be shrouded in the sinister dark of night. Now Ta'Reya acts again to save Somnar, bringing the Hero of Light back in the hour of need, so that she may vanquish Charon and prevent night from falling again, forever.






Sai'Ra is the God of Pain, among the most dangerous beings to walk the Void. He prefers to work indirectly, and frequently offers his power to mortals seeking great power. He extracts only the smallest price: their eternal pain and anguish. His reach is vast, and his motived are arcane and unknowable... Duran is one who bears the curse of Sai'Ra, and the God of Pain is not quite finished with him yet.





The story throughout Daughter of Dreams will be character driven, a necessity for a procedurally generated game, as it is much harder to tell a linear plot. The interactions between characters will be essential, and I hope to create a flexible system where the various characters may leave or rejoin the current party depending on events in the story. Their unique powers will be expanded upon as I work on the combat prototype, and the specifics of the plot are currently being worked out behind-the-scenes.

What I have presented here is only a brief introduction to the characters. This is an ambitious project, and there is much more depth to the characters that is not revealed in this post. I can't wait to show more details of Daughter of Dreams as I continue to make progress. There may not be many more story information though, as I want to keep most things spoiler-free. Finally, I'd like to thank my brother, who created the concept art used in this post, and will be doing most of the character art for the game itself.

December 08, 2020

[Programming Notes] Turn-Based Combat System

This week, I implemented the core systems of the new turn-based combat system for Daughter of Dreams. This is one of the most technically complicated pieces of code I've written, though it may not seem like it. The challenging part for me was making it as simple as it is. I believe what I have will be powerful and flexible enough to expand easily to support the entire combat system (and probably in-game cutscenes as well, though GML 2.3 sequences may still be a better option). Abilities are modular, and can be assigned to any entity (player characters and enemies), and the combat engine can transition between states fluidly, as well as undo actions.

What It Looks Like

So far, the combat prototype has two main operations. A character can be selected from any number of playable characters, and they can be given an order to move according to basic grid-based movement. These are merely the simple actions I implemented to test the system. As the game expands, I will add new actions that will be supported by the foundational code that makes up the combat system.

Two playable characters with grid-based movement.

System Overview

The combat system is currently comprised of two primary components.
- A finite state queue of functions which return true or false.
- An index of actions assigned to combat entities (playable characters and enemies).

The logic for the finite state function queue is as follows:
1) Run the current function when the update method is called. (Usually in the step event).
2) If the function returns true, progress the queue to the next function.

Next, an action is defined globally, and can be assigned by reference ID to any entity.
- The action includes all the data required to display the action on the UI.
- The action execute method can assign required values for the entities.
- The action can add functions to the combat function queue to define the logic of the action.

Class definitions shows the essential attributes and operations of each component.


System Implementation

With these components in place, the logic for starting a new combat scenario is as simple as adding each step of the combat cycle to the combat function queue. The logic of each step is handled internally, moving to the next state once that function returns true.


Each step (combat_start, combat_player, etcetera) can divert from the primary cycle by inserting more functions in the combat function queue at its own position. For example, the player phase will allow the player to choose actions for their characters. When an action is chosen, the associated functions are added to the combat function queue.


The final combat cycle can be represented with this flowchart. The primary combat cycle is the Start > Player Phase > Enemy Phase > End/Restart. Each player or enemy action diverts the primary cycle by inserting other phases into the combat function queue. Furthermore, actions could be canceled at certain steps, by instead inserting the previous phase. (For example: with Choose Attack, on "confirm" input, insert Choose Target, but on "cancel" input, insert Player Phase again).


System Pros and Cons

This method is powerful because it is easy to transition from each state to any other state, just by appending the next associated function. It handles the turn-based aspect of the combat with the simple logic of the function queue. Each state is handled in order, one at a time. Actions are modular, so they can be assigned to and used by any entity, instead of programming every ability for each entity.

The downside of this system is that at the moment, the function queue cannot accept parameters. Every function used for combat abilities must return true or false, and be designed to run every time the function queue update method is called. If additional variables are needed (such as timers, or damage values), they must be declared outside of the scope of the function. It is possible I will expand the function queue to use parameters as well, but it will complicate the system.

Additionally, while actions are modular, they also require more code this way than they would if each was more specialized. The move action as it stands uses four separate functions (initialization, player input, drawing, and execution). However I believe the flexibility outweighs this complication.

Stray Thoughts

In the future, I hope to regularly post programming notes to cover the more interesting systems that I develop for Daughter of Dreams. I am learning a lot, and I hope if I share what I've been doing that others might find it useful too. Also, if anyone knows of useful articles or posts covering similar topics, please let me know and I will include them in the resources section.

Resources



December 02, 2020

[Progress Update] New Ideas and Turn-based Combat

It has been a long time since I wrote a blog post. Over the summer I had been working on Daughter of Dreams significantly, but unfortunately, most of my designs ended up not working out. Considering the start of a new quarter at college, which was an especially busy quarter for me, I decided back in September to take a break from Daughter of Dreams until I had significant free time again. This has turned out to be a really good decision, and the ideas I had during the summer have been maturing during my break. What I have now is much more solid, so I am excited to now begin in earnest with the development of Daughter of Dreams, as the quarter is over and I have the entire month of December to focus and get some game development done.

I'd like to start this new phase of development with a new blog post covering the most significant changes to my plans and designs. My goal for the month of December is to get a fully working prototype of the combat system into the hands of my alpha-testers. I've been working on character design and story as well, but those are backburner until I have a game engine running.

Turn-based Combat

The first major change to my design is to develop a turn-based combat system. This deviates from the common design of a Zelda-like, which usually has real-time action combat. However, I do not think this is a requirement, as I believe a Zelda-like depends a lot more on key item progression.

The combat in Daughter of Dreams specifically is not fully designed yet. But there are a few features I am considering. I will expand this as I develop the prototype.
  • I will use small numbers for combat values, like the way it is done in the classic Paper Mario games. This allows for a more strategic type of turn-based combat, compared to large number systems, as the player can predict exactly how much damage their attack will do and which strategy will be most effective.
  • Combat will be positional, like a tactical RPG. I am thinking that the combat will take place on a grid, and attacks will target particular cells in the grid. I believe this will create a unique element to the combat, and allow me to design abilities that require more strategy than simply which will do the most damage.
There are several reasons that I decided to shift to a turn-based combat system. A turn-based combat system is much more theoretical than real-time. I mean that the enjoyment of turn-based combat depends less on the art and animation, and more on the pure design and balance. This plays into my strengths, as I am primarily a designer and programmer, and not an artist. Additionally, a turn-based system better supports multiple characters being present, as they become members of the combat party. This will help with the story-telling of the game, which I want to be a major focus.

Story Structure

I have written previously about the world-building of Somnar in Daughter of Dreams and I believe those elements will mostly remain the same. I have not yet shared many details of the plot itself, but I would like to write about a few ways that the new combat system will allow me to tell a more engaging story.
  • The story will depend on many different characters joining the party. This allows me to explore the interactions between characters, have character development, and create conflict through their interactions. Before, I felt restrained to having the main character lead the story on their own, with others becoming background characters limited to specific interactions.
  • Characters will maintain their progress between cycles. Daughter of Dreams has always been planned to be procedurally generated, where the main story takes place over multiple cycles. My plan is for character progress to save between cycles. This includes character development and combat abilities and the experience they have gained. With the new design for combat, there can be a sense of progression that is earned over time, through many cycles.

Dungeon Design

While I am shifting to a more RPG style turn-based combat system, I still want to preserve the Spirit of Adventure that is key to Zelda-like games. I have not considered this aspect very much yet, but I do plan for there to still be procedurally generated dungeons, though the puzzles may depend more on unique dungeon-specific mechanics than key item progression. There is also an opportunity to allow particular characters certain abilities in the overworld (outside of combat), which I will explore as I develop the prototype. Overworld and dungeon exploration, as well as puzzle-solving, are still key design pillars.

Stray Thoughts

This is just a summary overview of some of the ideas I have considered during my break over the past few months. I will hopefully expand more on particular elements once I have more design done on paper. I plan to write several more blog posts soon, covering more about Daughter of Dreams and a few other topics. Finally, my priority now is to create the combat prototype. Stay tuned for updates!


April 28, 2020

[Progress Update] Inventory System

I have made some very good progress over the last several weeks. Primarily I have focused on creating the inventory system for the game. Items serve an essential role in Daughter of Dreams. First, there are the many key items which allow the player to progress through the game. Additionally, the player will collect other optional items, including healing items, charms that grant combat bonuses, crafting materials, and upgrade items. Items are especially important as each region of the game will have its own items, making each one more distinct and interesting. This blog post will cover the features I have finished so far, and explain some of my reasons for different mechanics.

The Inventory Interface

I found it was very challenging to develop the user interface for the inventory for this project. The primary issue is that with the low-bit pixel art, the screen space I have to use is very limited. I wanted to make sure I could show all the information in a compact, but still readable manner. What I ended up with was a grid showing the items, and the name of the highlighted item at the bottom. To show more information, the player presses the B button on the controller, and it will show a dialogue option with the flavor text and options for using the item.

Navigating the inventory and eating a sweet glob.
This method allows all the information to be shown, but I would prefer if the item lore text could be shown while hovering over an item in the inventory. However, the lore is not essential information, and if I were to show it I would need to sacrifice a lot of screen space. The second issue I have with this method is that if you want to use many items, you have to click several times each time to do so. However, as shown in the GIF, you can equip any item to each of the face buttons. If you equip an item first, you can then use it outside of the inventory just by pressing the face button.

I think this is a good solution, at least for now. I will continue to improve it, and hopefully I can show more information on the main inventory screen with some additional tweaks to the design.

Item Rarity

All the items you can collect in Daughter of Dreams have different tiers, indicating how likely they are to appear in loot chests, and how much they might sell for. Among regular items there are dull items, common items, rare items, and legendary items. Some unique items (such as your key items) have the special tier, or the Sorrite tier.

Excerpt from Design Document - Different item tiers.
A special property of legendary items is that they will only ever appear once. Once you obtain a particular legendary item, it will never appear in loot chests again, even if you lose the item by selling it or otherwise. I hope this will make legendary items extra exciting, and of course, legendary items have by far the most powerful abilities.

Status Effects

Status effects are special properties that can be applied to any entity, including the player and enemies. For example, burning an enemy will deal damage over time. Freezing the enemy will prevent it from moving, and deal critical damage if it is attacked while being frozen. Status effects can be applied to entities when they are hit with particular attacks (such as a flaming weapon), or applied to the player when they use a consumable alchemy item.

Consuming a small potion to get the regeneration status effect.
Alchemy items can be assigned to affect the player with any number of status effects, for a particular duration and amplitude. The duration of the effect sets how long the effect will last, and the amplitude will determine how powerful the effect is.

Charms

One feature I really wanted to include in Daughter of Dreams is the ability to customize your combat abilities with extra equipped items, like badges in Paper Mario or charms in Hollow Knight. Charms in Daughter of Dreams require charm orbs to equip, and once equipped provide modifications to the player’s base combat stats, including increasing damage of a particular type that the player deals, and reducing the damage of a particular type that the player receives.

Equipping Charms - Daruk's Fortitude and Pendant of Light.
Many other things are possible with charms, so long as I can add them to the combat stat list. Some other examples include elemental resistances, healing effectiveness, status effect duration, freezing status resistance, and any others that might mix up the combat a little bit. I hope this will provide new options to players and encourage different strategies and play styles.

Excerpt from Design Document - Some different charms.

Crafting

There is one more major feature, which is crafting. This is in many ways an extraneous feature. The game could be fully designed without any sort of crafting, and so I hesitated to implement this feature. But, there are a few reasons I decided to add this feature. Crafting adds much more purpose to items in the game. Each region in the game will have its own set of items, and its own crafting recipes. Additionally, crafting provides me as a designer with more ways to include new items that help make different areas more unique.

Crafting a slimy potion using Green Glob and Strange Leaf
Crafting a new item requires some quantity of one or two other items. You must unlock recipes first by collecting recipe scrolls. There will be many recipes, such that it is unlikely you will unlock all the recipes in one playthrough. Instead, unlocked recipes will carry over between save files. Once you have unlocked a recipe, you can select it from the crafting list (tabbed over from the inventory screen), and choose the recipe to craft it. My goal is to include many crafting recipes using nearly every item in the game. Particular recipes will be useful in specific areas, or combine items from different areas to create more powerful items.

Stray Thoughts

Thanks for reading! I am very proud of how the inventory system came out, and I am glad to share the result with everyone. I actually finished the inventory a few weeks ago, but I have lacked the motivation to focus on my game for a little while. Of an additional note, the GML 2.3 updates are around the corner, and I will need to spend some time then updating this system with new data structures. Next, I will be designing the Flayern area and adding those elements into the game to start doing some terrain generation prototyping.

March 11, 2020

[Design] The Unique Biomes of Somnar

One of the key challenges of designing a procedurally generated game is in avoiding repetition, and maximizing variety. Procedural content has a tendency to grow stale through repeated play sessions, as the player is eventually able to identify the patterns in the generation, and they end up having the same experience each time, even though the map itself is technically shaped differently. I am approaching this problem from two angles in Daughter of Dreams. First, I am designing the algorithms themselves to produce the most varied content I can manage. Secondly, I want to create variety through the environments in which the game takes place.

To this end, I am designing the game world to be split among a small number of very distinct biomes, each of which can be uses as a base for any of the terrain generation. However, I want to go beyond just having varied aesthetics or graphics for each area. To do this, each biome in the game will be designed with its own complete set of mechanics, including enemies, items, crafting recipes, boss fights, traps, and other interactive objects. All of these elements will be designed individually, and I want to focus on making them all interact in interesting ways with the elements around them. (Something like Breath of the Wild's chemistry engine). This is a lot of work, but I believe I can keep the total scope fairly small, and still get more content variety than I would with a bunch of less unique biomes.

My goal is that by creating these distinct biomes, I can change the game experience each play-through in a fundamental way. The skills the player develops in one biome won't work the same in another biome. I want each area of the game to feel and look different, and also play different, requiring new skills and strategies for each new area the player encounters. Then, I may also combine elements of each biome to create entirely new mutations on the base experience.

A selection of different biomes from The Last Librarian.

World-building of Somnar

These distinct biomes are built into the lore of the game world. Somnar is a land of dreams... It is magically unstable to the point where it is destroyed and recreated on a regular basis. The new lands that arrive each cycle do not follow any necessary consistency. Somnar is barely habitable at all, and every place within it is completely extreme, stark and unforgiving. Somnar can be thought of as a completely alien planet. My goal in the world-building is to make a completely distinct universe. The rule is this: nothing on Somnar should even slightly resemble something we might be familiar with on Earth. Everything is made up from scratch.

This gives me incredible freedom with my imagination. This approach to the world-building allows for any possibility, and by incorporating it into the procedural terrain generation and the story, I think it will help solidify the style of the game and make it feel distinct from any other game. For this aspect of the story-telling, I was particularly inspired by the book series The Edge Chronicles, which I read as a kid. I still remember distinctly so much about the unique world of those books, the inconceivably strange creatures, the Gloamglozer, Sky Pirates, Banderbears... I may not even have a chance of rivaling the world-building of those books, but they certainly provide a vision to strive for.

Flayern Forest

So now I'd like to share some of my ideas for the first area which I will fully develop myself for Daughter of Dreams. It is Flayern Forest... the Forest of Hate. It is completely uninhabitable by humans, for it is already inhabited by the Plants. The wilds of Flayern writhe with twisted life, dangerous, poisonous carnivorous plants. The colors are unnatural... the foliage is a dense myriad of vibrant pink, blue, and red. The only green is the river--the toxic waters that give life to the Plants of Flayern.

Concept art for Flayern Forest -- The trees loom over the still, toxic waters.
There are many types of these evil Plants, many forms of which could barely be conceived of to exist. The ferns bare sharp fangs designed to snag their victims. Sentient vines creep among the undergrowth, trapping and entangling any stray wanderer, so they may soon be dissolved with acidic saliva. Some of the demonic Plants are not even rooted to the noxious soil, and prowl the forests... great beasts on the hunt for vulnerable prey.

Concept Art for Flayern Forest -- I went over there and took notes on what I found!
But among the twisted brambles lie the secrets of the forest. The most succulent and delicious fruits grow deep in the forest, on the branches of the sacred Kafka tree. Many of the most aggressive plants are good to eat, once they have been safely gathered. Indeed, the legends say that all life in Somnar originated from the primordial rivers of the Flayern Forest...

Needless to say, I am excited to start implementing some of these elements into the game. None of this is finalized by any means, it's all just crazy ideas. I've had some of the most fun ever coming up with these concepts, and this is only the beginning. Flayern is just one of several unique environments I hope to allow the player to explore. It is a proof of concept. If I can make Flayern fun to explore, then I will continue to develop new areas. Let me know what you think!