I must say, I'm was a bit disappointed when you said you didn't see much difference between the game as it is now and as it was last time you tried it. But I can completely understand it: the game mechanics didn't change in any fundamental way.
At least this time you managed to get a full lobby and the new players were able to understand the game and play at a fairly decent level. That is a victory in itself for me, since I re-worked the tutorial a lot. I also updated the game since the last time you played. About the lag issues, it is really strange to me to see lag again, because I worked on performance a lot and haven't seen a lag since the start of LoTV. It feels like blizzard servers performance varies in function of days and hours, probably because of pikes in traffic.
I've been doing a lot of beta testing with friends and and that helped me focus on the depth of the game too: more interesting spells, better objectives and bonuses, terraining and UI work. I'm kinda sad you didn't get to experience that, but it would require a few games and interactions with stronger other players.
Yes, thanks for the help. Take the max, increment by 1, and have everybody use that value is a good approximation of the number of games. Because very few maps have 2 concurrent games being played and the core players are probably often the same.
It is a slight under-estimation, but having the exact number is less important if you get to the point where the game is played a lot.
I think I'll use that, not show it to the players, and just manually check my local bank file in a text editor to have an idea. This can be done for any counter, and in my map "Gods of Terminion", I'll also do it to see which gods (=heroes) are most played.
Hey, you need to specify what you mean by "current" APM, i.e. need to tell us the period of time you want to count APM on. It will be something like 5 or 10 seconds probably.
Lets assume the "current" APM you want is over the last 5 seconds. Lets also assume you only need to update this information every second (like you update the display showing it every second). There are many ways to achieve what you want, here is one example.
For each player, you could have a record with 7 counters instead of 1. Lets call them C0, C1, C2, C3, C4, C5, CT.
In C0, you count all the actions of the player since the beginning of the current game second, lets call it second number n.
In C1 you have the number of actions of that player during the whole second number n-1.
Same for C2, C3, C4, C5 with number of actions in seconds n-2, n-3, n-4, n-5
In CT, you have all the actions of the player since the beginning of the game to the start of second n-5.
To implement that now, you only need 2 triggers and 2 functions. Initiate all counters at 0.
First trigger: Each time a unit is selected or a command is issued to a unit, increase C0 by 1 (C0 of the correct player if you count APM of several players). That, you already know how to do.
Second trigger: Every game second:
modify CT: add C5
set C5 equal to C4
set C4 equal to C3
set C3 equal to C2
set C2 equal to C1
set C1 equal to C0
set C0 equal to 0
First Function: getCurrentAPM()
return (C1+C2+C3+C4+C5) * 60 / 5
this is actually your average APM over the last 5 seconds
not accurate during the first 4 seconds of the game but I guess we don't care too much
Second Function: getAverageAPM()
return (C1+C2+C3+C4+C5+CT) * 60 / MissionTime
this is actually your average APM since the beginning of the game
I've been thinking about changing the hostile player to an enemy computer, but tried to avoid it.
-> My problem is in the lobby: it seems even if you lock a computer's team (option in the game variants), people can still mess up in the lobby and change the computer's position and team. I don't want that to happen.
-> There is a difference between a "hostile" and a "neutral" player. At least, the hostile attacks you when it can. I wonder if I can make my player be more aggressive towards the "hostile players". Setting us as enemies using triggers doesn't solve the problem.
I am making a Tug of War with objectives on the map. My units encounter creeps on the map. The creeps belong to the hostile player (player 15).
When the hostile player attacks my units, my units reply and attack too.
But when the hostile player can't attack my nearby units, I have an unexpected behavior: my units (uncommandable, as in a tug of war) just pass by as if there was no hostile creep. I would like my units to be offensive and attack them.
Example: I have an air unit (uncommandable) that goes above a creep, and that creep cannot attack air. Right now my air unit just passes above it. I'd like my air unit to attack it. Same problem if my unit is invulnerable.
I can't find an answer and I've spend a lot of time trying to figure out an answer but didn't succeed. Please help!
Note: the creeps must absolutely belong to the a player of type "hostile".
@Chewiest: Go
Anywho, look forward to see how it looks a few more weeks from now, keep up the good work. Despite my lack of ability at the game, I actually did like it.
Hey Deadzergling! A few weeks have passed and I improved a lot of things in Gods of Terminion: terrain & UI improvements, more races & gods added, 2 tutorials (a quick one and an in-depth one), and many bug and balance fixes which make the game hopefully much better. Your feedback as well as other beta-testers feedbacks were very helpful.
So if you're curious and want to give it another spin, that would be awesome!
Yep, it seems a non-periodic behavior that applies it self when it ends (and sets its duration) could work. But you still need triggers to change the duration, don't you? I couldn't think of a data-only approach so I thought a trigger-only approach was preferable.
I think there is a bug in the editor and to make a weapon "enabled", your upgrade should actually say the opposite, something like Weapon Set Disabled.
Soulfilcher is right about the second point: you need to add a requirement to the research ability. Hence create a Requirement.
Assuming your upgrade is called "Death Weapon Upgrade", it the requirement look like:
I personally think they used the starcraft 2 editor as a prototyping platform for Heores of The Storm. I imagine that at some point, they imported warcraft models so they could build a more complete prototype, and later on ended up giving they publicly. Maybe they didn't need the abilities because they just built new ones.
Thanks for the advice. Like I said, I already modified the permissions on these problematic files and folders, and I also ran the editor as root (I'm on a Mac, its not called administrator there). Still, the problem persists: every time I try to publish a map with a screenshot, I get an error.
In case a Blizzard employee sees this, the full error message is: Unable to save resource file (kCFHostErrorHostNotFound / kCFStreamErrorSOCKSSubDomainVersionCode / kCFStreamErrorSOCKS5BadResponseAddr / kCFStreamErrorDomainPOSIX / evtNotEnb/ siInitSDTblErr / kUSBPending / dsBusError / kStatusIsError / kOTSerialSwOverRunErr / cdevResErr / EPERM - / Error code is the version of SOCKS which the server wishes to use / / POSIX errno; interpret using <sys/errno.h> / event not enabled at PostEvent /slot int dispatch table could not be initialized. / / bus error / / / Couldn't get a needed resource; alert / Operation not permitted - (1), /Users/<username>/Library/Caches/TemporaryItems/StarCraftIITemp/Publish/<map name>.SC2Map/Screenshot01.jpg)
Again: I didn't have this error before patch 3.0.0. I also thought it was a problem of permissions on my side. Weirdly, similar files are created without problem when the map has no screenshot. But, from what I could see on the web (a, b, c) this error could be due to an Apple Push Notification problem inside SC2 Editor, fixable only by Blizzard. Since I still got the error even after completely re-installing the game, it is probably an error in the editor code.
I'm on Mac OS X El Capitan (10.11).
It may be another bug in the publishing code of the editor: it seems temporary files are created with only read and execute permissions, but not write permissions. In case the screenshot1.jpg is written several times during the publishing steps, then second time it tries to write it it fails because it can't override the existing file. Not sure if this is the issue and why it would occur now and not before, but a blizzard employee with the source code could test that.
I was interested in the answer to this question too. I figured it out in my specific case.
Basically using regular autocast functionalities (autocast flags on and autocast validators) didn't work for me.
However, the morph ability has a "automatic" flags (cf this page http://www.sc2mapster.com/wiki/galaxy/data/abilities/morph/ to see what it does). I turned it on and modified the "validators array" with what I would usually have put in the "autocast validators" and it worked.
In my case the validator is "Caster life LT20" (caster's life lower than 20% of full life). Note that I didn't need to turn any "auto cast" flag on for it to work.
0
@Deadzergling: Go
Hey Deadzergling,
thanks a lot for trying the map again!
I must say, I'm was a bit disappointed when you said you didn't see much difference between the game as it is now and as it was last time you tried it. But I can completely understand it: the game mechanics didn't change in any fundamental way.
At least this time you managed to get a full lobby and the new players were able to understand the game and play at a fairly decent level. That is a victory in itself for me, since I re-worked the tutorial a lot. I also updated the game since the last time you played. About the lag issues, it is really strange to me to see lag again, because I worked on performance a lot and haven't seen a lag since the start of LoTV. It feels like blizzard servers performance varies in function of days and hours, probably because of pikes in traffic.
I've been doing a lot of beta testing with friends and and that helped me focus on the depth of the game too: more interesting spells, better objectives and bonuses, terraining and UI work. I'm kinda sad you didn't get to experience that, but it would require a few games and interactions with stronger other players.
Also check out the new trailer:
0
@willuwontu: Go
Yes, thanks for the help. Take the max, increment by 1, and have everybody use that value is a good approximation of the number of games. Because very few maps have 2 concurrent games being played and the core players are probably often the same.
It is a slight under-estimation, but having the exact number is less important if you get to the point where the game is played a lot.
I think I'll use that, not show it to the players, and just manually check my local bank file in a text editor to have an idea. This can be done for any counter, and in my map "Gods of Terminion", I'll also do it to see which gods (=heroes) are most played.
0
@RodrigoAlves: Go
How do you add 1 to an integer in everyone's bank? I lean every player who ever played the map even outside then current game.
0
@Chris97Ong: Go
Hey, you need to specify what you mean by "current" APM, i.e. need to tell us the period of time you want to count APM on. It will be something like 5 or 10 seconds probably.
Lets assume the "current" APM you want is over the last 5 seconds. Lets also assume you only need to update this information every second (like you update the display showing it every second). There are many ways to achieve what you want, here is one example.
For each player, you could have a record with 7 counters instead of 1. Lets call them C0, C1, C2, C3, C4, C5, CT.
To implement that now, you only need 2 triggers and 2 functions. Initiate all counters at 0.
First trigger: Each time a unit is selected or a command is issued to a unit, increase C0 by 1 (C0 of the correct player if you count APM of several players). That, you already know how to do.
Second trigger: Every game second:
First Function: getCurrentAPM()
Second Function: getAverageAPM()
0
Thanks for the suggestions!
@joey101d: Go
The creeps have weapons already: they attack you when they can. When your unit is invulnerable for instance, creeps won't attack it.
@ImperialGood: Go
I've been thinking about changing the hostile player to an enemy computer, but tried to avoid it.
-> My problem is in the lobby: it seems even if you lock a computer's team (option in the game variants), people can still mess up in the lobby and change the computer's position and team. I don't want that to happen.
-> There is a difference between a "hostile" and a "neutral" player. At least, the hostile attacks you when it can. I wonder if I can make my player be more aggressive towards the "hostile players". Setting us as enemies using triggers doesn't solve the problem.
0
Hi,
I am making a Tug of War with objectives on the map. My units encounter creeps on the map. The creeps belong to the hostile player (player 15).
When the hostile player attacks my units, my units reply and attack too.
But when the hostile player can't attack my nearby units, I have an unexpected behavior: my units (uncommandable, as in a tug of war) just pass by as if there was no hostile creep. I would like my units to be offensive and attack them.
Example: I have an air unit (uncommandable) that goes above a creep, and that creep cannot attack air. Right now my air unit just passes above it. I'd like my air unit to attack it. Same problem if my unit is invulnerable.
I can't find an answer and I've spend a lot of time trying to figure out an answer but didn't succeed. Please help!
Note: the creeps must absolutely belong to the a player of type "hostile".
0
@Demtrod: Go
I have the same problem. I haven't solved it yet.
0
Hey Deadzergling! A few weeks have passed and I improved a lot of things in Gods of Terminion: terrain & UI improvements, more races & gods added, 2 tutorials (a quick one and an in-depth one), and many bug and balance fixes which make the game hopefully much better. Your feedback as well as other beta-testers feedbacks were very helpful.
So if you're curious and want to give it another spin, that would be awesome!
0
@FunkyUserName: Go
Agreed: "while(unit is alive)" is better code design. The rest of the function works.
@Usernameisntworkingright: Go
Yep, it seems a non-periodic behavior that applies it self when it ends (and sets its duration) could work. But you still need triggers to change the duration, don't you? I couldn't think of a data-only approach so I thought a trigger-only approach was preferable.
0
Assuming your upgrade is called "Death Weapon Upgrade", it the requirement look like:
0
I can see how you could do with a function. Here is an example in pseudo code that you would call only once, when the unit is created:
This way, the time you wait between two harvests is updated at every harvest. I don't think you need to update faster than that.
Depending on when you create the refinery, you will wrap the function in different ways. One way is with a trigger like:
Of course, you can collapse 4 lines in one:
Its just harder to read.
0
I didn't get much luck on this post, it seems it went completely unnoticed.
I'm still actively looking for people who would be kind enough to test the map and give me some feedback!
0
Yes, this is indeed exciting!
I personally think they used the starcraft 2 editor as a prototyping platform for Heores of The Storm. I imagine that at some point, they imported warcraft models so they could build a more complete prototype, and later on ended up giving they publicly. Maybe they didn't need the abilities because they just built new ones.
0
@ImperialGood: Go
Thanks for the advice. Like I said, I already modified the permissions on these problematic files and folders, and I also ran the editor as root (I'm on a Mac, its not called administrator there). Still, the problem persists: every time I try to publish a map with a screenshot, I get an error.
In case a Blizzard employee sees this, the full error message is: Unable to save resource file (kCFHostErrorHostNotFound / kCFStreamErrorSOCKSSubDomainVersionCode / kCFStreamErrorSOCKS5BadResponseAddr / kCFStreamErrorDomainPOSIX / evtNotEnb/ siInitSDTblErr / kUSBPending / dsBusError / kStatusIsError / kOTSerialSwOverRunErr / cdevResErr / EPERM - / Error code is the version of SOCKS which the server wishes to use / / POSIX errno; interpret using <sys/errno.h> / event not enabled at PostEvent /slot int dispatch table could not be initialized. / / bus error / / / Couldn't get a needed resource; alert / Operation not permitted - (1), /Users/<username>/Library/Caches/TemporaryItems/StarCraftIITemp/Publish/<map name>.SC2Map/Screenshot01.jpg)
Again: I didn't have this error before patch 3.0.0. I also thought it was a problem of permissions on my side. Weirdly, similar files are created without problem when the map has no screenshot. But, from what I could see on the web (a, b, c) this error could be due to an Apple Push Notification problem inside SC2 Editor, fixable only by Blizzard. Since I still got the error even after completely re-installing the game, it is probably an error in the editor code.
I'm on Mac OS X El Capitan (10.11).
It may be another bug in the publishing code of the editor: it seems temporary files are created with only read and execute permissions, but not write permissions. In case the screenshot1.jpg is written several times during the publishing steps, then second time it tries to write it it fails because it can't override the existing file. Not sure if this is the issue and why it would occur now and not before, but a blizzard employee with the source code could test that.
0
I was interested in the answer to this question too. I figured it out in my specific case.
Basically using regular autocast functionalities (autocast flags on and autocast validators) didn't work for me.
However, the morph ability has a "automatic" flags (cf this page http://www.sc2mapster.com/wiki/galaxy/data/abilities/morph/ to see what it does). I turned it on and modified the "validators array" with what I would usually have put in the "autocast validators" and it worked.
In my case the validator is "Caster life LT20" (caster's life lower than 20% of full life). Note that I didn't need to turn any "auto cast" flag on for it to work.