X Tutup

Tuesday, September 8, 2020

Wildermyth OST Kickstarter

 


Candy here, the composer. The Wildermyth OST Kickstarter is live! The Kickstarter will raise funds to record the soundtrack of Wildermyth with real instruments. If you have a moment to check out the campaign page and share it with friends who may be interested, I really appreciate it!

This is near and dear to my heart; I always intended to record the music live but it turned out to be a much larger endeavor than I imagined in the early days of the game. Far too large for my original plan of recording everything by myself. To do this right, I want to be able to hire a group of musicians. 

Recording the soundtrack live will bring a warmth and life to the music that can't be achieved any other way. It will increase immersion in the game and create a much better listening experience. 

There are some great rewards for the backers! In addition to a copy of the soundtrack, you can get a special role on our Discord, a limited edition pin, a music box, music lessons, custom artwork, a D&D session run by me, an event in the game inspired by your ideas, and producer credit. Details about each of these rewards and the project are available on the campaign page.

Throughout the campaign I'll be sharing lots of things with backers - profiles on the performers and team members of Wildermyth, behind the scenes information about some of the music that's been written, some info about my writing process and setup, and milestone celebrations. I look forward to sharing these things and more with some of you!

Thank you so much for your support!

Wednesday, April 1, 2020

How To: Create a Campaign

Two characters in a library: "I swear, I've read every one of these books, and the type of story I'm looking for just doesn't exist." "Maybe you could write it yourself?"



Wildermyth is, among other things, a game about storytelling. We want our players to be able to tell their own unique and unexpected stories through their heroes and their adventures. But in addition to that, we want modders to be able to tell their stories through custom campaigns and quests. As our comic and plot editors have grown, so has our excitement about getting our storytelling tools into the hands of players who want to tell stories. One of the main issues we've been facing so far is that our editors can be a little clunky. They can do a lot, but we're kind of half-documenting them as we go, and there can be a pretty steep learning curve.

In our latest patch, I took some time to add tooltips and descriptions to a lot of the campaign side of things to make it easier to understand the developer magic that makes our game tick. I also took a stab at making it easier for players who don't really care how the game ticks, but still want to tell stories.

Create Campaign Dialog Window
This is the Create Campaign dialog! The basic idea is to have a simplified way to create all the parts of a basic story. There are some options for each chapter, but if you do nothing but open it up, name your scenario, choose a Main Enemy Type, and click Create, you'll have already created a full multi-chapter campaign with end-of-chapter missions. From there you can just go into the comic editor and do some artistic storytelling without ever touching the more complex plot creation tools.


Creating a Campaign

You'll need:


Step 1: Create a New Mod

  • Open the Editor from the main menu (Tools > Editor)
  • Open the Content and Comics Editor. This is where most of the work on comics, events, and campaigns happens.
  • Click the "Mods" button at the top-left, then click "Create New Mod". Create your mod, then click "Confirm".
As soon as you create your mod, you'll see the folder for it open in your file explorer. All the files for your mod should end up in this folder. When you're done creating your campaign or any other kind of mod, this is the folder that will be uploaded to Steam Workshop or elsewhere.


Step 2: Create a New Campaign

On the top left, switch from the "comics" tab to the "scenarios" tab. Click the "New Campaign" button, and you'll see the dialog shown above. Select your mod, give your campaign an id (for example, "myCoolCampaign", choose how many chapters you want it to be, the main enemy type, and the type of heroes to start with, and then make sure Auto-generate Chapter Sub-Plots is checked.

