Skip to content
This repository has been archived by the owner on Dec 21, 2021. It is now read-only.

Merino's design philosophy

Robert Yang edited this page Aug 27, 2018 · 8 revisions

Merino diagram

Merino attempts to mix sensibilities from the original Yarn Editor, newer Yarn editor Jacquard, and writing tool Scrivener.

If every tool makes an argument about a craft, then Merino argues game writing is about typing a lot of words into a big textbox. A big textbox most closely resembles workflows for writing novels, film scripts, wikis, and other documents, and it also lets you easily do essential writing operations like cut, copy, and paste.

In contrast, I've seen a lot of Unity dialogue tools that, in my opinion, have bad design and assumptions.

  • It is bad to require a separate node for each line of dialogue -- it is better to let authors decide how long a node should be.
  • It is bad to force authors to fill a form with a dozen different boxes and fields -- it is better to annotate the line with a unique ID or hash to attach metadata (localization, voice over) in a separate process or file.
  • It is bad to ignore word processor design.
  • It is bad to do what's convenient for computers instead of what's convenient for humans.

Why Merino?

Merino wool is one of the softest and most popular yarn varieties in the world.

Why Yarn?

Good things about Yarn:

  • tested on a huge commercial product, Night In The Woods, and Yarn Spinner supports localization via line tagging
  • closest thing to a "big textbox with chunks" ideal
  • takes lessons from Twine, the most common and accessible narrative design tool of the last decade
  • lightweight, easy for any experienced Unity developer to hook and build over
  • the shortcut option syntax (->) works really well

Not-so-good things about Yarn:

  • not good for complete beginners, doesn't make a complete game for the user
  • the original editor tool has barely been updated, and has severe workflow issues
    • can't validate or playtest scripts in the editor
    • can only display one node at a time
    • to edit a node you must (1) pan to the node in grid space and (2) double-click on it
    • limited syntax highlighting, no autocomplete
    • I only know Unity C# so I can't contribute code to it lol
    • (this isn't meant to blame the original developers! it's OK to move on to other projects! at the same time, I also felt like I needed something new)
  • needs a bigger community with more examples, tutorials, and documentation

Designing Merino

Merino tries to fix some of those not-so-good things about working with Yarn. Here's some of its design principles:

  • Big text box. Put all the words in it.
  • Avoid relying on node map / grid view. Imagine Unity didn't have a hierarchy tab, and you had to fly around the world and literally look around to select an object. (That's actually how it worked when I did Half-Life 2 modding. It was awful.)
  • Load and save via Yarn files. Don't use Unity ScriptableObjects or Unity-only assets or Unity-specific features. Yarn should remain a relatively platform-agnostic story scripting language.
  • Support most basic text editor operations like cut, copy, paste, indent, syntax highlighting. This was surprisingly painful to implement in the Unity Editor. I even spent a whole day trying to get the keyboard cursor (caret) to move back when you undo typing a word! It was basically a nightmare lol
  • (planned) Interpret, understand, analyze, and test your Yarn file -- let authors do automated testing and/or use generative techniques when writing Yarn scripts.
Clone this wiki locally