VNgen Reference Guide

  1. Introduction
  2. Buy Now
  3. Download PDF
  4. Changelog
    1. Compatibility Notes
    2. Feature Comparison
  5. Getting Started
    1. Setup & Installation
      1. Additional HTML5 Setup
      2. Additional Language Setup
    2. Intro to Q-script
    3. Your First Visual Novel
      1. Entities & Action Types
      2. A Simple Dialog
      3. A Simple Choice
      4. A Simple Scene
      5. A Simple Script
  6. Reference Guide
    1. Debug Functions
      1. Intro to QCMD
      2. Included Commands
      3. show_debug_vngen
    2. Macros & Keywords
    3. Animations
      1. Creating Custom Animations
      2. Included Animations
      3. deform
      4. keyframe
    4. Effects
      1. Creating Custom Effects
      2. Included Effects
      3. effect
    5. Shaders
      1. Included Shaders
    6. Engine Functions
      1. sys_config
      2. sys_action_init
      3. sys_action_skip
      4. sys_action_term
      5. sys_anim_init
      6. sys_anim_perform
      7. sys_anim_term
      8. sys_anim_speech
      9. sys_cmd_init
      10. sys_cmd_add
      11. sys_cmd_perform
      12. sys_cmd_draw
      13. sys_toggle_cmd
      14. sys_deform_init
      15. sys_deform_perform
      16. sys_deform_draw
      17. sys_deform_term
      18. sys_effect_init
      19. sys_effect_perform
      20. sys_effect_term
      21. sys_event_skip
      22. sys_read_skip
      23. sys_grid_delete
      24. sys_grid_last
      25. sys_layer_set_target
      26. sys_layer_draw_scene
      27. sys_layer_draw_char
      28. sys_layer_draw_emote
      29. sys_layer_draw_perspective
      30. sys_layer_draw_effect
      31. sys_layer_draw_textbox
      32. sys_layer_draw_text
      33. sys_layer_draw_label
      34. sys_layer_draw_prompt
      35. sys_layer_draw_button
      36. sys_layer_draw_option
      37. sys_layer_reset_target
      38. sys_layer_log_set_target
      39. sys_layer_draw_log
      40. sys_layer_draw_log_button
      41. sys_layer_log_reset_target
      42. sys_log_init
      43. sys_log_perform
      44. sys_log_get_style
      45. sys_log_get_xoffset
      46. sys_mouse_hover
      47. sys_option_init
      48. sys_orig_init
      49. sys_queue_enqueue
      50. sys_queue_submit
      51. sys_queue_destroy
      52. sys_queue_empty
      53. sys_scale_init
      54. sys_shader_init
      55. sys_shader_perform
      56. sys_shader_set_sampler
      57. sys_text_init
      58. sys_text_perform
      59. sys_text_get_label
      60. sys_text_get_xoffset
      61. sys_text_style_init
      62. sys_trans_init
      63. sys_trans_perform
      64. sys_vox_add
    7. Global Functions
      1. array_create_2d
      2. interp
      3. is_even
      4. is_odd
      5. make_color_hex_to_rgb
      6. make_color_rgb_to_hex
      7. mouse_region
      8. mouse_region_gui
      9. shader_exists
      10. vngen_continue
      11. vngen_count
      12. vngen_exists
      13. vngen_goto
      14. vngen_goto_unread
      15. vngen_instance_change
      16. vngen_room_goto
      17. vngen_set_cursor
      18. vngen_set_halign
      19. vngen_set_lineheight
      20. vngen_set_speed
      21. vngen_set_vol_music
      22. vngen_set_vol_sound
      23. vngen_set_vol_voice
      24. vngen_set_vol_vox
      25. vngen_set_renderlevel
      26. vngen_set_scale
      27. vngen_set_shader_float
      28. vngen_set_shader_matrix
      29. vngen_set_shader_sampler
      30. vngen_toggle_auto
      31. vngen_toggle_pause
      32. vngen_toggle_visible
    8. File Functions
      1. vngen_file_save
      2. vngen_file_load
      3. vngen_file_delete
    9. Language Functions
      1. vngen_set_lang
      2. vngen_get_lang
    10. Property Functions
      1. vngen_get_prop
      2. vngen_set_prop
      3. vngen_get_index
      4. vngen_get_structure
      5. vngen_get_width
      6. vngen_get_height
      7. vngen_get_x
      8. vngen_get_y
      9. vngen_get_xscale
      10. vngen_get_yscale
      11. vngen_get_rot
    11. Backlog Functions
      1. Buttons
        1. vngen_log_button_create
        2. vngen_log_button_create_ext
        3. vngen_log_button_create_transformed
        4. vngen_log_button_create_ext_transformed
        5. vngen_log_button_destroy
        6. vngen_log_button_clear
        7. vngen_get_log_button
        8. vngen_log_button_nav
        9. vngen_log_button_select
      2. Input
        1. vngen_log_nav
        2. vngen_log_nav_touch
        3. vngen_log_play_audio
        4. vngen_toggle_log
      3. vngen_log_init
      4. vngen_log_add
      5. vngen_log_draw
      6. vngen_log_clear
      7. vngen_log_count
      8. vngen_log_get_index
    12. Object Functions
      1. vngen_object_init
      2. vngen_object_draw
      3. vngen_object_clear
    13. Events
      1. vngen_event_set_target
      2. vngen_event
      3. vngen_event_pause
      4. vngen_event_reset_target
      5. vngen_event_count
      6. vngen_event_get_index
      7. vngen_event_get_label
    14. Actions
    15. Perspective Actions
      1. vngen_perspective_modify_pos
      2. vngen_perspective_modify_direct
      3. vngen_perspective_replace
      4. vngen_perspective_anim_start
      5. vngen_perspective_anim_stop
      6. vngen_perspective_shader_start
      7. vngen_perspective_shader_stop
    16. Scene Actions
      1. vngen_scene_create
      2. vngen_scene_create_ext
      3. vngen_scene_modify_style
      4. vngen_scene_modify_pos
      5. vngen_scene_modify_ext
      6. vngen_scene_modify_direct
      7. vngen_scene_replace
      8. vngen_scene_replace_ext
      9. vngen_scene_destroy
      10. vngen_scene_anim_start
      11. vngen_scene_anim_stop
      12. vngen_scene_deform_start
      13. vngen_scene_deform_stop
      14. vngen_scene_shader_start
      15. vngen_scene_shader_stop
    17. Character Actions
      1. vngen_char_create
      2. vngen_char_create_ext
      3. vngen_char_modify_style
      4. vngen_char_modify_pos
      5. vngen_char_modify_ext
      6. vngen_char_modify_direct
      7. vngen_char_replace
      8. vngen_char_replace_ext
      9. vngen_char_destroy
      10. vngen_char_anim_start
      11. vngen_char_anim_stop
      12. vngen_char_deform_start
      13. vngen_char_deform_stop
      14. vngen_char_shader_start
      15. vngen_char_shader_stop
    18. Character Attachment Actions
      1. vngen_attach_create
      2. vngen_attach_create_ext
      3. vngen_attach_modify_style
      4. vngen_attach_modify_pos
      5. vngen_attach_modify_ext
      6. vngen_attach_modify_direct
      7. vngen_attach_replace
      8. vngen_attach_replace_ext
      9. vngen_attach_destroy
      10. vngen_attach_anim_start
      11. vngen_attach_anim_stop
      12. vngen_attach_deform_start
      13. vngen_attach_deform_stop
      14. vngen_attach_shader_start
      15. vngen_attach_shader_stop
    19. Emote Actions
      1. vngen_emote_create
      2. vngen_emote_create_ext
    20. Effect Actions
      1. vngen_effect_start
      2. vngen_effect_stop
    21. Textbox Actions
      1. vngen_textbox_create
      2. vngen_textbox_create_ext
      3. vngen_textbox_modify_style
      4. vngen_textbox_modify_pos
      5. vngen_textbox_modify_ext
      6. vngen_textbox_modify_direct
      7. vngen_textbox_replace
      8. vngen_textbox_replace_ext
      9. vngen_textbox_destroy
      10. vngen_textbox_anim_start
      11. vngen_textbox_anim_stop
      12. vngen_textbox_deform_start
      13. vngen_textbox_deform_stop
      14. vngen_textbox_shader_start
      15. vngen_textbox_shader_stop
    22. Text Actions
      1. Inline Markup
      2. vngen_text_create
      3. vngen_text_create_ext
      4. vngen_text_modify_style
      5. vngen_text_modify_pos
      6. vngen_text_modify_ext
      7. vngen_text_modify_direct
      8. vngen_text_replace
      9. vngen_text_replace_ext
      10. vngen_text_destroy
      11. vngen_text_anim_start
      12. vngen_text_anim_stop
      13. vngen_text_deform_start
      14. vngen_text_deform_stop
      15. vngen_text_shader_start
      16. vngen_text_shader_stop
    23. Label Actions
      1. vngen_label_create
      2. vngen_label_create_ext
      3. vngen_label_modify_style
      4. vngen_label_modify_pos
      5. vngen_label_modify_ext
      6. vngen_label_modify_direct
      7. vngen_label_replace
      8. vngen_label_replace_ext
      9. vngen_label_destroy
      10. vngen_label_anim_start
      11. vngen_label_anim_stop
      12. vngen_label_deform_start
      13. vngen_label_deform_stop
      14. vngen_label_shader_start
      15. vngen_label_shader_stop
    24. Prompt Actions
      1. vngen_prompt_create
      2. vngen_prompt_create_ext
      3. vngen_prompt_modify_style
      4. vngen_prompt_modify_pos
      5. vngen_prompt_modify_ext
      6. vngen_prompt_modify_direct
      7. vngen_prompt_replace
      8. vngen_prompt_replace_ext
      9. vngen_prompt_destroy
      10. vngen_prompt_anim_start
      11. vngen_prompt_anim_stop
      12. vngen_prompt_deform_start
      13. vngen_prompt_deform_stop
      14. vngen_prompt_shader_start
      15. vngen_prompt_shader_stop
    25. Button Actions
      1. vngen_button_create
      2. vngen_button_create_ext
      3. vngen_button_create_transformed
      4. vngen_button_create_ext_transformed
      5. vngen_button_destroy
      6. vngen_button_clear
      7. vngen_get_button
      8. vngen_button_nav
      9. vngen_button_select
    26. Option Actions
      1. vngen_option
      2. vngen_option_create
      3. vngen_option_create_ext
      4. vngen_option_create_transformed
      5. vngen_option_create_ext_transformed
      6. vngen_option_clear
      7. vngen_get_option
      8. vngen_option_nav
      9. vngen_option_select
    27. Audio Actions
      1. vngen_audio_play_sound
      2. vngen_audio_play_music
      3. vngen_audio_play_voice
      4. vngen_audio_modify
      5. vngen_audio_replace
      6. vngen_audio_pause
      7. vngen_audio_resume
      8. vngen_audio_stop
      9. vngen_vox_play
      10. vngen_vox_modify
      11. vngen_vox_replace
      12. vngen_vox_add
      13. vngen_vox_remove
      14. vngen_vox_pause
      15. vngen_vox_resume
      16. vngen_vox_stop
    28. Code Actions
      1. vngen_script_execute
      2. vngen_script_execute_ext
  7. Special Thanks
  8. EULA

