Sunday, 21 July 2019

Optimization and polish time

Hi everyone,

It's more of a maintenance release this time with focus on better resource usage, performance and bugfixes/polish. This time the goal was to fix as many of the UI engine issues as possible, starting with text rendering to many context-menu related bugs. This new build should give a more seamless in-game experience.
You can get the new build here.

Changelog:
  • Added 1500 range circle
  • Decreased memory overhead caused by the big font pack (for non-latin text only glyphs found in the language files and marker packs are loaded)
  • Decreased memory use of POI data by around 45% (not including raw image data)
  • Fixed a potential crash in non-latin text rendering
  • Fixed text width calculation for non-latin text rendering
  • Fixed some tokens not showing up as translated
  • WvW objective names now change instantly when changing languages, not just after TacO restart.
  • Fixed a context menu sizing issue 
  • Optimized excess CPU usage a bit
  • Bugfix: Submenu text will no longer revert when reopened after toggling marker category
  • Bugfix: Context menus should no longer get stuck when toggling elements

Sunday, 14 July 2019

Minor fixes for yesterday

Hello again,

as expected, a number of small issues have been reported by the community since yesterday's build. A hotfix build is out, it brings full utf-8 support so now non-latin text can also be displayed, but the font is limited to the font that the GW2 client can display in the chat box.

You can download the new build here.

