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

Warcraft III - Patch 1.31 PTR

Status
Not open for further replies.
It appears that the previous observations regarding the defend ability's deflection mechanics are proven right by being indistinguishable from an attack. Furthermore, it appears that the unreduced damage of the deflected projectile is 1.00, based on default stats of the defend ability.

However, it is very easy to tell if the damage dealt is from the attacker or the receiver if the ability is based on either carapace or spiked barricades. (The damage type dealt is defensive, and ignores armor)

@_Guhun_ The observation made regarding deflected attacks was correct. There is no way to determine if the projectile was deflected, at least without having to check the speed of the projectile and periodically tracking the possible location of the projectile.
 

Ardenaso

HD Model Reviewer
Level 33
Joined
Jun 22, 2013
Messages
1,811
I don't know how to describe it but it just lags, even on the start menu everything's moving slowly and I even tried setting on lowest settings.

Also, when I set the textures on low, the game became black and white.

However, the standard WC3 on latest patch is working very fine as usual.

upload_2019-4-26_23-4-35.png


Also, how does orb of fire work, is the healer or healed that is reduced?
 
Last edited:

Wrda

Spell Reviewer
Level 25
Joined
Nov 18, 2012
Messages
1,870
Does anyone know when this patch will go public? Pretty much my friend said he lagged quite heavily literally dropping to 25 fps when on ptr. I already lag on the current patch for no reason, like, the ping and fps is normal, but I get spikes very often on some games which before the current patch never lagged.
 
I'm being really stupid here. Does that affect GUI as well or just custom script?
Well, nothing has changed. There has always been global and local variables. The only thing what has changed now is that you can now see them in the Trigger Editor and put them into folders. But they cannot be sorted. In Dwarf Campaign, all the variables show up in a random order...
 
Fourth bug. In GnollCampaign-C1R6-build1, if you open Campaign Editor -> Custom Data -> Abilities -> Custom Abilities -> Earthquake (Gnoll Supreme Warden) and try to click on Tooltip - Learn - Extended, the World Editor Crashes. Pictures:

View attachment 321602

View attachment 321603
Actually, clicking ANY TEXT FIELD in the Campaign Editor -> Custom Data, where the new Tooltip Editor should show up, crashes the editor. Obiviously only a problem for campaigns.

EDIT: No, the problem seems to be only with the following:
Text - Tooltip - Extended
on all objects, such as units, items, abilities, etc.
 

deepstrasz

Map Reviewer
Level 69
Joined
Jun 4, 2009
Messages
18,808
I didn't see that; but still the PTR still lags
Just tried another 12 player AI match on Icecrown Glacier but ran the .exe from the x86 folder as opposed to the x86_64 one as before.

EDIT: however, lag appears when heroes spawn or finish reviving.

EDIT2: redid a test on Emerald Gardens on the x86_64 .exe and stuff is running smooth. I guess the lag comes from heroes respawning under warpten. FPS interval 58-60. If I deactivate Vsync I get about 120 FPS.
 
Last edited:
Level 12
Joined
Jun 12, 2010
Messages
413
It appears that the previous observations regarding the defend ability's deflection mechanics are proven right by being indistinguishable from an attack. Furthermore, it appears that the unreduced damage of the deflected projectile is 1.00, based on default stats of the defend ability.

However, it is very easy to tell if the damage dealt is from the attacker or the receiver if the ability is based on either carapace or spiked barricades. (The damage type dealt is defensive, and ignores armor)

@_Guhun_ The observation made regarding deflected attacks was correct. There is no way to determine if the projectile was deflected, at least without having to check the speed of the projectile and periodically tracking the possible location of the projectile.

Sorry if it's too much to ask, but I can't use the PTR atm. Have you tested if Thorns aura also does defensive damage?
 
Level 19
Joined
Aug 16, 2007
Messages
881
This patch is great, I can't wait to test some stuff myself this weekend.




Oh my.... does this means one can make WASD movement system? This is awsome
Yeah! I tried it and made a short demo. I'm not the best with JASS-script, but it seems to work without any issues.

JASS:
globals
    unit array WASD_PlayerUnit

    boolean array WASD_IsKeyDown_W
    boolean array WASD_IsKeyDown_A
    boolean array WASD_IsKeyDown_S
    boolean array WASD_IsKeyDown_D

    constant oskeytype WASD_KEY_W = ConvertOsKeyType($57)
    constant oskeytype WASD_KEY_A = ConvertOsKeyType($41)
    constant oskeytype WASD_KEY_S = ConvertOsKeyType($53)
    constant oskeytype WASD_KEY_D = ConvertOsKeyType($44)

    constant real WASD_MoveDistance = 96.0

