Version History

1.0.8

  • Added support for GameMaker Studio 2 individual sprite speeds
    • Global animation speed arguments have been removed from vngen_object_drawvngen_log_drawvngen_emote_create, and vngen_emote_create_ext
    • Other timing functions have also been improved as a result of this update
  • Added vngen_file_save_map to facilitate adding VNgen data to fully custom save files
  • Added vngen_set_vol and audio type macros to replace individual audio volume scripts
    • Volume control of UI/navigation sounds is now supported
    • Volume can now be set from the debug command console
  • Added auto keyword support to vngen_log_add, allowing custom content to be added to the backlog using the system queue
  • Added looping animation support to emotes
  • Added support for custom hotspots using rectangular collision masks (bounding boxes) on options and buttons
  • Added new scanline and radial blur shaders
  • Added new cubic bezier ease mode
  • Added new 'output' functions to retrieve the state of many 'input' functions, such as whether or not the engine is paused, or a button or option is held down
  • Added new 'get' functions for global audio volumes, text alignment, lineheight, text speed, and event read state
  • Added new vngen_code_execute functions for running arbitrary code as VNgen actions without the use of scripts
  • Updated vngen_set_lineheight to support per-entity lineheight multipliers
    • Save functions now also read and write global lineheight multipliers
  • Updated input functions to use a common prefix and support explicit true/false settings in addition to toggles
    • Important! See compatibility notes for a list of syntax updates!
  • Updated vngen_option_clear to support removing option results from history as well as memory
  • Updated UI visibility toggle script to optionally allow progression while hidden
  • Updated vngen_room_goto to optionally allow skipping to a VNgen event upon room change
  • Updated highlight argument in vngen_object_draw and perform argument in vngen_instance_change to be optional (enabled by default)
  • Updated auto prompts to match text scale and rotation, not just position
  • Updated backlog audio to match global voice volume
  • Updated vngen_file_load to support switching rooms upon loading files
  • Updated vngen_file_load_map to accept ds_maps generated by vngen_file_save_map
  • Fixed multiple crashes related to running file functions when files or save data do not exist
  • Fixed room data missing from unencrypted save files loaded with vngen_file_load_map
  • Fixed text alignment and speed reverting to global defaults after window is resized
  • Fixed volume functions causing crashes when run outside of a VNgen object or after the running VNgen object has been cleared
  • Fixed pause state not being preserved if vngen_goto is run while the engine is paused
  • Fixed indefinite pauses applying even if auto mode is enabled
    • All negative values will now trigger indefinite pause, but if auto mode is enabled, the literal numeric value will be used instead. (e.g. [pause=-2] will pause for 2 seconds if auto mode is enabled, and pause indefinitely otherwise)
    • This behavior can be enabled or disabled with vngen_set_auto_type
    • This update applies to both events and text markup
  • Fixed options being added to the backlog even when an empty string is used
    • Image-only options are now properly supported
  • Fixed vngen_get_option clearing options prematurely if an option ID is provided in the same event as options are presented
  • Miscellaneous fixes and improvements

1.0.7

  • Replaced internal timing functions with a simpler, more versatile timing system
  • Added automatic checks to preserve custom text alignment when drawing VNgen
    • Previously it was required to manually reset draw_set_halign or draw_set_valign before drawing VNgen. This is no longer necessary, as VNgen properly handles both functions.
    • (Requires GameMaker Studio v2.2.1.375 or newer)
  • Added automatic option results logging. Setting an option block ID in vngen_get_option now returns user selections from any previous option!
    • Option selection data is now also saved/loaded with VNgen file functions
  • Added vngen_file_load_map for restoring saved VNgen data to a user-defined ds_map for later usage
  • Improved file functions
    • Fixed loading only restoring the VNgen object and not the event, in some cases
    • Save/load can now be performed in non-VNgen objects
    • Save files now also record the active room when saved
  • Improved rendering on scenes and debug interface
    • Blending is now consistent between full/reduced and legacy render modes
    • Texture filtering is now disabled on debug interface for more legible text
  • Improved handling of speech animations when text and voice are active simultaneously
  • Fixed an issue where prematurely skipping text with an indefinite pause skipped the text, but not the pause
  • Fixed incorrect backlog touch scrolling at non-standard framerates
  • Fixed perspective shaders drawing a blank frame when initialized
  • Fixed mouse interactions in HTML5
  • Miscellaneous additional fixes and improvements

