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 :-)


Saturday, July 6, 2019

A Midsummer Night's Check-In

Hi guys, it's Annie! It's also summer. Which means in Texas (where Nate and I are), the heat is slowly getting heavier...


the kids are around more...


and development hours become scattered and precious.

But we're plugging along with some stuff that we're pretty excited about, and we hope other people will be too! Eventually. When we release it. Which—some of it will be soonish, some of it will be later this summer, and some of it might be a little closer to fall. But in lieu of actually being able to release the content, lemme post a check-in on how things are going!

Soonish:
While Nate and I are a little more constrained by our summer hours, others on the team have become whirling game-design dervishes (shout-out to our man Patrick here)! We've got a lot of combat clarity work happening, which means things like:
  • New VFX for interfusion, hopefully making the process a lot more visually clear.
  • A rework to "stunting," which used to be hard to understand and not satisfying. We've got some base changes to it, and more coming later (see below).
  • Increasing visibility of threats & stuff on the overland map, so that you can become more accurately terrified of what your enemies are up to.
  • More VFX/audio for things like flanking and shredding, upping that crunchy satisfaction factor.
  • Remember that stat called "wield" on weapons? And you're like, "What is that anyway?" It's gonna be simpler and make more sense soon.
  • Better balancing when it comes to getting recruits in events.
Later This Summer:
I've been in the Photoshop mines, crafting a bunch of new weapons for y'all. Like, a bunch. Like, I realized after doing all the math that I signed up for over 200 weapons, and what the hell is wrong with me.

What we want to accomplish with Weapon Rework™ is this: 

When you take a weapon up a tier, it feels like the same weapon, but cooler, as opposed to a totally different weapon. 

But! And! Also!

We want room for fun weapon variation too, and that's where New And Improved Enchantments™ come in. Instead of giving you buffs against very specific monsters, enchantments are going to give a weapon a different visual "flavor" and a special effect on stunt (not just damage, but exciting other things like splash damage, refunding action points, and temporary HPs). So those all needed tiers too (multiplication is a harsh mistress).

The end result is that you get to feel like your weapon is more a part of your hero, since it can "scale up" with them, and you can customize the look of it more. Hopefully this also means that weapons can follow Legacy heroes a bit more than they currently do.

We're also thinking of a different way that you acquire (dare I say the word... "unlock?") these enchantments as well. Maybe creating some interesting incentives during missions! 

I don't want to ruin the element of surprise here though. That wouldn't be in the spirit of the thing.

A Bit Later Than That:
I know we've talked about our villains/over-arcing campaign stories here before, and we're still chipping away at them. They're by far the biggest feature we've added to the game in the last couple years, so we're trying to take the time to get them right while making the whole system robust enough to be easily edited later (including support for players to eventually craft their own villains and campaign stories!!). We'd like to release two or three campaigns together initially, with more to come for the different monster groups, but we'll see what makes sense as we get closer to fall.

Doug has finished the writing/comics for a gripping tale of Gorgon menace, and is currently working on a mind-bending foray into the world of Thrixl. And I'm working on the script for a Morthagi mystery of muddled morality, though that's going a bit slower from down in the Photoshop mines these days.

Nate's implementing this Gorgon menace, and he's got some sweet map editor tools in a prototype-ish state, which means we can have more individually designed boss battles! (That's something we've really been feeling the lack of lately.) A lot of his programming infrastructure is done now, and it's a matter of just plugging everything in and crafting those custom encounters—including some exciting stuff we've never tried before with the Overland Map that will put additional time pressure on the heroes.

That Seems Like a Lot to Keep in Mind...
It kinda is! Our To-Do schedule boards are long. But it all happens one release at a time. We wish there were more hours in the day to do it all!