endglobals

function PlayerMoveEvent_Actions takes nothing returns nothing
    local integer i = 0
    local location loc1 = null
    local location loc2 = null
    loop
    exitwhen(i > 24)
        if (WASD_IsKeyDown_W[i]) then
            set loc1 = Location(GetUnitX(WASD_PlayerUnit[i]), GetUnitY(WASD_PlayerUnit[i]))
            set loc2 = PolarProjectionBJ(loc1, WASD_MoveDistance, 90.0)
            call IssuePointOrder( WASD_PlayerUnit[i], "move", GetLocationX(loc2), GetLocationY(loc2) )
            call RemoveLocation(loc1)
            call RemoveLocation(loc2)

        elseif (WASD_IsKeyDown_S[i]) then
            set loc1 = Location(GetUnitX(WASD_PlayerUnit[i]), GetUnitY(WASD_PlayerUnit[i]))
            set loc2 = PolarProjectionBJ(loc1, WASD_MoveDistance, 270.0)
            call IssuePointOrder( WASD_PlayerUnit[i], "move", GetLocationX(loc2), GetLocationY(loc2) )
            call RemoveLocation(loc1)
            call RemoveLocation(loc2)

        elseif (WASD_IsKeyDown_A[i]) then
            set loc1 = Location(GetUnitX(WASD_PlayerUnit[i]), GetUnitY(WASD_PlayerUnit[i]))
            set loc2 = PolarProjectionBJ(loc1, WASD_MoveDistance, 180.0)
            call IssuePointOrder( WASD_PlayerUnit[i], "move", GetLocationX(loc2), GetLocationY(loc2) )
            call RemoveLocation(loc1)
            call RemoveLocation(loc2)

        elseif (WASD_IsKeyDown_D[i]) then
            set loc1 = Location(GetUnitX(WASD_PlayerUnit[i]), GetUnitY(WASD_PlayerUnit[i]))
            set loc2 = PolarProjectionBJ(loc1, WASD_MoveDistance, 0.0)
            call IssuePointOrder( WASD_PlayerUnit[i], "move", GetLocationX(loc2), GetLocationY(loc2) )
            call RemoveLocation(loc1)
            call RemoveLocation(loc2)
        endif

    set i = i + 1
    endloop

    set loc1 = null
    set loc2 = null
endfunction

function PlayerKeyEvent_Actions takes nothing returns nothing
    local oskeytype osKeyPressed = BlzGetTriggerPlayerKey() // What key was pressed or released?
    local boolean isKeyDown = BlzGetTriggerPlayerIsKeyDown() // Was the event key pressed or released?
  
    //Not used here, but this way we can detect the meta-key.
    //local integer metaKeyPressed = BlzGetTriggerPlayerMetaKey()


    if (osKeyPressed == WASD_KEY_W) then
        set WASD_IsKeyDown_W[GetPlayerId(GetTriggerPlayer())] = isKeyDown

    elseif (osKeyPressed == WASD_KEY_A) then
        set WASD_IsKeyDown_A[GetPlayerId(GetTriggerPlayer())] = isKeyDown

    elseif (osKeyPressed == WASD_KEY_S) then
        set WASD_IsKeyDown_S[GetPlayerId(GetTriggerPlayer())] = isKeyDown

    elseif (osKeyPressed == WASD_KEY_D) then
        set WASD_IsKeyDown_D[GetPlayerId(GetTriggerPlayer())] = isKeyDown

    endif

endfunction

//===========================================================================
function InitTrig_WASD_PlayerKeyEvent takes nothing returns nothing
    local trigger t = CreateTrigger(  )
    local integer i = 0

    //takes trigger whichTrigger, player whichPlayer, oskeytype key, integer metaKey, boolean keyDown returns event

    /* metaKey = In order to fire the event the player must press down another key at the same time,
       0 = No additional key required.
       1 = Shift-key required
       2 = Ctrl-key required
       3 = ????
       4 = Alt-key required
       5+ = ????

    */

    loop
    exitwhen(i > 24)
        call BlzTriggerRegisterPlayerKeyEvent( t, Player(i), WASD_KEY_W, 0, true ) // Presses the "W"-key.
        call BlzTriggerRegisterPlayerKeyEvent( t, Player(i), WASD_KEY_W, 0, false )// Releases the "W"-key.

        call BlzTriggerRegisterPlayerKeyEvent( t, Player(i), WASD_KEY_A, 0, true ) // Presses the "A"-key.
        call BlzTriggerRegisterPlayerKeyEvent( t, Player(i), WASD_KEY_A, 0, false )// Releases the "A"-key.

        call BlzTriggerRegisterPlayerKeyEvent( t, Player(i), WASD_KEY_S, 0, true ) // Presses the "S"-key.
        call BlzTriggerRegisterPlayerKeyEvent( t, Player(i), WASD_KEY_S, 0, false )// Releases the "S"-key.

        call BlzTriggerRegisterPlayerKeyEvent( t, Player(i), WASD_KEY_D, 0, true ) // Presses the "D"-key.
        call BlzTriggerRegisterPlayerKeyEvent( t, Player(i), WASD_KEY_D, 0, false )// Releases the "D"-key.
    set i = i + 1
    endloop

    call TriggerAddAction( t, function PlayerKeyEvent_Actions )

    set t = null

    set t = CreateTrigger(  )
    call TriggerRegisterTimerEvent( t, 0.03, true )
    call TriggerAddAction( t, function PlayerMoveEvent_Actions )

