• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[General] (In Construction) Classification of GUI/Jass/vJass Systems as of today

Legend:
  • Categories are sorted alphabetically (for now).
  • Systems are sorted by release year of its last-version.
  • Best systems of a categorywill be in bold, underlined, font size 15.
    • Among them, Popular or historic systems will be in purple, bold, underlined, font size 15.
    • Among them, Very popular or essential systems will be in green, bold, underlined, font size 18.
  • Barely used systems will be in gray color.
  • Deprecated systems will be striken through.


----------------------------------------------------------------
Abilities
----------------------------------------------------------------
Allocators (because the default struct allocator suxx)
Important notice: All "Alloc" systems have the same API signature so are interchangeable.

----------------------------------------------------------------
Boundaries utils
----------------------------------------------------------------
Cinematics
----------------------------------------------------------------
Color utils
----------------------------------------------------------------
Damage Detection/Manipulation System
(Edit: start of an answer here)
----------------------------------------------------------------
Destructables utils
----------------------------------------------------------------
Dialogs utils
----------------------------------------------------------------
Editor
----------------------------------------------------------------
Events
----------------------------------------------------------------
File utils (beware read content is not synced between the clients by the game !!)
----------------------------------------------------------------
Game utils
----------------------------------------------------------------
Hashtables utils
----------------------------------------------------------------
Images utils
----------------------------------------------------------------
Inventory
----------------------------------------------------------------
Items
----------------------------------------------------------------
Keyboard
----------------------------------------------------------------
Maths

----------------------------------------------------------------
Mouse

----------------------------------------------------------------
Multiboard utils
----------------------------------------------------------------
New ideas/content (those authors needs to be rewarded for their creativity :thumbs_up:)

----------------------------------------------------------------
Objects Preloading (is it still a usefull thing with Reforged ?)
----------------------------------------------------------------
Orders
----------------------------------------------------------------
Pathing
----------------------------------------------------------------
Player utils
----------------------------------------------------------------
Point/location utils
----------------------------------------------------------------
Regions
----------------------------------------------------------------
Strings utils
----------------------------------------------------------------
Shops
----------------------------------------------------------------
Sound utils
----------------------------------------------------------------
Special effects
----------------------------------------------------------------
Synchronization between players of external content (local file, ...) or local/not-synced content (camera, UI...). Learn more here.
----------------------------------------------------------------
Terrain
----------------------------------------------------------------
Text tags
----------------------------------------------------------------
Time utils
----------------------------------------------------------------
UI
----------------------------------------------------------------
Unit groups utils
----------------------------------------------------------------
Units
----------------------------------------------------------------
Weather


----------------------------------------------------------------
----------------------------------------------------------------
Orphans/uncategorized

Boolean Expressions

 
Last edited:
Level 19
Joined
Jan 3, 2022
Messages
320
That's a great list on its own for anyone looking! :ogre_kawaii:
My general note: Warcraft 3 is backwards compatible, it doesn't matter if a library is old. It will still work. Especially if it was done well. That's something you cannot rely on ;)

The only area where novelty matters is the damage library because some new damage types were finally officially added before Reforged. Bribe's new Damage Engine is a must.
I don't know about anything else because I use Lua and most of Jass-related workarounds and libs are not needed.
 
Level 17
Joined
Apr 13, 2008
Messages
1,597
That's a great list on its own for anyone looking! :ogre_kawaii:
My general note: Warcraft 3 is backwards compatible, it doesn't matter if a library is old. It will still work. Especially if it was done well. That's something you cannot rely on ;)

That's not true.

We used to abuse the hell out of the return bug. Which was fixed, as it was a security threat, but it also ruined a lot of maps.

We used to have for loops in some branches of vJass, then it was removed for some reason. The maps that had it do not launch.

We had hacks in JNGP that removed the destructable limit. Now we have limits in the live patch.

I mainly mapped in 1.26, but recently changed to the live patch, and lots of stuff that worked before are not working properly.
My personal libraries with floating texts, for example are all wonky and weird acting. I had cool looking projectiles set up for a tank unit, after testing the map on the live patch it suxx ballz.
 

Bannar

Code Reviewer
Level 26
Joined
Mar 19, 2008
Messages
3,140
Thank you for tagging me in, @Ricola3D. Creating this list was quite an effort, I can see that. Good job.

Few things.
  • I believe that listing every option clouds and crowds reader' mind. You lost me at "Buff (...)" and that sort of thing. What would help is a list of 1, max 2 go-to options per subject. All alternatives should be rounded up in a secondary list.
  • A typical WorldEditor does not need to know all the components, in most cases fundamentals such as Alloc, an Indexer, Table, some Events cover vast majority of topics. Order does matter - Buff should not come before Table.
  • There a ton of redundancy there. As a developer myself, I know that pride is what we, the developers, often don't lack. That, unfortunately may have a negative impact on the end users. By duplicating various systems instead of improving on what's already there, we created a mess. Your very list is a proof. I'd turn a blind eye on you cutting a quarter or two of those systems off the list.