Inline Text Markup #

In addition to standard stylization features, VNgen text actions support inline markup for modifying style and behavior in ways not possible externally. This markup is written directly in text strings and is interpreted by the engine in real-time, meaning you can even use VNgen markup in external word processing software before copying in your script.

With some exceptions, markup is typically written as tags in brackets with opening and closing pairs. However, using closing tags is optional, and omitting them will simply apply markup to the rest of the entire string.

In this section we will examine available markup tags and their individual behaviors in detail.

 

Speaker Names

Syntax:

"Name||Text"

Description:

Though not always necessary, the name of the current speaking character associated with the text can be declared with inline markup. This is done by writing the name of the character followed immediately by “||”, after which text can be written as normal. Any text preceding “||” will be assigned as the speaking character and ignored when drawing the rest of the string onto the screen.

If the speaking character is declared both inline and as an argument, the inline declaration will take precedence.

Note that in order for speaker names to affect other engine features such as labels and character highlighting, the name declared here must match the name set in vngen_char_create exactly.

 

Newline

Syntax:

\n

Description:

While VNgen word-wraps text automatically, there may be times when you wish to manually trigger a line break prematurely. This is achieved using a combination of the primary escape character, “\”, and “n” for “newline”.

Note that VNgen uses “\n” for manual line breaks in both GameMaker Studio 1 and 2, even though only GameMaker Studio 2 supports “\n” markup by default.

 

