Mahlesseh said:
Non of the other cc's have this annoying slow cast, so i think you should be able to make it faster.
Short answer, the design choices made for the CC is the root cause of the problem.
CC design is very tricky. When you start writing, you have to make decisions like:
- Do I maximize for dps output?
- Do I maximize for survivability?
- Do I want to implement every hook-and-gimmick the class has available?
- Do I do crowd-control?
- Do I design for multi-mob engagements on a regular basis?
- etc.
Fpsware CC's are 'full featured'. For instance, the hunter uses traps and can take on half-a-dozen mobs at the toon's level or slightly above. Fpsware's is also one of the few that implements multi-pull. It also detects for 'evading' mobs, it switches auras appropriately and in particular situations, and about a bazillion other things.
The Fpsware CC's are built for leveling and grinding in a PvE world. And as such, is a
very hardy (read survivable) CC.
All these checks come at the cost processing time.
Problem 1--C#/.NET
C# is a fun little language (and environment) to write in. It makes things
very easy for a developer. As the language of a bot, it is probably the perfect choice, as it engages the Community to easily extend the bot with capabilities. C#/Java are ideal for client-side web development, and writing small tailored apps like a bot.
Getting the Community engaged rapidly and effectively is probably the single most important contributor to a successful bot product.
However, the language--like Java--is simply horrid for performance when compared to say C++. For instance with C#, developers can slam a LINQ query together quickly. A developer's time is important; however, LINQ imposes a
minimum of a 20% performance loss compared to doing it natively. Couple this with the fact that developers tend to hide such queries inside C# properties, then subsequently use the property without abandon. Performance becomes abysmal
very quickly, however, it was 'easy' for the developer to write the code. This disregard for performance is one of many reasons why small or 'hot' companies won't hire a developer that has C# on their resume.
Just-in-Time compilers or not, you will not see something like a commercial-grade web server, telecom infrastructure, etc written using languages/environments of this type. Oh sure, they may have C#/Java
interfaces--but that's just a wrapper facade to the efficient core, but the core won't be written using that technology. People that tell you "C#/.NET is just as fast as C++" simply have never benchmarked them for real-world performance-based applications.
Problem #2: WoWclient
The WoWclient is another limiting factor. Any Bot using 'injection' has to peek and poke at the WoWclient. The rate at which this can effectively be accomplished is roughly 1000 events/sec. This defines an upper limit on your performance 'budget'.
CCs are complicated because they have both Pulse and Behavior Tree logic built into them. Let's just look at the 'pulse' side--which happens at roughly 20 to 50 times a second. Let's be very generous and say 20. Thus 1000/20 gives us 50 peek/poke operations we can do in a single pulse before performance starts to significantly degrade. That's not a whole lot.
Within these 50 peeks/pokes, you've got to:
- look for evading mobs
- determine whether auras are present both on the toon or the mob
- count the number of mobs you've engaged, and take appropriate action against *each* one
- etc
Each of the above actions may take several peeks/pokes to accomplish.
The Behavior Tree side of the CC eats into this budget, and Honorbuddy itself also eats into this budget. It adds up quickly.
So, back to the point...
Fpsware made design decisions when he made his CC. I believe his decisions chose 'hardy' over 'max dps'. As such, using an Fpsware CC for the purposes to which you are trying to use is inappropriate.
Summary
Find another CC tailored to 'maxdps' or 'quick reaction', if that is your need. Apoc tends to write CCs in this fashion, for instance.
cheers,
chinajade