Giter VIP home page Giter VIP logo

evtc's Introduction

Build and test (.NET Core) Discord

GW2Scratch EVTC Tools

This repository hosts multiple programs for analysis and management of EVTC logs generated by the arcdps addon for Guild Wars 2. All programs are available for Windows/Linux.

Dependencies

  • Running programs: .NET 8
  • Development: .NET 8 SDK or newer

Programs

Libraries

A manager for arcdps EVTC logs. Filter logs, upload them with one click, find fastest kills and interesting statistics.

  • Filter logs by time, encounter, success/failure
  • Quickly see the composition, players, encounter duration for any log
  • Upload to dps.report with one click, batch uploads
  • A table of all players in your currently filtered logs
  • A table of all guilds within your currently filtered logs

A program for exploring EVTC logs. Handy when developing anything that analyzes logs.

  • browse through raw combat items
  • browse through raw agent data
  • browse through processed events, with filtering
  • browse through agents and events they are involved in

The core library for parsing and analyzing EVTC logs. Built with integration in other projects in mind. Currently has a somewhat API, changes are to be expected.

  • get raw agent, skill and combat item data from logs
  • get agents and processed events with structured data
  • get encounter results
  • calculate statistics such as DPS, buff uptimes and similar (very work-in-progress)

There is documentation available.

Contributing

Reporting bugs is the most important way of contributing, it's hard to fix things you are not aware about. Either create an issue on GitHub or let us know in the #bug-reports channel in our Discord server.

Small changes are always welcome, however do please discuss bigger changes first.

In the future, this repository may get split up into smaller ones for the individual projects.

evtc's People

Contributors

dbphoenix avatar denrage avatar dependabot[bot] avatar extraordinary-chicken avatar greaka avatar linkaaaaa avatar robinwils avatar sejsel avatar therealketchup avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

evtc's Issues

Log list is sometimes not updated

Sometimes, when the log manager is opened, the log list doesn't get refreshed after logs are finished processing. This can manifest as no logs being visible at all or just the latest ones being missing.

Dynamic filters

The EVTC Inspector would use a dynamic filter system for events. If all selected events have a common field, it should be possible to filter it. Same for agents, but less importantly.

Verify Strike Missions ids

I don't have any logs for the new Strike Missions, so I can't check if the ids I am using work for detection. If you have a log, feel free to send one my way

More statistics in the statistics tab

The statistics tab would use more statistics about logs:

  • a grid with per-encounter stats - encounter name|total|successful|failed|best success time|longest success time|average success time|
  • ...

Static encounter names

Currently, we often use the name of the boss agent as the name of an encounter. This leads to issues if the name was not resolved by arcdps. In that case, we often end up with encounter names like ag734 or ch17632-361.

Instead, localized names for known encounters should be used. For unknown ones, we are going to fall back on the agent name. Currently, we already override some encounter names with their English name.

Ensure all grids are sortable

  • Log list
  • Player list
  • Guild list
  • Guild detail - accounts
  • Guild detail - characters
  • Game data - species
  • Game data - skills

Cache GW2 API data

Currently the GW2 API data has to be downloaded again every time the EVTC Inspector is launched (on command).

Implement squad composition filters

Should allow for specifying amounts of players for each specialization (including core), with a (>=, <=, =) selection for each amount. Goes into advanced filters.

Fix incorrectly parsed logs

  • 20190807-213308.zevtc - Sabetha marked as failure, should be success
  • 20190807-153724.zevtc - Sabetha marked as failure, should be success

