nvs / gem Goto Github PK
View Code? Open in Web Editor NEWGem TD+: A Warcraft III Tower Defense
Home Page: https://discord.gg/PxNNp77
Gem TD+: A Warcraft III Tower Defense
Home Page: https://discord.gg/PxNNp77
Annoying to say the least. This is fixable, for sure.
Can also consider, at a later point, increasing the amount of information the multiboard can display. Perhaps some sort of toggle.
This is essentially the same exact bug as #4. However, this one is not game breaking. It has happened for people, but they never noticed. That is because if this happened, then the one corrected in #4 also occurred, and their game broke. It is a minor issue by comparison, but will require more work than the other to resolve.
Some people might ask "Why balance?" I will reply by saying that Gem is far from balanced. There are not multiple viable end game strategies. And getting an imbalanced structure early enough can more or less ensure victory for a single player. A reason to balance is to encourage races that remain closer for longer, even if two players opt for different strategies. Without a doubt there is certainly is room for improvement.
A side effect of f092d1d, even though the start locations exist, they are not being forced by SetGamePlacement (MAP_PLACEMENT_FIXED)
as I assumed.
I'm not sure this is a bug or not, but I am thinking this should not be happening. Still needs looking into.
It was only used in the cheats that were removed, but an oversight when resolving #14 kept it in. I should clarify that even though the sound isn't created in the JASS script anymore, a copy of it exists inside the map (as do all other objects as they were created with GUI triggers inside the World Editor, and that's what it does). It's up to me to figure out which aren't used and remove them.
Also note that the -debug
command does not seem to work either.
Adding the Wine version of the executable, as this is more portable than expecting people to compile the source (which is not difficult either).
Basically a clean *.w3x
map file that can be used to build the latest version of the map. Initially this should be equivalent to what is offered in v3.1
. This will be referenced in #20 as part of the build process. Release that this is not a full release of the map, but a shell without the JASS script included. For the corresponding v3.1
JASS script (war3map.j
) see da039f8.
Later versions will be released as well, but infrequently. Changes will be documented with a specific label (particuarly the Area: Map
label added in #27), to keep from adding too many binary files to the repository. Also, a file to document these changes will be created (see #28).
But for the most part the *.w3x
map file will remain external to the repository.
This will allow more flexibility when reworking much of the code.
I can probably count on my hand the number of people I've seen watch it. If the information in game was better, it may not be needed at all.
Needs the following functionality:
This is a collection of Lua scripts that allow numerous actions to be performed without having to open the World Editor (specifically manipulating Object Editor data). The code used to perform changes can be documented in the repository.
Nothing is displayed on that line for the player name. Nor is there anything to update in the other columns.
This is needed as the map file within the repository will updated very infrequently. This will allow someone to take a specific version, apply the changes, and essentially end up with a parity version.
So this bug requires very specific conditions, so it is pretty rare. Specifically that Combine
is hit as a part of a combination lands a killing blow. Basically the killing unit does not exist because it has been replaced, so the kill cannot be properly registered.
Need to look into hiding units, as that might be a suitable fix.
Okay, so Bryvx added the -debug
command to address this. Still, stuff like this shouldn't be happening. Pretty sure I know what causes it. A rework of the entire spawn system will fix memory leaks and other issues, as well as probably dealing with this too.
Just happened in my game. Was only Level 1 with 530,000 life (normally Level 50 with two million life). Interesting to say the least!
The only function it serves is to display the gems that are available for each individual player on a given round. Nothing more. For the most part the multiboard is far more useful, and can be hidden by the player if they desire. In Race mode the multiboard is always available. In Classic, however, it is hidden while the leaderboard, and its underwhelming presence, is shown.
Okay, no discussion needed. The leaderboard is going.
These definitely would be nice to have:
Damage per second, range, etc. All of these should exist in a Markdown file for easy reference.
It's not really a groundbreaking bug, however it can make Dark Emeralds a bit more useful. The real culprit is the On Attack
event that Warcraft 3 uses, which gets called every time a unit acquires its target, not when it actually performs the attack. So spamming Stop
causes the event to run much more frequently than is expected.
A solution to this would probably involve damage detection.
Basically, getting multiples of the same slate or gem can sometimes break combining, leaving pieces impossible to combine later. Probably my most hated bug; however, it is possible to play around it. But that is a hassle. I will most likely have to rewrite this part of the code base from scratch.
Depending on the color, air may be a hair bit too far in one direction or another. As a result the exact same maze does not perform exactly the same in all colors.
Probably minor adjustments in the rect values should fix this.
Note: I have spent quite a bit of time thinking about this issue, and I have added over multiple months to this particular comment, so it is on the longer side. It mostly reflects my thought process in wrapping my head around the 'glitch', why my stance has changed over the years, and both the pros and cons. Most people probably care more about the Solutions post which comes later.
Okay, from my perspective of auditing the code it definitely looks like a bug/oversight. I checked and it has existed since at least v1.1, the earliest map I could find. Due to the timer in Classic mode (the only mode that existed back then), it would have been difficult for players to use the 'glitch' at all. I doubt it was honestly discovered until Race mode was introduced.
Now, Bryvx definitely knew about the 'glitch' and used it, as multiple people, including myself, have reported seeing. But I cannot comment on when he definitively found out about it, nor whether he had any plans to address it further. According to DMVPDemonMOM (an original Gem TD tester), he didn't really want people to know about it either. Make of that what you will.
Regardless, it looks like a coding error, and I'm sticking to that belief. I highly doubt Bryvx knew a lot of the intricacies of Warcraft 3 mechanics and built his combine system around them, given how many issues and bugs there are throughout the code base. Especially those related to the very same behavior that allows the 'glitch' to occur in the first place: units not existing on the map and returning null
in checks. A number of these errors literally broke parts of the game, sometimes rendering it impossible to complete.
Still, for a very long time use of the 'glitch' was pretty rare, even when bot hosting came onto the scene. I'll admit I definitely played a part in helping knowledge of it spread, as did many other good gem players, especially those who originated on USWest. Now we're at a point where the use of it is fairly widespread and generally accepted, and right now it is less of a bug and more of a balance issue. And boy is it one hell of a balance issue.
Honestly, if you've ever tried explaining the 'glitch' it even sounds like a bug. Kill all but the gem you want to 'glitch', wait thirty seconds, then combine. Want to know why that works? When looking for four of a kind the code checks every combination of the five gems you were given that round. Guess what happens to destroyed gems after thirty seconds? They're removed from the map after the default decay period for the corpses of structures. You combine and the check then finds four null
units, and returns true
. Congratulations, the gem you left alive skips a quality.
Of course, new players generally assume it is some sort of cheat, which it isn't. But they don't understand how it works, nor can they wrap their head around it without more information. For the most part, unless a player has someone explain how it works to them or is a bit more clever than the average squirrel, they're not going to figure it out. And that is honestly a big deal.
Gem should be simple. Everything in gem should be obvious. The 'glitch' is not simple, nor obvious. It's not logical. Why should killing your own stuff give you better stuff after you wait an arbitrary period of time? There is nothing within the map to explain that it exists, let alone how it works. At the very least it needs to be explained, or better, simply revamped.
There was a time when I sparingly used the 'glitch'. I told myself that I would only use it if someone else did, mostly because running into another player who used it was unusual. And it remained rare for a long time, as many old players will tell you. When the 'glitch' was used people would claim it was a cheat, or demand to know how it worked; explaining the move was honestly a chore.
But as the years passed and an increasing number of people became familiar with the move I found myself needing to use it more and more, simply in an effort to stay competitive in races. Why? Because the Greats and the Stone of Bryvx have that much of an effect, especially early game where very few other structures beyond slates can provide the same impact. After a while, I began to use the 'glitch' almost religiously and started to curse myself when someone else had 'better luck' than me. Gem had become less of a gradual build up, and more defined by one-off instances of amazing luck.
Becoming the map fixer, maintainer, balancer, etc. has caused my perspective to shift, and I am starting to see the 'glitch' in a different light. Previously it was awesome, a way for me to catch up, a means for me to extend a lead, an option to allow me to salvage a surely lost game, and in general just a way to kick ass. It let me typically be more risky with my strategies than I normally would be without. In the hands of a skilled player, the 'glitch' is a formidable tool, of that there is no doubt.
But it is a double edge sword. As easily as it helps people, it is also hurting them, as well as the community surrounding the map. First, let's just clarify that it is possible to beat the game without using the 'glitch' at all. Many people have done it countless times with extremely high success rates, myself included. However, it requires a good knowledge of the map, strategies involved, mazing, etc. A bit of time investment is needed to reach a point where you can recover from the multitude of bad situations luck will hand you on a fairly consistent basis. I'll admit, though, that the 'glitch' makes the game easier. Perhaps too easy.
Now, let's look at inexperienced players. There have always been, and will always hopefully be, inexperienced players. They don't know how to maze well or even understand why the maze they use works, let alone its shortcomings. They don't know how to place their slates effectively. They don't know which auras stack. They don't even know all the recipes. But guess what they seem to know now that they didn't know in the past? The 'glitch'. Great, right?
Perhaps not. Now, don't get me wrong, I'm not saying all inexperienced players are just suddenly using the 'glitch'. And even the ones that do use it still fail because they don't grasp the map properly. But the structures the 'glitch' makes easier to get are powerful. Inexperienced players can get farther into the map than they probably should. They begin to rely on the Greats and the Stone of Bryvx to progress and attribute a lack of them to bad luck. In a sense, the 'glitch' is hurting these players by giving them a 'crutch' that they can lean on.
But this 'crutch' doesn't just stop with new players, it extends to more experienced ones as well. Now that I'm paying attention I am noticing lots of players, skilled or not, complaining about their bad luck. Yes, some people are crying about leaking even though they failed to recognize the weakness of their choices. And yes, some are crying because they opted for a risky maze and do not know how to adapt properly. But primarily they are crying because they are not getting an imbalanced structure, of which the 'glitch' is a major facilitator.
Now, commenting that you aren't having great luck is one thing. But they're serious: they see the lack of having overpowered structures in the early game as bad luck. Hell, some of them just up and leave, opting to restart due to their lack of having one, or due to the fact that someone else got one first. This hurts the Gem community as a whole and is primarily a problem with expectations and the balance of the map. The 'glitch' does not help this issue at all.
Still, I do see the 'glitch' as beneficial, just in a different way than the typical player. Most players see the 'glitch' for the power spike it gives, a moment of good luck that feels rewarding. And rightfully so, as many structures it provides, especially early game, can be quite powerful, if not overpowered.
But strip that away, and simply consider how it works. Probably the biggest boon of the 'glitch' is the fact that it gives players another tool to wield when approaching whatever luck throws their way. Luck defines Gem, and in general, we are at its mercy. However, there do exist ways to attempt to change the flow: the increasing of gem quality, as well as the ability to extra chance. In my mind the 'glitch' functions as an additional method to augment your luck, giving players more options. That would be a good thing if the 'glitch' was properly balanced.
If the 'glitch' was balanced, I don't think I'd really have too much of an issue with it. But, sadly, it is far from balanced in its current state. Now, when I refer to balance I'm mostly talking about using it to get a Great or a Stone of Bryvx. Even the wimpiest Greats do as much damage as a Star Yellow Sapphire. Most are far, far better.
Now, consider how early you can possibly get these structures provided by the 'glitch', as that is the main way it throws off the balance of the map: as soon as Round 10-13 for a Great, and Round 19-20 for a Stone of Bryvx in the average game. These are one-hits with very limited downsides. The possibility of opening a hole in your maze by killing stuff is hardly worth talking about; skilled players already take this into consideration when they build. As for the wait, this is hardly an issue at any time beyond very late game in a close race. Like I said, it's a one-hit, and most people would be fools not to take it.
Now let's use Great Diamond as an example real quick. It does 650 DPS. The soonest you can get a comparable structure (excluding slates) without the 'glitch' would be the exact same point as the Great itself, being a Pink Diamond by combining two Flawless. Before upgrading the Pink it only does 303 DPS and requires 175 gold to reach its full potential of 523 DPS. So pretty much you won't have it upgraded until sometime after Round 20 (assuming you prioritize maximizing your quality first). Oh, and the Great is a one-hit, instead of having to use three rounds to collect pieces. The soonest you would typically one-hit a Pink Diamond is Round 20. Sadly, Pink Diamond is not even in the same class.
And what about the Stone of Bryvx? Okay, Round 20 for that one, give or take. It does 625 DPS unbuffed (more than Great Pink Diamond) and gives a 50% bonus damage aura (more than a Mystic Black Opal). Essentially it is six rounds in one without a 450 gold drop to reach max potential. Having that on Round 20 is such a huge power spike that very few players would be able to keep up. More or less an 'I win' button in the average game. I'm intentionally not comparing it to Greats because, frankly, they're not balanced either given how early you can get them.
But the fact that the Greats and the Stone of Bryvx are powerful is not the problem. The defining issue is how easy and early one can get them by using the 'glitch'. Getting one early game essentially eclipses your opponents, unless they too have something that is drastically overpowered for that point in the game. On top of that, it is much easier to get a Great or a Stone of Bryvx than it is to one-hit another type of special tower, as you only need two pieces! Yet for something that is easier to get, they are some of the most powerful structures in the game, essentially beating almost any other choice in a single round hand down.
Each gem selected is an independent event. Mind you, I'm intentionally ignoring Extra Chances here.
At maximum quality the following chances exist to get a particular quality AND type:
1 / 80
3 / 80
3 / 80
3 / 80
Anyways, these are the probabilities to fulfill the following events in a single round (one-hit) with quality maximized.
≈ 1 / 1_036
≈ 1 / 13_485
≈ 1 / 77
≈ 1 / 104_264
≈ 1 / 656
≈ 1 / 8_274_747
There should be no hidden moves in Gem, and as such the 'glitch' already fails. It throws off the balance of the map, whether people realize it or not. It does give people more options when assessing their gem choices, so it is not all bad. Still, it needs to be addressed, but the question is how?
It sounds more glamorous than it really is. We're hijacking this related issue to make a list! With boxes! And in this list will go names of things to check and update. Just getting it done, and will reference the issue when it is done. The following still applies.
A quick rundown of what these mean:
We can utilized the deterministic behavior of the build process to ensure that tooltips are always modified after everything else. This lets us simply set them in one place and forget. Later, this process can be revamped. But, for now, this is the easiest way to proceed.
Pretty simple fix, just need to do it.
It would be nice to be able to have a standardized way of displaying errors and warnings of issues within the code to players. It should provide enough information that a screenshot can be useful in identifying the problem.
Happens fairly regularly, and just annoys the hell out of me. Pretty sure it is related to placing rocks, but who knows.
Even before the hosting bots only offered versions that force Extreme/Race I hardly played 'Classic', let alone any other difficulty. To be fair, I can count the number of times I've played 'Classic' on both hands. I just prefer Race
, and it seems most other people do as well.
Supporting only a single mode and difficulty makes the map easier to balance and maintain.
Perhaps implement a system that causes each game to randomize the paths to some extent, forcing players to adapt, or at least have more than just one maze in mind. Would some setups be more difficult than others? Yes, of course. But others would be easier. The key would be forcing players to adapt to the situation and perhaps augment their strategies, rather than jumping into the game and pulling the handle of the luck machine mindlessly.
Some things are too strong when they get kills, in particular, certain slates. And beyond these few structures, everything else doesn't really benefit much at all, unless it has a high base DPS.
I see two general options:
I'm leaning in favor of the first option, as it is easier to implement for me, and easier to understand for the player given it is a small change from what currently exists.
Okay, so this may not be a bug that even exists, as the behavior in #4 could be what is making people think too few units spawned. But I cannot rule out a bug in the spawn system just yet.
This would allow tracking the amount of damage done, allowing such features as displaying the percentage of life removed from units in the round.
The average game takes around 55 to 65 minutes. That's a pretty big investment of time. Now, I do not see it possible to really shave this down much without stripping the current Race
mode. However, if another mode was added, that could designed to target a different game length.
Bryvx added the Anti-Stuck
feature to address this issue. However, that presents its own problems (e.g. removal of collision). It would be nice to implement a more user friendly means of dealing with this issue.
The following labels are missing:
Not just for the script, but for the whole map itself. A few tools to aid in this process are:
A goal is to keep the map size down, but ensure that the map loads fast. The Widgetizer presents potential problems regarding desyncs, but gives the best chance of decreasing load times.
Ultimately the process to build the map will be laid out, along with any options needed or avoided in any necessary tools.
Very annoying, and often requires restarting Warcraft 3.
This is kind of a two part solution, and involves a bit of work. Here is how I hope things to function:
Pass
is selected. If no player selects the game modes, then a default mode will be selected automatically.Some ideas for different areas:
Need to update the Markdown documentation, and go back and add Area
labels to existing issues.
What should the version be after the bug fixes are finished? The last official versions was v3.1
, but there have been multiple non-official versions after. Also, should the name change at all?
This should be a large undertaking, and will represent most of the work put into Version 1.1
. This should resolve a number of performance issues that exist, and touch upon numerous other related bugs. This list will be updated as time goes on.
Then again, perhaps it will not take as long as I am anticipating.
Various ideas already exist, and I'm sure many others haven't even been considered.
After #12 was fixed, a new bug appeared. Basically the player called Game Time:
(in yellow) now exists on the multiboard, but only in Classic mode.
Only displays the help message, not matter what is tried. Probably a simple fix.
A bit more information in the README. Can pull from the post on the ENT forums. Also, explain how I plan to use milestones as well.
The long-term goal is to bring gambling to the player, for example with the addition of a luck resource (#94). However, it is time for the gamblers to go. Perhaps they will reappear in another form. For now, I do not want to have to consider them when addressing the game balance.
The issue lies within the downgrading trigger, which unlike the combination trigger, does not update the Opal aura ability as it should.
Pretty simply additional. Just need to do it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.