• 🏆 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!

Jass NewGen Pack Replacement Discussion

Status
Not open for further replies.

MindWorX

Tool Moderator
Level 20
Joined
Aug 3, 2004
Messages
709
Since we are getting new patches and since wehack can't be updated, we have started seeing issues.
This is why we need to discuss a possible replacement, so we can use the most recent World Editor.

What I would like is for people that use JNGP to chime in and tell me what features of JNGP that are important and what features that are less important, so we can create a list of things to do, and in what order to do them.

Here's a list of features that I know of, please add suggestions if you know more.

  • Custom Compilers/Preprocessors (JassHelper, Wurst, GrimExt, etc.)
  • Custom Menus (configuration for plugins)
  • Custom ObjectId popup
  • Elimination of hard-coded limits (Doodad limit, etc)
  • Trigger Editor Syntax Highlight
  • Extension via Scripts (wehack.lua, etc)
Here's a list of features that have been implemented so far.
  • Custom Compilers/Preprocessors (working)
  • Custom Menus (partial)
  • Custom ObjectId hooks (working)
  • Elimination of hard-coded limits (Doodad limit, etc) (working)
  • Trigger Editor Syntax Highlight (working)
  • Extension via Plugins (working)
I will try and answer all suggestions and see if I can split things up in groups that make sense.

The faster we get this list going, the faster we can get the replacement out.
 
Last edited:

Deleted member 219079

D

Deleted member 219079

TESH is super important. And being able to edit wehack.lua and add your own scheisse is amazing. I heard looking_for_help is adding custom syntax support to his TESH to make the user further able to be customize his WE.

And I didn't even know JNGP lacked GUI stuff :D
 

Deleted member 219079

D

Deleted member 219079

Now I can easily modify compilemap_path function to replace standard jasshelper call with my own scheisse. I don't know how easy your plugin thing would be to maintain.
 
GUI for Jass Functions, Map Size beyond 256 x 256, tile limit removed. Hardcoded stuff with destructibles ( see fading trees thread in my signature), I would like to change what trees are solid and which are non-solid in world Editor without having to hex edit. All destructibles have flags:

*flags:
0= invisible and non-solid tree
1= visible but non-solid tree
2= normal tree (visible and solid)

World Editor places them as solid and visible. The other two are used in-game but can't be changed inside World Editor. Non-solid trees fade when units are nearby.
 
Level 11
Joined
Dec 19, 2012
Messages
411
Possible to open 2 or more world editor simultaneously? And enable to have multiple copy of object editor data? like user may copy 2 or more ability data at same time, 2 or more unit data at same time etc (doesn't mean copy ability and unit data at same time, but it would also be nice though)

EDIT : Also, is it possible to include one more, for import manager, to have all imports direct transfer from one map to another map? Since people usually work on separated map, after completed, moving of all triggers/imports/object data from separated map to main map is pretty time consuming.
 
Last edited:

MindWorX

Tool Moderator
Level 20
Joined
Aug 3, 2004
Messages
709
Here is the first preview of the JNGP replacement I have been working on. Please remember that this is purely a preview, and there might be things broken in it. Report any issues you find and I'll try and deal with it.

How to use it?
Extract it anywhere, NOT in the Warcraft III folder, do it on your desktop or your documents folder.


It currently works via a launcher, once the launcher is open, you can click the icon of what you want to launch. If you need to change settings, like which Warcraft III to run, open up the Settings in the Tools menu and change it.

IN CASE OF ISSUES
Run "SharpCraft.TroubleShooter.exe", check if it works afterwards. If it doesn't, please zip up the logs folder and attach it to a post on this thread.
 

Attachments

  • JNGP Replacement Preview.zip
    4.4 MB · Views: 137
Level 29
Joined
Jul 29, 2007
Messages
5,174
I generally prefer that a zip contains a folder with all of the files in it, so I can extract it wherever without manually making a folder, but that might just be me.

I also think it makes more sense to make the renderer selection...well, called "Renderer" or whatever, with "DirectX" "OpenGL" "Software " (Warcraft 3 supports software rendering???). Your current naming is pretty odd.

Launchers are generally a one-time thing that you only run when you want to change settings (or on the first time). There should be another executable that instantly runs with the current settings.

That's nitpicking though. Good job.
 
Last edited:
Level 31
Joined
Jul 10, 2007
Messages
6,306
Hmmm.. event API for plugins. For example, on compilation event. This would allow us to do some pretty cool stuff, like work in a pre-processor that then goes to vjass that then goes to an optimizer for a release : ). On paste trigger event or on paste code event could parse code for dependencies and fetch them from a repo using some commented headers.