What would help here is a kind of SoftwareDeveloperKit (SDK), preferably on github as people who care nowadays are familiar with at least basics of git. Good changelog makes a pro out of a noob in no time. Speaking of git, I'd suggest supplying github links next to hiveworkshop ones whenever possible as those are kept up-to-date more often than their hiveworkshop alternatives. I keep my stuff under war3libs.
 
Level 17
Joined
Apr 13, 2008
Messages
1,597
  • There a ton of redundancy there. As a developer myself, I know that pride is what we, the developers, often don't lack. That, unfortunately may have a negative impact on the end users. By duplicating various systems instead of improving on what's already there, we created a mess. Your very list is a proof. I'd turn a blind eye on you cutting a quarter or two of those systems off the list.

What would help here is a kind of SoftwareDeveloperKit (SDK), preferably on github as people who care nowadays are familiar with at least basics of git. Good changelog makes a pro out of a noob in no time. Speaking of git, I'd suggest supplying github links next to hiveworkshop ones whenever possible as those are kept up-to-date more often than their hiveworkshop alternatives. I keep my stuff under war3libs.

That's a good observation.

Over the decades I've seen a lot of people proudly showcase their map / model / system and not sharing them. Most often than not, those projects all end up in development hell, and the time they put into them is wasted. Instead, it would be cool if more people shared their stuff.

I also see that a lot of people who do share their stuff are bad at writing readable code, making their work inaccessible for the vast majority of mappers. It would be cool if people could suggest comments easily on github.
I think vJass also makes readibility worse than it would be in JASS.
 
@Bannar
  • For most categories I'm not capable yet of saying which one(s) are the best-in-slot nowadays that's why the quantity of data is too important right now. It's a shame jass/vjass snippets don't have a counter for nb of download nor upvote system to discriminate :(
  • I don't really know what order to adopt: 3-tiers approch (data, treatments, presentation) ? Layers (hardware/os/local, utilities, applications) ? Most used category to least used category ? Any other idea ?
@emperor_d3st
  • I notificed that some devs want to seek for the best optimization ever and loose in accessibility, and some are too lazy to document their stuff. It's also hard to discriminate because some map makers only do GUI (even if it's ugly and hard to document) :S

Anyway:
  • If you know good systems that are not in the list yet plz tell me. I'm currently browsing the jass section of hive looking for them but I'm slow.
  • If you've opinions about some systems (good or bad) or devs whose work is not really usable, plet let me know, here or through PM :)
 
Level 19
Joined
Jan 3, 2022
Messages
320
World boundaries
Enforcer
[vJass] Vexorian's BoundSentinel (2008) --> forces unit to remain in map boundaries
[vJass] Almia's BoundSentinelEx (2013) --> a remastered version of Vexorian's, a tad quicker, but graveyarded and hardly used
I looked at both and Almia's rework made me realize that neither library will work correctly for maps that change their playable area. It would only work for static maps, because they check the size once and save it:
JASS:
set minX = GetRectMinX(bj_mapInitialPlayableArea)
I didn't find any events related to world/map size change. This means it's impossible to have this library track playable area size dynamically without a performance penalty / updating saved values by map author from triggers. I will copy-paste this to respective resources.

Generally, it needs testing if SetUnitX and wayyy out of bounds orders still crashes the game in Reforged (or v1.26). I remember I did that testing for Rects but don't remember about SetUnitX.
 

Bribe

Code Moderator
Level 50
Joined
Sep 26, 2009
Messages
9,468
Items -> Missing Powerup Sentinel by Vexorian, Item Cleanup by @Tirlititi , and the GUI conversion of Item Cleanup.

For Knockbacks we are missing Berb's Knockback Lite and my GUI conversion of its math to Knockback 2.5D. I do plan to rewrite the math soon with the help of GPT though, because I don't understand how the calculation is supposed to work and I've broken things in the past when I made some variables in the calculation configurable.

For Unit Groups, I think Magtheridon made a light version of GroupUtils some time ago that only focused on the IsUnitInRangeXY stuff and the GroupRefresh code.

The IsUnitInRangeXY thing was integrated by me into GUI Spell System, which I also do not find on this list. Anitarf's SpellEvent is on the list already, so good catch. I used a lot of that code as reference to know how to handle event data. If I am not mistaken, GUI Spell Event is the crown jewel, for lack of better options, but I haven't worked out a certain elusive bug with it that was recently reported.
 

Bribe

Code Moderator
Level 50
Joined
Sep 26, 2009
Messages
9,468
@Luashine I had no idea you can change the world boundaries in real-time :eek:

@Bribe I just discovered there are a Jass & Spells section at the bottom of each dev's profile ressources section, I'll look at that to complete the list :D
You won't find plain scripts in profiles though; you'd scour the JASS/Lua/Wurst/Graveyard forums of the code section for that.
 
