Best of the Wurst 8

Level 20
Joined
Jan 1, 2009
Messages
1,523
.

This month we addressed some older issues, as well as adding juicy new features. Our spotlight this time is about new vscode features.
We also want to say thanks to the community for the avid support and contributions in the last few months, helping Wurst to become better than ever!

Tool updates
  • Patch 1.30 is supported and the reccommended version for Wurst development. (older still supported)
  • Vanilla Jass is now parsed with its own grammar, which improves compatibility for input maps.
  • Added @inline and @noinline annotations to allow more fine grained control over inlining behavior.
  • The inliner has also been improved and now handles inlining on a call by call basis.
  • Added breadcrumbs, outline view and symbol renaming to vscode extension.
  • Colors used in wurst color tuples and wc3 color codes are now shown in vscode.
  • Functions from blizzard.j that are used during map initialization no longer get inlined, preventing map script bloat, in particular with more than 12 players.
  • Added warnings for unused private class variables and functions.
  • Fixed a case of dead code not being detected, which resulted in duplicate statements when manually nulling handles
  • The error window's tab width has been reduced so the code isn't overly indented anymore.
  • Profiled and addressed a couple CPU and Memory concerns (thanks to ej-technologies' open-source JProfiler license).

Standard library highlights
  • FileIO and Network libraries have been updated for 24 players and new natives (PR #94, PR #106, PR #107).
  • DamageType (PR #95, PR #97), and OnUnitEnterLeave (PR #96) received more fixes for edge case bugs.
  • Asset lists have been improved by (PR #98, PR #103, PR #114).
  • trigger API received fixes by (PR #102, PR #104)
  • Added Matrices and Quaternion math packages which can also be used to manipulate effects (PR #111, PR #112).
  • Removed another initlater import from the stdlib which improves code quality.
  • We have several more PRs currently in the reviewing process, regarding Damage Modification, Bitwise Manipulation and FileIO.
WurstScript is a programming language and toolchain to build warcraft 3 maps.

 
Last edited:
Level 20
Joined
Jan 1, 2009
Messages
1,523
Spotlight: VSCode Integration

One of the more noticable improvements these last months have been on making the wurst vscode development experience more feature rich and integrated. We implemented several more features of the language protocol, which we will preset here. Additionally, the wurst file icon is now an offical part of the vscode-icons extension.

AUrSWqt.png


Breadcrumbs

6Mj0tIC.png


fQbsyQi.png


Breadcrumbs show the model hiearachy from your cursor positon.
You can turn them on via View->Toggle Breadcrumbs.

The [cur]Focus Breadcrumbs[/cur] command (shortcut Ctrl +Shift+.) lets you navigate your code quickly.
You can also search for symbols using the Goto symbol in workspace command (Ctrl + t) or using Goto symbol in file (Ctrl+Shift+o).

Outline View

M0S88xJ.png


The outline gives you a searchable overview over all elements in that file. Turn it on by rightclicking on the Explorer headline.

an0TDoP.png


Symbol Renaming

VSCode recognizes Wurst's symbols, allowing for consistent renaming.

93MPgE3.gif


Color Preview

mpQ0jmd.png


uCIl2T3.gif


Wurst color tuples and wc3 color strings are now previewed and you can use the vscode color picker to adjust them.

Import Quickfix

wHPvvrn.gif


When using types which are not imported into a given package yet, Wurst will suggest importing a package which will fulfill that type. If applied, the quickfix will add the import statement automatically.

Themability

While not a Wurst feature, it should be noted that everything style related you see here can be customized in some way. There are default and user created themes, take a look:

xYnqc7L.png

T1Icm60.png

HVT0A5m.png

I0wWnCT.png

kpUzuSc.png


The theme used for the screenshots above, is called "Atom One Dark".

Thanks for reading, we hope you enjoy these posts - and as usual, let us know what you think.
 
Last edited:

Deleted member 219079

D

Deleted member 219079

The code navigation features and symbol renaming will come in super handy when my code base grows to appreciable extents. Great work as always!
 
Level 20
Joined
Jan 1, 2009
Messages
1,523
Can someone explain to me what is wurst?

Hi, I added a small sentence and the link to our page to the post.
WurstScript is foremost a programming language that compiles to Jass, the scripting language of warcraft 3.
The language is closely bundled with a set of tools, providing code editor support and map building capabilities outside of the world editor, a standard library and much more.

It is probably aimed more at the power mapper or teams which want to version control their maps - pretty steep learning curve.
We post this series "best of the wurst" semi-regularly to inform the community about tool updates and display a spotlight topic.

I'd be keenly interested in a few simple examples regarding the Matrices and Quaternions

A very basic example is effect rotation, since there are various problems with just a euler triples such as gimbal locks and glitchy animations.
I want to use this for some things in my maps. Might post something when I get it done soonish enough.
 
Level 8
Joined
Jul 10, 2018
Messages
384
Hi, I added a small sentence and the link to our page to the post.
WurstScript is foremost a programming language that compiles to Jass, the scripting language of warcraft 3.
The language is closely bundled with a set of tools, providing code editor support and map building capabilities outside of the world editor, a standard library and much more.

It is probably aimed more at the power mapper or teams which want to version control their maps - pretty steep learning curve.
We post this series "best of the wurst" semi-regularly to inform the community about tool updates and display a spotlight topic.



A very basic example is effect rotation, since there are various problems with just a euler triples such as gimbal locks and glitchy animations.
I want to use this for some things in my maps. Might post something when I get it done soonish enough.
Thanks for explaining it for me!
 

Chaosy

Tutorial Reviewer
Level 39
Joined
Jun 9, 2011
Messages
13,087
A very basic example is effect rotation, since there are various problems with just a euler triples such as gimbal locks and glitchy animations.
I want to use this for some things in my maps. Might post something when I get it done soonish enough.

I understand what it does in theory, I meant a practical demo
 
Top