Changelog:

  • Fixed some minor localization related issues (tokens not converted to text, some text missing its first letters, typos in the English translation)
  • Fixed an issue with utf-8 text rendering that would render glyphs with an ID over 32768 render incorrectly
  • Added the complete font set from the client to the UI skin. This will increase startup and shutdown time a bit, but allows for translations into non-latin languages. Not all glyphs are supported, but if it works in the in-game chat box, it will work with TacO. I've been told that the simplified chinese glyph set is incomplete (it's incomplete in GW2 too), use traditional chinese instead. (Note: this only affects the default font for the TacO menu used to display most things. The debug line, update text and large locational timer fonts don't have non-latin characters.)
  • Added an outline to the debug text and the new build available text
  • Updated the new build text to show how many new builds are available
  • Files with the .taco extension are now loaded by the overlay on startup to help with the "should I unpack the .zip" confusion
  • Individual events on the map timer can now refer to the Hero's choice API events as well through the WorldBossAPIID property
  • Settings data will now also be saved 10 seconds after the last change in the settings instead of only on exit
  • Fixed a stack corruption error
  • Fixed a possible crash that could occur in rare occasions when multi-clienting. A reminder: multi-clienting is not supported by TacO because the GW2 client and the Mumble API doesn't support it either.
  • Added an on-screen warning if multiple GW2 clients are detected
This update brings some changes to the localization strings, non-English translations must be updated by their maintainers.

Saturday, 13 July 2019

World Boss Tracking, Map Timer Update and Localization Support

Hi, everyone!

First of all thank you for the number of donations and kind messages I received after the last update, it's nice to see that TacO has such a cool following :)

It's also been brought to my attention that I missed an interesting API endpoint that allows you to see which world bosses you've already slain today. There also happens to be such an endpoint for the daily hero's choice chests for the expansion maps (not available for living world maps yet it seems, sorry). So I present to you a map timer update: the world boss kill and daily meta chest tracker! Also it turns out that the next major community event is a Boss Rush event, so the timing is pretty good too :)
Finished daily hero's choice chests and bosses will have a yellow highlight
This feature requires that you have your API key set up. If you don't, the map timer will function as before.

The built-in map timer descriptor has also been updated to include the PoF and Living World Season 4 maps.

Also good news for those who have been experiencing instant crashes on startup: the culprit has finally been identified, turns out it had to do with non-latin text input. There may be some lingering issues that pop up later, but if you're using Japanese/Chinese/Korean text input on windows, this should at least allow you to run TacO now.

Something else also happened, people started hacking the TacO executable itself to try to add localization support. This is not something that I feel good about since it probably won't ever result in a fully translated overlay but on the other hand if not done right, it'll introduce instability into the program. I pride myself on the stability and robustness of my work, so yeah... This made me bite the bullet and thus I give you the long awaited Localization Support. TacO now comes with a language file, and most of the visible text (aside of marker editing functionality and copyright info) in the overlay comes from this file. The file supplied with the TacO package is called TacO_Language_en.xml, however the overlay will try to load all TacO_Language_*.xml files on startup and let the user select between their contents in the overlay settings submenu. The intent is that content creators can go ahead and translate the language file and distribute their own TacO_Language_fr.xml or TacO_Language_de.xml or similar without having to edit or overwrite the English original. Changing languages in the overlay has a small limitation, WvW location names will only update after the overlay has been restarted. Text that hasn't been translated in a specific language file will show up as a token name between [brackets] and the log file will contain any missing tokens that need to be translated, to help with such efforts. Non-latin text is not supported as the TacO fonts are missing these characters, and utf-8 support in the ui engine is still a bit dodgy.
Language selector and the new submenu for overlay settings
The localization feature can also be used to have WvW location names appear different than they are in the API. This was a request I had way back when WvW support was first added.


Changelog:
  • Map timer config context menu doesn't close now when toggling a map
  • Updated map timer info for PoF and later maps
  • Map timer can now track your daily boss kills for those bosses that have an API endpoint (world bosses and hardcore world bosses, requires API key)
  • Map timer can now track your daily map metas that have an API endpoint (Maps that have a hero's choice chest, requires API key)
  • TacO should no longer crash on startup when non-latin input methods are used (Disabling the IME altogether for TacO seems to have fixed it)
  • Marker distance text now has a slight outline for better visibility
  • Marker distance text is now faded out with the marker to remove clutter
  • Even faster start-up and significant memory use improvements by on-demand loading of POI graphics.
  • Hidden windows should no longer hold up clicks to GW2. Hopefully. I couldn't reproduce the original issue to test it.
  • Range circle toggles will now keep the menu open like the marker filters
  • Added "IsSeparator" attribute to marker category descriptions. If it's value is 1, the category will act as a separator in the marker category filter and won't have an [x] toggle
  • Moved [x] toggles to the beginning of the line in the marker category filter menu
  • Highlighted some toggled features of the menu system
  • Rearranged the TacO menu to hide overlay-related settings and make things a bit cleaner
  • Added localization support. The default TacO install will only come with an English language pack though, it's up to you guys to create (and update) other translations.

Sunday, 7 July 2019

Minor update

Hi everyone,

it's been a while. Work and real life stuff etc mean that I don't have as much energy to focus on TacO as before. But Tekkit and people like him keep the overlay filled with fresh content even so :)

At any rate, a couple days ago I added a minor update to help me with some collections - but I had to realize that it's not too practical without the 2D maps on Dulfy (due to her absence of late) to give some general idea of how far the markers are. So I added an optional feature to display the distance of all markers.

The distance numbers are small, but can make a big difference.

And while I was at it I poked around a bit in the TacO code to streamline some other stuff that's been bugging me for a while. Some of it is optimization, but the most interesting part might be that TacO is now throttled to the framerate of GW2 by default in order not to overtax the system. This can be disabled in the config file.

So without further ado, here's the change log, and of course you can get the latest version from HERE.

Change notes:

  • Added option to toggle marker distance display
  • Added framerate throttling so that TacO rendering is keeping pace with GW2. TacO will still maintain a minimum 5fps framerate. This setting can be disabled by editing TacOConfig.xml's "FrameThrottling" option. It's on by default.
  • The contents of TacOConfig are now alphabetically sorted to make it easier to find stuff in there
  • Optimized the loading of marker packs, TacO should start up noticeably faster now when loading large zipped marker packs, like Tekkit's stuff
  • Fixed some on-exit resource leaks