Thanks very much, I'm going to try this out! One question left: how would I set the damage response options in order to get it working according to the formula you posted? How can I use this formula to begin with? (4% reduction each stack would mean it's a linear progression, not a degressive) Or does the second stack affect also the first stack of the behavior, and not only the basis value? And of course the third then affects the second and first and basis value so it'd be according to your formula...
Honestly, I don't even know about the debug window. Where can I activate it?
I'm 100% sure it's neither the units' nor the video cards' fault. I tested out various things to be absolutely sure it's a result of those behaviors. For example: I watched the replay again and didn't have any lags, it was absolutely lag free, but I had them when I was playing. Additionally, I tested out a much more complex scenario with twice as many units and effects, and it ran perfectly.
Maybe I got a clue about how to solve this. Seems like something was broken with the remove of the "old" behavior when a new one is added, so there were way more behaviors in game than normally. Like about 2000... this is a legitimate reason to have lags I think. I'm having this fixed now and then I'm going to report if it was successful.
This sounds really well-suited for my map. So basically it's okay to have hundreds of units and a dozen times stacking behavior on each? It sounds awfully cruel for me, but if you say it works performance-wise, then I'd definitely give it a shot.
Apart from that, how would I approach this? I've never worked with behaviors very much and don't know how to stack them either. Let's say I want a unit type to make use of this new stacking mechanism, what am I to do first? How would the behavior look like?
Actually I have a 5 secs periodic event running that checks on the armor value atm. I wanted to replace it by triggers that run when upgrading armor, or when a new unit comes into play.
Thing is, there is only one behavior active for each unit. All units start with no behaviors. Then, if they have more than 0 armor, a trigger determines (out of like 45 behaviors) the right one that fits to the specific armor value of that unit type. So the trigger finally adds the behavior to the unit, and removes all other behaviors (in the case there are old ones still active).
Each unit, therefore, has one behavior at maximum. Normally you use this system with heroes, and there aren't hundreds of heroes running around, so it doesn't really matter. But I use this system for all units, and just as I experienced, too many units with 1 behavior each slow down the game. Even if I misunderstood the thing with the 256 stacks, it's lagging like this.
So how can I change it to run smoothly? A trigger-only solution would also work, it doesn't really matter to me, but I don't know how to approach this one.
I made a custom armor system for my map. It uses the Warcraft 3 template, so it's working with damage reduction in % instead of an absolute value per armor point.
For it to work, I've built a trigger that checks on each units' armor value and allocates behaviors (buffs, damage response modification) accordingly.
In some custom armor thread, I've read about it not being recommended using more than 256 behaviors simultaneously. Problem is, each unit gets 1 behavior according to the specific armor value, but it's possible (not frequently the case, but possible) that there are up to one thousand units on the map. So there can be up to one thousand behaviors in game, instead at 256. When a certain number of units is living, the game starts to lag, just what I expected.
But how can I get this armor system to work when I cannot use buffs for that purpose (because the performance crashes down)?
Thanks a lot. Seems like I got some room left, since my MapScript.galaxy file has "only" about 980 kb :) Apparently, the 25k lines of code aren't that serious.
Ok guys, I honestly don't know how this thing is actually called. I need the selection frame or marker, call it however you want, you can see in the sc2 tutorial when you have to select your command center. It has a wider radius, glows in green and is rectangular, not a circle.
Primarily it's just to tell the player "HEY! Here's the unit you have to select!". How do I get this thing and how is it called?
Note: Already tried out "Unit Flash Selection", but this is not what I'm looking for.
---
Side question: In the same tutorial, there are animated arrows on the screen when you have to learn how to scroll. You got a clue how I get those too?
Ok here's what I wanna do: I'm trying to show a text message to all players. It's meant to be a crawling text with a certain formatting (color, style). I tried the "show cinematic text" command and it's indeed exactly what I need. But... it's a cinematic text and shows of course at the position where the minimap usually is displayed. I want this text to be displayed together with the normal UI, therefore cinematic text isn't supposed to be the right choice.
But all the other text commands don't have the parameters I need to set it up the same way. I tried "show crawling text", but it has a pre-defined formatting and the loop bugs out somehow (sound plays endlessly). The normal "send text message" is the only text command I get an option regarding the position of the text, but there are no parameters for text crawling and sound...
And that's the problem. I don't have that code. What you are suggesting is clear to me, but I need a command to make computer players leave the game without ending the game for them by using "end game for player X".
Some flying units I've created can attack ground and flying units. How can I make them attack flying units first and ignore ground units for the time being?
I tried out various search terms to find a solution already given, but it wasn't successful.
Unforunately this won't help me much. For example, in one trigger I have to simulate leaving players using the quit game button, this isn't possible with such a condition I assume. Or is there a possibility to make AI leave the game like users do?
It'd be too hard to explain. Basically, I have some triggers running and I cannot see if they are working correctly unless 6 players are in game. And on top of that I have to change them very often so that I can get the results I'm after. And most people of my buddy list would be extremely annoyed, if I were to tell that I need them to be present for some hours to check on some triggers.
Here's the problem: I have to make uncountable changes to some triggers which can only be tested properly for functionality when playing with 6 players or more. But ofc it's not possible to wait some hours between each minor script change to gather about 6 ppl again to have it tested.
Is there a way to emulate users or another solution to this problem? Is there a way to make AI leave the game with a certain command (not being killed)?
0
@Kueken531: Go
Thanks very much, I'm going to try this out! One question left: how would I set the damage response options in order to get it working according to the formula you posted? How can I use this formula to begin with? (4% reduction each stack would mean it's a linear progression, not a degressive) Or does the second stack affect also the first stack of the behavior, and not only the basis value? And of course the third then affects the second and first and basis value so it'd be according to your formula...
Ok, now I answered my own question :)
0
@SouLCarveRR: Go
Honestly, I don't even know about the debug window. Where can I activate it?
I'm 100% sure it's neither the units' nor the video cards' fault. I tested out various things to be absolutely sure it's a result of those behaviors. For example: I watched the replay again and didn't have any lags, it was absolutely lag free, but I had them when I was playing. Additionally, I tested out a much more complex scenario with twice as many units and effects, and it ran perfectly.
Maybe I got a clue about how to solve this. Seems like something was broken with the remove of the "old" behavior when a new one is added, so there were way more behaviors in game than normally. Like about 2000... this is a legitimate reason to have lags I think. I'm having this fixed now and then I'm going to report if it was successful.
@Kueken531: Go
This sounds really well-suited for my map. So basically it's okay to have hundreds of units and a dozen times stacking behavior on each? It sounds awfully cruel for me, but if you say it works performance-wise, then I'd definitely give it a shot.
Apart from that, how would I approach this? I've never worked with behaviors very much and don't know how to stack them either. Let's say I want a unit type to make use of this new stacking mechanism, what am I to do first? How would the behavior look like?
Thanks for your help so far!
0
@SouLCarveRR: Go
It's definitely not the units, because I haven't changed anything to the numbers of units in game and it worked perfectly before.
@StragusMapster: Go
Actually I have a 5 secs periodic event running that checks on the armor value atm. I wanted to replace it by triggers that run when upgrading armor, or when a new unit comes into play.
0
@Kueken531: Go
Thing is, there is only one behavior active for each unit. All units start with no behaviors. Then, if they have more than 0 armor, a trigger determines (out of like 45 behaviors) the right one that fits to the specific armor value of that unit type. So the trigger finally adds the behavior to the unit, and removes all other behaviors (in the case there are old ones still active).
Each unit, therefore, has one behavior at maximum. Normally you use this system with heroes, and there aren't hundreds of heroes running around, so it doesn't really matter. But I use this system for all units, and just as I experienced, too many units with 1 behavior each slow down the game. Even if I misunderstood the thing with the 256 stacks, it's lagging like this.
So how can I change it to run smoothly? A trigger-only solution would also work, it doesn't really matter to me, but I don't know how to approach this one.
0
I made a custom armor system for my map. It uses the Warcraft 3 template, so it's working with damage reduction in % instead of an absolute value per armor point.
For it to work, I've built a trigger that checks on each units' armor value and allocates behaviors (buffs, damage response modification) accordingly.
In some custom armor thread, I've read about it not being recommended using more than 256 behaviors simultaneously. Problem is, each unit gets 1 behavior according to the specific armor value, but it's possible (not frequently the case, but possible) that there are up to one thousand units on the map. So there can be up to one thousand behaviors in game, instead at 256. When a certain number of units is living, the game starts to lag, just what I expected.
But how can I get this armor system to work when I cannot use buffs for that purpose (because the performance crashes down)?
0
@Ahli634: Go
Thanks a lot. Seems like I got some room left, since my MapScript.galaxy file has "only" about 980 kb :) Apparently, the 25k lines of code aren't that serious.
0
Unfortunately, all the threads about this topic are quite old, so I dunno whether something has changed about it already.
Is there a limit regarding the script size (MB, lines, whatever).. or a limit on variables, function calls, triggers...
My project is already somewhat huge and I fear to hit a certain limit... what would be a desaster ^^
0
@Zetal: Go
I managed to get the arrow working with "Screen Images", but I haven't got a clue about the selection frame yet. Thanks so far.
0
Ok guys, I honestly don't know how this thing is actually called. I need the selection frame or marker, call it however you want, you can see in the sc2 tutorial when you have to select your command center. It has a wider radius, glows in green and is rectangular, not a circle.
Primarily it's just to tell the player "HEY! Here's the unit you have to select!". How do I get this thing and how is it called?
Note: Already tried out "Unit Flash Selection", but this is not what I'm looking for.
---Side question: In the same tutorial, there are animated arrows on the screen when you have to learn how to scroll. You got a clue how I get those too?
0
Ok here's what I wanna do: I'm trying to show a text message to all players. It's meant to be a crawling text with a certain formatting (color, style). I tried the "show cinematic text" command and it's indeed exactly what I need. But... it's a cinematic text and shows of course at the position where the minimap usually is displayed. I want this text to be displayed together with the normal UI, therefore cinematic text isn't supposed to be the right choice.
But all the other text commands don't have the parameters I need to set it up the same way. I tried "show crawling text", but it has a pre-defined formatting and the loop bugs out somehow (sound plays endlessly). The normal "send text message" is the only text command I get an option regarding the position of the text, but there are no parameters for text crawling and sound...
What's left for me to do?
0
@SouLCarveRR: Go
And that's the problem. I don't have that code. What you are suggesting is clear to me, but I need a command to make computer players leave the game without ending the game for them by using "end game for player X".
0
Some flying units I've created can attack ground and flying units. How can I make them attack flying units first and ignore ground units for the time being?
I tried out various search terms to find a solution already given, but it wasn't successful.
0
@SouLCarveRR: Go
Unforunately this won't help me much. For example, in one trigger I have to simulate leaving players using the quit game button, this isn't possible with such a condition I assume. Or is there a possibility to make AI leave the game like users do?
0
It'd be too hard to explain. Basically, I have some triggers running and I cannot see if they are working correctly unless 6 players are in game. And on top of that I have to change them very often so that I can get the results I'm after. And most people of my buddy list would be extremely annoyed, if I were to tell that I need them to be present for some hours to check on some triggers.
0
Here's the problem: I have to make uncountable changes to some triggers which can only be tested properly for functionality when playing with 6 players or more. But ofc it's not possible to wait some hours between each minor script change to gather about 6 ppl again to have it tested.
Is there a way to emulate users or another solution to this problem? Is there a way to make AI leave the game with a certain command (not being killed)?