endfunction

Uploaded the map file (requires Patch 1.31 PTR to open)
 

Attachments

  • WASDMovement.w3x
    15.1 KB · Views: 109

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,192
Link please? dunno about JASS2 but is that different from Jass and not built-in wc3?
It is the new input event which can register any key. The function is available with JASS2 (JASS) as are all functions. Lua uses these as well via JASS2Lua. Hence with exception of Lua native language features, JASS2 supports everything Lua does as far as interfacing with Warcraft III.

JASS2 is Warcraft III JASS. JASS1 is StarCraft (1) JASS. What we call JASS in Warcraft III is technically JASS2 as far as the developers are concerned.
but It doesn't matter of my computer...
The problem now is comparing 1.31&1.30 on the same computer
It does matter what hardware you are using because older hardware may perform worse with modern builds. This is because modern compilers emit code optimized for modern processors. That same code may perform very poorly on older processors.

However since you are using an I7 4770k this is less likely to be an issue since that processor is less than 6 years old.

Have you tried testing the performance of D3D9 mode? Or of OpenGL? Or of the x86 (not x86-64) build?

The other explanation is that the change from fixed function pipeline to using programable shaders include more difference than are currently visible. Specifically it might already include part of the Reforged graphic pipeline despite currently being unable to take advantage of it. Hence the GPU has to work harder for little visual gains.
I'm pretty positive performance has been regressing in the last few patches. Experienced this myself as well as other people. Same map, different wc3 versions, newer ones lag much more.
Resource requirements increased due to the new buff stacking system I guess. In maps with a lot of buffs there could possibly be a measurable difference.
I don't know how to describe it but it just lags, even on the start menu everything's moving slowly and I even tried setting on lowest settings.
Please post what hardware you are using. Have you tried the x86 (not x86-64) build? Or running the D3D9 backend? Or even OpenGL?
 

deepstrasz

Map Reviewer
Level 69
Joined
Jun 4, 2009
Messages
18,808
Alright did a test map (attached) and when there are 50 archers per (25) player (including neutral hostile), FPS(+VSync) is 60 if there are 100 archers per player, FPS drops to 15.

Note that the map is the smallest and has no doodads or tile or terrain height variation. The only trigger in it is the one to spawn archers. Just write test in chat.
 

Attachments

  • deepszFPStest.w3m
    16.2 KB · Views: 78
Level 4
Joined
May 17, 2008
Messages
75
I suppose with the help of JNGP (for finding out the rawcode equivalent of the hotkeys) and the ConvertAbilityStringField native (not sure if prefixed with Blz), you can introduce a desired constant for hotkey manipulation.

I tried to get the hotkey value with the get ability field functions from ConvertAbilityStringField('ahky') and ConvertAbilityIntegerField('ahky') but neither appears to work.

Can anyone verify if ability field editing applies to that ability map-wide for everyone, or it can be done on per-unit basis?

It's per unit, I tried modifying the range on one Crypt Lord's Impale and it did not affect the other Crypt Lord.


I just hope the update doesn't make Castle Fight lag terribly, it already suffers from unpredictable bugs that weren't there before the recent patches.
 
Level 3
Joined
Feb 24, 2018
Messages
39
Or of the x86 (not x86-64) build?

is x86-64
the SC2 Top picture quality's fps is 180+ in my computer

The other explanation is that the change from fixed function pipeline to using programable shaders include more difference than are currently visible. Specifically it might already include part of the Reforged graphic pipeline despite currently being unable to take advantage of it. Hence the GPU has to work harder for little visual gains.

For ReForged ? What do the old WC3(1.31 the The original player) do?
 
Last edited:
Level 19
Joined
Aug 16, 2007
Messages
881
Alright did a test map (attached) and when there are 50 archers per (25) player (including neutral hostile), FPS(+VSync) is 60 if there are 100 archers per player, FPS drops to 15.

