OVNS Builder Documentation
Blocks
Basic Blocks
Sequence Block
- Inputs: 0
- Outputs: 1
- Description: Denotes the beginning of a visual novel sequence. You should only have a SINGLE SEQUENCE BLOCK when building a sequence in order for it to preview correctly. Blocks external to this block will be parsed as if they were outside of any sequence, so any block with no sequence-external meaning will not be parsed if not connected in the graph to the sequence block.
- OVNS:
{{ ... }}


Line Block
- Inputs: 1
- Outputs: 1
- Description: Denotes a single line in OVNS.
- OVNS:
<<line>>Text to show...


Choice Block
- Inputs: 1
- Outputs: X
- Description: Denotes a choice directive in OVNS. You may freely add or remove choices from the block. The block must have text for the choice description and each option.
- OVNS:
<<choice>> Choice description here... Option 1 {{ ... }} Option X {{ ... }}
<</choice>>


Custom Block
- Inputs: 1
- Outputs: 1
- Description: Denotes a custom input of pure OVNS lines. Text placed here should be valid and parseable OVNS. This allows the definition and usage of macros and any scripting already made in OVNS.
- OVNS:
custom OVNS lines...


Group Block
- Inputs: 0
- Outputs: 0
- Description: Organizational block which allows the user to place a selection of blocks inside of it. Allows the user to collapse the group and move the set of blocks as one unit. Does not translate to OVNS.
- OVNS:


Stat Blocks and Conditionals
Stat Block (Integer)
- Inputs: 1
- Outputs: 1
- Description: Denotes a stat directive in OVNS. When defined outside of the graph connected to the Sequence Block, it performs the same stat directive before the sequence.
- OVNS:
<<stat>> statname <op><value>


Stat Block (String)
- Inputs: 1
- Outputs: 1
- Description: Denotes a statstr directive in OVNS. When defined outside of the graph connected to the Sequence Block, it performs the same stat directive before the sequence.
- OVNS:
<<statstr>> statname <op><value>


Conditional (If) Block
- Inputs: 1
- Outputs: 3
- Description: Denotes an <if> directive in OVNS. Checks a provided stat against a value, branching along the top path if true, and branching down the middle path if false. Once the end of true/false path is exhausted, execution resumes at the final (bottom) output of the conditional block.
- OVNS:
<if> stat condition {{ sequence if condition is true... }} <else> {{ sequence if condition is false... }} sequence after true/false path...


Settings
Setting Block
- Inputs: 1
- Outputs: 1
- Description: Replaces <<new_settings>>, <<set_settings>>, <<text>>, <<speaker>>, and <<sprite>> calls. When defined outside of the graph connected to the Sequence Block, it defines a set of new settings with <<new_settings>>, where following <<text>>, <<speaker>> and <<sprite>> directive attributes apply to the created settings. When defined normally within the graph, it invokes <<set_settings>> if a setting name is provided. When defined within the graph, regardless of if <<set_settings>> is invoked, any information provided in the attribute fields is also invoked on-demand in the sequence with <<text>>, <<speaker>>, and <<sprite>> directives.
- OVNS:
// When defined outside the graph... <<new_settings>> setting_name <<text>> attr1:"..." attr2:"..." ... <<speaker>> attr1:"..." attr2:"..." ... <<sprite>> attr1:"..." attr2:"..." ... // When defined inside the graph... // set_settings only called if setting_name is provided <<set_settings>> setting_name // Other overrides only called if any attribute values are provided. <<text>> attr1:"..." attr2:"..." ... <<speaker>> attr1:"..." attr2:"..." ... <<sprite>> attr1:"..." attr2:"..." ...


Reset Slots Block
- Inputs: 1
- Outputs: 1
- Description: Denotes a <<reset_slots>> directive in OVNS.
- OVNS:
<<reset_slots>>


Audio Block
- Inputs: 1
- Outputs: 1
- Description: Denotes an <<audio>> directive in OVNS. Pick the desired audio key, some settings, and an audio source. Available audio sources are: text crawl noice audio source, audio clip source (for quick noises or voice lines), and a music source.
- OVNS:
<<audio>> attr1:"..." attr2:"..." ...


Background Block
- Inputs: 1
- Outputs: 1
- Description: Denotes a <<background>> directive in OVNS.
- OVNS:
<<background>> attr1:"..." attr2:"..." ...


Usage
Usage
Make Blocks
Create blocks by pressing the Spacebar or right-clicking in the scene and selecting the desired block from the block search menu. The block search menu will also appear when dropping a block’s output into empty space.



Connect Blocks
Move blocks by clicking and dragging, or move a group of blocks by selecting multiple before clicking and dragging any of the selected blocks. Connect the outputs of one block to the input of other blocks by clicking and dragging the block’s output port (red port on the right side of the block) into the input port (blue on the left side of the block) of the other block.

