tag:blogger.com,1999:blog-46142431784740456352009-05-24T02:37:01.261-04:00HeroStats NotesSkiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.comBlogger12125tag:blogger.com,1999:blog-4614243178474045635.post-19887333522454857492008-11-01T16:23:00.010-04:002008-11-02T02:45:12.077-05:00Badge Tracking HOWTOI've seen a few requests in-game lately for a better explanation of how to do badge tracking with HeroStats. I've just recently released a new <a href="http://herostats.org/">HeroStats</a> version (4.2.3.0) that contains several fixes to the badge tracking functionality, so it seemed like a good time to provide some instruction.<br /><br /><span style="font-weight: bold;">Step 1 - Register with a Badge Site</span><br /><br />HeroStats has support for two City of Heroes/Villains badge sites: <a href="http://www.badge-hunter.com/">Badge Hunter</a> and <a href="http://cit.cohtitan.com/">City Info Tracker</a> (part of the <a href="http://www.cohtitan.com/">Titan Network</a>). Go to one (or both) of those links and register for an account. Note the username and password for the site(s), you'll need those later.<br /><br /><span style="font-weight: bold;">Step 2 - Download and Install HeroStats</span><br /><br />You can find <a href="http://herostats.org/downloads.html">instructions on getting the latest version of HeroStats</a> from <a href="http://herostats.org/">HeroStats.org</a>. I highly recommend keeping your HeroStats version up to date to get the latest bug fixes and new features.<br /><br /><span style="font-weight: bold;">Step 3 - Configure HeroStats</span><br /><br />Start up HeroStats and go to the Global Options (View->Global Options), then click on the Web Sites tab. You'll see a screen something like this:<br /><br /><img src="file:///C:/DOCUME%7E1/Skip/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_IsOA_bPaBjo/SQy94r7a1GI/AAAAAAAAAX4/Kj-Mm0vrqIA/s1600-h/WebSiteConfig.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 320px;" src="http://3.bp.blogspot.com/_IsOA_bPaBjo/SQy94r7a1GI/AAAAAAAAAX4/Kj-Mm0vrqIA/s400/WebSiteConfig.JPG" alt="" id="BLOGGER_PHOTO_ID_5263790846051538018" border="0" /></a><br />Your screen may not have all the fields shown in the screenshot, if you have either "Use City Info Tracker" or "Use Badge Hunter" unchecked. Select one or both of those, depending on which badge tracking site(s) you've chosen. Then for each site, enter the username and password. You can also set the refresh interval for each site, but I recommend leaving it at the default of 60 seconds, which provides fairly frequent updates without excessive network traffic.<br /><br />By default, updates are not sent when you use the Test server. You can choose to allow this by unchecking the "Block Test Server Updates" option, but be aware that updates may not be shown correctly depending on exactly what code is on the Test server at any given point in time.<br /><br />If you're using an unstable build of HeroStats, you'll also see the option to use Unstable Web Services, which simply means the latest version if we're making any changes to the connectivity to the web sites. You won't even see the option if using a stable build.<br /><br /><span style="font-weight: bold;">Step 4 - Ensure HeroStats sees your Badges In-Game</span><br /><br />Start up both HeroStats and City of Heroes/Villains, and log in a character. Open your Badges menu and select a badge as your character's title. Then take a look at the HeroStats window. You should see something like this:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_IsOA_bPaBjo/SQzBT6qKmrI/AAAAAAAAAYA/BOMz3D6XovE/s1600-h/SingleBadgeStat.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 362px;" src="http://4.bp.blogspot.com/_IsOA_bPaBjo/SQzBT6qKmrI/AAAAAAAAAYA/BOMz3D6XovE/s400/SingleBadgeStat.JPG" alt="" id="BLOGGER_PHOTO_ID_5263794612397054642" border="0" /></a><br />Note the Badge Earned: <badge> line. If you don't see that, then HeroStats isn't detecting your badges. Try the <a href="http://herostats.org/release-notes.html#Known_Issue_Chat_Tabs">suggestions documented in the Known Issues</a> on HeroStats.org for this situation.<br /><br />Once this is working, HeroStats will automatically detect any badges you earn while it is running, and send them to the badge tracking site(s) you have selected.<br /><br /><span style="font-weight: bold;">(Optional) Step 5 - Verify your Existing Badges using Settitle Binds<br /><br /></span><span>Both of the badge tracking sites provide bind files that can be used to verify the badges your character has already earned. This is also useful if you earned some badges while HeroStats wasn't running, and want to send them to the site. Current links to the bind files (these may change, if the links don't work then go to the badge tracking site and look around for a new version):<br /><br /><a href="http://www.cohtitan.com/forum/index.php/topic,2.0.html">CIT of the Titan Network settitle bind files</a><br /><a href="http://www.badge-hunter.com/faq.php?q=bf">Badge Hunter settitle bind files</a><br /><br />Those links include instructions on how to use the bind files. Please note that it is important to go through the binds slowly! I typically pause a second in between each press of the key that loads the next bind file, to allow HeroStats to catch up.<br /><br />If you find that badges aren't being detected by HeroStats while using the bind files, you may need to make use of the "Number of chat messages to maintain as history while scanning" option. This is shown in the Hero Options on the Options tab. Setting this to a higher number (8-10 is about the highest you should need) will help HeroStats to detect rapidly changing messages, such as those from the bind files. This will slow down the HeroStats performance, though, so remember to change it back to a lower number (I usually have mine set to 3) for your normal play sessions.<br /><br />If it looks like HeroStats does see the badges, but you still don't see them on the site(s), you can use the HSLogFile to check if the badges have been sent. The HSLogFile lives in your HeroStats directory and is a plain text file. You first need to make sure that the Debug Level is set to Info (you can find this in the Global Options). Then run through the binds as described above. Once finished, open up HSLogFile and check for instances of the phrase </span></badge><span class="post">"Sent to CIT successfully" or "Sent to BH successfully". If you count up all instances of those phrases, you can see exactly how many badges were sent to each site. (If you find some missing, you might also have to look in an older HSLogFile, as a new file is started once it reaches 1 MB in size. The timestamps on each message can tell you when each logged message was written.)</span><br /><badge><span><br /><span style="font-weight: bold;">Conclusion</span><br /><br />I hope all this information helps people to use the badge tracking features of HeroStats more easily. This takes a lot of the tedium out of badge tracking, and both badge tracking sites have plenty of features to make badging more fun. Try it out!<br /></span></badge><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4614243178474045635-1988733352245485749?l=herostats.blogspot.com'/></div>Skiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.com3tag:blogger.com,1999:blog-4614243178474045635.post-66022864147060711672008-05-16T18:46:00.006-04:002008-05-16T19:17:42.353-04:00Scanner changes for Issue 12As I mentioned in my previous post, Issue 12 has changed the way things work in the chat message system. This has necessitated some fairly major changes in the HeroStats scanner as of version 4.1.0.6.<br /><br /><span style="font-style: italic; font-weight: bold;">For HeroStats Users</span><br /><br />If you're a HeroStats user, you'll notice the changes in your hero configuration options. The Channels and Globals tabs are gone - you can no longer choose which channels you'd like HeroStats to scan. Taking their place is a Scanner tab. There are two options here.<br /><br />First, there is a checkbox which allows you to choose whether HeroStats should ignore any chat tabs that display only "chat-type" messages, which are messages that don't contain any statistics information. Typically this means things from your global chat channels, local chat, etc.<br /><br />Second, you can enter the name of a tab that you would like HeroStats to scan while ignoring all others. This is very handy to increase performance. The name of this is "HSData" by default, although you can change it to whatever you like. If the name given here doesn't exist, HeroStats will fall back to the default behavior of scanning all tabs. The image below shows a sample setup of the HSData tab for best performance (this is on Test, but a Live setup would be the same minus the new Pet and Hit Rolls channels).<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_IsOA_bPaBjo/SC4VRkQyc0I/AAAAAAAAAUU/oRwWe5F3JJs/s1600-h/HSDataSetup.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_IsOA_bPaBjo/SC4VRkQyc0I/AAAAAAAAAUU/oRwWe5F3JJs/s400/HSDataSetup.JPG" alt="" id="BLOGGER_PHOTO_ID_5201118011195552578" border="0" /></a><span style="font-weight: bold; font-style: italic;"><br />For Developers<br /><br /></span>If you're a developer who has used the HeroStats scanner in your own program, you'll need to make a few changes with versions 4.1.0.6 and above. The first thing you'll likely notice is that the CohScanner class no longer has properties to set which channels to scan. If you were using those, you'll need to remove that code.<br /><br />There are some new properties on the CohScanner class, too. The boolean IgnoreChatTypeMessages property and the string HSDataTabName property implement the two hero configuration options described above. Both of these are static properties, so you'll need to set them on the CohScanner class (rather than an instance). You can update these while the scanner is running if you like, it'll recognize the changes.<br /><br />If you'd like some more control over what chat tabs are being scanned, you can access the list of available tabs using the AvailableTabs property. This one's not static, so access it through your CohScanner instance. AvailableTabs is a List of ChatTab objects, each of which represents one of the user's chat tabs. You can get the tab name from the Name property, and the number of messages on the tab from the MessageCount property. You can also set whether a tab should be scanned with the IsScannable property; if true, the scanner will ignore this tab (unless it's the one specified in HSDataTabName).<br /><span style="font-weight: bold; font-style: italic;"></span><br />Internally, the old ChatChannel class in the scanner has been greatly reduced. Most of its functionality is now in the new ChatTab class. The old channel types still exist, but they're really used only for looking at which channels should be on each tab. There is also a new property on the MemlocFinder class called IsLiveCode, which is used throughout the scanner to drive logic that's different between Live and Test servers.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4614243178474045635-6602286414706071167?l=herostats.blogspot.com'/></div>Skiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.com1tag:blogger.com,1999:blog-4614243178474045635.post-66164387457464949582008-05-14T12:49:00.003-04:002008-05-14T13:20:07.773-04:00Issue 12 beta changesSo Issue 12 is in open beta now, and there's a ton of changes. Lots of quality-of-life improvements, many of which relate to chat messages. Unfortunately, those changes mean much of what HeroStats does has to be changed in order to work with I12.<br /><br />By far the biggest change is how message channel is identified. Pre-I12, the channel type was hardcoded to a particular value, and each message was tagged with the appropriate channel type value. Now that's no longer the case. Messages are instead stored in the client memory with pseudo-HTML tags that set the message color and other attributes. This is great for the game client - it enables the linking you see in I12, and the ability to change the color of each channel on your tabs. But it's not so good for HeroStats, because there's now no good way to take a message and figure out which channel it came from. Those pseudo-HTML tags don't help, because they can be changed by the user at will.<br /><br />So, we're going back to an approach that I tried once before - scanning each tab of the chat message window, rather than looking for individual channels. This can potentially give us better performance, but does require that the users have their chat tabs set up in certain ways. I'm working on a way to make this transparent to the user, or at the very least use the new I12 feature to load tab settings from a file to make it easy to set up.<br /><br />This also means that we no longer know which channel a particular message belongs to. Previously the channel was used to 1) let people choose which channels that HeroStats would log and 2) filter out messages on channels that never contained any information needed for stats gathering. Both of those features will no longer be available with the new system.<br /><br />I haven't had as much time as I'd like to work on this, so the new scanning system isn't completely ready for prime time just yet. I'm hoping to have it finished before Memorial Day, hopefully prior to I12 actually going live.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4614243178474045635-6616438745746494958?l=herostats.blogspot.com'/></div>Skiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.com0tag:blogger.com,1999:blog-4614243178474045635.post-17025887847004878092008-02-14T10:46:00.003-05:002008-02-14T12:28:29.094-05:00To-Hit messages: the good, bad, and uglyAs of February 12, the new combat log messages reporting To-Hit rolls are live on the CoX servers. This is a mixed blessing for HeroStats users. As of right now, the unstable builds (3.9.9.12 at the moment) use these messages, and by this weekend the stable builds will as well.<br /><br /><span style="font-weight: bold;">The Good</span>: I <a href="http://herostats.blogspot.com/2008/01/test-server-25-jan-release.html">previously posted about accuracy tracking improvements</a> when these messages were on Test. Pretty much all of that still applies. For many powers, the To-Hit messages are going to make accuracy tracking better.<br /><br /><span style="font-weight: bold;">The Bad</span>: There are some powers have no To-Hit message when they hit (Blazing Aura, for instance). That makes it difficult to track accuracy for those - it could be done, but it requires us to count damage messages as hits. That's an ugly kludge that I was hoping to get rid of.<br /><br /><span style="font-weight: bold;">The Ugly</span>: Then there's powers that have a chance for a secondary effect to occur (for example, the chance to disorient on Barrage). For these, you see two To-Hit messages - the first for the secondary effect, the second for the actual damage. The power name is exactly the same in both cases. To make it worse, the secondary effect message only shows up for misses, and unlike the powers mentioned above, there's no damage message to use.<br /><br />Because of the ugliness mentioned here, I'm leaving the old Power Accuracy calculations in HeroStats as well as using the new To-Hit message method. You'll be seeing two sections for accuracy now, one called Player Accuracy (the To-Hit message method) and one called Power Accuracy (the old method based on power activation/damage/miss messages).<br /><br />What I'd like to see is a fix on these To-Hit messages by the CoX devs, so we can use only those for all powers and ditch the "Power Accuracy" section altogether. Suggestions:<br /><ul><li>Refer to what the roll is actually being used for - i.e. "Barrage Chance to Disorient" or "Barrage Damage".</li><li>Always show the To-Hit message, whether it's a hit or a miss.</li></ul>That's pretty much all it would take.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4614243178474045635-1702588784700487809?l=herostats.blogspot.com'/></div>Skiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.com0tag:blogger.com,1999:blog-4614243178474045635.post-84172544931910062522008-01-26T07:21:00.000-05:002008-01-26T07:53:24.754-05:00Test server 25-Jan releaseThe 25-Jan-2008 build of the Test server has a bunch of new combat log messages available to help track accuracy. You can see the <a href="http://boards.cityofheroes.com/showflat.php?Cat=0&Number=10019993">patch notes</a> on the official forums. What this means to HeroStats is that it's now <span style="font-weight: bold;">much</span> easier to track accuracy of a power, and it's even possible to see the accuracy of an enemy's powers!<br /><br />The latest unstable build (download it from the <a href="http://unstable.herostats.org/">unstable web site</a>) takes these new combat log messages into account. You'll see a bunch of new statistics related to accuracy if you're running the unstable build on Test. Here's a brief rundown of what's new:<br /><ul><li>Both player and enemy accuracy is tracked. Each section discussed below comes in two flavors, one for player stats and one for enemy stats. For players, everything is tracked by power. For enemies, it's tracked by both enemy type and power (since a Behemoth's version of Fire Sword might be different than the Fire Thorn Caster version of Fire Sword).<br /></li><li>[Player/Enemy] Accuracy: This section measures the actual accuracy for each power over the time you've been collecting statistics. It's calculated from actual hits / (actual hits + actual misses).</li><li>[Player/Enemy] Hits and Misses: A detailed breakdown of the number of hits and misses per power.<br /></li><ul><li>Hits and Misses are simply counted from the new log messages.<br /></li><li>Hits (calculated) is generated by looking for messages where the roll is less than or equal to the percent chance to-hit. That's a debugging tool, mainly - in theory Hits should always equal Hits (calculated) - if it doesn't then something's not right.<br /></li><li>Number of Rolls is the count of times you had to make a to-hit roll. You might think this should always be equal to the number of times you attacked, but it's not always the case - sometimes a power is auto-hit, and sometimes the streakbreaker gets involved.</li><li>Streakbreaker Count is the number of times the streakbreaker was used to force a hit. I'm not going to try to describe the streakbreaker here, <a href="http://boards.cityofheroes.com/showflat.php?Cat=0&Board=faq&Number=5759413">Arcanaville's Guide to Defense</a> does it better than I would.<br /></li></ul><li>[Player/Enemy] To-Hit Chance: The to-hit chance percentage from the new combat log messages.</li><ul><li>Average is exactly what you'd expect, the average of the percentages from all the hits and misses for the power. Note that auto-hit and streakbreaker "hits" aren't counted.</li><li>Total isn't all that useful, it just adds up all the to-hit numbers. It's used for calculating the average.</li></ul><li>[Player/Enemy] To-Hit Rolls: The to-hit rolls from the new combat log messages. This is the same as the to-hit chance above except it's the roll numbers.<br /></li></ul>The old accuracy and hit/miss stats are still in HeroStats for now. Once these new combat log messages are stabilized I'll probably remove that, but for now it's interesting to see how the old and new ways differ. From the little testing I've done so far, they're pretty much the same, which is a good thing.<br /><br />All this information is accurate as of the 25-Jan-2008 Test build and the 3.9.9.8 version of HeroStats. New Test builds and new HeroStats versions could be a bit different, keep an eye on the change logs for each.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4614243178474045635-8417254493191006252?l=herostats.blogspot.com'/></div>Skiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.com0tag:blogger.com,1999:blog-4614243178474045635.post-33842356215219353582008-01-11T13:33:00.001-05:002008-01-11T14:36:52.472-05:00HeroStats, Real Numbers, and City VaultWith the new year, NCSoft has announced several upcoming features for City of Heroes/Villains in their <a href="http://boards.cityofheroes.com/showflat.php?Cat=0&Number=9989835&Main=9989835#Post9989835">2008 State of the Game</a> article. There's a lot of good information there which I encourage everyone interested in CoX to read. Here, I'd like to address a couple of things of interest to HeroStats users.<br /><br /><span style="font-style: italic; font-weight: bold;">The Real Numbers</span><br /><br /><span style="font-style: italic;" class="post">As a general quality of life improvement we will be adding new functionality in a coming version of the game to display the “real” numbers behind your characters and their powers. This includes a user configurable display of important characteristics such as movement rate, regeneration rate, resistances and many more! Additionally, you will be able to see how those statistics are affected in real time by buffs and/or debuffs affecting your character. </span><br /><br />The article mentions the ability to display the actual values for the various statistics that your character has - regeneration, resistance, movement, etc. Let me first say that I think this is long overdue, and a welcome change. I remember this request coming up way back in City of Heroes beta, and it's been a regular discussion topic ever since. It's great to hear that it's coming.<br /><br />One of the core functions of HeroStats has always been to track the actual values during a play session for the accuracy of your powers, damage dealt, damage received, etc. Note that the article didn't mention any of these sorts of statistics. It's possible they may be included, and that would be wonderful, but I have my doubts. As long as this sort of information is not available through the game client, HeroStats will continue to provide it.<br /><br />What was mentioned in the article is the type of information you see in a build planner. How much resistance to smash/lethal do I have? What's my total regeneration? Those sorts of statistics have never been tracked by HeroStats (because they don't show up in the combat log). It's great to see that this information will be available without having to put all my information into an external build planner tool. (Side note - build planners will still be useful, though. There was no mention in the article of any way to do a "what if" scenario, and that's where the build planners are most useful.)<br /><br />There's one possible area of overlap - recharge timers. If the UI is going to be able to display how much time is left before a power recharges, the recharge timer function of HeroStats may become obsolete. This wouldn't break my heart - recharge timers are less than completely accurate, as I've <a href="http://herostats.blogspot.com/2007/10/inside-buff-and-recharge-timers.html">described before</a>. If the developers want to change the game UI to do a better job, more power to 'em.<br /><br />Here again, however, I have my doubts. There was much furor on the forums about the UI change to have buff timers blink 10 seconds before expiration, and how it would make HeroStats buff timers obsolete. Hasn't happened - plenty of people still use HeroStats for tracking buffs, because 10 seconds just isn't enough warning much of the time. We'll have to see exactly how the UI changes are implemented before making any assumptions about what HeroStats functions will become obsolete.<br /><br /><span style="font-style: italic;"><span style="font-weight: bold;">City Vault</span></span><span style="font-style: italic; font-weight: bold;"><br /><br /></span><span style="font-style: italic;" class="post">We gave a sneak peak of the new “City Vault” feature at the recent <a href="http://boards.cityofheroes.com/showflat.php?Cat=0&Number=9771403&an=0&page=0#Post9771403" target="_blank">San Jose Meet ‘n Greet</a>. The City Vault is coming soon to the City of Heroes website and will showcase the millions of interesting Heroes and Villains found in Paragon City and the Rogue Isles. It will allow you to search for characters by a number of different criteria, and then view those characters, including images of different costumes, powers, badges, friends, stats by zone and other fun information! As we have previously announced, you can manage what information will be displayed through the City Vault for your characters via several in game options.<br /><br /><span style="font-style: italic;"></span></span><span class="post">Again, let me first say that I'm very happy to see this. The ability to see in-game info outside of the game has been a much-requested feature for a long time. It's great to see it becoming reality.<br /><br />None of the functions mentioned in the article will impact HeroStats directly. The core function of HeroStats, tracking statistics within a play session, is in no way impacted by the ability to view character information on the web.<br /><br />HeroStats does, however, have some secondary functions that could be impacted by the City Vault. Several community websites (see our affiliates list at <a href="http://herostats.org/">http://herostats.org</a>) use HeroStats to gather information about characters. Much of this information may now be viewable through the City Vault.<br /><br />We'll have to wait for the actual City Vault to be available to know exactly how it will impact these community websites. At the moment, I'm willing to say that it's highly unlikely that the City Vault feed will be real-time (for performance reasons) and therefore a site like <a href="http://www.citygametracker.com">City Game Tracker</a>, which allows you to see who is online at a particular time, will still be useful. Badge tracking sites typically provide quite a bit more functionality than simply listing badges - showing uncollected badges, for instance, or listing the top badge collectors on a server - so those will still be useful as well.<br /><br />As for HeroStats, the main impact will be in the data we're sending to the community websites. Some, like City Game Tracker, probably won't change at all. Others, like the badge sites, might start getting their information from the City Vault and not need HeroStats at all. It's difficult to say until we see the City Vault in action, and have some idea how easy or difficult it will be to use that information.<br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4614243178474045635-3384235621521935358?l=herostats.blogspot.com'/></div>Skiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.com0tag:blogger.com,1999:blog-4614243178474045635.post-44496460391479187792008-01-04T15:27:00.001-05:002008-01-04T15:37:41.100-05:00Why does it take so long to load HeroStats?I've seen a few people ask this question in the past. I freely admit that HeroStats takes a good long time to start up initially. And to make matters worse, while it's starting, it eats up most of your CPU so other programs are impacted. So why does this happen?<br /><br />The answer, as in most programming, comes down to a trade-off. HeroStats makes heavy use of <a href="http://www.regular-expressions.info/">regular expressions</a> (also known as regexs) to parse the text of the combat log into the stats that everyone wants. Regexs are a great way to recognize text messages and get information out of them, but they require a good deal of setup time if you want them to run quickly. This is known as compiling the regexs and it takes a lot of your computer's CPU time.<br /><br />And we certainly want them to run quickly. HeroStats scans the CoX client chat tabs twice every second to look for new messages. Every time a new message is found, we have to run through the regexs to figure out what that message means. The code is pretty smart about checking the most common regexs first, but it can still take quite a while to go through them all, especially if your message happens to be one that isn't used very often.<br /><br />So we want the regexs to run quickly, but in order to do that we need to spend the time to set them up first. And this is why your HeroStats takes a while to start up. It's loading up all those regexs so that while you're actually playing the game, your statistics/timers/etc. are being pulled quickly from those log messages.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4614243178474045635-4449646039147918779?l=herostats.blogspot.com'/></div>Skiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.com0tag:blogger.com,1999:blog-4614243178474045635.post-18110214423907018002007-12-06T11:29:00.000-05:002007-12-06T11:31:01.869-05:00Tracking Incoming DamageOver on the CoH forums, there was an interesting question posted:<br /><br /><span style="font-style: italic;">Can </span><span style="font-style: italic;">HeroStats</span><span style="font-style: italic;"> separate out sources of damage? </span><br /><br /><span class="post">Short answer: In theory, yes. In practice, no.<br /><br />Long answer: Damage messages have a ton of different formats. Some show mob names, some show the power the mob used, some show damage type, and various combinations thereof (including none of the above).<br /><br />Because of all this variety, it would take an inordinate amount of effort to track every single variation of every damage message. So I made a decision a while back that the only thing we would try to keep track of is damage type (and amount, of course). There's always a few messages with "Unknown" type, but most are tracked.<br /><br />Even with this approach, we have dozens of different damage message formats to maintain, and every new patch seems to add a few more. It's really not feasible to keep up with all the various possibilities. </span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4614243178474045635-1811021442390701800?l=herostats.blogspot.com'/></div>Skiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.com0tag:blogger.com,1999:blog-4614243178474045635.post-32296721070119168052007-11-12T10:57:00.000-05:002007-11-12T11:02:59.940-05:00Windows Vista CompatibilityEver since the Windows Vista release, I've gotten a lot of questions about using HeroStats with Vista. I haven't upgraded any of my own computers to Windows Vista, mainly because of hardware driver issues and because I really have no need for any of the new features - XP works fine for what I need. So my ability to develop for Vista is limited.<br /><br />Some other folks in the community do use Vista, and they've provided some tips which can be found in our <a href="http://herostats.org/release-notes.html#Known_Issue_Vista">Known Issues</a>. There are two main tips: run HeroStats in Windows XP compatibility mode, and use .NET Framework 2.0. Both of these things are effectively allowing you to run HeroStats on Vista as if it was running on XP.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4614243178474045635-3229672107011916805?l=herostats.blogspot.com'/></div>Skiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.com0tag:blogger.com,1999:blog-4614243178474045635.post-49797968492638558972007-10-12T12:21:00.000-04:002007-10-17T15:23:34.522-04:00Inside Buff and Recharge TimersThe timers in HeroStats are a source of many questions. Often the issue is missing timers, but there are lots of interesting things about timers beyond just making them show up. In this post I'll talk a bit about how the timers work. (By the way, if you're missing timers, the problem is almost always related to missing chat channels on your in-game setup. See the <a href="http://herostats.org/release-notes.html#Known_Issue_Chat_Tabs">Known Issue in the Release Notes</a> about this problem.)<br /><br />HeroStats shows two types of timers - Buff timers and Recharge timers. Buff timers count down how long a particular buff (or in some cases debuff) will be effective. Probably the most commonly used buff timer is Hasten - it lasts for 120 seconds from the time you activate it. Recharge timers count down how long until a particular power is recharged. Just about every power will show a recharge timer, with the exceptions being powers that recharge instantly (i.e. Sprint).<br /><br />All timers share some features that make it easier to keep track of them. When a timer drops below 30 seconds, it'll change color to yellow. Under 5 seconds, it'll turn red. This makes it easier to see at a glance which powers are about to recharge, or which buffs are about to run out.<br /><br /><span style="font-weight: bold; font-style: italic;">Buff timers</span> always start at the same value. No matter what else is happening to your character, the buff length is constant - Dull Pain will always last 120 seconds, for example. These timers are activated when a combat log message is received showing that the buff started. For instance,<br />when a Force Field character casts Deflection Shield on you, a message like this appears in your combat log:<br /><br /><span style="font-style: italic;">{PlayerName} protects you from Smashing, Lethal and Melee attacks with a Deflection Shield and grants you some resistance to Toxic damage.</span><br />That message triggers HeroStats to start the buff timer. It will continue to count down until the buff expires. Assuming you don't suffer any major server lag (or zoning times), the buff timer should reach zero and disappear at the same time that the buff runs out.<br /><br />There are several types of buff timers. Self buffs are powers that work on yourself (i.e. Hasten, Dull Pain). AoE buffs are powers that work on you and those around you (i.e. Recovery Aura, Group Invisibility). Target buffs are powers that work on whatever you have targeted (i.e. Speed Boost, Fortitude). The type of buff determines how the buffs are categorized in the HeroStats in-game window. For an AoE buff that you cast, you may see something like "{YourName} -> Group", while a Target buff that you cast will look more like "{YourName} -> {TargetName}".<br /><br />Buff timers are also used for a few special cases. Inspirations can be shown as buffs, so that you can see how long you have before they wear off. You need to enable the "Show Inspirations as Buffs" setting in the Hero Configuration options (In-Game tab) for this to work. Also, some "pet" powers show as a self-buff, so you can see when those pets will expire. Examples of this include the Warshade Extracted Essence pet, Quicksand, Tar Patch, and similar powers. And finally, some environment effects are shown as buffs - for instance, the buffs and debuffs from exploding Lab Equipment on the tech-lab maps have timers.<br /><br />Buff timers are configured by the HeroStats developers. I won't get into the details here, but if you're interested, the ChatMessageRegexs.dat file in your HeroStats directory contains some documentation on how it works.<br /><br /><span style="font-weight: bold; font-style: italic;">Recharge timers</span> show an estimated time until a power is recharged. Note the word "estimated". Because so many things can affect recharge - enhancements, outside buffs, enemy debuffs - there is no good way for HeroStats to know the exact time until the power will be recharged. It can, however, make a pretty good guess based on the last recharge time of that same power. That's the number you see in the recharge timer - the time it took for that power to recharge after the last time you used it.<br /><br />How does HeroStats know that last recharge time? Each time you activate a power, the combat log contains a message. The activation message usually looks something like this:<br /><br /><span style="font-style: italic;">You activated the {PowerName} power.</span><br /><br />When a power recharges, another message is logged, looking something like this:<br /><br /><span style="font-style: italic;">{PowerName} is recharged.</span><br /><br />HeroStats keeps track of the time between these two messages - that's the recharge time of the power. Internally, HeroStats keeps a table of every power you've used in the current session and the recharge time for each. Whenever one of those activation messages is received, it looks up the power name in that table and displays a recharge timer.<br /><br />Example: Let's say you use Hasten, and it takes 180 seconds (3 minutes) for it to recharge. The next time you use Hasten, HeroStats will display a 180 second recharge time. But then let's say you team with a Kinetic character and they Speed Boost you. Now Hasten recharges in 150 seconds. The current timer won't change - it'll still be counting down that 180 seconds. But the next time Hasten is used, the timer will be 150 seconds.<br /><br />You may already have noticed the hole in this logic - what about the first time you use a power? There's no "last recharge time" on the first use - the power won't show up in that internal table I mentioned above. For this reason, <span style="font-style: italic;">HeroStats will not display a recharge timer for the first use of a power during a given play session</span>. This is a commonly asked question, so I wanted to highlight it. You should see a recharge timer on your second use of any given power. This can be a bit confusing, especially on long-recharge powers like Unstoppable or Power Surge.<br /><span style="font-weight: bold; font-style: italic;"><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4614243178474045635-4979796849263855897?l=herostats.blogspot.com'/></div>Skiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.com0tag:blogger.com,1999:blog-4614243178474045635.post-60347438658959306772007-10-08T12:35:00.000-04:002007-10-08T12:37:40.221-04:00Is HeroStats accurate?<span class="post"> In my semi-regular browsing of the <a href="http://boards.cityofheroes.com">official forums</a> for HeroStats questions, I came across a discussion about whether HeroStats tracking is really accurately recording what's actually going on in the game. I want to clear up some misconceptions that I've seen in some of the posts. First of all, the many people that have pointed out that the data recorded by HeroStats is not 100% accurate are absolutely correct. Leaving aside the philosophical discussion on whether any non-finite activity can be 100% accurate, I can point out that there are three main reasons for inaccuracies:<br /><br />1. There are some powers that do not have combat log messages reflecting the actual behavior of the powers. I've documented these to the best of my knowledge on the <a href="http://herostats.org/power-notes.html" target="_blank">Power Notes</a> page of the HeroStats website. If anyone sees something incorrect or missing in that list, by all means <a href="http://herostats.org/support/bug-reports.html" target="_blank">report it</a>.<br /><br />2. The way HeroStats receives its information is passive - the scanning engine has read-only access to the information available to the game client, specifically the combat log. Because of this, HeroStats has no control over what is being done by the game client. This was a conscious design decision to avoid any possibility that HeroStats could directly influence gameplay (which is a EULA violation). What this means is that the game client could change the information being read in the middle of the scanner processing. When this happens, it's possible to miss information. I've got safeguards in place to minimize this, so it's rare, but it can happen and nothing short of violating the EULA by modifying the game client will prevent it. It's worth noting that this behavior is very dependent on the performance of your machine - fast machines with lots of RAM will see very few missed messages, while slower/older machines may see more.<br /><br />3. We who work with HeroStats are only human. (Really.) We can and do make mistakes. Fortunately we have lots of people who are very willing to point these out to us, and whenever possible we fix the problems ASAP. In the cases where we can't fix something, we document it in either the <a href="http://herostats.org/power-notes.html" target="_blank">Power Notes</a> or <a href="http://herostats.org/release-notes.html#Known_Issues" target="_blank">Known Issues</a>.<br /><br />Having said all that - I believe HeroStats is a useful statistical tool, even without 100% accuracy. I can't give you any kind of numerical value representing how accurate it is for you, because that will vary based on the performance of your own particular setup (#2 above) and the combat log messages available for your powersets (#1 above). But I firmly believe that HeroStats captures the vast majority of information available in CoX correctly, and those tests that I've run on my own setup have confirmed that to my satisfaction. (Specifically, I tested my Fire tanker running Blazing Aura against several mobs and counted the ticks. This is the worst-case scenario for HeroStats, with multiple identical combat log messages being processed at once. Over 98% of the 2000+ ticks were properly recorded. In the vast majority of real play situations, the percentage of missed messages should be much lower, since we can do some error correction when the messages aren't identical.)<br /><br />If you choose to believe that HeroStats isn't doing a good job of capturing statistics, that's your prerogative. But please, don't knock those that do use it unless you're willing to show some proof that it fails in a particular way. And by all means, <a href="http://herostats.org/support/bug-reports.html" target="_blank">report</a> those issues that you do find, so we can correct them! </span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4614243178474045635-6034743865895930677?l=herostats.blogspot.com'/></div>Skiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.com0tag:blogger.com,1999:blog-4614243178474045635.post-74670952379502036912007-10-08T12:23:00.000-04:002007-10-08T12:33:40.968-04:00Announcing: HeroStats Blogging"HeroStats is an Open Source statistical analyzer for the game <a href="http://www.cityofheroes.com">City of Heroes</a>. It runs alongside City of Heroes and collects information about how well your hero is performing."<br /><br />That's a quote from the <a href="http://www.herostats.org">official HeroStats website</a>. We've already got the website, <a href="http://herostats.org/support/mailing-lists.html">mailing lists</a>, and the occasional post on the <a href="http://boards.cityofheroes.com">official CoH forums</a>, so why a blog?<br /><br />Well, for starters, I thought it would be cool. But beyond that, I've been thinking that there should be a better way to communicate some of the information behind how HeroStats works, something that won't be purged regularly (which the official forums are), can be referenced easily (unlike emails), and that allows comments from the public (unlike the official site). Thus, a blog.<br /><br />I've got some ideas for the first few posts, so you'll see some updates fairly quickly - I've already got the first one ready, adapted from a post I made on the official forums. After that, updates will depend on my level of motivation and what people want to know. If you've got things you'd like to see more information on, post 'em here, and I'll take a look for future posting.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4614243178474045635-7467095237950203691?l=herostats.blogspot.com'/></div>Skiphttp://www.blogger.com/profile/00811846090126020910noreply@blogger.com0