Difference between revisions of "Comic Editor Reference"

From Wildermyth Wiki
(→‎Testing Options: Updated options)
 
(23 intermediate revisions by 7 users not shown)
Line 1: Line 1:
This is a collection of reference material that explains how to use the Comic Editor to tell stories.
This is a collection of reference material that explains how to use the Comic Editor to tell stories.  


=Make a New Event=
''(Related links: Check out the [[Writer's Guide]] for a more top-level view of crafting stories. If you're wondering about tags, check the [[Tag Reference]]. If you want your text to look a certain way, check [[Text Styles]]. If you want an overview of the overall structure of data in Wildermyth, look at the [[Data Format Overview]])''


Todo add pictures to help!
==Who is this page for?==
This page is for you if you want to make an event (comic) that will show up in Wildermyth, but aren't sure where to start. The editor for Wildermyth can do a lot (it's how we make all the events that are in the game!) but that also means it can have a pretty steep learning curve at times. This guide is meant to explain some of the basic structure, so that you can dive into making interesting stories without worrying too much about the more technical side of things.


* Open up [[Scratchpad]]
==Making a Mod==
* go to the Content and Comics Editor
You'll want to be sure everything you create is in a separate mod folder, or else there's a chance an update to Wildermyth could wipe your custom events. Also, you'll be able to upload it to the Steam Workshop (or elsewhere) for others to play!
* Click on the [[Effects]] tab at the top or press Control+2
* Open the Editor from the main menu (Tools > Editor), or open up [[Scratchpad]] directly
* Go to 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 "CREATE!" and "Confirm".
Your mod folder should open up in your file explorer when you click "CREATE!" If you're just making a basic story, you shouldn't need to interact with that folder directly, but that's where all the events you create will be stored.
 
[[File:CreateModDialog.PNG]]
 
==Make a New Event==
* Click the '''New...''' Button or press Control+N
* Click the '''New...''' Button or press Control+N
* Select the [[Event Types|type of event]] you are creating, for example ''Arrive at Hostile Site'' or ''Mission Victory''.
* Enter a name (in plain english, with spaces) for the event. The tool will create an ID automatically.


Event is now exist! Maybe save?
[[File:ComicEditorNewEvent.png]]
 
* Make sure your mod is selected.
* Select the [[Event Types|type of event]] you are creating, for example ''Arrive at Hostile Site'' or ''Mission Victory''. For this example, we'll make an Arrive at Hostile Site event with a player choice, since that's what a large percentage of Wildermyth's events are.
* Enter your name, if you want players to be able to see that you wrote this event.
* Enter a name for the event. The tool will create an ID and Filename automatically.
* Edit the id and filename if you want.
* Press '''Create'''!
 
Congrats, you've created an event!
 
===Story Roles===
Now that you have an event, it's time to add '''Targets''' for the important people, which is generally the heroes. A '''Target''' is simply a way to "target" an entity in the game that matches certain parameters. For example, if you wanted an event that had a bookish hero and their lover, you'd need to create a target for each of them, and then the event would only occur if it could find heroes with those characteristics. (You can read [[Story Inputs and Outputs]] for more information on some of this.)
 
Looking on the left side, you'll see some existing targets, like self, company, overlandTile, site, party, and foes. These targets are automatically matched when the event happens, and are there in case you want to reference them or add other restrictions. (For example, you could click on overlandTile and edit it so that the event only happens when the overlandTile is a swamp biome)
 
For now, skip over those targets, and click on the '''New Story Role''' button. You'll see that it creates a new "hero" target:
 
[[File:EventTargets.PNG]]


=Codestuff=
This new target means that this event will only happen if the party assaulting this site has at least one hero in it. Not very interesting yet, since ''all'' assaulting parties will have at least one hero.
Read this first: [[Story Inputs and Outputs]]


'''General Advice:''' Use the STUB fields to document intent, and leave notes about what SHOULD happen, especially if you don't know how to do something. It's totally fine to STUB out complicated effects or fiddly details that you're not sure how to handle. That's what programmers are ''for'' after all, right?
====Roles====
You'll notice that "hero" is a dropdown. The word "hero" in this case is a '''Role'''. '''Roles''' are what we use to identify targets when placing them in comics or referring to them in dialogue. For example, "My name is <hero>" might show "My name is Martol" in-game. You can select from a wide variety of roles like warrior, bookish, leader, lover, target, and volunteer, but again, these are just ways to identify the target; the role itself doesn't impact who gets chosen for the target.


You ''CAN'' edit all this stuff, if you want to, but it's not necessarily recommended. If you're tempted, you can search for other effects that use the functionality you're interested in, and see if you can just do the same thing.
I want the main hero of this comic to be bookish, so I'm going to change their role from "hero" to "bookish". I'll leave the target as "required", but note that you can also have "optional" or "forbidden" targets.


==Story Roles==
====Preferred/Required Personalities and Stats====
Now that you have an event, it's time to add targets for the important people, which is generally the heroes. The easy and right way to do this is to press the '''New Story Role''' button, which can be found on the same row as the '''targets''' header. You will need to mouse-over '''targets''' and the buttons will show up on the right. The ''New Story Role Dialog'' will pop up:
To define ''how'' to choose a hero for this target, press the '+' button on the right side of the target. This will create a dropdown underneath. This dropdown has a number of ways to match potential heroes by class, personality, aspects, or relationships with other heroes. Since I want a bookish hero, I'll select "personality". This causes another dropdown to appear, in which I can select "BOOKISH".


[[File:ComicEditorNewStoryRoleDialog1.png|holy moly]]
Currently, this target will match the hero with the highest bookish stat, but if ''no'' heroes have a high bookish stat, I don't want the event to happen. If I click the checkbox at the start of the line, the game will require a hero with a bookish stat of at least 80.


There's a lot here, but let's just look at the first dropdown box. Expand that down and you'll get a list of possible ''roles'' for this new target. The easiest and most common thing to do is to pick a personality stat, like greedy. This will automatically populate the dialog so that the greediest hero will be picked for this role, which is almost what you want, right?
Notice that the "Score" underneath changes whenever you add another requirement or preference to a target. The dropdowns and checkboxes above are really just editing the '''scoreFunction''' and '''scoreThreshold''' values of the target, which you can see over on the right side of the comic editor. Many things can be accomplished with the dropdowns, but if you find that there's something they can't do, you can always edit the scoreFunction and scoreThreshold values directly.


[[File:ComicEditorNewStoryRoleDialog2.png|it will all makes sense some day]]
Continuing forward, I've created another New Story Role, given it the role "lover", and required that they're a lover with "bookish"


But the point of all this mess is to help you select the most appropriate hero for a particular story role. In the end it all boils down to a Score Function, which you can see by playing around with the controls and seeing how it changes.
[[File:EventTargetsBookishAndLover.PNG]]


A few other notes:
A few other notes:
* If a '''Required Role''' is not present, the story won't happen. This is usually what you want. This way you can be sure that if the story is being told at all, the right characters are in place. Sometimes you have a role that's not too important, and you can make it optional.
* If a '''Required Role''' is not present, the story won't happen. This is usually what you want. This way you can be sure that if the story is being told at all, the right characters are in place. Sometimes you have a role that's not too important, and you can make it optional.
* '''The Not Already Matched As''' checkbox is actually disabled if this is your first story role, but for number two and on, it makes sure that this person isn't the same person you selected for a previous role, because then it might seem like they were arguing with themselves, which is only ''sometimes'' what you want.
* When you select a target, all the information about it shows up in the panel on the right side of the screen. That provides some more granular control over who gets matched for which targets.
* Of particular note in that section is a field called '''Not Already Matched As''', which will auto-fill previous roles after your first target. This makes sure that this person isn't the same person you selected for a previous role, because then it might seem like they were arguing with themselves, which is only ''sometimes'' what you want.
* Remember, targets are selected in order, and by the time you get to number three or four, it's unlikely that the Romantic is really an iconic romantic, so put your most important/iconic/identifiable roles first.
* Remember, targets are selected in order, and by the time you get to number three or four, it's unlikely that the Romantic is really an iconic romantic, so put your most important/iconic/identifiable roles first.


Create as many roles as you need. Usually that means one per speaking role, and remember there are never more than 5 heroes in a party, but there can be more than that in the company. So, it depends what kind of story you're telling.
Create as many roles as you need. Usually that means one per speaking role, and remember there are never more than 5 heroes in a party, but there can be more than that in the company. So, it depends what kind of story you're telling.


==Other Targets==
===Other Targets and NPCs===
In addition to Story Roles, you can create other targets. One useful template is LEGEND, which allows you to pick NPCs that have been generated at the start of the game, and/or maybe if we get around to it, pulled from the player's legacy. Use the legendId field to specify who you want.
In addition to Story Roles, you can create other targets.  
* The '''New NPC''' button will create an NPC that you can modify using the righthand panel.
* The '''New Target''' button isn't particularly useful for comics in most cases, but there may be certain times when you want to target a weapon or a threat when this may come in useful.


TODO explain more.
===Choices===
Some events call for choices. In this case, there's generally a prompt, which is a set of comic panels, and then a choice, which is several panels, some of which might only be present under certain circumstances. To add a choice, click the '''New Choice''' button


==Choices==
[[File:ComicEditorNewChoiceDialog1.png]]
Some events call for choices. In this case, there's generally a prompt, which is a set of comic panels, and then a choice, which is several panels, some of which might only be present under certain circumstances. Anyway to add a choice, do this:
# expand '''targets'''->'''choiceTarget...'''
# expand '''Domain....'''
# See '''options''' down at the bottom.
# Click on the '''New Option''' button
[[File:ComicEditorNewOptionButton.png]]
# to bring up the ''New Option Dialog''
[[File:ComicEditorNewChoiceDialog1.png|Yeah this thing makes sense, right?]]


This lets you pick a tag (which is not too important except that the outcome will use the same tag). Then you can pick who will be speaking, and you can make the choice optional, so that if that character is not present, the choice won't show. Then you can choose if you want to add any branching, like a dice roll with a chance of multiple outcomes. Most commonly you will pick "simple" or "event roll."
This lets you pick a tag (which is not too important except that the outcome will use the same tag). Then you can pick who will be speaking, and you can make the choice optional, so that if that character is not present, the choice won't show. Then you can choose if you want to add any branching, like a dice roll with a chance of multiple outcomes. Most commonly you will pick "simple" or "event roll."


TODO more explain.
You'll usually want to do this at least twice, so the player has two things to choose between.
 
===Putting Targets in the Comic===
If you added Choices above, you'll notice that the roles you selected as "Who's on point" have already shown up in the "Choose" panel(s). But the choices don't mean much if there isn't a story preceding them, right?
 
There are several ways to add targets to a panel. The first is by using the '''Compose Panel Dialog'''. You can get to this by clicking the '''Cmp''' button for existing panels, and you'll also see it every time you create a new panel using the '''Add Panel''' button:


==Outcomes==
[[File:EventPromptTextEditor.PNG]]
Specify what should happen as a result of choices, or chance.


use the STUB field!
[[File:ComposePanel.PNG]]


We need to add more functionality here, like, probably a lot. For now it is STUB City.
There are some options there to decide which roles you want to show in the panel, who you want to have speaking, whether there's narration, how to arrange the heroes, and more! You can't do anything ''too'' complex from here, but it's a good starting place.


=Comic Editor Basics=
The other way to add targets to a panel is by clicking on the comic panel in the middle section (the left section works fine too) to select it, and then looking at '''actorSlots''' and '''textSlots'''. There are buttons to '''Add Actor''' and '''Add Text Box''', which is how you can add the targets you've made to that comic panel. In addition, there are buttons for '''Add Image''', '''Add Animation''', '''Narration''', '''Dark Box''', and '''Action Text''', which are individual objects that don't require any prior targeting.
* Each box on the left holds text for a different section of the story: a prompt, a choice, or an outcome.
* Plain text (none of those Microsoft Word special apostrophes and ellipses if you please...)
* Press the save button!
* Undo should work, but sometimes need to press it more than once.


==Making Panels==
[[File:ActorSlotsAndTextSlots.PNG]]
 
Use '''&lt;panel&gt;''' tags to separate text into panels. It's pretty easy to specify panel sizes and add actors with facial expressions and basic functionality.
<pre><panel>Use panel tags to separate text.
<panel|bookish>if there's an actor, they will speak the line.
<panel|poet thinking>Or maybe you want them to think it instead.
<panel|goofball joke>Or make a funny face!
<panel sixth left|bookish grim size:1.75>
<panel half left|snark sad >Nobody actually likes your face.</pre>


[[File:ComicTool example1.png]]
The little black boxes with '+' and '-' symbols can be used to expand/collapse more information about the actors and text. If you expand a target actor, you'll see that there are options for which role is being displayed, what direction they're facing, whether or not to show their weapons, their position, and more! Most of the time, you'll want to change position, rotation, and scale of actors and textboxes using the icons that appear around the images rather than adjusting the values manually.


Everything about a panel is stored as text, in the panel tag. These examples show how to use [[panel styles]] (left, sixth, half), how to add actors ( |rolename ), and how to add [[actor styles]] (thinking, joke, grim). Panel styles are convenient for quickly making panels, but panel tags can get cumbersome fast. Good thing is, we have a visual editor so you don't need to edit all this stuff by hand.
==Adjusting Actors==
Once you have some actors on a panel ("actor" meaning any object on the panel, whether it's a target hero, textbox, or an image), you're going to want to move them around! When you click a panel to select it, little icons will show up by all the actors, allowing you to adjust their position, rotation, and several other things. For heroes specifically, there are controls to
* move the hero
* rotate the hero
* scale the hero
* flip the hero horizontally
* rotate the hero's head
* flip the hero's head horizontally
* change the hero's facial expression
* add a text box for the hero
* change whether the hero is holding their weapons
* move the hero in front of/behind other actors


To open up the [[Panel Editor]], click on a panel in the Comic Editor display. You can use the visual panel editor to do almost everything, including adding actors, setting their facial expressions, really everything except creating new panels and modifying the text that goes in them.
[[File:ComicEditorActorHandles.PNG]]
 
(The hero rotation icon is missing from the above image, because it's located down by the hero's feet, which is the pivot point for hero rotation)
 
There are similar controls for images, text boxes, and pointers (the lines leading from heroes to their textboxes). For textboxes and pointers, you may need to click a '+' icon to show the other controls. You can also hold Control (Command on Mac) to hide all of the controls, in case you just want to look at the beautiful piece of art you've created.
 
There are also a number of things you can do in the right-hand panel. These all have tooltips describing their function, but here are a couple of particular interest:
* '''panel > animation:''' can be used to control the order and depth of panels appearing, which is useful if you want a comic to read from right to left (Yeah! Break the rules!)
* '''actorSlots > focus:''' determine whether the face, middle, or foot of the hero is the "focus" point. Some heroes are taller than others, so you'll often want to use "face" if you're just showing a hero's head, to ensure the panel still looks good with different heroes, but you'll want to use "foot" if you're showing them standing on something
* '''actorSlots > color/colorFilter:''' tint actors different colors! This can be particularly effective when very slightly tinting them the color of the environment or background, to make them feel more "grounded".
* '''textSlots > allowDrawOverEdges:''' allows a textbox to go beyond the bounds of a panel, which can be visually interesting when having the text from one panel overlap the previous panel.
 
==Testing your Event in the Editor==
Your event is set up and things are looking good. But what if a taller hero goes out of frame? What if the heroes are at a different site? What if one of them has crow wings?
 
===Testing Options===
There are a number of ways to test your event from within the comic editor, most of which are on the top of the screen right above the comic.
 
[[File:ComicEditorOptions.PNG]]
 
Many of these are only useful once you've added tags and dynamic text to your event (which we'll go over in the next section), but it feels correct to talk about it here first, so when you ''do'' start using tags, you'll know how to test that they're working.
 
* The comic editor is set to '''Scroll''' view by default, but you can change it to '''Click''' to see a more accurate representation of what your comic will look like in-game, including panels animating in.
* '''Reroll''' will reroll all of the "fake" heroes it's matching with your targets, allowing you to see what it will look like if the player gets your event with a variety of heroes or at different sites. Note that by default, these fake heroes won't actually match the target requirements you've set for them; that will only happen in-game.
* '''Settings...''' will bring up some options for testing all of the roles. You can choose whether or not to show optional roles, make roles always show up as a certain class, and give roles specific aspects. (Some of this can also be done with the inspect button, but those won't persist across multiple rerolls)
* '''Find''' can be used to search for words in the event. It's not a testing feature, but this was a sensible place for it.
* '''+RP''' will grant relationship points between all of the heroes. Useful for testing events that have differences based on relationship tiers.
* ''':) / <3 / >:( / Fam''' will make everyone in the event friends/lovers/rivals/some kind of family. Useful for testing events with differences based on relationship or family types.
* '''Inspect''' will allow you to directly edit any of the "fake" matches for targets via their character sheets (as long as you have [[Testing|devMode]] on), which can help you test specific scenarios.
* '''Auto-Match''': When enabled, the game will try to adjust comic hero aspects, personality, relationships, etc based on what splits your cursor is positioned within in the text editor, so the comic is more likely to show the text you're on without needing to manually adjust heroes. ''(Note that this may not work for every scenario, and sometimes you'll need to use Inspect or Settings... instead.)''
 
===Dev Mode===
At this point, you may want to enable [[Testing|devMode]]. You can do almost everything in this guide without it, but there are certain cheat-oriented hero things (adjusting character stats, abilities, gear, and relationships through their character sheets) and gameplay things (choosing which events to encounter, skipping objectives) that are very useful for testing, especially when you get to actual in-game testing.


:''Protip: Panel tags can be copied and pasted around as a quick way to duplicate a scene.''
==Using Tags to Control Text==
==Using Tags to Control Text==


See : [[Tag Reference]]
See : [[Tag Reference]]


Each event can specify a number of targets, which are often heroes, selected for a particular personality, relationship, etc.. These targets are assigned to [[Story Role|roles]]. Roles are easy-to-remember words like ''leader'', ''target'', ''hero'', ''hothead'', ''friend'', etc..
As stated above, each event can specify a number of targets, which are often heroes, selected for a particular personality, relationship, etc.. These targets are assigned to [[Story Role|roles]]. Roles are easy-to-remember words like ''leader'', ''target'', ''hero'', ''hothead'', ''friend'', etc..


Once you have a target assigned to the role, you can insert the target into your text using a ''role tag'' like this.
Once you have a target assigned to the role, you can insert the target into your text using a ''role tag'' like this.


<pre><panel twoThirds |leader narrating|hothead pained>
<pre><leader> takes a long, appraising look at <hothead>.  
<leader> takes a long, appraising look at <hothead>.  
<leader.mf:He/She> wipes a fleck of bluish ooze off <leader.mf:his/her> nose.</pre>
<leader.mf:He/She> wipes a fleck of bluish ooze off <leader.mf:his/her> nose.</pre>
[[File:ComicEditor simpleTags1.png]]
[[File:ComicEditor simpleTags1.png]]


This is a simple example but we can get a lot more sophisticated, and tags can be nested as well. That can get really confusing. Maybe we should build some better tools?
This is a simple example but we can get a lot more sophisticated, and tags can be nested as well. The status bar at the bottom will tell you where the cursor is within a tag or nested tag. It's super handy for complex splits!


One of the key uses of tags is to give heroes different lines depending on their personalities. This works by embedding the stats you care about in the tag.
One of the key uses of tags is to give heroes different lines depending on their personalities. This works by embedding the stats you care about in the tag.
<pre><panel |leader talking>
<pre><leader.goofball/bookish:
<leader.goofball/bookish:
Surprise everyone! It's fightin' time!
Surprise everyone! It's fightin' time!
/Ahem. Our foes appear to have arrived.></pre>
/Ahem. Our foes appear to have arrived.></pre>
[[File:ComicEditor personalityTags.png]]
[[File:ComicEditor personalityTags.png]]


You can embed tags within tags. The most common use case will be putting gender tags inside personality tags. But you can go further if you want to. You can even use tags to select whole panels, like this:
When you type the opening '<' of a tag, a dropdown will appear showing you possible things you could put in. The most common inputs will be roles, like '''<bookish>''' and '''<lover>''', but there are other options too, like <DayOfMonth> to get what day it is, <season> to display the season, and <Company> to display the company name.
<pre><bookish.poet/snark:
  <panel|bookish joy>
  This will make an excellent song!
/
  <panel|bookish skeptical>
  What is it about me that attracts trouble? Is it my hair?
></pre>
[[File:ComicEditorPersonalityTagsPanels.png]]


This can get out of hand very quickly, but might be useful for reaction panels, or whatever? I don't know. Be careful out there.
[[File:TagAutocomplete.PNG]]
 
If you enter a role alone, it will display the name of the hero matched to that target. However, if you put a period after the role (as demonstrated in some of the examples above), you can get more information about the hero. Those options will also be shown in a dropdown, and each option has a tooltip describing what it does.
 
[[File:TagAutocompleteTooltip.PNG]]
 
If you start using complex nested tags, you'll notice that the text display is colored in a context-sensitive way, so that you can see what blocks of text your cursor is within, and the text it will or may also show. (This text is one of the first lines of Age of Ulstryx. It's quite tame compared to later tag splits.)
 
[[File:TextEditorContextSensitiveColoring.PNG]]
 
The context bar at the bottom of the screen is also useful in complicated situations like this, to show what tags and splits are true at the point where your cursor is:
 
[[File:TextEditorCursorTagBreadcrumbs.PNG]]


Tags can do a lot more! For a full list of available tags see : [[Tag Reference]].
Tags can do a lot more! For a full list of available tags see : [[Tag Reference]].
Line 133: Line 189:




'''TODO add some pictures of styled text here'''
You can set the size, color, and font of the text. See Main article on [[Text Styles]] for a full list of available fonts, styles, and colors.


You can set the size, color, and font of the text. See Main article on [[Text Styles]] for a full list of available fonts, styles, and colors.
===Tweaking Faces===
See: [[Face Tags]]
 
  [face:sad]
  [hero.face:dubious]
  [loner.face:talking]
 
Sets the facial expression from text, overriding what the tool says. This is useful inside text splits, so you can tweak a panel without having to build a whole panel split.
 
==[[Outcomes]]==
So we know how to make comics now, but comics aren't very interesting if they don't impact the gameplay. '''[[Outcomes]]''' are used to make things happen in the game, like granting a weapon, applying a transformation theme, adding resources, or starting a mission.
 
To add outcomes to your comic, you'll need to switch from the '''Comics''' tab (Ctrl+1) to the '''Effects''' tab (Ctrl+2). It may look overwhelming at first, but don't worry! Most of this is the stuff you just edited in the comics tab, just in text form. Partway down you can see a list of targets, which are the same targets for heroes that you were working with before.
 
At the bottom, there's a list of outcomes. If your event has choices, you'll probably see something like "Chose <<one>>" and "Chose <<two>>", along with Description outcomes in both. The Description outcomes are how the choice comics are triggered. (If you switch back to the comics tab, you can see that the header above the choice outcomes says something like "Outcome 1 >> Chose one.1")
 
[[File:ChoiceOutcomes.PNG]]
 
If you click the '''"Add Outcome..."''' button under one of them, a New Outcome dialog will pop up:
 
[[File:NewOutcomeDialog.PNG]]
 
Across the top of the dialog are the most commonly required Outcomes, but you can scroll through all possible Outcomes in the left scroll panel. Each Outcome has its own set of options to get it to do exactly what you want.
 
If you're creating an Arrive at Hostile Site event, you'll almost always want to add a '''Mission Outcome''' so that a battle will occur after the event is over. You can do this by clicking the Mission button, and then clicking '''Create'''. (If you made an Arrive at Hostile Site event without a player choice, the Mission Outcome will already be there for you)
 
Once you've done this, you'll see a Mission outcome after the Description outcome. That will only fire a mission for that choice, so you'll want to add a Mission Outcome to the other choice as well. Having two separate Missions like this is helpful if you want to apply combat modifiers or have different victory events based on the choice that was made.
 
If you want to have one mission that's the same regardless of the choice, you can hover over the '''"outcomes: <list>"''' line and click the '''New Entry''' button to create an Outcome ''after'' the choices.
 
You can see a list of the outcomes and descriptions on the [[Outcomes]] page, but all of those descriptions are also in-game as tooltips (and more likely to be up-to-date)
 
==Testing your Event In-Game==
Great! You've made an event, and now you're ready to see it in action. The first thing you need to do is '''Enable it''', which you can do by pressing the '''Event Disabled''' button underneath the targets in the comics panel.
 
There are a couple other things on the Effects tab you may want to change before testing. If you expand the '''ability''' line, cooldown, encounterScore, and encounterWeight may be useful.
* '''cooldown:''' How many times can this event happen per game? By default, this is once per game, but you can change it to make an event that happens multiple times per game.
* '''encounterScore:''' Events with higher score will ''always'' happen instead of events with lower scores, if possible. If you want your event to ''definitely happen whenever it can'', change this to a higher number. (Most default events are set at 10, so setting it to 11 is a pretty safe bet)
* '''encounterWeight:''' How likely is this event to be chosen, when compared with other events of the same encounterScore? For example, if you have an event you really want to happen, setting this to 5 would make it 5 times more likely to happen than a normal event.
 
Now we're ''really'' ready to test it in-game.
 
Return to the menu, and start a new game! (Probably a standard three or five chapter one, rather than a story campaign) In the Campaign Options, click the '''Pick Mods''' button, and select your mod. If you've enabled [[Testing|dev mode]], you also probably want to '''Enable Cheats''' and check '''Pick Events''' and '''Objectives Cheat'''.
 
If you have Pick Events turned on, it will ask you which ENCOUNTER_TUTORIAL_KICKOFF to pick. It doesn't matter, we just want to get to your event.
 
Once you're in the mission, if you have Objectives Cheat turned on, you can click the "Kill all enemies" objective in the top left to automatically complete it. Easy win!
 
(Comics and certain other things can be skipped by pressing Escape, which is useful when trying to get through events quickly while testing)
 
Finally, once you're on the overland, scout a tile and assault a hostile site. You should see ENCOUNTER_HEROES_ARRIVE_HOSTILE_SITE and a list of possible events to trigger. If you don't see your event among the top possible choices, it's likely there wasn't a match for one of your event targets. If you scroll down, you should be able to find why your event failed.
 
[[File:ArriveAtHostileSiteFailedEvent.PNG|Failed event]]
 
In the case of this image, none of my heroes had a BOOKISH personality stat of 80 or more. If I have [[Testing|devMode]] enabled, I can open the character sheet of one of my heroes, increase their bookish stat above 80, and then assault another site. (Since I know the event I've been working on also requires the bookish hero to have a lover, I'll use cheats to give that hero a lover as well)
 
If everything is correct, you should be able to choose your event!
 
Those are the basics of making events for Wildermyth. Once you have an event or several events you'd like to share, you can [[Modding_Guide#How_to_publish_your_mod|upload them to the Steam Workshop]], or share them elsewhere by uploading your mod folder. Go spin some tales!
 
[[File:BookishAndLoverInLibrary.PNG]]


==Other Details==
[[Category:Modding]]
TODO document all the buttons!
[[Category:Modding Reference]]

Latest revision as of 13:06, 8 March 2022

This is a collection of reference material that explains how to use the Comic Editor to tell stories.

(Related links: Check out the Writer's Guide for a more top-level view of crafting stories. If you're wondering about tags, check the Tag Reference. If you want your text to look a certain way, check Text Styles. If you want an overview of the overall structure of data in Wildermyth, look at the Data Format Overview)

Who is this page for?

This page is for you if you want to make an event (comic) that will show up in Wildermyth, but aren't sure where to start. The editor for Wildermyth can do a lot (it's how we make all the events that are in the game!) but that also means it can have a pretty steep learning curve at times. This guide is meant to explain some of the basic structure, so that you can dive into making interesting stories without worrying too much about the more technical side of things.

Making a Mod

You'll want to be sure everything you create is in a separate mod folder, or else there's a chance an update to Wildermyth could wipe your custom events. Also, you'll be able to upload it to the Steam Workshop (or elsewhere) for others to play!

  • Open the Editor from the main menu (Tools > Editor), or open up Scratchpad directly
  • Go to 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 "CREATE!" and "Confirm".

Your mod folder should open up in your file explorer when you click "CREATE!" If you're just making a basic story, you shouldn't need to interact with that folder directly, but that's where all the events you create will be stored.

CreateModDialog.PNG

Make a New Event

  • Click the New... Button or press Control+N

ComicEditorNewEvent.png

  • Make sure your mod is selected.
  • Select the type of event you are creating, for example Arrive at Hostile Site or Mission Victory. For this example, we'll make an Arrive at Hostile Site event with a player choice, since that's what a large percentage of Wildermyth's events are.
  • Enter your name, if you want players to be able to see that you wrote this event.
  • Enter a name for the event. The tool will create an ID and Filename automatically.
  • Edit the id and filename if you want.
  • Press Create!

Congrats, you've created an event!

Story Roles

Now that you have an event, it's time to add Targets for the important people, which is generally the heroes. A Target is simply a way to "target" an entity in the game that matches certain parameters. For example, if you wanted an event that had a bookish hero and their lover, you'd need to create a target for each of them, and then the event would only occur if it could find heroes with those characteristics. (You can read Story Inputs and Outputs for more information on some of this.)

Looking on the left side, you'll see some existing targets, like self, company, overlandTile, site, party, and foes. These targets are automatically matched when the event happens, and are there in case you want to reference them or add other restrictions. (For example, you could click on overlandTile and edit it so that the event only happens when the overlandTile is a swamp biome)

For now, skip over those targets, and click on the New Story Role button. You'll see that it creates a new "hero" target:

EventTargets.PNG

This new target means that this event will only happen if the party assaulting this site has at least one hero in it. Not very interesting yet, since all assaulting parties will have at least one hero.

Roles

You'll notice that "hero" is a dropdown. The word "hero" in this case is a Role. Roles are what we use to identify targets when placing them in comics or referring to them in dialogue. For example, "My name is <hero>" might show "My name is Martol" in-game. You can select from a wide variety of roles like warrior, bookish, leader, lover, target, and volunteer, but again, these are just ways to identify the target; the role itself doesn't impact who gets chosen for the target.

I want the main hero of this comic to be bookish, so I'm going to change their role from "hero" to "bookish". I'll leave the target as "required", but note that you can also have "optional" or "forbidden" targets.

Preferred/Required Personalities and Stats

To define how to choose a hero for this target, press the '+' button on the right side of the target. This will create a dropdown underneath. This dropdown has a number of ways to match potential heroes by class, personality, aspects, or relationships with other heroes. Since I want a bookish hero, I'll select "personality". This causes another dropdown to appear, in which I can select "BOOKISH".

Currently, this target will match the hero with the highest bookish stat, but if no heroes have a high bookish stat, I don't want the event to happen. If I click the checkbox at the start of the line, the game will require a hero with a bookish stat of at least 80.

Notice that the "Score" underneath changes whenever you add another requirement or preference to a target. The dropdowns and checkboxes above are really just editing the scoreFunction and scoreThreshold values of the target, which you can see over on the right side of the comic editor. Many things can be accomplished with the dropdowns, but if you find that there's something they can't do, you can always edit the scoreFunction and scoreThreshold values directly.

Continuing forward, I've created another New Story Role, given it the role "lover", and required that they're a lover with "bookish"

EventTargetsBookishAndLover.PNG

A few other notes:

  • If a Required Role is not present, the story won't happen. This is usually what you want. This way you can be sure that if the story is being told at all, the right characters are in place. Sometimes you have a role that's not too important, and you can make it optional.
  • When you select a target, all the information about it shows up in the panel on the right side of the screen. That provides some more granular control over who gets matched for which targets.
  • Of particular note in that section is a field called Not Already Matched As, which will auto-fill previous roles after your first target. This makes sure that this person isn't the same person you selected for a previous role, because then it might seem like they were arguing with themselves, which is only sometimes what you want.
  • Remember, targets are selected in order, and by the time you get to number three or four, it's unlikely that the Romantic is really an iconic romantic, so put your most important/iconic/identifiable roles first.

Create as many roles as you need. Usually that means one per speaking role, and remember there are never more than 5 heroes in a party, but there can be more than that in the company. So, it depends what kind of story you're telling.

Other Targets and NPCs

In addition to Story Roles, you can create other targets.

  • The New NPC button will create an NPC that you can modify using the righthand panel.
  • The New Target button isn't particularly useful for comics in most cases, but there may be certain times when you want to target a weapon or a threat when this may come in useful.

Choices

Some events call for choices. In this case, there's generally a prompt, which is a set of comic panels, and then a choice, which is several panels, some of which might only be present under certain circumstances. To add a choice, click the New Choice button

ComicEditorNewChoiceDialog1.png

This lets you pick a tag (which is not too important except that the outcome will use the same tag). Then you can pick who will be speaking, and you can make the choice optional, so that if that character is not present, the choice won't show. Then you can choose if you want to add any branching, like a dice roll with a chance of multiple outcomes. Most commonly you will pick "simple" or "event roll."

You'll usually want to do this at least twice, so the player has two things to choose between.

Putting Targets in the Comic

If you added Choices above, you'll notice that the roles you selected as "Who's on point" have already shown up in the "Choose" panel(s). But the choices don't mean much if there isn't a story preceding them, right?

There are several ways to add targets to a panel. The first is by using the Compose Panel Dialog. You can get to this by clicking the Cmp button for existing panels, and you'll also see it every time you create a new panel using the Add Panel button:

EventPromptTextEditor.PNG

ComposePanel.PNG

There are some options there to decide which roles you want to show in the panel, who you want to have speaking, whether there's narration, how to arrange the heroes, and more! You can't do anything too complex from here, but it's a good starting place.

The other way to add targets to a panel is by clicking on the comic panel in the middle section (the left section works fine too) to select it, and then looking at actorSlots and textSlots. There are buttons to Add Actor and Add Text Box, which is how you can add the targets you've made to that comic panel. In addition, there are buttons for Add Image, Add Animation, Narration, Dark Box, and Action Text, which are individual objects that don't require any prior targeting.

ActorSlotsAndTextSlots.PNG

The little black boxes with '+' and '-' symbols can be used to expand/collapse more information about the actors and text. If you expand a target actor, you'll see that there are options for which role is being displayed, what direction they're facing, whether or not to show their weapons, their position, and more! Most of the time, you'll want to change position, rotation, and scale of actors and textboxes using the icons that appear around the images rather than adjusting the values manually.

Adjusting Actors

Once you have some actors on a panel ("actor" meaning any object on the panel, whether it's a target hero, textbox, or an image), you're going to want to move them around! When you click a panel to select it, little icons will show up by all the actors, allowing you to adjust their position, rotation, and several other things. For heroes specifically, there are controls to

  • move the hero
  • rotate the hero
  • scale the hero
  • flip the hero horizontally
  • rotate the hero's head
  • flip the hero's head horizontally
  • change the hero's facial expression
  • add a text box for the hero
  • change whether the hero is holding their weapons
  • move the hero in front of/behind other actors

ComicEditorActorHandles.PNG

(The hero rotation icon is missing from the above image, because it's located down by the hero's feet, which is the pivot point for hero rotation)

There are similar controls for images, text boxes, and pointers (the lines leading from heroes to their textboxes). For textboxes and pointers, you may need to click a '+' icon to show the other controls. You can also hold Control (Command on Mac) to hide all of the controls, in case you just want to look at the beautiful piece of art you've created.

There are also a number of things you can do in the right-hand panel. These all have tooltips describing their function, but here are a couple of particular interest:

  • panel > animation: can be used to control the order and depth of panels appearing, which is useful if you want a comic to read from right to left (Yeah! Break the rules!)
  • actorSlots > focus: determine whether the face, middle, or foot of the hero is the "focus" point. Some heroes are taller than others, so you'll often want to use "face" if you're just showing a hero's head, to ensure the panel still looks good with different heroes, but you'll want to use "foot" if you're showing them standing on something
  • actorSlots > color/colorFilter: tint actors different colors! This can be particularly effective when very slightly tinting them the color of the environment or background, to make them feel more "grounded".
  • textSlots > allowDrawOverEdges: allows a textbox to go beyond the bounds of a panel, which can be visually interesting when having the text from one panel overlap the previous panel.

Testing your Event in the Editor

Your event is set up and things are looking good. But what if a taller hero goes out of frame? What if the heroes are at a different site? What if one of them has crow wings?

Testing Options

There are a number of ways to test your event from within the comic editor, most of which are on the top of the screen right above the comic.

ComicEditorOptions.PNG

Many of these are only useful once you've added tags and dynamic text to your event (which we'll go over in the next section), but it feels correct to talk about it here first, so when you do start using tags, you'll know how to test that they're working.

  • The comic editor is set to Scroll view by default, but you can change it to Click to see a more accurate representation of what your comic will look like in-game, including panels animating in.
  • Reroll will reroll all of the "fake" heroes it's matching with your targets, allowing you to see what it will look like if the player gets your event with a variety of heroes or at different sites. Note that by default, these fake heroes won't actually match the target requirements you've set for them; that will only happen in-game.
  • Settings... will bring up some options for testing all of the roles. You can choose whether or not to show optional roles, make roles always show up as a certain class, and give roles specific aspects. (Some of this can also be done with the inspect button, but those won't persist across multiple rerolls)
  • Find can be used to search for words in the event. It's not a testing feature, but this was a sensible place for it.
  • +RP will grant relationship points between all of the heroes. Useful for testing events that have differences based on relationship tiers.
  • :) / <3 / >:( / Fam will make everyone in the event friends/lovers/rivals/some kind of family. Useful for testing events with differences based on relationship or family types.
  • Inspect will allow you to directly edit any of the "fake" matches for targets via their character sheets (as long as you have devMode on), which can help you test specific scenarios.
  • Auto-Match: When enabled, the game will try to adjust comic hero aspects, personality, relationships, etc based on what splits your cursor is positioned within in the text editor, so the comic is more likely to show the text you're on without needing to manually adjust heroes. (Note that this may not work for every scenario, and sometimes you'll need to use Inspect or Settings... instead.)

Dev Mode

At this point, you may want to enable devMode. You can do almost everything in this guide without it, but there are certain cheat-oriented hero things (adjusting character stats, abilities, gear, and relationships through their character sheets) and gameplay things (choosing which events to encounter, skipping objectives) that are very useful for testing, especially when you get to actual in-game testing.

Using Tags to Control Text

See : Tag Reference

As stated above, each event can specify a number of targets, which are often heroes, selected for a particular personality, relationship, etc.. These targets are assigned to roles. Roles are easy-to-remember words like leader, target, hero, hothead, friend, etc..

Once you have a target assigned to the role, you can insert the target into your text using a role tag like this.

<leader> takes a long, appraising look at <hothead>. 
<leader.mf:He/She> wipes a fleck of bluish ooze off <leader.mf:his/her> nose.

ComicEditor simpleTags1.png

This is a simple example but we can get a lot more sophisticated, and tags can be nested as well. The status bar at the bottom will tell you where the cursor is within a tag or nested tag. It's super handy for complex splits!

One of the key uses of tags is to give heroes different lines depending on their personalities. This works by embedding the stats you care about in the tag.

<leader.goofball/bookish:
Surprise everyone! It's fightin' time!
/Ahem. Our foes appear to have arrived.>

ComicEditor personalityTags.png

When you type the opening '<' of a tag, a dropdown will appear showing you possible things you could put in. The most common inputs will be roles, like <bookish> and <lover>, but there are other options too, like <DayOfMonth> to get what day it is, <season> to display the season, and <Company> to display the company name.

TagAutocomplete.PNG

If you enter a role alone, it will display the name of the hero matched to that target. However, if you put a period after the role (as demonstrated in some of the examples above), you can get more information about the hero. Those options will also be shown in a dropdown, and each option has a tooltip describing what it does.

TagAutocompleteTooltip.PNG

If you start using complex nested tags, you'll notice that the text display is colored in a context-sensitive way, so that you can see what blocks of text your cursor is within, and the text it will or may also show. (This text is one of the first lines of Age of Ulstryx. It's quite tame compared to later tag splits.)

TextEditorContextSensitiveColoring.PNG

The context bar at the bottom of the screen is also useful in complicated situations like this, to show what tags and splits are true at the point where your cursor is:

TextEditorCursorTagBreadcrumbs.PNG

Tags can do a lot more! For a full list of available tags see : Tag Reference.

Style Markup

See: Text Styles

Text in a comic panel gets a style automatically depending on if the TextBox is set up as narration, speech, thought, etc.. The Style can be modified using square brackets. Generally, text-style markup is similar to html markup, in that you have a starting and ending tag, BUT! our style format doesn't require the end tag to have anything in it.

It looks like this:

 [bold]bold text [italic]Bold italic text[]bold again[] regular again.


You can set the size, color, and font of the text. See Main article on Text Styles for a full list of available fonts, styles, and colors.

Tweaking Faces

See: Face Tags

 [face:sad]
 [hero.face:dubious]
 [loner.face:talking]

Sets the facial expression from text, overriding what the tool says. This is useful inside text splits, so you can tweak a panel without having to build a whole panel split.

Outcomes

So we know how to make comics now, but comics aren't very interesting if they don't impact the gameplay. Outcomes are used to make things happen in the game, like granting a weapon, applying a transformation theme, adding resources, or starting a mission.

To add outcomes to your comic, you'll need to switch from the Comics tab (Ctrl+1) to the Effects tab (Ctrl+2). It may look overwhelming at first, but don't worry! Most of this is the stuff you just edited in the comics tab, just in text form. Partway down you can see a list of targets, which are the same targets for heroes that you were working with before.

At the bottom, there's a list of outcomes. If your event has choices, you'll probably see something like "Chose <<one>>" and "Chose <<two>>", along with Description outcomes in both. The Description outcomes are how the choice comics are triggered. (If you switch back to the comics tab, you can see that the header above the choice outcomes says something like "Outcome 1 >> Chose one.1")

ChoiceOutcomes.PNG

If you click the "Add Outcome..." button under one of them, a New Outcome dialog will pop up:

NewOutcomeDialog.PNG

Across the top of the dialog are the most commonly required Outcomes, but you can scroll through all possible Outcomes in the left scroll panel. Each Outcome has its own set of options to get it to do exactly what you want.

If you're creating an Arrive at Hostile Site event, you'll almost always want to add a Mission Outcome so that a battle will occur after the event is over. You can do this by clicking the Mission button, and then clicking Create. (If you made an Arrive at Hostile Site event without a player choice, the Mission Outcome will already be there for you)

Once you've done this, you'll see a Mission outcome after the Description outcome. That will only fire a mission for that choice, so you'll want to add a Mission Outcome to the other choice as well. Having two separate Missions like this is helpful if you want to apply combat modifiers or have different victory events based on the choice that was made.

If you want to have one mission that's the same regardless of the choice, you can hover over the "outcomes: <list>" line and click the New Entry button to create an Outcome after the choices.

You can see a list of the outcomes and descriptions on the Outcomes page, but all of those descriptions are also in-game as tooltips (and more likely to be up-to-date)

Testing your Event In-Game

Great! You've made an event, and now you're ready to see it in action. The first thing you need to do is Enable it, which you can do by pressing the Event Disabled button underneath the targets in the comics panel.

There are a couple other things on the Effects tab you may want to change before testing. If you expand the ability line, cooldown, encounterScore, and encounterWeight may be useful.

  • cooldown: How many times can this event happen per game? By default, this is once per game, but you can change it to make an event that happens multiple times per game.
  • encounterScore: Events with higher score will always happen instead of events with lower scores, if possible. If you want your event to definitely happen whenever it can, change this to a higher number. (Most default events are set at 10, so setting it to 11 is a pretty safe bet)
  • encounterWeight: How likely is this event to be chosen, when compared with other events of the same encounterScore? For example, if you have an event you really want to happen, setting this to 5 would make it 5 times more likely to happen than a normal event.

Now we're really ready to test it in-game.

Return to the menu, and start a new game! (Probably a standard three or five chapter one, rather than a story campaign) In the Campaign Options, click the Pick Mods button, and select your mod. If you've enabled dev mode, you also probably want to Enable Cheats and check Pick Events and Objectives Cheat.

If you have Pick Events turned on, it will ask you which ENCOUNTER_TUTORIAL_KICKOFF to pick. It doesn't matter, we just want to get to your event.

Once you're in the mission, if you have Objectives Cheat turned on, you can click the "Kill all enemies" objective in the top left to automatically complete it. Easy win!

(Comics and certain other things can be skipped by pressing Escape, which is useful when trying to get through events quickly while testing)

Finally, once you're on the overland, scout a tile and assault a hostile site. You should see ENCOUNTER_HEROES_ARRIVE_HOSTILE_SITE and a list of possible events to trigger. If you don't see your event among the top possible choices, it's likely there wasn't a match for one of your event targets. If you scroll down, you should be able to find why your event failed.

Failed event

In the case of this image, none of my heroes had a BOOKISH personality stat of 80 or more. If I have devMode enabled, I can open the character sheet of one of my heroes, increase their bookish stat above 80, and then assault another site. (Since I know the event I've been working on also requires the bookish hero to have a lover, I'll use cheats to give that hero a lover as well)

If everything is correct, you should be able to choose your event!

Those are the basics of making events for Wildermyth. Once you have an event or several events you'd like to share, you can upload them to the Steam Workshop, or share them elsewhere by uploading your mod folder. Go spin some tales!

BookishAndLoverInLibrary.PNG