All sorts of fun things =)

Syntax highlighting based on a custom flag on a trigger stored as a comment in the header invisibly. For example, a drop-down menu of languages. You select the language and it will highlight the code. This doesn't allow for mixed languages in single files, but that isn't a big deal.

If compilers work together, all going down to an intermediate language to then be compiled out to JASS by that intermediate language, then we could actually assign compilers on a trigger by trigger basis. This could allow us to do things like custom languages for save/load systems.

Custom form creator. Imagine when you create a trigger, there are various types to pick from. Code, GUI, or Form. Forms would provide UIs to complex systems. Another cool thing that can be done are form-views of code. Right click the form and click view source to get to the code. Settings could be done in the form instead of having to mess with code : ). If supporting advanced features and integrating with the object editor, could do things like building a data table for a save/load system by just selecting items like in GUI.

A package system would also be nice. Export codes/objects as a package and then allow other maps to import them or require them. The code won't show up in the editor but will rather be injected at build time. Docs can be included in the package for intellisense and autocomplete. Packages could be fetched from URLs. Packages should also version based on APIs. Packages should contain all latest API versions. When a package is requested, the matching API version is fetched. If there are conflicts, that is two sections of code requiring different API versions, then an error is raised. Packages themselves should also be able to fetch packages, and again be able to fetch packages on the web. When objects are imported from a package, they are given new lowest order ids and all references to them in the package are updated. This is again on compilation. Packages should be downloaded and checked for updates upon opening a project or whenever an update check is requested. The package should never be tainted so that multiple projects can reference it.

A package explorer similar to the dependency thing in the SC2 map editor.

Intellisense : O

If this is all implemented well, all of this extra stuff should work off of plugins.



Those are my thoughts from a coder's perspective.
 
Last edited:
Level 12
Joined
Mar 13, 2012
Messages
1,121
-Open source github/something similar. We got problems now because stuff is lost and other stuff was only ever seen by very few people

-Multi instance wc3 to test maps in multiplayer

-The WE from Blizzard is going to change in the future. It should be possible to switch to newer versions for newgen, being stuck on 1.21 is not good.
 

MindWorX

Tool Moderator
Level 20
Joined
Aug 3, 2004
Messages
709
I generally prefer that a zip contains a folder with all of the files in it, so I can extract it wherever without manually making a folder, but that might just be me.

I also think it makes more sense to make the renderer selection...well, called "Renderer" or whatever, with "DirectX" "OpenGL" "Software " (Warcraft 3 supports software rendering???). Your current naming is pretty odd.

Launchers are generally a one-time thing that you only run when you want to change settings (or on the first time). There should be another executable that instantly runs with the current settings.

That's nitpicking though. Good job.
I'll release it as a folder in a zip in the future. And I agree with the renderer names, I just went with the official full names and it's actually displaying the raw names at the moment, I'll fix it up when it's localized.
The launcher is just how it is at the moment, I'll add direct starters as well. This should also help with compatability on other systems where the current launcher might not run(like Linux distros).

Hmmm.. event API for plugins. For example, on compilation event. This would allow us to do some pretty cool stuff, like work in a pre-processor that then goes to vjass that then goes to an optimizer for a release : ). On paste trigger event or on paste code event could parse code for dependencies and fetch them from a repo using some commented headers.

All sorts of fun things =)

Syntax highlighting based on a custom flag on a trigger stored as a comment in the header invisibly. For example, a drop-down menu of languages. You select the language and it will highlight the code. This doesn't allow for mixed languages in single files, but that isn't a big deal.

If compilers work together, all going down to an intermediate language to then be compiled out to JASS by that intermediate language, then we could actually assign compilers on a trigger by trigger basis. This could allow us to do things like custom languages for save/load systems.

Custom form creator. Imagine when you create a trigger, there are various types to pick from. Code, GUI, or Form. Forms would provide UIs to complex systems. Another cool thing that can be done are form-views of code. Right click the form and click view source to get to the code. Settings could be done in the form instead of having to mess with code : ). If supporting advanced features and integrating with the object editor, could do things like building a data table for a save/load system by just selecting items like in GUI.