By 2 reporters in the same day, might be caused by some specific arcdps version.

  • 20190807-195107.zevtc - Deimos log marked incorrectly as success both by log manager and EI was a failure, last person (HK) died (gg'd?) at 0.49% Deimos health

This might be hard to fix.

  • 20190802-232706.zevtc - Arkk marked as failure, should be success

Possibly caused by finishing strike success detection

  • 20190726-131343.evtc - Deimos success, should be failure
  • 20190812-003636.zevtc - Deimos success, should be failure
  • 20190807-153546.zevtc - Deimos success, should be failure
  • 20190808-174919.zevtc - Deimos success, should be failure
  • 20191026-162935.zevtc - Deimos success, should be failure (is correctly failure)
  • 20200222-224515.zevtc - Deimos failure, should be success (?) (is correct)

Deimos is a lovely boss.

  • 20181204-234355.evtc.zip - Qadim success, should be failure (is correct)
  • 20200222-231450.zevtc - Dhuum failure, should be success

These are quite weird, this shouldn't happen.

Do not override the window size in the manager

The Log Manager resets the window size each time it’s opened which can be annoying.

The approach in 2bbbcd5 (reverted) does not work because there doesn't seem to be an easy way to set a size when menubars are involved.

When using ClientSize, adding a menubar leads to the form not getting bigger, but the ClientSize effectively gets smaller. When saving, the ClientSize is then smaller as it doesn't include the menubar and the form will be smaller at the next load.

Log grid column filtering

It should be possible to select which columns are shown. If possible, right-clicking on the column headers is a rather intuitive way to do this, perhaps duplicated in options.

Provide a list of log anomalies

In the processed log, a list of anomalies should be provided. Anomalies should have a count, severity (likely only critical=true/false), and of course a type.

Some examples:

  • A missing log end
  • Missing names (critical, causes missing agents)
  • Missing events of various kinds

There are many more that can be detected, but some are just not detectable.

Fix encounter durations

Unknown events should be filtered out and their count stored somewhere (perhaps as anomalies? - #45).

This will fix encounter durations being really weird.

Support all 2017 logs

Some very old logs currently fail to parse.

  • 20170409-195815.evtc.zip - 2017 log, Deimos CM, parses in EI
  • 20170302-161222.evtc - Unknown success Trio

Filtering by CM

  • Add a column showing if an encounter is Challenge Mode
  • Add filtering by Challenge Mode

Depends on #2.

Rework the way log data is saved

It has to be possible to provide an option to parse predefined logs when updating (e.g. when a success detection is fixed). We also want to make it possible to change languages of log names in dynamically (currently the name is saved).

  • Store a version of the log data format
  • Version of the manager as of parsing time needs to be saved for each log.
  • Store the Encounter and not the name for each log
  • I am currently forgetting something important

It would be nice to add support for storing optional extra data (calculated at the cost of processing time), or at the very least, make it simple to import saved data to allow that in the future (it might be already).

Fix event filter checkboxes

While they work correctly with the GTK3 backend, on WPF clicking one results in an infinite loop, untested with WinForms.

Improve success detections for Artsariiv, Arkk, and Bandit Trio

For some encounters, to detect whether it was successful, we look for a killing blow towards an NPC. Rarely, this is not present (presumably due to conditions killing the enemy, although at least Burning does generate a killing blow) which makes this method imprecise, so we are looking for a better method.

  • Artsariiv
  • Arkk
  • Bandit Trio (Narella)
    • revert 7b9dc61 to re-enable tests

CM detection

Add a way to detect if an encounter has challenge mode enabled.

Individual detections

  • Cairn the Indomitable
  • Mursaat Overseer
  • Samarog
  • Deimos
  • Soulless Horror
  • Dhuum
  • Conjured Amalgamate
  • Twin Largos
  • Qadim
  • Cardinal Adina
  • Cardinal Sabir
  • Qadim the Peerless

Show status of uploads

  • A window showing upload status and allow cancelling individual uploads
  • Status in the bottom status line

Update the status bar

The status bar should show:

  • ongoing log parsing
  • ongoing uploads
  • ongoing API data fetches

Special Forces Training Area golems

Logs from training Kitty Golems are somewhat inconvenient because the golem simply disappears, and it's hard to detect if that is because it was despawned with the console or because it was defeated.

  • Check that all species of Kitty Golems are detected
  • Improve the success check

Verify Strike Missions success detections

I don't have any logs for the new Strike Missions, so I can't check if the success/failure is correctly detected. If you have a log, feel free to send one my way.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.