The right side is where you can define some of the specifics of your campaign. You can click Create without modifying any of this, but I'll go over the options in case you want to make something specific.
  • Introduction Mission: Most campaigns start out with a mission that introduces the heroes and the threat. This will create that introductory mission, and promote your farmers to heroes if you started out with farmers. You can also make this and the Capstone Assault into custom missions, which there is more info on below. (Note: If you use a custom mission here, you'll need to add the promotion step yourself)
  • Clear All Hostile Sites: For some chapters, you'll want the player to clear out the whole map before they can fight the final group of enemies. You can also choose to only require a certain enemy type to be cleared out (usually the main enemy type).
  • Capstone Assault: Most of the time, you'll want a capstone assault mission for each chapter; the final battle before the chapter ends.
  • Tiding: Sometimes, you might want to show a comic panel or two during the interval. This is something that happens during the "years of peace" between chapters.
  • Omen: After chapter one, chapters should generally have an Omen comic that displays during the interval. This comic introduces the next chapter, i.e. why is the threat back? What are the hero goals?
  • Custom Mission: This is a bit more complicated, so only do it if you're ready to get your feet wet with some other tools. If you want your intro or capstone missions to have custom maps, enemies, and goals, you can create a custom mission. Checking the "Custom Mission" box will show a Create button. Clicking the Create button will open up the New Fight dialog. This should already have the recommended ids and options selected, so just clicking Create is usually all you need to do to start.
New Fight dialog
The Id text field should automatically be filled with the id of the arrive event for the custom fight.

Custom Mission id entry field and create button
I'm not going to cover how to actually adjust the custom fight to your liking here, but you can read more about that in How To: Write your own Villain for Wildermyth - Part 2


Step 3: Name your Campaign

You should now see your campaign show up in the Campaigns list. Neat! You'll want to select it, expand the scenarioInfo, and give it a name and a blurb (which start out as **myCoolCampaign.name and **myCoolCampaign.blurb). This is the title and description that players will see when they go to start a new game. Don't forget to save!

Campaign scenario dialog with filled in name and blurb fields
Great, now you have a working campaign! If you go back the the main menu and start a new game, you'll see the campaign you created show up in the list of choices. You can play through it and it should work, though all of the comics will just be placeholders.


Step 4: Make Comics!

Now that you've got your campaign up and running, all that's left is to add the story! Switch over to the comics tab, and you should see all the comic events that were just created for your campaign.
Comics panel showing comic events created for a campaign
If you click through these, you'll see they're mostly empty panels or only have a single hero in them. I'm not going to go into detail about how to use the comic editor here, but most of the time, you'll be clicking New Story Role to add specific heroes to the comic, and then adding more comic panels, text, and images. 

You can find some basics on the wiki in the Comic Editor Reference. You might also find How to: Add an Event to Wildermyth to be helpful. 

And that's it! You've got yourself a basic campaign! If you want to do more complicated things, you'll need to do a bit more digging into the tools, but you can use this as a starting place.


Plots: A More In-Depth Look

If the Create Campaign tool didn't give you quite what you wanted, no worries, you can always dig in and change things to be the way you want afterward! Under the hood, the Create Campaign window does several things that can all be done individually:
  • Creates a Campaign Scenario: This is used to start the campaign from the main menu, and is hooked up to a campaign Plot
  • Creates Several Campaign Plots: These execute the logic of the campaign chapters, add objectives, control win and lose conditions, etc.
  • Creates Events for Missions, Tidings, and Omens: You saw all these events in the image above. These events are triggered via the campaign Plots.


Main Campaign Plot

If you go over to the plots tab, you can see all the plots that were generated for your campaign. This includes one main plot, and a sub-plot for each chapter of your campaign. (If you chose to create custom missions, you'll also see plots for those missions, starting with "M_" for "Mission")

Click on the main campaign plot (without the number at the end) to take a look at it.
Main campaign plot
You can expand and look at each of the steps individually to get more details on how things are working. All objectives and steps have descriptions and tooltips, but here's an overview of each of the steps.
  • StepC_MapConfig: Configures the overland map. Sets up where the capstone sites are, where enemies and towns are, and other related things. This is called at the start of a campaign.
  • Step_SubPlot: There's one of these for each chapter, mostly for organizational and clarity reasons.
  • StepC_DoInterval: In between each chapter is an interval. This is when the years of peace occur, heroes can upgrade gear, etc.
  • StepC_Victory: Once all the chapters are completed, the player wins!


Chapter Sub-Plot

Each chapter sub-plot will look pretty similar, depending on what options you chose for each chapter when you created the campaign. They'll look something like this:
Chapter sub-plot
Again, these all have in-editor descriptions and tooltips, but here's an overview of the objectives and steps.
  • Objective_CampaignDefeat: Causes a game over if there are ever no living heroes or no living towns
  • Objective_CampaignUpkeep: Manages certain overland things that happen over time, like relationship points, burying dead heroes, and starting hook quests
  • Objective_ClearAllHostileSites: Succeeds when all hostile sites have been cleared, optionally only requiring a specific flavor of enemy to be defeated or ignoring certain sites (usually the capstone site)
  • Objective_LocateAndUnlockSite: Locks the capstone mission until ClearAllHostileSites is completed
  • Objective_AssaultJob: Creates an assault job on a given site
  • StepC_BeginChapter: Starts a campaign chapter. Clears any stored roles from the previous chapter, adds in any defined roles for this chapter
  • Step_Encounter: Starts a mission immediately. This specific Encounter is used to start the introduction mission, since there isn't a site or job to assault like there is for most missions.
  • Step_AddObjectives: Adds the given objectives to the plot via the plot's objectives list. This is how the objectives are started.


And that's all!

This is same plot system that all the existing villain campaigns use, so if you're trying to accomplish something that another campaign like Age of Ulstryx or Enduring War does, you can always enable that mod via the top-left Mods button, and then look at how those plots are set up for reference.

Happy storytelling!

Wednesday, December 11, 2019

Roadmap to 1.0


Since we released we've been getting a lot of questions about various features, bugs, and additions to the game. We've created a roadmap so you can see what we plan to add for our 1.0 release. 

This does not include bugfixes or small improvements that we will continue to work in as we go along. It's also, to be honest, just our best guess, in terms of exact features and also in terms of timing. So expect it to change over time as we learn more.

Wildermyth Roadmap to 1.0


Note: this will be updating as time passes! But as of December 2019, this is where we are:

Imminent Work

Happening over the next couple months
  • Deepist Campaign
  • Finish opportunity quests
  • Refine/update old & unsatisfying events
  • "Legacy Hero" mode for generic campaigns
  • Develop tech for translations
  • Some modding improvements
  • Deepist ability rework
  • Follow-ups for TurtleGuardian (mortal choice + tidings)
  • UI art reskin
  • Overland map UI cleanup
  • Advance transformations during intervals
  • Bigger fonts for high DPI monitors

A Bit Later On

Happening through spring-ish
  • Thrixl campaign
  • Intro/capstone/finale events for generic campaigns
  • "Undo" system in-mission
  • Upgrade graphics library
  • Borderless window
  • Cross-class abilities rework
  • XP more visible
  • Back button in comic panels
  • Better resource-get comic panels
  • Revisit incursion/defense comic art
  • Customize pronouns & orientation for heroes
  • Customize facial hair
  • Persist family relationships across legacies

Eventually... Before 1.0 Launch

Happening over the summer

  • Drauven campaign
  • More combat maps
  • Performance improvements
  • Drauven ability rework
  • Legacy Improvements (sorting, using as NPCs, weapon unlocks)
  • Ironman mode
  • Controller Support
  • Steam Achievements
  • Major modding improvements

Ongoing

Sprinkled in between the other bigger chunks of work
  • More events: parent/child
  • More events: lost lovers/rivals/parents/children
  • More events: follow-ups for heroes w/transformations
  • More events: player determines a relationship
  • More events: arriveAtSites & wildernessEvents
  • More music (for boss fights in particular)
  • More sound effects
  • As always, balance and bugfixes


The living version of the roadmap is here.

Wednesday, November 13, 2019

Wildermyth is now on Steam Early Access!


Get Wildermyth on Steam here!

After each chapter in Wildermyth, the map grows and opens up new lands for your heroes to explore. And after years of development and months of beta, we're finally ready to let the heroes loose on Steam!

Huge thanks to our Discord and all of the beta players who have helped bang this game into shape over the last year. Hearing the crazy stories about the characters you've made and your experiences in the Yondering Lands—it's what this whole endeavor is all about. <3

* * *

And if you're actually on the blog here, you get the honor of listening to our artist spout off a bit longer. Imagine her sitting in an armchair next to the window, maybe swirling a glass of wine and gesticulating a lot.

(We don't have an armchair in the office. And she doesn't have any wine right now. But she does gesticulate a lot.) 

For our twitter, I was doing a series of "Before & After" images, showing the first round of things like heroes, environments, & comics vs. how they ended up today, near the end of 2019. As I sifted through the blog for "Before" images, two major things struck me:

First, we thought we were really close to release back in like 2015.

"The pace of development is very good right now, and I think I'm well positioned to finish the core feature set in the next 3 months. After that, it will be all about content, polish, and growing our audience." 
Feast your eyes upon that 2015 hotness.

HA. HAHA. HAHAHAHAHA. You sweet summer children, you had no idea what the next four years were going to hold.

Second, every time we'd post about a new feature, or some in-game art, we were proud of it. Even back when our heroes had no shading and doofy haircuts and our UI was placeholder and our environments were visually just... all over the place. We thought it was looking pretty baller.

This realization is both terrifying and inspiring.

Terrifying because right now, again, we think things are looking pretty baller. I mean, the UI could use a visual pass, but you know, that'll come eventually. And so, are we going to look back on 2019-Wildermyth and be just as embarrassed by its appearance as we are of 2015-Wildermyth's?

(I kinda hope so, because it means the game was successful enough that we worked on it for another four years.)

And of course, it's inspiring because we have been making it better. Constantly. You don't realize how far you've come in the day-to-day grind until you look back and go "Holy crap, our comic editor from 2 years ago was noooottthiiinnng compared to what it can do today."


That's how you build big things, I guess.  One day at a time. One Trello card at a time. Nate admitted that if he had known back in 2014 how much work this game was going to take, he probably wouldn't have done it. I don't know if I would have.

But we did.

For some indie games, time is the enemy. You've gotta release quickly, you've gotta jump on that new technology before everyone else does. We're absurdly lucky enough to not have a project like that. We have a project about hand-drawn art and lovingly-crafted stories and details that stack so deep on top of each other that we've had a really hard time describing the game succinctly in interviews and stuff. We wanted to generate characters that surprised and delighted us with every playthrough, and I still message the team on Slack when I get something particularly good out of our hero-name-generator.

Tuesday, October 22, 2019

How to: Write your own Villain for Wildermyth - Part 3

This is part 3 of a series where I'll teach you how to write and implement your own "main story" for Wildermyth.

Part 1 - Creating a Villain
Part 2 - A Custom Fight

Wildermyth is a mythmaking tactical RPG currently in beta. Our philosophy is to put as much storytelling power into your hands as possible, and part of that is exposing our tools so that you can craft your own stories inside the game.


That's our goal, anyway. The tools I'm going to show you today are under active development, but they work right now and they're only getting better. Some of this stuff is documented on the wiki, and some needs to be. If you decide to give this a shot, find me on our Discord. We have a tools-and-modding channel just for this, and I'll be thrilled to answer your questions and help however I can.

How To: Create a Custom Monster in Wildermyth



Wednesday, October 16, 2019

New Trailer, New Campaign and an Official Release Date

It's been a couple of years, our gameplay looks loads better, we have more features to, er, feature, and it's high time we made an updated trailer for Wildermyth:


Oh and hey, what's that at the end? Looks like Wildermyth has an official Steam release date:

Steam Early Access:
November 13, 2019!
https://store.steampowered.com/app/763890/Wildermyth/

You heard it here fir—okay, you probably didn't hear it here first. This is a dev blog. Anyway, mark your calendars and give it a wishlist!

(And remember, those of you who bought the beta on itch automatically get Wildermyth on Steam as well. Thanks for being awesome.)

* * *

With that comes a new five-chapter campaign, our second one after the introductory Ulstryx campaign!

This one is called Enduring War, and it features Morthagi as the main enemy. You'll be beating back the clockwork undead, of course, and we're also hoping to give you some chunky, meaningful choices during the campaign that explore what it means to be human, mortal or otherwise...


So then one thousand years later, this becomes your problem. How so? 

Give it a whirl and find out.



Patch Notes: 0.7+74 Agarantha


0.7+74 Agarantha


Friday, August 30, 2019

How To: Write your own Villain for Wildermyth - Part 2

This is part 2 of a series where I'll teach you how to write and implement your own "main story" for Wildermyth.
Part 1: A First Playable(Note - if you completed Part 1 in an earlier patch, you might need to run through those steps again, since the tool chain has improved and the data structure has changed a bit. This stuff will stabilize over time! Contact me if you need help.)
Wildermyth is a mythmaking tactical RPG currently in beta. Our philosophy is to put as much storytelling power into your hands as possible, and part of that is exposing our tools so that you can craft your own stories inside the game.



That's our goal, anyway. The tools I'm going to show you today are under active development, but they work right now and they're only getting better. Some of this stuff is documented on the wiki, and some needs to be. If you decide to give this a shot, find me on Discord. We have a tools-and-modding channel just for this, and I'll be thrilled to answer your questions and help however I can.

How To: Create a Custom Fight in Wildermyth

You'll Need:

  • Wildermyth Beta - get it here
  • Java (64 bit) in order to run the dev tools


Step 1: make a plan

For this article I'll be continuing to work on the Heart of the Forest campaign I sketched out in Part 1. Here's the outline again:

Introduction
  1. Intro Event: a rumor reaches town of strange beasts in the woods. Three friends decide to investigate.
  2. Fight: You find a shrine, and you're attacked by Thrixl. You learn they've been disrupting shrines.

Chapter 1
  1. Goal: Clear all hostile sites to unlock chapter one boss
  2. Fight: A forest guardian is slain, but you kill the thrixl responsible.
  3. Interval ~10 years pass

Chapter 2
  1. Omen: the woods are growing wilder and more angry, and the thrixl have returned in greater force. The heartseed has been stolen from the fallen guardian.
  2. Goal: Track the thrixl to a poisoned stream. 
  3. Fight: The seed has been corrupted and planted at the source of the stream, poisoning the water. Kill thrixl and corrupted guardians. 
  4. Victory: Over time the forest heals, yay!

We'll be working on the first fight, where the heroes are scouting in the woods and find a shrine desecrated by some weird creatures.

Here's a little sketch of how I think I want the map to look:



For this fight, I want the heroes to approach the shrine in the center, and then get ambushed by Thrixl from the two sides. We'll create three comics, an arriveAtSite to set the scene, a midMission event to announce the ambush, and a victory to wrap it up.

Step 2: Create a New (Basic) Fight

Run scratchpad, go to Site Lab.



This is where we'll be spending most of our time. Site Lab is all about previewing and editing combat maps. Find the New Fight button in the upper-right hand corner.



And press it! Fill it in something like this. Keep all the checkboxes checked! They'll save us some legwork.



Go for it.

So, that created a whole bunch of stuff, here's the breakdown:

Mission Map: This is the map itself, it's always created, and it defines the terrain, visuals, and where to sprinkle random scenery, as well as defining spawn points and stuff for the plot to use. You can view the map in SiteLab.
Scenario: This is how we will test drive the fight from the main menu, without having to embed it into a campaign. You can take a look in the Scenarios Editor (Content Editor, Control+4)
Plot: The plot controls how the fight is run, when things spawn, what the objectives are, and little things like defeat and victory. You can view it in the PlotView but normally we'll work on it in SiteLab where it's displayed right below the Mission Plan.
Arrive Event: This is a comic event that can be called from the campaign, that will kick off this fight. You can view it in the Comics tab or Effects tab.
Mid-Mission Event: If we want something to happen in the middle of the mission, like an ambush, a discovery, whatever, it's fun to have the heroes talk about it with a mid mission event. It's optional but we'll be using it here.
Victory Event: The comic that will be played on victory. We generally don't bother making defeat comics, to be honest, but you can if you want mission defeat to be a viable story path. Usually it makes more sense to end the game if the player wipes on a plot mission.

Step 3: Test it

This fight should actually work, just as it is, so let's take a look! To convince the game to show you the dev tools, you'll need to add a file called devMode.txt to your install folder, like this:



There doesn't have to be anything in the file, the name is all that matters. Now when you launch the game you should see an option called "New Battle." This is how we're gonna test our fight.



Find it in the list...



You should see the mid mission event play, and then the fight will start. The default roster is just one farmer, who probably definitely won't win this fight, so... When you're done let's head back to scratchpad and make some changes!

(Note - the Arrive event is not played when using the Battle menu, but it will be useful when we integrate our fight into the campaign later.)

Step 4: Edit the Map

Head back over to Site Lab, and use the Scenario dropdown to find our map, like so:



Ok now this is the fun part! But Also I'm gonna be honest with you: this tool is maybe not what you were expecting.



So yeah. The way it works is, there's a grid of text that controls the individual tiles. Here's the (default) meanings of the characters:



Characters not on this list can be used for spawn points or other purposes, as we'll see in a bit. Based on my sketch from earlier, I'm going to enter some data. I want the heroes to spawn at the bottom, so I'll put the '1' there, and I want the monsters to spawn in on the wings, so I'll put a '2' at each wing, like so:




(You can press **New Seeds** over on the right (Control+R) to see what it looks like and adjust as you go.)

Let's take a moment to fix the other problems with our fight - the monsters are the wrong group, and there's only one farmer on our side. Head over to the Scenarios tab (Control+4) and find our scenario in the second list:



We'll set the foe to Thrixl instead of Gorgons (Inhabitants -> 0 -> threat -> flavor), and we'll set calamities to 0 there as well.



Then expand the scenarioInfo at the top and define a roster for the scenario, like we did in part 1 for the campaign:



Save your changes (Control+S), and then head back to the Map view (Control+8) and refresh the map (New Seeds -> Control+R). If you don't save the scenario, the map view might not pick up your changes. Now you should see a warrior, hunter, and mystic, and thrixl spawning in the corners. Great!

Let's also set the biome to the forest, by setting the environment, like so:



Now, I want a focal point in the middle that they have to approach, and I also want to clear away some of the excess furniture, so I'll put some more marks on the map, like so:


The lowercase 'o' character just means "don't put scenery here," and you can find it in the legend to make sure. The 'ssss' is where we want the shrine to be, and the '3' is where we want the heroes to approach to investigate. You don't have to use 's' or '3', just check the legend, and use the same character in the next step, where we tell the map what to do with those locations.

First let's define the focal point. We'll create a piece of scenery where the ssss is, by adding a Map Detail. Click the New Detail button and choose MapDetail_SingleExactScenery.



for the location select New... TilesFromMap and set the mapInputCharacters to "s" (because we put some ssss on the map where we want the shrine to appear.) For the sceneryId, enter "shrineTreeTeal". (You can browse the sceneries in SceneryLab to learn what your other options are.) That should get your shrine spawning:



Hot! For my maps, I like to go a bit further, messing around with floor layers to create the impression of a path on the forest floor. You can see how this is done if you load some of the Ulstryx maps and poke around, there's a variety of different techniques available for map crafting. But for now let's get back to making it functional.

Step 5: Create an ambush

We want the mission to start out without any monsters, to give the player a chance to look around and get spooked out a bit. Then, once the player approaches the shrine, we want to play the midMission comic and spawn the monsters! To do that, we're going to add an objective to step in a certain region, and tell the plot to wait until that objective is complete, before playing the comic, etc..

Scroll down to the "Plot" section, and we'll add new Objective called Objective_EndTurnInRegion



Set the "region" to TilesFromMap and set the mapInputCharacters to "3" because we put some 3333 on the map for where we want the player to approach to investigate.

Now we need to add the objective, and we want to wait for it to complete before firing the event and spawning the monsters. We can do all of this by adding a new step, Step_WaitForObjectives. Add the "endTurnInRegion" objective to the list to wait for, and move the step upward so that it's just after Spawn Heroes. Make the mid mission event next, and the monster spawn after that, and leave the AddObjectives step last. Your plot should look like this:



Because steps operate in-order, the mission should go like this: set up, spawn the heroes, then wait for the heroes to approach the shrine. When they do, show a comic. Then spawn the monsters, and lastly, add an objective to kill them all. If the heroes succeed, play the victory event. Feel free to give it a spin in-game!

Step 6: write the comics

Let's hop over to to comics view and embellish our stories a bit. I'm going to move fast here because making comics isn't the point of this article, but you can read more about it here on the wiki.

I'll do a quick little arrive:



And a scene at the shrine:



And a victory scene:



One thing about the victory is, because any of the heroes might die in the fight, you might want to make most of the roles optional, or write a separate fallback event with fewer required roles, if you prefer. It shouldn't break the game if you don't, but it's nice to have stories that react to the actual in-game situation.

Step 7: hook it up

Now let's integrate our fight into the larger "Heart of the Forest" campaign we started in Part 1. In the Plots view (Control+0), find C_heartOfTheForest, and add a new Objective, Objective_AssaultJob.

Set the site to "otherSite", and set the arriveEvent to the arrive event we generated, something like "plot_hotf_1_1_shrine_arrive".


(If you're wondering where otherSite came from, check the MapConfig for chapter 0 to see how it's specified. You can specify whatever sites you want that way, and give them whatever roles you like.)

Then, create a Step_WaitForObjectives to wait for the Assault. Put it right before the start of chapter 1, like so:


Step 8: play your story!

Scout the tile, and assault it. You should see your Arrive event:


It worked!

So, now we've got a custom fight in our campaign, and honestly, stringing together custom fights is most of the work that goes into a villain (aside from writing comics, of course!)

These are the core tools we use to build game content. Maybe next time we'll talk about building your own monster, or we can go into more depth on another topic if I get feedback in that direction. Thanks, and happy writing!

Monday, July 22, 2019

How To: Write your own Villain for Wildermyth - Part 1


We call Wildermyth a "mythmaking RPG" because or philosophy is to put as much storytelling power into your hands as possible. Part of that is exposing our tools so that players can craft their own stories inside the game. Right now, we're in the middle of adding a rather large feature to the game, that we call "Villains." It's still a work in progress, but when it's complete, each time you start a new story, you'll select a "villain," which really just means a "main story" for that playthrough.

This means that on top of the regular procedural content, there will be a single story that connects the whole campaign together, that gives it meaning, that ties all the action together and punctuates it with stories and designed fights. (See this previous article for background on the what and why of Villains.)

Sound fun? I'm gonna teach you how to create your own "main story" for Wildermyth. If you can DM a game of Dungeons and Dragons, you can write your own Villain for Wildermyth.

That's our goal. The tools I'm going to show you today are under active development, but they work right now and they're only getting better. Some of this stuff is documented on the wiki, and some needs to be. If you decide to give this a shot, find me on Discord - I'll be thrilled to answer your questions and help however I can.

Ok let's get to it!


How To: Write a Villain in Wildermyth

You'll Need:
  • Wildermyth Beta - get it here.
  • Java (64 bit) in order to run the dev tools
  • An idea for the story you want to tell!

Step 1: outline a story

Make a quick outline of what you want to happen in your story. We've learned that it's much easier if you have some idea of this upfront!

Wildermyth campaigns take place in a chapter structure, with intervals (years of peace) in between. Start by breaking your story down into a series of chapters, where each chapter has one (or two) big goal for the heroes. Then break it down further, event by event. Try to map out how many events you'll need to write.

For this series, I'll use a very simple 2-chapter story I'm calling "Heart of the Forest". Here's the outline:

Heart of the Forest Outline

  1. Introduction
    1. Intro Event: a rumor reaches town of strange beasts in the woods. Three friends decide to investigate.
    2. Fight: You find a shrine, and you're attacked by Thrixl. You learn they've been disrupting shrines.
  2. Chapter 1
    1. Goal: Clear all hostile sites to unlock chapter one boss
    2. Fight: A forest guardian is slain, but you kill the thrixl responsible.
  3. Interval ~10 years pass
    1. Omen: the woods are growing wilder and more angry, and the thrixl have returned in greater force. The heartseed has been stolen from the fallen guardian.
  4. Chapter 2
    1. Goal: Track the thrixl to a poisoned stream. 
    2. Fight: The seed has been corrupted and planted at the source of the stream, poisoning the water. Kill thrixl and corrupted guardians. 
    3. Victory: Over time the forest heals, yay!

This is a real simple story, but even so for this article we're not going to get into most of it. If you don't have a story in mind, just play along with this one! Once you've made a few comics you'll have a better understanding of what you can do with the medium.

Step 2: create a mod

Villains are intended to work as mods, so let's make a mod to put our files in. Then we can easily share our work! Run scratchpad, go to the content Editor,


and click on the mods button in the upper-left corner.


The Mod Config dialog shows you which mods the Editor is loading.

In order to see your content, you need to create a mod and make sure it's selected. So, click New Mod and fill it in with your details.

That will create a folder inside your install directory, like this:

Everything for your villain should live inside here, so that you can give this folder to someone else and they can play. Make sure your mod is selected in the Mod Config dialog, and we should be ready to start!

Step 3: create the campaign

Head over to the Scenarios view by using the editor dropdown or pressing Control+4.


Press the New Campaign Button in the upper left corner.


And fill in the details.


This creates the campaign scenario. The scenario will be accessible from the main menu under New Story. Take a look at the Map Config -- this object defines how the world map is generated. You can mess around with it a bit. We also checked the box to create a villain plot, so one was made for us. We'll take a look at that later.

Step 4: write an event

The introduction to Heart of the Forest needs 3 events. The intro event sets the stage. Then the party scouts a tile and assaults it. The arrive event needs to establish the situation, and the victory event will wrap up the introduction. Writing events isn't the main focus of this post so I'm going to move a bit fast here.

From the Effects View (Control+2), press New... button.


This opens up the new event dialog. We want a generic plot event, and go ahead and name it.


Alright. Press "Create" and take a look at what it made. This can be confusing, because there's a lot going on here. You might want to read up about creating comics on the wiki, but basically "targets" are individual entities that must be found in order of the event to work, and "outcomes" are what to do when the event happens.

I want the first intro event to have no choices, and just be the three friends deciding to go for a walk in the woods. So I'll delete the choiceTarget and create a new Description outcome, so it looks like this:


Then we can go over to Comics View (Control+1) to write the story.

I'll press New Story Role button (upper left corner, in the "controls" section) to create a leader,

And then make 2 more story roles for greedy and bookish. Then I'll make a quick little intro story like this:


Ok... the comic tool is pretty sophisticated but I'm not going to get into it right now. You can check out the documentation and ask questions on discord. Please write a better story than this one ;-)

But first let's finish up here so we can make it show up in-game! Save all your work! (Control+S)

Step 5: define the plot

Over in Plots View (Control+0), you should be able to find your campaign plot. It will be called C_heartOfTheForest or something and should be listed under your mod. Click on it. There's nothing here yet, so let's add a New Step.

Pick StepC_BeginChapter. Set the chapter to Introduction.

Make one more step, this time a StepC_Event. Add our new plot event to the eventId list. (It's a list in case you need to define several fallback events.) You can search using the suggestions box, and when you have it, it should look like this:


Whoa, some error messages! That's super cool!

The error messages tell us that we need to inject roles in order for the event to work, so let's set that up. In the injectRoles list, click New Entry a couple times. We'll map from town to site, and from party to party. That should look like this:


What's going on here is that Plots keep track of a number of different roles, which can be defined or used in the steps and objectives. You can use those roles to fire events. (Here is some reference on how events use roles). There is validation to help with this, but the tooling and documentation is still a bit thin here, so for now let me just explain these particular roles.

The town roles is defined by the BeginChapter step, because there's a town added to the map in the introduction. Our event calls for a "site," so we map "town" to "site" and that's fine. The party role is from the roster that you'll roll when you start a new story....

Hmmm.... I forgot to set up the roster. Let's go back over to the scenario view, find our scenario, and expand the ScenarioInfo object. This object controls how the new game dialog shows the scenario. Let's define some roster slots. For simplicity I'll start with a greenhorn warrior, greenhorn hunter, and greenhorn mystic, like this:



Then I'll head back to Plots View and add StepC_Victory to the end of our plot.


This is a pretty simple plot. All it does is start the chapter, play a story, and then you win. Let's see if it works. Save your work (Control+S)!

Step 6: test it out

Load up the game and hit New Story.


Super cool! If you're worried about the unlocalized text, we'll get to that in a later article. Right now the tooling is a bit awkward for it, but we'll get it fixed up some day. Roll a party and start the game. This is what I see:


And then Victory, and the credits roll. Rad!

Step 7: add some gameplay

We'll go just a bit farther today, so that we have a game and not just a tech demo. Back in the content editor, in the Plots View, let's delete the StepC_Victory and instead start chapter 1. Then we'll add some objectives.


Objectives can show up to the player, and they're also how we update things over time, test victory/defeat conditions, etc.. Choose Objective_ClearAllHostileSites. This objective is completed when the player clears all hostile sites (that aren't locked.) You may also want Objective_CampaignDefeat (which ends the game if all the heroes die or all towns or destroyed.) Finally, Objective_CampaignUpkeep manages things like hook quests, RP, and burying fallen heroes.

Just defining an objective doesn't activate it though, that's done in a Step. Use Step_AddObjectives to activate all three objectives after the start of chapter 1. This will start checking the objectives after chapter one is begun. Then add a WaitForObjectives step and specify to wait for Objective_ClearAllHostileSites. This will pause the plot script until all objectives are complete or failed.

Finally, add the StepC_Victory back in. It should look like this:

Step 8: play your story

Save your work and check it out in-game. You should now have a story with an intro, three fights, and one wilderness event, that's backed up by all the regular procedural content. From here, you can add a victory event, embellish the story, or start exploring what else the plots can do!

Next time, we'll add an interval and maybe a custom fight! What would you like to see? Find me on Discord and let me know :-)


X Tutup