Last edited:
Level 20
Joined
May 16, 2012
Messages
635
Nice list. There is a few of my systems missing that you might want to add to this list.

  • Relativistic Missiles have support for Lua as well, not only vJASS and GUI.
  • Crowd Control & Tenacity is a system that allows you to basically take full control of how disables work in the game (including new types like Fear, Taunt, Knockback, Knockup, etc...). Supports vJASS and Lua
  • Cooldown Redeuction is a system that brings automatic cooldown manipulation (integrated with New Bonus). Supports vJASS and Lua.
  • Item Shop deserves a bit more love IMO, it is much more than just a shop system, its an item fusion system and somewhat of a UI system.
  • UI maybe a good addition as well.
In all my maps published there is a few systems that i have not published yet, like my Utilities library that contains quite a bit os useful stuff too, and all my Hero Concepts are basically examples on how to use all of them together.
 
Nice list. There is a few of my systems missing that you might want to add to this list.

  • Relativistic Missiles have support for Lua as well, not only vJASS and GUI.
  • Crowd Control & Tenacity is a system that allows you to basically take full control of how disables work in the game (including new types like Fear, Taunt, Knockback, Knockup, etc...). Supports vJASS and Lua
  • Cooldown Redeuction is a system that brings automatic cooldown manipulation (integrated with New Bonus). Supports vJASS and Lua.
  • Item Shop deserves a bit more love IMO, it is much more than just a shop system, its an item fusion system and somewhat of a UI system.
  • UI maybe a good addition as well.
In all my maps published there is a few systems that i have not published yet, like my Utilities library that contains quite a bit os useful stuff too, and all my Hero Concepts are basically examples on how to use all of them together.

Thanks. I added your systems, but it's not all classed yet (bold, underlined, font size, font color). Also you made me totally reorganise the "Abilities" section, I hope it's more readable now. It's sorted by importance first.

About the utilities, it's hard to add because it's a mix of different topics: unit tools, pathing, maths, special effect utils, camera utils, etc... or maybe I should create a special section "Miscellaneous utils" for this, Bannar's ExtensionMethods and others I'll find later ?
 
Hi, I truly am thankful for the extensive list. Also surprised to see two of my works in this list, given that I doubt people use TimedSpellEffect except myself (does that count, cause I'm sure it's just me trying to force people to accept its existence :p) and IsDestTree seems a bit convoluted for GUI working (though I am trying).

I'd say Best for GUI in my IsDestTree is because we lack system for them in GUI. I mean, mine's the only one that uses GUI directly based on Almia's and BPower's IsDestTree versions.

Timed Alpha Modifier v1.1 probably this might fit the list. There's an issue I note in mine that it disturbs the default hide and invisibility based alpha modifications (not the ability effect, but the alpha modifier where the unit partially fades), but I'll take a deeper look since it is not very easy to track down and resolve.

I also have Timed Vertex Modifier in progress, but I'd say working with coloring is a pain, like with Alpha above.

Illusion System v1.1 another one that is yet to be approved is the Illusion System of mine. It's based on Flux' if I recall, though vJass and GUI is not one-to-one, so yeah...

AOS Spawn System an AOS spawn system for AOS maps, still pending

Disarm System v1.1.1 a disarm system for pre-1. 29 patch. I recall BPower had a superior version for this one.
 
Last edited:
Ty, I added all the systems but AOE Spawn System (since it is not approved yet).


The list is becoming very very long.
What would be best ? Adding spoilers per section ? Or creating another list under the format of a short-list (remove all graveyarded jass systems, and GUI systems with low download count/result count in search) ?
 

Bribe

Code Moderator
Level 50
Joined
Sep 26, 2009
Messages
9,468
Ty, I added all the systems but AOE Spawn System (since it is not approved yet).


The list is becoming very very long.
What would be best ? Adding spoilers per section ? Or creating another list under the format of a short-list (remove all graveyarded jass systems, and GUI systems with low download count/result count in search) ?
You can format it the way that @Eikonium uses, which allows multiple named tabs to exist.
 
I think this thread is more than likely to get lost in time since it is not sticky yet.

Anyway, regarding the list, I think prioritizing the commonly used ones like Unit Indexer and DDS first, highlighting the top of the category, with the rest as hidden "other options" is a choice that can be considered. For mapmakers, only the top mattered, since why would someone use a resource that is so old it is not supported unless there's nothing that provides it as of recent?

Most of the top ones also has compatibility support for older versions, so mapmakers will be more than sufficient with the top ones. The more obscure ones are something that mostly Spell/System/Code section enthusiasts (probably there's a better term to get my point across here?) where it helps these people see what is barely provided to the community with current state of things.
 
What would be best ? Adding spoilers per section ? Or creating another list under the format of a short-list (remove all graveyarded jass systems, and GUI systems with low download count/result count in search) ?
I think shortlisting since pretty much newbie will grab the best and stick with that for a long time as they make their maps. The only consideration is having both best vJass and GUI versions assigned in the shortlist since a lot of newbie mapper will not touch vJass like a plague.

Probably like this?
[SHORTLIST]
[HIDDEN FULL LIST]
 
Top