Fellowship Log Parser is a public reverse-engineering project for Fellowship combat logs. The goal is to document packet structure, validate captured schemas, and make the log format easier to analyze.
Join us on Discord: https://discord.gg/cd5wNTj6
- Parses Fellowship combat logs into structured events
- Documents packet layouts and field mappings
- Validates parser behavior against documented schemas
- Decodes combat, encounter, dungeon, resource, and character data
- Includes schema conformance tests and validation tools
- Supports research and analysis of combat log data
Default combat log location:
C:\Program Files\Steam\steamapps\common\Fellowship\fellowship\Saved\CombatLogs
Common alternate Steam library locations:
D:\SteamLibrary\steamapps\common\Fellowship\fellowship\Saved\CombatLogs
E:\SteamLibrary\steamapps\common\Fellowship\fellowship\Saved\CombatLogs
The parser currently supports all documented packet families in the project schema and includes automated schema conformance testing. Documentation and packet decoding continue to improve as additional game data is analyzed, but the project is intended to be usable today for log inspection, validation, and research.
The main public references for this project are:
docs/schema/docs/schema/canonical_combat_schema.jsondocs/schema/combat_field_map.jsondocs/research/
These documents track what has been decoded so far, what is still uncertain, and how the parser maps raw packets into structured events.
The current documented packet families are:
ABILITY_ACTIVATEDABILITY_CAST_FAILABILITY_CAST_STARTABILITY_CAST_SUCCESSABILITY_CHANNEL_FAILABILITY_CHANNEL_STARTABILITY_CHANNEL_SUCCESSABILITY_DAMAGEABILITY_DISPELABILITY_HEALABILITY_INTERRUPTABILITY_LIFESTEAL_HEALABILITY_PERIODIC_DAMAGEABILITY_PERIODIC_HEALALLY_DEATHCOMBATANT_INFODAMAGE_ABSORBEDDUNGEON_ENDDUNGEON_STARTEFFECT_APPLIEDEFFECT_REFRESHEDEFFECT_REMOVEDENCOUNTER_ENDENCOUNTER_STARTEVENT_INVALIDLOGGING_STARTEDMAP_CHANGEMARKER_PLACEDMARKER_REMOVEDRESOURCE_CHANGEDRESURRECTSWING_DAMAGEUNIT_DEATHUNIT_DESTROYEDWORLD_MARKER_PLACEDWORLD_MARKER_REMOVEDZONE_CHANGE
- Python 3.10 or newer
pytestfor test execution
The project metadata documents the interpreter requirement in pyproject.toml.
python3 -m venv .venv
.venv/bin/python -m pip install -U pip
.venv/bin/python -m pip install -e .Stable public entrypoints are:
fellowship-log-parserpython -m fellowship_parserfellowship_parser.FellowshipLogParser
Example:
.venv/bin/fellowship-log-parser path/to/combat.log.venv/bin/python -m fellowship_parser path/to/combat.log --summaryIn Python:
from fellowship_parser import parser
log_parser = parser.FellowshipLogParser()
events = list(log_parser.parse_file("path/to/combat.log"))Canonical test command:
PYTHONPATH=src .venv/bin/python -m pytest -qSchema validation tests live in tests/test_schema_conformance.py. Packet fixture and decoder behavior tests currently live in tests/test_combatant_info.py.
Documented schema references:
docs/schema/combat_field_map.jsondocs/schema/canonical_combat_schema.json
The schema conformance tests compare the parser’s event definitions against the documented packet map.
Copyright (c) 2026 SuperMilkers
This repository is distributed under the MIT License. See LICENSE for details.
