OVNS Builder Documentation

Published: 3 December, 2024
Last Edited: 3 December, 2024
Version: 0.9.1
See documentation for Orcsune Visual Novel Script here.

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 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...
    

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

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

  • 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

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

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

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)

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

None