Jump to content

Ilintar

Members
  • Posts

    145
  • Joined

Reputation

10 Good
  1. Just a technicality, but "exponential search" means that something is at least of complexity 2^n (so the variable is actually in the exponent). O(n^2) is polynomial and not exponential complexity. Factorial complexity is also not technically exponential complexity - it's a higher class still (a factorial is somewhere around (n/2)^(n/2)).
  2. Actually, a reasonable ignore table should be at most O(log n) complexity for lookups, and is probably statistically faster than that (a hashtable with ignores will be really sparse unless you have half your server on ignore). However, I agree that this is hard since it requires a graph algorithm - you have to pick a strongly disconnected component of the ignore graph (which is simply a strongly connected component of the inverse graph) of size at least 16. However, the cost of scanning such a graph for connected components is at most O(n^2) (since the number of ignores can be O(n^2) and efficient algorithms are O(|V| + |E|)). The premades are another problem whatsoever. However, they are much more easily solvable. The algorithm works as follows: * pop people as before * check if there are any premades that were split * for each premade that was split and is missing X people, check if it is possible remove the bottom X people from the group and reinsert them into the queue (note that there are no people between the admitted members of the premade and the omitted members of the premade, since the entire premade has the same sorting key in the priority queue). * if such a switch is impossible (for example, because there are 2 healers from the premade missing and the only free non-premade spots are for dps), then pick more people from the queue to provide reserve spots. If it is possible to replace the addmited members of one of the premades with freelancers to find a solution, do it. * if there are not enough people in the queue to find a solution, cache the number of missing roles and do not run the algorithm again until the queue is properly filled For example, say that a premade with 3 healers, 4 dps and 2 tanks queues and another premade with 2 healers, 1 tank and 8 dps queues. Say there are 2 freelance healers, 4 freelance dps and 1 freelance tank in the queue. Say that the 2 freelance healers queued first, then the first premade, then the other premade, then the other freelancers. We pop 4 healers (2 from premade A), 10 dps (4 from premade A, 6 from premade B) and 2 tanks (from premade A). Now, it is possible to get premade A in full by replacing the one freelance healer. So now the entire premade A is in, but premade B only has 6 dps in. Since it is not possible to remove 2 dps, 1 tank and 2 healers to make place for the second premade, we add reserves. We have 2 success scenarios - either we get 6 freelance dps in the queue and we remove premade B or we get 2 freelance dps, 1 tank and 2 healers and we remove premade A. Since the second scenario is obtainable, we pop the freelancers and reinsert premade A into the queue. All of this is really cheap because, again, the operation of removing a queue element is cheap. So, the algorithm that addresses both problems (premades and ignores) is still at worst O(n^2) (because of the ignores).
  3. Yeah, stupid mistake. This is basically the same algorithm, apart from the way of picking the overlaps (and you're basically right).
  4. There was a discussion in the maintenance thread that was locked down, so I figured I'd post this for anyone interested: It would be horrible if the algorithm actually was O(n!), but I see no way that it would be implemented thus. The algorithm for a group finder is actually simple. You keep 3 priority queues (heal, tank, damage), you implement them in Fibonacci heaps since you want remove to be relatively cheap (you will remove overlaps). You also keep information about the number of overlapping entries in the queues (so, tank-damage and heal-damage). Now, a key part of the algorithm is that as long as you have the required number of people on each queue (minus the overlap), overlaps don't matter since there are no 3-way overlaps (tank-heal-damage) to resolve. Let's say you have 10 dps, 5 healers and 5 tanks and you have 3 dps-heap overlaps and 1 dps-tank overlap. So, you have 6 pure dps, 1 tank-dps, 4 pure tanks, 3 heal-dps and 2 pure healers. What you do is you first assign the pure roles (so you need 2 more dps, 2 more healers and 0 more tanks). You're left with 3 heal-dps and 1 tank-dps. You assign the 2 heal-dps as healers, 1 of them as dps and the tank-dps as dps. So, whenever num(heals) >= 4 and num(dps) >= 8 and num(tanks) >= 4 and num(tanks) + num(heals) + num(dps) - num(tank-dps-overlap) - num(heal-dps-overlap) >= 16, you pop the respective people from the priority queues (and remove duplicates). If it turns out that some people resign, no problem - since this is a priority queue, you just insert the people back into the queue with their original insertion time as the sorting key (so they land on top). Since the queue size is constant (= 16), at no point does the algorithm have a complexity worse than O(log n) (at most you do 16 removes on a Fibonacci heap). So, there might be other factors involved (synchronization issues, for example), but the very algorithm's complexity should be negligible (say even 300 people are in the queue at once - that's a laugable computational cost).
  5. At least get full Obroan + full augments. Get augments on your earpieces/implants as well - augmentation kits are cheap (and easy to make), and you can always take the augments out when you replace them with Brutalizer later on.
  6. I don't see the point of calling out other people for being bad. Everyone who's bragging about how good they are and how bad others are in comparison seem to forget that they too were once bad. People have to learn to get good, nobody is good from the very beginning. From personal experience - I was generally an above-average pvper in regular warzones, so after gearing up and augmenting, I decided I'd try ranked on my gunslinger. The first 50-or-so games were a disaster, with the combination of my complete lack of ranked skill and difficult opponents accounting for a 20-game losing streak at one point. Now I've gotten to the point where I'm somewhat average and my win ratio hovers around 50%. During all this time, the biggest improvement came from either me asking for advice or people giving me advice on their own. Sometimes even pointing out mistakes, but in a constructive manner (like "have your back against the wall if you are against 2 assassins"). Hearing that you're bad just increases your frustration and the feeling that "I have no idea what to do to get better". Moreover, if there is someone that is actually bad, it's likely due to a combination of factors. You can't expect someone bad to improve instantly due to some "clever advice" that you've given them. Just give the advice, let it sink in, hopefully, they'll listen at some point. Sometimes, it's just a question of sufficient experience and a sufficiently competitive environment that outlines all the flaws. For example, I never realized how important positioning really is for a gunslinger until I started playing ranked. So, in other words, be patient, give advice, but don't be frustrated if people aren't as good as you want them to be. They'll learn at some point. It's statistics - the other side has their share of unexperienced players as well. Just learn to cope with it.
  7. Ilintar

    Sniper PVP

    My bad, misread.
  8. Ilintar

    Sniper PVP

    What? You basically made a rant about how unbalanced Evasion/Dodge is and how OP would it be if another burst class had a similar ability that gave them self-cleanse and nigh-invulnerability for 3 seconds. I pointed you to an Assassin/Shadow ability that has exactly the same effects as Evasion/Dodge and you say "that doesn't make sense"? If you want to rant about perceived imbalance, at least take the time to actually learn all the classes' abilities and don't make claims that are simply factually false.
  9. Ilintar

    Sniper PVP

    You wouldn't be pointing at sins and their Force Shroud by any chance?
  10. That has already been nerfed quite enough on this forum.
  11. Ilintar

    Sniper PVP

    Sorry, but MM is simply not a viable spec for ranked arenas (it's perfectly fine in regular warzones). Too much line-of-sight issues which good players will exploit, not enough survivability, most of your abilities rely on either long cast times or getting out of cover to refresh the proc, which is horribly risky in ranked. Probably all the snipers/gunslingers I've seen in ranked use engineer/saboteur. It has the added benefit of making you able to roll twice, which is huge against all-melee opposing teams (esp. ones that have sins/shadows). Sins/shadows are still the ultimate sniper/gunslinger killer out there though and personally I think that's the only really imbalanced matchup. They can close the distance without being seen until the very last moment (which is usually too late if there's more than one), they can easily pop Resilience/Force Shround to mitigate any potential double roll damage (so no sniper/gunslinger will actually try to use it against an attacking shadow, because if you use your main escape ability to wall roll and you deal no damage, you're as good as dead). I do agree that sniper/gunslinger survivability is hard, though. Which doesn't mean it isn't there - it just requires really, really good usage of your cooldowns. You have to think about when to use roots and when to use stuns, use your defensive CDs cleverly (don't pop dodge/evasion and shield probe/defensive screen at the same time as it's a waste of time on the latter), balance between using your roll for damage and for escapes, know when to run and when to fight etc. The problem is that while for example jugg/guardian cooldowns are static (they can just pop then and keep fighting), a lot of the sniper/gunslinger cooldowns are movement related or require balance between dealing damage and escaping (the root wears out faster if you damage the target, the stun grenade breaks on damage), so you have to keep concentration all the time. This and positioning - the biggest mistake I used to make on my gunslinger was getting too close and then an opposing warrior charged me - this is a disaster (he's immune to any knockbacks/stuns for a few seconds, I can't move while he casts Ravage etc.).
  12. What is the reason for no automatic character transfer from normal servers to the PTS? You're missing out on a lot of testing of the most important content because of this. You _do_ have the transfer mechanics implemented - even if some stuff messes up on the PTS due to the automated transfers, isn't it worth simply for the sheer amount of potential lvl 50 testers you could get?
  13. Kicking people out for gear in D7 is stupid considering the boss fight is so mechanic-based (for FP standards) that no amount of gear is going to make it work if the people don't grasp the mechanics (and on the other hand, the fight is so easy once you get them right). Also, people are spoiled nowadays. I remember running flashpoints back in the days when I was the only semi-Columi geared person in the group, had about 15k hitpoints and was considered overgeared (!) for the hardmodes - sometimes managed to clear HM FPs with a team consisting of mostly 12k-13k characters. Recruit gear is by far enough to beat all HM flashpoints except for Lost Island.
  14. No, it would not be possible for someone to fully wipe account data in an irrevocable manner. Backups are generally made in a read-only manner to avoid exactly such situations. In serious cases, there is a two-level backup going on - there are regular digital backups (where data is transferred to a destination that is not normally accessible for writing, but could be under extreme circumstances) as well as offline backups that can be recovered in the case of a total emergency (usually read-only DVDs that are burned and then transferred to some physically secure location).
×
×
  • Create New...