A package system would also be nice. Export codes/objects as a package and then allow other maps to import them or require them. The code won't show up in the editor but will rather be injected at build time. Docs can be included in the package for intellisense and autocomplete. Packages could be fetched from URLs. Packages should also version based on APIs. Packages should contain all latest API versions. When a package is requested, the matching API version is fetched. If there are conflicts, that is two sections of code requiring different API versions, then an error is raised. Packages themselves should also be able to fetch packages, and again be able to fetch packages on the web. When objects are imported from a package, they are given new lowest order ids and all references to them in the package are updated. This is again on compilation. Packages should be downloaded and checked for updates upon opening a project or whenever an update check is requested. The package should never be tainted so that multiple projects can reference it.

A package explorer similar to the dependency thing in the SC2 map editor.

Intellisense : O

If this is all implemented well, all of this extra stuff should work off of plugins.



Those are my thoughts from a coder's perspective.
I'm happy to tell you that you can both pre and post process all files in a map, so we can add anything from compilers to optimizers. Currently I just need a simple way to sort them, in case multiple compilers need to be run in a specific order.

With regards to the rest I'm hoping to make SharpCraft flexible enough that these things can be done as plugins as well like you said. I've already made arrangements with Ralle to make the launcher able to browse and download maps, which should help me work out a nice plugin API I think. It might also help me out with how to make a proper package system, which I agree would be awesome. Obviously I'll try and address all points brought up by the community.

-Open source github/something similar. We got problems now because stuff is lost and other stuff was only ever seen by very few people

-Multi instance wc3 to test maps in multiplayer

-The WE from Blizzard is going to change in the future. It should be possible to switch to newer versions for newgen, being stuck on 1.21 is not good.

The whole solution will soon be open source. I already have multi-instance running going and I've been looking at making the test button work even if WC3 is already running.

And I agree, being stuck on 1.21 is a problem. We have to move forward and as long as we get the important features with us, I think it's possible.
 
Last edited:
I'll release it as a folder in a zip in the future. And I agree with the renderer names, I just went with the official full names and it's actually displaying the raw names at the moment, I'll fix it up when it's localized.
The launcher is just how it is at the moment, I'll add direct starters as well. This should also help with compatability on other systems where the current launcher might not run(like Linux distros).


I'm happy to tell you that you can both pre and post process all files in a map, so we can add anything from compilers to optimizers. Currently I just need a simple way to sort them, in case multiple compilers need to be run in a specific order.

With regards to the rest I'm hoping to make SharpCraft flexible enough that these things can be done as plugins as well like you said. I've already made arrangements with Ralle to make the launcher able to browse and download maps, which should help me work out a nice plugin API I think. It might also help me out with how to make a proper package system, which I agree would be awesome. Obviously I'll try and address all points brought up by the community.



The whole solution will soon be open source. I already have multi-instance running going and I've been looking at making the test button work even if WC3 is already running.

And I agree, being stuck on 1.21 is a problem. We have to move forward and as long as we get the important features with us, I think it's possible.

So is it possible to change destructible flags in editor?
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,198
I generally prefer that a zip contains a folder with all of the files in it, so I can extract it wherever without manually making a folder, but that might just be me.
Most extract programs when instructed to quick extract will automatically make a folder of the zip file name. If one zips a folder of the same name inside you can end up getting a folder in a folder which can be equally annoying as getting no folder.
(Warcraft 3 supports software rendering???)
Not as far as I know. Well unless there is a hack that forces Warcraft III to use one of the reference D3D software implementations Windows supports (same API, just linking to drivers that implement the functionality in software rather than outsourcing to GPU hardware). Obviously it will perform like trash compared with even the cheapest modern GPU, even though the software implementation should take advantage of multi core CPUs and some basic vector extensions for improved performance.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
I apologize for not taking the time to read the thread, but here are some small features I would love to have:
  • Multi-monitor support
    • Drop down menus will appear where the mouse is currently located rather than on the primary monitor
    • World Editor will open where it was last closed
  • Customization for what resolution the War3 window will open in
I will add more as I continue to use the editor. These are just off the top of my head.
 
Level 3
Joined
Dec 14, 2014
Messages
16
I've been using this for the past few days and I'm really enjoying it. Definitely faster than JNGP, probably due to less bloat. Kudos MindWorX!
 
Level 25
Joined
Feb 2, 2006
Messages
1,689
JNGP 2.0 had a fucking slow GUI for the Object Editor or the whole editor. I cannot use it since I have like 4000 abilities or something. Please please please add multiplayer test support WITH WORKING MPQ loading. I use a custom MPQ archive and cannot start/test my map loading it. It is only loaded in the editor.

If multiplayer tests work with a customly loaded MPQ archive I will marry you.

edit:
As discussed in the SharpCraft thread. loadmpq.lua has the calls for loading custom MPQ archives. Those should also be loaded when testing the map.

