Skip to content

Tips and Tricks

M. H. Golkar edited this page Oct 9, 2022 · 5 revisions

or the collection of short how-tos

Most of these tips and tricks are collected from responses to the issues opened by Arrow users. Feel free to open another one, if you think anything about Arrow needs explanation.

Project Edit History

Early versions of Arrow only supported Snapshots, full images of the open project, serving as manual edit history points that users could create and restore. Second history feature Per-Node Modification History was implemented later, to track editions for each node individually.

Starting with v2, another feature, History System, is added to provide quicker and more convenient undo/redo revision, by keeping a collection of snapshots in a deck in memory.

Keyboard shortcuts and two buttons on top bar are available for history rotation.

This feature is experimental and still uses full project images akin to snapshots which could put a burden on devices with visibly low specs when project size is considerably large. This is why history size preference is zero by default. Any higher value will automatically activate the history system.

Auto-playing Dialogs

Where a character just says something and you continue

The Playable parameter checkbox for Dialog nodes, which is right under the list of dialog lines in the Node tab of the Inspector panel, makes a dialog interactive, so players need to choose and play a dialog line to continue forward, even if there is only one line.

When you want to have a dialog automatic (for NPC or normal characters) just keep the Playable checkbox off. On the other hand, you can turn it on for playable characters or even NPCs, if you intend to wait for player interaction.

It is off by default because statically, more dialog lines belong to non-playable characters.

When auto-playing a dialog node

  • if there is only one line of dialog, it'll be played
  • if there are more than one lines of dialog, one of them will be played randomly,

and you continue to the next node forward.

Note also that Dialog nodes are partial conversations by design. In other words, each dialog node conveys one side of a conversation, although the name might be a little misrepresenting.

This design choice together with playability option, makes Arrow conversation system much more flexible.

Imagine when you want a game in which any of (2 or more) users can play any of the characters. You also intend all the sides to be able to choose all their lines, even their first line starting the conversation. In such scenarios you will need partial dialog nodes.

Another unorthodox case is when you want to let players to choose the dialog lines for all sides of a conversation, and then branch to different plots based on the player's decisions.

... to have a character say something and give answer choices to a player, so how do I do this with Arrow ?

It's really easy, just chain the dialogs for a conversation: let the first part be automatic and the second part (i.e. answer choices) be playable, as instructed above.

Interaction vs Dialog

What's the use for the Interaction node ? Isn't it functionally identical to the Dialog one?

Interaction node is not identical to Dialog. Besides being independent of characters and having different data structure, interactions are semantically different and serve another purpose with different runtime behavior.

Imagine the player/hero entering to a cabin in the woods. You describe the scene via a content node:

"... dark and moist is the cabin ... On the old wooden table, are a gun still smoking, a lantern, and an oily bag."

Now you want to give the player these options:

  • Pick the lantern
  • Pick & load the gun
  • Inspect the bag

These are not parts of any conversation. Nothing is said, nothing is replied. Decisions are to be made for different actions, possibly leading to different plots. Here you may use an instance of Interaction.

Macro vs Scene

What is the difference between a scene and a macro? ... from a practical point of view

Macros are reusable scenes.

You instantiate a macro and use it in other scenes via Macro-Use nodes, as many times as you like (somehow like a function).

For example, when you want to check if the hero is still alive after every combat. In that scenario you may make a macro which checks a variable (called health_points) and if the variable is zero the macro jumps to a game-over scene; otherwise it does nothing which means user will continue playing the normal plot-line (by convention). Thanks to the macro, we don't need to recreate the nodes responsible for the health check, again and again. We just update the variable and run the health-check macro.

Styling Contents

Major textual node types including Content and Monolog, support minimal styling with BBCode. It's limited at the time and the final result may depend on the runtime you use. In other words you may get some BBCode blocks working only in the runtime (export).

CSS styling, available in the official browser-based runtime, is another possibility offering lots of advantages.

For more information, check out the official HTML-JS runtime.

Clone this wiki locally