SplitDetail is a compact, subsplit-aware LiveSplit component that shows timing details for the current split group, current segment/subsplit, previous split group, or previous segment/subsplit.
It is designed for runners who use Subsplits and want cleaner timing information than LiveSplit's default Detailed Timer / Previous Segment combination can provide.
SplitDetail can be added multiple times to a layout. Each instance can use a different mode.
| Mode | What it shows |
|---|---|
| Current Split | The live elapsed time of the current parent split group, plus comparison times such as PB: and Best:. |
| Current Seg. | The live elapsed time of the current individual segment/subsplit, plus comparison times such as PB: and Best:. |
| Prev Split | The last completed parent split group: actual time on the right, comparison deltas in the middle. |
| Prev Seg. | The last completed individual segment/subsplit: actual time on the right, comparison deltas in the middle. |
When a prior-mode component detects that the current active split or segment is losing time, it can temporarily switch to a live display:
| Normal display | Live display | Meaning |
|---|---|---|
Prev Split |
Live Split |
Shows live deltas for the current active split group. |
Prev Seg. |
Live Seg. |
Shows live deltas for the current active segment/subsplit. |
If Use split/seg. name is enabled, the live display uses the active split or segment name instead of Live Split / Live Seg..
After the runner splits, the component returns to the normal previous-completed display.
A common setup is to add SplitDetail three times:
Current Split PB: 1:46.67 1:20.99
Best: 1:36.97
Prev Seg. -16.49 -16.41 1.04
Prev Split +3m +3:11 4:48.35
You can also use only one instance, for example as a more configurable replacement for Previous Segment.
- Subsplit-aware parent split group detection.
Current Split,Current Seg.,Prev Split, andPrev Seg.modes.- Temporary live display when the active split or segment is losing time.
- One-comparison or two-comparison display.
- Fully selectable comparisons, including custom LiveSplit comparisons.
- Priority delta setting for tight layouts.
- Optional separator between deltas.
- Configurable middle-column position.
- Optional per-instance plain, vertical, horizontal, and delta-colored backgrounds.
- Optional rounded background corners.
- Fixed three-column layout for split/segment names, with optional auto-fit behavior.
- Configurable accuracy: seconds, tenths, hundredths, milliseconds.
- Automatic cleanup for Subsplits names when using split/segment names.
- Compact shortening behavior for large deltas.
- Gold delta coloring for new bests.
- LiveSplit-style text shadows and outlines.
- Bold controls for the left, middle, and right columns.
- Dynamic Layout Editor names, such as
Split Detail - Current SplitandSplit Detail - Current Seg.. - Appears under
Informationin the Layout Editor component picker.
| Setting | Default | Description |
|---|---|---|
| Mode | Current Split |
Chooses what this instance displays. |
| Label | mode default | Label used by the selected mode. Previous modes switch the prefix to Live while showing live data unless split/segment names are enabled. |
| Use split/subsplit name | off | Use the active or previous split/subsplit name instead of the custom label. Subsplit names drop leading {Group} tags and -; split names like {Tutorial}5/5 Genji display as Tutorial. |
| Full size comparison/delta | off | When enabled, split/subsplit names use automatic column sizing so comparison and delta text keeps more room. When off, names use fixed thirds: name, comparison block, time. |
| Abbreviation method | End ellipsis |
Choose how names shorten when they do not fit: add ... at the end, or remove leading parts one by one before ellipsis. |
| Always remove leading numbers | off | Removes leading numbered name parts such as 2/5 whenever split/subsplit names are shown, even when the name already fits. |
The mode menu uses full names, such as Previous Segment, while the default row labels stay compact, such as Prev Seg..
| Setting | Default | Description |
|---|---|---|
| Comparison 1 | Current Comparison |
First comparison used for Current mode values and prior/live deltas. Current Comparison follows LiveSplit's active comparison if the runner changes it. |
| Comparison 2 | Best Segments |
Second comparison used when showing two comparisons. |
| Show comparisons | 2 (both) |
Choose one or two comparison values/deltas. |
| Priority delta | Comparison 2 |
Which delta is preserved first when horizontal space is tight. |
Comparison choices are read from the active run, so custom comparisons can be used.
| Setting | Default | Description |
|---|---|---|
| Separator | empty | Optional separator between deltas. Empty means no separator. |
| Move Middle Column | 5 |
Moves the comparison/delta area to the right. In fixed name columns, this is left padding inside the middle column and can move up to the safe gap before the right-side time value. |
| Background Color | disabled, transparent plain | Adds a component background when enabled. Gradients can use 2 or 3 colors. Delta modes use LiveSplit's current comparison for the color. |
| Radius | 0 |
Rounds the component background corners. Can apply to all, top, or bottom corners. |
Examples:
Separator empty: +1.21 +1.11
Separator |: +1.21 | +1.11
Separator dot: +1.21 . +1.11
| Setting | Description |
|---|---|
| Seconds | No decimals. |
| Tenths | One decimal. |
| Hundredths | Two decimals. |
| Milliseconds | Three decimals. |
When space is tight, SplitDetail shortens values while keeping them readable. For example:
+57.530 -> +57.53 -> +57.5 -> +57
+3:11 -> +3m
+1:02:30 -> +1h
It avoids unreadable forms such as +3: or a lone +.
| Setting | Description |
|---|---|
| Text Color | Label color. |
| Time Color | Right-side time and Current mode comparison value color. |
| Comparison 1 | Optional custom color for the first comparison label, such as PB:. |
| Comparison 2 | Optional custom color for the second comparison label, such as Best:. |
| Delta 1 | Optional custom color for the first prior/live delta. |
| Delta 2 | Optional custom color for the second prior/live delta. |
Delta colors follow LiveSplit's ahead/behind colors unless a delta-specific color is enabled. Gold deltas still use the layout's gold/best-segment color where available.
| Setting | Description |
|---|---|
| Left bold | Toggles bold for the label or split-name column. |
| Middle bold | Toggles bold for the comparison/delta column. |
| Right bold | Toggles bold for the timer/value column. |
SplitDetail detects subsplit groups using the same naming convention as LiveSplit's Subsplits component:
-Room 1 <- child subsplit
-Room 2 <- child subsplit
Castle <- parent split group/header
A child subsplit starts with -. The parent/header does not.
If your splits use a different prefix, change this constant in SplitDetailComponent.cs:
private const string SubsplitPrefix = "-";If a run does not use subsplits, every segment is treated as its own group.
- Build the project in Release mode.
- Copy the compiled SplitDetail DLL:
bin\Release\LiveSplit.SplitDetail.dll
into your LiveSplit Components folder.
- Optional, but recommended for the full SplitDetail layout: install the separate companion timer:
LiveSplit.AlternativeTimer.dll
into the same LiveSplit Components folder. Alternative Timer removes the segment timer area, keeps the run timer plus current split name, and can display a leading 1/5 segment counter as a separate label.
- Restart LiveSplit.
- Open Layout Editor.
- Add
Split DetailfromInformation. - If using the companion timer, add
Alternative TimerfromTimer.
- Visual Studio 2022 recommended.
- .NET Framework 4.8 Developer Pack.
- LiveSplit installed, or the required LiveSplit DLL references available in the project's
packagesfolder.
- Open
SplitDetail.csprojin Visual Studio. - Make sure the references resolve:
LiveSplit.Core.dllUpdateManager.dll
- Build in Release mode.
- Copy
LiveSplit.SplitDetail.dllto LiveSplit'sComponentsfolder.
If references do not resolve automatically, add them manually through:
References -> Add Reference -> Browse
and select the DLLs from your LiveSplit installation or local packages folder.
Important areas in SplitDetailComponent.cs:
| Function | Purpose |
|---|---|
GetGroupRange(...) |
Detects parent split groups from subsplit names. |
GetCurrentGroupRange(...) |
Finds the active parent split group. |
GetPriorGroupRange(...) |
Finds the last completed parent split group. |
GetPriorSubsplitIndex(...) |
Finds the last completed individual segment. |
GetCompletedRangeTime(...) |
Gets actual time for a completed range. |
GetActiveRangeTime(...) |
Gets live elapsed time for an active range. |
GetComparisonRangeTime(...) |
Gets comparison time for any range. |
CalcCurrentSplit(...) |
Display logic for Current Split and Current Seg. modes. |
CalcPriorRange(...) |
Display logic for Prev/Live Split and Prev/Live Seg. |
DrawRow(...) |
Main row layout and drawing entry point. |
DrawTextWithEffects(...) |
LiveSplit-style shadows/outlines without clipping. |
DrawTextWithEffectsClipped(...) |
Draws text with effects while preventing column overlap. |
ShortenDeltaToFit(...) |
Compact delta text shortening for tight layouts. |
The text drawing helpers are intentionally custom. Plain Graphics.DrawString can clip LiveSplit-style shadows/outlines on letters like p, g, and y.
Before publishing a new build, test:
- Current Split mode.
- Current Seg. mode.
- Prev Split mode.
- Prev Seg. mode.
- Live Split switching when losing time.
- Live Seg. switching when losing time.
- One-comparison mode.
- Two-comparison mode.
- Priority Delta = Comparison 1.
- Priority Delta = Comparison 2.
- Separators empty,
|,/, and dot. - Accuracy: seconds, tenths, hundredths, milliseconds.
- Runs with no subsplits.
- Runs with multiple subsplits per parent group.
- Game Time and Real Time, if applicable.
- Missing comparison values / skipped splits.
SplitDetail is a custom component for LiveSplit.
LiveSplit is licensed under the MIT License. Copyright (c) 2013 Christopher Serr and Sergey Papushin.
Some implementation patterns, including component structure, comparison handling, layout settings integration, and rendering behavior, were developed with reference to LiveSplit and existing LiveSplit components.
Alternative Timer is maintained separately at https://github.com/ramonchi5/AlternativeTimer and is the recommended optional companion for SplitDetail. It is not an official LiveSplit release.
For more details, see THIRD_PARTY_NOTICES.md.
SplitDetail is licensed under the MIT License. See LICENSE.txt.
LiveSplit and related LiveSplit assemblies are licensed separately. See THIRD_PARTY_NOTICES.md.