1.0.6

  • Added support for setting the typewriter effect speed of individual text entities with vngen_set_speed
    • This complements the existing [speed] markup feature, which only allows setting a multiplier of the global speed rather than explicit CPS
  • Added global vngen_get_prop and vngen_set_prop functions to modify properties not accessible through existing functions
    • Can also be used to modify a single property when other functions require modifying multiple at once, e.g. vngen_text_modify_pos
    • WARNING: This is an advanced feature, and improper usage can break things. Use at your own risk!
  • Significantly improved performance of vngen_get_* functions when addressing multiple consecutive properties for the same entity
  • Updated button entities to fully ignore the engine pause state
    • Buttons are now suitable for use in creating pause menus
  • Renamed vngen_perspective_modify to vngen_perspective_modify_pos for consistency with other functions
  • Fixed "out of range" errors when creating prompts while no corresponding text exists
  • Fixed GUI not initializing to the correct scale when running vngen_set_scale
  • Fixed vngen_get_* functions returning empty values on entities created in the same frame

1.0.5

  • Added support for using variables in [font] markup
  • Fixed button states not being cleared on destroy
  • Fixed errors if vngen_object_clear is run when an object has already been cleared

1.0.4

  • Added global volume controls for music, sound, voice, and vox
  • Added support for built-in cursor states to vngen_set_cursor
  • Added support for auto text positioning in extended option and button functions
  • Fixed incorrect syntax guides for vngen_scene_modify_style and vngen_label_replace_ext (GMS2 only)
  • Fixed overdraw in wipe transitions
  • Fixed vngen_goto performing certain skipped actions when performing skipped events is disabled
  • Fixed vngen_button_select and vngen_log_button_select causing crashes if run when buttons do not exist
  • Fixed typo causing errors in vngen_label_create_ext

1.0.3

  • Added auto keyword support to vngen_text_create_* actions to better facilitate NVL-style presentation
    • Using auto positioning will create the new text entity directly below the previous one, eliminating the need to guess at unpredictable text surface dimensions
  • Updated prompts and character speech animations to pause while [pause] tags are active
  • Fixed a bug causing consecutive [pause=-1] tags to fail
  • Fixed a bug causing incorrect vox playback
    • General vox behavior and text performance have been improved as a result of this fix
  • Fixed a bug causing audio volume to be reset if fullscreen mode is changed
  • Fixed outdated documentation examples in Getting Started guide

1.0.2

  • Updated debug console to accept escaped commas as ^, instead of \,
    • This change was necessary to escape markup in GMS2, but was changed in both versions for interoperability
  • Fixed vngen_goto and vngen_room_goto sometimes failing when executed in debug console (GMS 2 only)
  • Fixed scene replacements sometimes failing to refresh scene on replace if dimensions are the same
  • Fixed erroneous usage examples in some scripts

1.0.1

  • Miscellaneous fixes and improvements

