Toreole / BasicCombatlogParser

A small project with limited functionality in parsing WoW Combatlogs.
0 stars 1 forks source link

BasicCombatlogParser

A project with the aim to emulate a subset of the features that https://warcraftlogs.com provides, mainly:

I.e. all the smaller-scale features that are just pushing some numbers around and showing them in the GUI.

Fancier things like graphs are not planned as of now, but would be cool tho...

Shoutout to the fandom wowpedia for providing an abundance of info about the various IDs and events in combat logs.

An example of what it looks like during development right now (for my character Crowfield-Silvermoon):

Character Overview: Encounter breakdown (damage done): Movement map export (taken from a mythic Terros kill):

Design in Code n stuff

Using SQLite because it seemed like the simplest available option, using it through EFCore because its simply awesome and saves me from a lot of headaches from interacting with SQLite manually. Thanks to whoever came up with ORM.

Metadata

Metadata is data that is generated and stored by the parser and is currently divided into 4 types:

Parsing

Parsing is done in multiple steps:

Generated Code

I think source generators are pretty neat, currently trialing it for generating EncounterIds, InstanceIds, and everything directly tied to them. The info that the generator requires is a plaintext list of instances and their encounters.

In an ideal world it would be able to grab that info via the WoW Game API, but dealing with OAuth and all that stuff is something i am not going to bother with.

Trying it

This repo now comes with a sample Combatlog file that is about 30MB large. It contains two encounters from normal Aberrus in the War Within Prepatch. The first fight is Magmorax, a simple single target fight, the second is Echo of Neltharion, which contains a number of adds in the second and third phase. This log has been generated on a german WoW client, which means that all spell and creature names are german aswell. The file has been downsized from 80 to around 29MB and is provided in a .zip compressed format. To use it simply unzip it and import it via the "Import" button in the app. From there you can see the encounters within via the DB View directly, or you navigate to it via searching for players (e.g. Bänger).

Other planned features

See issues here on GitHub. Most if not all features that are in consideration will be mentioned in an issue.

Who made this and why

I (Toreole) wrote (almost) all this code myself, just uhh because it's a lot of fun, somehow.