Escape

Syntax:

^[

Description:

By default, VNgen interprets all brackets as markup. However, there may be times when you wish to draw brackets literally. This is achieved using a combination of the secondary escape character, “^”, and “[“.

Note that only opening brackets need to be escaped.

 

Font

Syntax:

[font=my_font]custom text[/font]

Description:

Draws the enclosed text with a custom font. This font must be previously created as a font resource in GameMaker Studio, and can include bold or italic variants of the default font, or different fonts entirely. That being said, it is recommended to use fonts of similar size when possible. It is also possible to supply a variable in place of an actual font resource.

 

Color

Syntax:

[color=#FFFFFF]colored text[/color] 
[color=#FFF, #000]2-color gradient text[/color]
[color=#FFF, #FFF, #000]3-color gradient text[/color] 
[color=#FFF, #FFF, #000, #000]4-color gradient text[/color]

Description:

Draws the enclosed text with up to four colors specified in hex color notation and separated by commas. Hex color can be written in either three or six characters representing the red, green, and blue channels, respectively. Where multiple colors are specified, text will be drawn with a gradient: two colors providing a horizontal gradient, three colors providing a triangular gradient, and four colors providing a square gradient.

 

Shadow

Syntax:

[shadow=#000]shaded text[/shadow]

Description:

Draws the enclosed text with a shadow of the color specified in hex color notation. Hex color can be written in either three or six characters representing the red, green, and blue channels, respectively. Unlike regular text color, shadow color modifications do not support comma-separated gradients.

 

Outline

Syntax:

[outline=#FFF]outlined text[/outline]

Description:

Draws the enclosed text with an outline of the color specified in hex color notation. Hex color can be written in either three or six characters representing the red, green, and blue channels, respectively. Unlike regular text color, outline color modifications do not support comma-separated gradients.

 

Event

Syntax:

[event=ev_other, ev_user0]

Description:

Executes the specified GameMaker Studio Event when reached by the typewriter effect. Two values must always be supplied here, separated by a comma, with the second value being 0 when no other value applies. Supports Create, Destroy, Step, Alarm, Draw, and Other Events (see documentation on GameMaker’s event_perform function for a list of available events in these categories). Other > User Events are recommended.

The desired Event must be set up in the running object in order for markup to take effect. In this way, event markup can be used to execute any code possible, but bear in mind that it will only be executed once when the text is drawn.

 

Link

Syntax:

[link=ev_other, ev_user0]linked text[/link]

Description:

Turns the enclosed text into a clickable hotspot which will execute the specified GameMaker Studio Event when selected. Two values must always be supplied here, separated by a comma, with the second value being 0 when no other value applies. Supports Create, Destroy, Step, Alarm, Draw, and Other Events (see documentation on GameMaker’s event_perform function for a list of available events in these categories). Other > User Events are recommended.

The desired Event must be set up in the running object in order for links to take effect. In this way, VNgen links can be used to execute any code possible, including acting as links to webpages with the url_open command built-in to GameMaker Studio.

It is recommended to combine link tags with other style tags to draw attention to them as clickable. Links will automatically highlight when hovered, however highlighting will not be visible on white text.

 

Speed

Syntax:

[speed=0.5]slow text[/speed]
[speed=2]fast text[/speed]

Description:

Multiplies the speed at which enclosed text is printed onto the screen. Unlike the default speed, which is written in characters per-second, speed tags use a multiplier to achieve the same effect at all text speeds.

 

Pause

Syntax:

[pause=5]temporarily delayed text
[pause=-1]indefinitely delayed text

Description:

Suspends the typewriter effect for the specified duration, in seconds. If -1 is supplied, the effect will be paused indefinitely until vngen_continue is run. Unlike other tags, pause markup has no corresponding closing tag.

Last updated on August 4, 2018
Suggest Edit