Note that the map is the smallest and has no doodads or tile or terrain height variation. The only trigger in it is the one to spawn archers. Just write test in chat.
I get the same results, with both x86 and x86_64 builds (60 fps to ~15) (V-sync off).

I made an identical map in current non-ptr patch and had 70 - 130 fps in the same situation.

Operating System: Windows 10 Home 64-bit (10.0, Build 17134)
Processor: Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz (12 CPUs), ~3.7GHz
Memory: 16384MB RAM
NVIDIA GeForce GTX 1080

I also noticed the fps is capped@60 in Patch 1.31 PTR, why?


Not sure if known or not, but I get a huge lag-spike for 2-3 seconds when opening the "Options"-window and also when I click the "Video"-button. Might be a bug.
 
Level 9
Joined
Jul 20, 2018
Messages
176
i thought that the new damage native events would become a Generic Unit Event, but it is not. So basically all the DDS'es need to be revised and re-written?
You can register damage event for any unit via executing next code.
JASS:
call TriggerRegisterAnyUnitEventBJ(trig, EVENT_PLAYER_UNIT_DAMAGED)
They did not add new damage natives to blizzard.j, so for now they are not present in GUI.
 

The Panda

Icon Reviewer
Level 57
Joined
Jun 2, 2008
Messages
8,912
I wish they added more items or unique units in the game instead of tweaking the original ones, either just for the editor use or added towards melee maps, its still nice and all but it would be nice to have some new faces on the game. I also know the new game is being created but its just a thought. An example would be a nice hero for each race? I know it may mess up the lore of everything but would be nice to have IMO.
 
Level 9
Joined
Feb 24, 2018
Messages
342
I wish they added more items or unique units in the game instead of tweaking the original ones, either just for the editor use or added towards melee maps, its still nice and all but it would be nice to have some new faces on the game. I also know the new game is being created but its just a thought. An example would be a nice hero for each race? I know it may mess up the lore of everything but would be nice to have IMO.
There's plenty of cut heroes that existed in Alpha/Beta.
Archdruid for Night Elves, Crusader or Ranger for Humans, Warlord for Orcs, original Dreadlord (renamed, obviously) or original Abomination (also renamed and with a fancier model) for Undead.
 

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,192
For ReForged ? What do the old WC3(1.31 the The original player) do?
Not play since you need D3D11 and x86-64 anyway. They will likely drop x86 (32bit) and D3D9 support later as they did with all their other games already.
I also noticed the fps is capped@60 in Patch 1.31 PTR, why?
Likely capped to the desktop refresh rate?

They might have extra debugging enabled for the PTR which lowers performance.
 
Level 13
Joined
May 10, 2009
Messages
868
JASS:
native BlzSetUnitStringField       takes unit whichUnit, unitstringfield whichField, string value returns boolean
- can a unit's MODEL be changed with this? Icon?
No. According to common.j you can only change their name, proper name, ground texture and shadow image.
JASS:
    type unitstringfield                extends handle

    constant unitstringfield UNIT_SF_NAME                   = ConvertUnitStringField('unam')
    constant unitstringfield UNIT_SF_PROPER_NAMES           = ConvertUnitStringField('upro')
    constant unitstringfield UNIT_SF_GROUND_TEXTURE         = ConvertUnitStringField('uubs')
    constant unitstringfield UNIT_SF_SHADOW_IMAGE_UNIT      = ConvertUnitStringField('ushu')
I myself even attempted to force and change the unit model file/icon by doing this ConvertUnitStringField('umdl') or ConvertUnitStringField('uico'), but it was all in vain.

I also noticed the fps is capped@60 in Patch 1.31 PTR, why?

Sounds like something else is capping it at 60 for your pc.

Untitled-2.png
 
Last edited:
Level 19
Joined
Aug 16, 2007
Messages
881

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,192
I've got no issues with the current non-ptr version, so not sure what the problem could be?
Does the current Warcraft III run at 144Hz with unique, interpolated frames? Or is it duplicating frames?

Also I notice that you have two displays, one of which is 60Hz. Try unplugging that and see if a 144Hz video mode is displayed, after confirming the desktop is running at 144Hz. If running in any sort of screen sharing mode the desktop may be limited to 60Hz, the slower of the two displays.
 
A bit of an oddity with groups now (PTR) is that FirstOfGroup does not appear to work (in my tests).

Amendment:

Systematic errors were made while testing, which led to this false observation. Nothing to worry about.

Systematic error:
- It was assumed that the FirstOfGroup native did not work because of the inability to remove units (that are already removed) from the group, which was not taken into consideration.

Previous message has been updated to reflect this amendment.
 
Status
Not open for further replies.
Top