UnlimitedHugs / RimworldHugsLib

A lightweight shared library for Rimworld modding.
Other
245 stars 59 forks source link

Add passive error profiling #54

Closed dninemfive closed 3 years ago

dninemfive commented 4 years ago

This is a bit of a slightly out-of-scope suggestion, but I thought I'd suggest it here because your install base would help and I was thinking of using your code for this:

Each time the game launches, save the user's load order and the number of errors and warnings and upload to your github. Once we have enough such data, we would be able to apply some machine learning to get better information about where certain mods and types of mods ought to be in load orders, to better improve Trisscar's sorting page.

UnlimitedHugs commented 4 years ago

Interesting idea. I believe the error/warning count can be misleading though- some players seem to have an okay experience even with errors happening in the background each frame. In any case, there already is a substantial body of data to analyze: the gists posted by the log publisher. Since the player is posting a log, he must be experiencing some sort of issue, though in most cases it is not related to load order.

dninemfive commented 4 years ago

I was thinking more of startup errors than in-game ones. Is there a way I'm missing to tell what's an error and what's debug output from gist logs?

UnlimitedHugs commented 4 years ago

Only errors logged through the HugsLib logger are clearly distinguishable- they are prefixed with [err]. For all others you would have to look for exceptions and stack traces- or identify some common error patterns. Start-up errors are also not cleanly separated either. If HL is present, the line [HugsLib] version X.X.X can be used as a reference- but when it appears can vary if other mods are loaded first. When looking for load order issues, ReflectionTypeLoadException and Could not find a type named X are usually dead giveaways, although a prerequisite mod could be missing entirely.

UnlimitedHugs commented 3 years ago

Closing as impractical.