Maybe it is necessary to write a SharpCraft plugin for this.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
JNGP 2.0 had a fucking slow GUI for the Object Editor or the whole editor.
After downloading this, one of the first things I noticed was a delay in the Trigger Editor. Whenever I click on a new GUI function or just open up the Actions menu, I have a slight delay, almost looks like a freeze, before the window actually pops up. This was an instaneous thing. Here's a comparison:

attachment.php
attachment.php

I hope the delay is noticable in the GIF I provided. I didn't think it would bother me that much, but after about 10 minutes of use, it started to irk me. Hoping you can find a solution and or provide some reasoning behind this!

It's most likely TESH. The newest JNGP uses looking_for_help's TESH, which currently has an issue with interprocess communication. I brought this issue up to looking_for_help before moyack made it a part of JNGP. All though, TESH shouldn't be causing slow downs on other parts of the editor other than the Trigger Editor.
 
Level 9
Joined
Jun 21, 2011
Messages
299
Nice to hear that people still work on this tool,but can i ask or give suggestions,which will surely be ignored!

Which of the limits are on the table to be decoded?
Is the map canvas size limit on the table?
if so can we get some extension of the limit?

And..........................................
-will there be more than 16 tiles?
-will there be unit formation extention option(When reducing the size of units)?
-will there be map size greater than 512x512?
-Will you increase the cliff level,high?


thank you!
 
Level 25
Joined
Feb 2, 2006
Messages
1,689
Hey, are you still working on this? It would be really really helpful!

@RollBoat
16 tiles are a hard coded limit: W3M and W3X Files Format see section 4) "war3map.w3e" The environment

Each tilepoint uses a 4 bit index to refer a ground texture type and another 4 bit index to refer a cliff texture type: 2^4 = 16

For the map size you would have to check some center offset value limits as well. Apart from that the type int has 4 bytes, so theoretically there should be much much bigger maps? I am not sure about other hard coded limitations.

Some more ideas for a new JNGP:
- Add a menu entry for widgetizing/optimizing the map: I think in JNGP 2.0 you already had the possibility to add an entry for optimizing the map but not for widgetizing it. It would be very very useful to have the standard tools (war3mapoptimizer by Vexorian and Widgetizer by PitzerMike or the other Chinese guy) in the JNGP and one could easily optimize the map to another path by applying the two tools in correct order. This would save me much work of writing Batch scripts. When widgetizing the map, one must select a War3Patch.mpq/War3Locale.mpq since the string entries etc. are required. This should be done automatically by using the Warcraft III installation (from the registry or a relative path).
- Add a menu entry to validate all tooltips: Tooltips refer values <A000,DataA1> etc. Those values can be checked statically. For example A000 might not exist or DataA1 might not be the name of a valid field.
- Include JASS Checker if it works properly.
- Include JassParser (but only if the latest pjass still has some issues).

Optional stuff (which works with external tools and does not need to be added directly to the workflow with one map):
- Add a menu entry to compress object data: Compressing object data, removing unnecessary fields Sometimes you change fields for a hero ability and make an item ability from it but the field modifications will stay. Besides modified values can be compared to the default values and reset if they are the same. I guess this might be too much work but it worked for my maps in wc3lib with the exception of two fields or something which I have to fix.
- Mod creator: There are different possibilities to create a total conversation of Warcraft III without any size limits (except the MPQ archive size limit). One is MPQDraft, another is changing the AllowLocalFiles registry entry and another one is to modify the War3Patch.mpq file for the current installation. Since .exe files created with MPQDraft don't work on Windows 8 and 10, the other possibilities are prefered. It would be cool to have a menu entry/GUI for creating real modifications. For example you could select your custom MPQ and it creates a modification.
 
Level 4
Joined
Jun 19, 2010
Messages
49
Oh, also want to join here for one tiny wish:
In default World Edit, everytime you run it & open your map, you have to adjust your desired settings.
- showed grid size (hotkey 'G') starting with 128, cycling through: 128 --> 32 --> none --> 512 --> 128 --> ...
- showed path (hotkey 'P') starting with off, toggling to on
- lighting (hotkey "L") starting with on, toggling to off
- etc.

I would like to see that your World Editor remembers the last setting or that you can configure these settings somewhere as new defaults.
For example my settings are:
- show smallest grid in 32
- show path
- don't show light

i have to readjust those settings with each start of WE. It isn't causing much work, but the eternal repeat of those adjustments is a waste!
Would be awesome if you could implement such a feature!!
 
Last edited:
Status
Not open for further replies.
Top