Edit Blocks
Edit blocks by clicking on their “edit” buttons. Some blocks (e.g. the choice block), may have multiple edit buttons to edit various aspects of the block. There are several unique editing interfaces to make adding information to each block simple while providing the same flexibility allowed in OVNS.

Copy Blocks
Duplicate (Copy) a group of selected blocks by pressing the C key.

Delete and Disable Blocks
Blocks may be deleted simple by pressing the Delete key. Alternatively, to disable a block from being parsed while still keeping the block, press the D key. Re-enable disabled blocks by pressing Shift+D. Disabling a block also checks all blocks downstream from the disabled block and if the checked block has no enabled input blocks, then it is also disabled. Blocks may only be re-enabled if at least 1 input block is enabled.

Preview and OVNS Preview
If you have a sequence block in the scene, that block will represent the starting point for your visual novel sequence. Run a preview of this visual novel sequence by clicking on the sequence block’s Build button. View the OVNS generated by your blocks by clicking the Preview OVNS button at the bottom of the builder. The OVNS preview is not directly editable and can only be changed by altering the blocks in your scene.

Shortcuts
Shortcuts
- Space:
- Open block search menu.
- Right click:
- Open block search menu.
- C:
- Duplicate selected blocks.
- Delete:
- Deletes selected blocks.
- Ctrl + Z:
- Undo last change.
- Ctrl + Shift + Z:
- Redo last undone change.
- D:
- Disable selected blocks.
- Shift + D:
- Re-enable selected blocks.
Examples
Make A Choice
Make A Choice
Create a sequence with branching paths using a choice block.

{{
<<choice>>
What will you choose?
Option 1
{{
<<line>>You chose option 1.
<<line>>Great choice!
<<line>>The end.
}}
Option 2
{{
<<line>>You chose option 2.
<<line>>Excellent choice!
<<line>>The end.
}}
<</choice>>
}}
Random Branch
Random Branch
Create a sequence with branching paths using a conditional check based on a random value.

<<stat>> mystat =<<r 1 2>>
{{
<if>
mystat ==1
{{
<<line>>mystat is 1
}}
<else>
{{
<<line>>mystat is 2
}}
</if>
<<line>>The end.
}}
Sprite Move
Sprite Move
Reposition a custom sprite slot multiple times, allowing the sprite to flip automatically when on the right side of the screen.

{{
<<text>> boxmargin:"0,0,0,0"
<<speaker>> boxmargin:"0,0,0,0"
<<sprite>> slot:"custom" key:"orc_smile" size:"7,7" flip:"autox" pos:"0,0"
<<line>>
<<sprite>> slot:"custom" pos:"0.2,0"
<<line>>
<<sprite>> slot:"custom" pos:"0.4,0"
<<line>>
<<sprite>> slot:"custom" pos:"0.6,0"
<<line>>
<<sprite>> slot:"custom" pos:"0.8,0"
<<line>>
<<sprite>> slot:"custom" pos:"1,0"
<<line>>
}}
Macro (Focus)
Macro (Focus)
Make and use a custom macro that dims all default sprite slots except the one to be “focused”.

// Macro named "focus"
// with a single input parameter named "slotKey"
<<macro>> focus slotKey
<<sprite>> slot:0 color:0.3,0.3,0.3,0.5
<<sprite>> slot:1 color:0.3,0.3,0.3,0.5
<<sprite>> slot:2 color:0.3,0.3,0.3,0.5
<<sprite>> slot:3 color:0.3,0.3,0.3,0.5
<<sprite>> slot:4 color:0.3,0.3,0.3,0.5
// NOTE: slotKey in this line will be find-replaced
// with whatever argument you invoke the macro with.
<<sprite>> slot:slotKey color:1,1,1,1 layer:-1
<<macro_end>>
{{
<<reset_slots>>
<<sprite>> slot:"0" key:"orc_smile" color:"1,1,1,1" size:"7,7"
<<sprite>> slot:"1" key:"orc_smile" color:"1,1,1,1" size:"7,7"
<<sprite>> slot:"2" key:"orc_smile" color:"1,1,1,1" size:"7,7"
<<sprite>> slot:"3" key:"orc_smile" color:"1,1,1,1" size:"7,7"
<<sprite>> slot:"4" key:"orc_smile" color:"1,1,1,1" size:"7,7"
<<macro>> focus 0
<<line>>
<<macro>> focus 1
<<line>>
<<macro>> focus 2
<<line>>
<<macro>> focus 3
<<line>>
<<macro>> focus 4
<<line>>
}}
Changelog
Changelog
None