Beta 2

First Major Update

This is our first major update for the preview version of Quillscript. It adds a lot of new features, with a special mention to Constans, Reduces Assignment, Constructor Operator, Script Reference By Path and Search Paths, Inline Comments, and Backtick Localization:

Also, we are releasing together, a new version of our Visual Studio Code extension with IntelliSense autocomplete snippets for built-in functions, language tokens, etc.

Release Date: 2023-01-10

Engine Version: 5.1

New Features

Commands

  • Add Quillscript constants: $ var = 10, $ CONST = 3.14

  • Add reduced assignment: $ x += 10, $ x *= 2 - {y}, etc.

  • Add Strict Equal (===) and Strict Not Equal (!==) operators to evaluate case sensitivity

  • Add constructor operator: $ x := 10

  • Can use single quotes just as double quotes on parameters: $ Func 'long string'

  • Add built-in function $ Background

  • Add built-in function $ PlaySound

  • Add built-in function $ StopSound

  • Add built-in function $ StopAllSounds

  • Add built-in function $ Notify

  • Passing script references as parameters to functions won't perform a type check anymore. This behavior was blocking the use of polymorphism. Be aware that passing a non-compatible type reference to a function parameter will cause a crash.

Tags

  • Can declare multiple tags in the same instruction: * option | #a #b #c

Script

  • The reimport functionality will now update the script asset instead of overriding it, preserving other properties, like ID and Script References. A new setting was added to enable/disable this behavior.

Programming

  • Add a function to rename variables: RenameQuillscriptVariable

  • Minor changes to a few functions signatures

Others

  • Add script references by path: {&Game/MyAsset.MyAsset}, {&Engine.Actor}

  • Add inline comments: $ x := 10 // this is an inline comment.

  • Add section brackets for code organization

  • Add localization by surrounding the text with backticks: `localizable text`

  • Statements won't have an automatic random label anymore

  • Organize plugin settings, and expose all settings to Blueprints

  • Add 3 plugin settings to control if should store source text within script assets and statements

  • Add a setting to define project-wide default script reference

  • Add settings to define the UI layer for built-in widgets

  • Improves the Debugger user interface and adds missing functionalities

  • Minor improvements to in-engine documentation

  • Add console command qsc.Var

  • Add console command qsc.Del

  • Add console command qsc.Eval

Fixes

  • Fix an issue where system variables were prefixed wrongly: {&wrong} -> {$right}

  • Fix an issue preventing the use of enumerators as function parameters

  • Fix an issue where non-existent variables were replaced with their literal string name

  • Fix an issue that was preventing the use of named widget objects as script references

Performance

  • Self-referencing replacement is now done during parsing time: $ longName = 1 + {&} * 2

  • Minor performance improvements

Last updated