Modding multiple branches

From Wildermyth Wiki
Revision as of 15:17, 31 December 2019 by Davea (Talk | contribs) (Creating the second encounter)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This page walks through the process of creating an encounter which has more than one choice point. See Adding an encounter with a choice to learn about a simpler encounter which has only one choice point. Using the "branch" encounter type, it is possible to create one encounter which has any number of choice points. For example, you may want to have an early choice point, where the player can back out of the encounter or decide which characters will be involved, then do some more dialog, and then have a second choice point to decide the encounter. The focus is on getting something simple which you can see in the game, and adding more details later. The description and screenshots are current as of December 2019, early access version 0.12+104 Pixle Masterson.

Key concept

In an encounter with only one choice point, you fill in the choices using options named "one", "two", etc. Then in the outcomes section, you fill in the sections "Chose << one >>", etc. Each outcome is generally a set of comic panels and some tangible change like new gear. When there are multiple choice points, one or more of the outcomes are simple pointers to a new encounter called a "branch" which contains the set of comic panels and the tangible changes. Because this branch is a separate encounter, it can have its own choice points and outcomes.

Let's take an example of moderate complexity. In the first encounter E, there is a choice point with three outcomes. Choice 1 exits the encounter, choice 2 selects a peaceful party member, and choice 3 selects a warlike party member. With the peaceful party member, there is some dialog and then a second choice point, either a "peaceful good" or "peaceful bad" result. With the warlike party member, there is some different dialog and then a choice point, either a "warlike good" or "warlike bad" result. So there are four possible results.

This can be implemented in three encounters. E is the main encounter with the first choice point. Choice 1 (exit) is embedded in this file, choice 2 contains a branch to a new encounter Epeace, choice 3 contains a branch to a new encounter Ewar. The Epeace encounter contains the peaceful dialog and choice point, with its two results, without any further branch. The Ewar encounter contains the warlike dialog and choice point, and its the two results, without any branches.

It is possible, but inconvenient to change the branching structure after creating the encounter. Plan out how you want the branches to work before you implement anything. Different modders have different approaches, but it is also possible to carefully edit the json files in a text editor to implement the "guts" of the branches with a stub comic panel for each step. Then, using the in-game editor, add the details of the comic panels and dialog.

Getting started

This guide builds on the previous guide Adding an encounter with a choice. Please create the files described there. Note, here we will be surgically re-arranging the json source code rather than using the in-game editor. If you have planned your encounter and set up the branch points in advance, it may be easier to use the in-game editor. This guide will have related screenshots of the in-game editor, but primarily relies on editing the json file in a text editor.

Creating the branches in the main encounter

The encounter described previously has a choice with two branches. The following json excerpt has the relevant lines (not a complete file):

"outcomes": [
	{
		"class": "IfPlayerChose",
		"ifPlayerChose": "one",
		"then": {
			"class": "DoAll",
			"outcomes": [
				{
					"class": "Description",
					"script": [ { "panel": { ... } ... ]
		}
	},
	{
		"class": "IfPlayerChose",
		"ifPlayerChose": "two",
		"then": { ... }
		}
	}
]

To replace the existing text with a branch, insert the following (again only an excerpt). The value of branchEvent is the new encounter you will add.

	{
		"class": "IfPlayerChose",
		"ifPlayerChose": "two",
		"then": {
			"class": "Branch",
			"branchEvent": "cropsOfStone_branch_a3"
		}
	}

Here is a screenshot of an encounter with branches as it appears in the in-game editor. In this case choice one is embedded in the same encounter (under Description), and choice three is a branch to a separate encounter cropsOfStone_branch_a3.

ModdingBranchesEditor.PNG

Creating the second encounter

This author tends to create new files in a text editor, by mixing together different blocks cut from earlier mods or original game files. You absolutely can create these using the in-game editor. In the previous section we established the name of the branch encounter. Either in a text editor, or in-game, create the new encounter. Its type must be "branch". There are some subtle points about what can be inherited from the previous encounter, but in general every speaking role can be inherited with a role in the target section.

Seeing the effect in game

The previous guide has the details.