1.0.0

  • Added native GameMaker Studio 2 support
    • GameMaker Studio 1 support now moved to critical updates and bug fixes only
  • Added native 4K support to internal functions and debug interface
  • Added *_transformed functions to VNgen options for added hover/select animation and stylization
    • This also replaced the extra color functionality previously added to vngen_option_create_ext, resulting in a simpler *_ext function
  • Added on-screen buttons as a new entity type
    • Log buttons have been rewritten to match the new button standard and can now be used to execute arbitrary code, not just scroll the log
    • The existing vngen_type_button macro now refers to both log buttons and standard buttons and can be used to check both in property functions
  • Added support for deformations of any number of subdivisions
    • Deformation columns and rows can now be set on a per-deformation basis
    • Updated the included def_wave deformation to display an actual sine wave
  • Added new underwater-like wave shader
  • Added vngen_count to replace individual entity *_count functions with a universal function
  • Added previous keyword support to character face coordinates in character replace actions
  • Added full keyword support to vngen_audio_modify loop clip settings
  • Added vngen_event_get_label to complement vngen_event_get_index
  • Added vngen_script_execute_ext to perform scripts as VNgen actions, including when the running event is skipped
  • Updated vngen_event_get_index to optionally return the index of an event by label (rather than the current event)
  • Replaced per-entity text speed with vngen_set_speed, which sets speed for all text entities.
  • Replaced vngen_instance_create with vngen_instance_change
    • The existing script was not really necessary and functioned more closely to the built-in instance_change function anyhow
  • Replaced bracket escape character with ^. Markup can now be drawn literally as ^[ instead of \[
    • This change was necessary to escape markup in GMS2, but was changed in both versions for interoperability
  • Removed crop animations from replace transitions for consistency among all entities
    • Previously, only a few entities supported them, and created undesirable visual effects in some use-cases.
  • Removed tiled scene deformations from renderlevel 1
    • It is technically not possible to deform tiled scenes at this renderlevel, therefore scenes will now fall back to non-deformed tiles rather than sacrifice tile mode for deformations
  • Removed vngen_option_exists as its functionality has been superseded by vngen_exists
  • Removed language macros as they have been superseded by vngen_type_* macros
  • Fixed text speeds of 0 or less (instant) causing crashes
  • Fixed negative interpolation causing crashes if ease_circ_* modes are used
  • Fixed opaque backgrounds appearing on highlighted objects if certain shaders or blend modes were used
  • Fixed shaders being duplicated when a deform is also active
  • Fixed auto mode being disabled when an indefinite event pause is encountered
  • Fixed backlog override fonts/colors failing to apply
  • Fixed missing backlog audio data if voice is paused in background while previous voice is played in backlog
  • Fixed non-looped audio continuing to play when skipped while the engine is paused
  • Fixed music losing position and clip settings if vngen_goto is run
  • Fixed non-looped sounds failing to fade in on create
  • Fixed mouse cursor getting stuck in hover state if vngen_goto is run while in this state
  • Fixed scaling not updating when launched in fullscreen
  • Miscellaneous additional fixes and improvements

0.9.9 (EA)

  • Added vngen_goto_unread to skip to the nearest option block or unread event
  • Added functions to set shader floats, samplers, and matrices
  • Added functions to replace sounds and vox while synchronizing playback position and other properties
  • Added multi-track and pitch range support to vox
    • Vox source can now be input as an array to create a list of vox which will be randomly selected from each time text increments
    • Additional sounds can be added or removed post-creation
    • Pitch is now randomized between two min/max values rather than simply enabled/disabled with a switch
  • Added trans_spin_in and trans_spin_out transitions
  • Added [event] markup to execute events inline directly (a la links, but without requiring a click)
  • Updated deforms to use 2D point arrays instead of 1D fixed variables
    • This will allow for meshes of any number of columns and rows in a future update
  • Updated effects to use custom variable array, allowing for infinite custom effect variables
  • Raised vngen_script_execute argument limit to 32.
  • Fixed compatibility issues with YYC. YYC is now fully supported
  • Fixed audio fade transitions not being skipped if vngen_goto is run
  • Improved HTML5 compatibility
    • Fixed broken mouse/touch hotspots when using scaling
    • Reduced renderlevel 2 surface usage to mitigate texture swapping glitches
  • Miscellaneous additional fixes and improvements

0.9.8 (EA)

  • Added per-entity shader support and a selection of included shaders
    • Support for custom uniforms coming in a future update
  • Added make_color_rgb_to_hex to complement make_color_hex, which has now been renamed make_color_hex_to_rgb for consistency
  • Added optional perform argument to vngen_goto to allow disabling performing skipped events
  • Added optional id argument to vngen_option_select to allow selecting a specific option directly without navigation
  • Fixed wrong colors being used when auto labels are replaced with the previous color/font setting at the target event of vngen_goto
  • Fixed style inheritance failing to record certain properties. Backlog now inherits label styles for speaker names
  • Fixed incorrect scaling when launched directly in fullscreen
  • Removed audio wrappers in favor of native functions
  • Miscellaneous additional fixes and improvements

0.9.7 (EA)

  • Added vngen_room_goto to switch rooms while properly cleaning up VNgen data and preserving log data
  • Added support for multiple renderlevels to improve compatibility with some platforms such as Android, iOS, and HTML5
    • Also added command to set renderlevel in debug console
  • Updated backlog with improved text processing and support for new rendering features such as text alignment
  • Updated display scaling to function as a setting--running a script every step is no longer required
    • Scaling now supports HTML5
    • Also added command to set scaling view in debug console
  • Unified label and text rendering to fix numerous bugs with labels
  • Fixed a bug causing transitions to never be considered complete
  • Standardized code to reduce redundancy and improve performance
  • Miscellaneous additional fixes and improvements

0.9.6 (EA)

  • Externalized transitions as a new category of keyframe animations
  • Added support for performing animations, deformations, and effects in reverse
  • Added optional ease override support to animations, deformations, and effects to match transition ease behavior
  • Added input_rot as an available constant for keyframe animations (where applicable)
  • Fixed a bug causing text links to crash
  • Standardized code to reduce redundancy and improve performance
  • Miscellaneous additional fixes and improvements

0.9.5 (EA)

  • Added new tiled scenes system with support for rotation, gradient color blending, wipe transitions, and deforms
  • Added paragraph alignment support to text (labels coming soon)
  • Added animation blending support to transforms and deforms
  • Added color gradient and wipe transition support to deforms
  • Updated file functions to save/load text alignment and language settings
  • Improved replace fade transitions to better support transparent entities
  • Improved text auto linebreak accuracy
  • Fixed character flipping in vngen_char_replace_ext being absolute instead of relative
  • Fixed memory leaks in vngen_object_clear
  • Removed scale from perspective calculations. Distance is now determined solely by z-index for better control and more predictable perspective behavior.
  • Standardized code to reduce redundancy and improve performance
  • Miscellaneous additional fixes and improvements

0.9.4 (EA)

  • Updated syntax for consistency and ease of use
    • Added all keyword support to modify, animate, effects, audio, and log button functions
    • Added idle argument to vngen_char_create_ext for consistency with vngen_char_replace_ext
    • Added name argument to vngen_text_create_ext and vngen_text_replace_ext for consistency with other functions
    • Added any keyword support to vngen_exists to check whether any entity of a given type exists
    • Added optional easing support for all non-extended functions
    • Added vngen_option_create_ext with support for origin, scaling, and variable text colors, and simplified vngen_option_create
    • Added support for checking log buttons to vngen_exists and vngen_get_index
  • Updated prompts to accurately reflect current state during replacement fade and accurately auto-position on rotated text
  • Updated vngen_get_option to clear option results by default--setting the true argument is no longer required
  • Updated replace functions to fade the most recently viewed resource when combined with vngen_goto (rather than the most recent resource chronologically, which isn't always visually correct)
  • Updated animations to rotate coordinates relative to perspective only, not the rotation of the animated entity
  • Fixed option position being calculated incorrectly
  • Fixed destroy actions never completing when all keyword is used if no entities of the given type exist
  • Fixed skip failure when skipping to an event label where the event is last in a series
  • Fixed effects causing errors during some uses of vngen_goto
  • Renamed audio functions for consistency with other functions and added wrappers for legacy syntax support
  • Renamed vngen_get_option_number to vngen_option_count for consistency with other functions
  • Renamed vngen_get_option_active to vngen_option_exists for consistency with other functions
  • Standardized code to reduce redundancy and improve performance
  • Miscellaneous additional fixes and improvements

0.9.3 (EA)

  • Rewrote developer command console (now QCMD!)
    • Added support for keyboard cursor navigation (left/right/home/end)
    • Added support for repeat input if key is held down
    • Externalized commands--console is now extensible!
    • Added new language, log, and window commands (type 'help' in QCMD to learn more!)
  • Added keyframe-based effect scripting system
    • Execute arbitrary code in VNgen keyframes!
    • Includes effect scripts for haptic feedback, screen flash, screen shake, and Dualshock 4 lightbar flash
  • Added vngen_get_index function to retrieve internal numeric index for any given entity from the entity type and ID
  • Added vngen_event_count function to retrieve the current total number of events
  • Added support for all keyword in vngen_*_destroy functions for destroying all entities of a given type
  • Merged backgrounds and foregrounds into a single internal data structure for more efficient memory management
  • Separated vox speech synthesis into its own data structure and added audio functions to independently pause, stop, and modify vox audio
  • Renamed vngen_log_get_size to vngen_log_count for consistency with other functions
  • Renamed vngen_get_event to vngen_event_get_index for consistency with other functions
  • Updated skip functionality to allow skipping past the final event
  • Updated vngen_script_execute to accept a full 16 arguments (as opposed to the previous 15-argument limitation)
  • Fixed vngen_file_load failing due to outdated use of vngen_goto to restore object event
  • Fixed vngen_log_draw generating errors if log was cleared without destroying the running object
  • Fixed skipped event data being added to the backlog when jumping across objects
  • Fixed text/label actions generating errors if empty string is input
  • Standardized code to reduce redundancy and improve performance
  • Miscellaneous additional fixes and improvements

0.9.2 (EA)

  • Fixed an issue causing touch scrolling to sometimes scroll the backlog infinitely
  • Fixed manual linebreaks being removed from backlog text
  • Fixed backlog entries being listed in literal order rather than historical order.
  • Added vngen_log_get_index script to return historical log entry index from an entry's on-screen order.
  • Added new proportion scaling modes which scale relatively to changes in display scale
  • Added new properties functions (vngen_get_*) to return the calculated width, height, x, y, xscale, yscale, and rotation of VNgen entities, factoring in animations and modifications
  • Updated vngen_exists to optionally check a specific character for attachments, rather than check all characters
  • Enhanced all built-in animations for use with perspective
  • Reduced linebreak strictness so that text surface width can expand or shrink to fit text automatically
  • Renamed vngen_pragma to sys_config for consistency with other new engine functions
  • Standardized code to reduce redundancy and improve performance
  • Miscellaneous additional fixes and improvements

0.9.1 (EA)

  • Added online and offline documentation
  • Added additional macros for entity types, which can now be tested with vngen_exists
  • Added new zoom transitions which replace the old scale transition
  • Rewrote skip functionality to fix bugs with labels and some jumps taking more than a frame to complete
  • Fixed backlog data being duplicated when the window is resized, forcing an event restart--without also disabling duplicate data for intentional restarts. This required creating a new backlog queue system to hold all new log data until rescaling is complete.
  • Fixed attachments scaling to the display rather than the parent character with vngen_attach_replace_ext
  • Fixed option button sprites not respecting sprite alignment
  • Renamed existing vngen_emote_create to vngen_emote_create_ext and added a simplified vngen_emote_create in its place.
  • Standardized code to reduce redundancy and improve performance
  • Miscellaneous additional fixes and improvements

0.9.0 (EA)

  • Initial release