Editions
Philadelphia · 31 Jul – 2 Aug 2026 · TAP Esport Center WSDoD Discord

The World Series of Day of Defeat.

Three days on the basement floor in Chinatown. A ten-company field, 61 players, and 100 matches of Day of Defeat 1.3 — draft Friday, group play Saturday, playoffs and finals Sunday. Every match played on the KTP stack and recorded end to end.

WSDoD Philadelphia 2026 patch — Day of Defeat 1.3 at TAP Esports, July 31 to August 2, 2026
12company cap · 10 registered
61players in the field
100matches over the weekend
58tournament (.ktp) matches
242HLTV demos recorded

The weekend

second year at TAP · all times Eastern
Friday · Jul 31draft day
16 draft matches and 15 scrims. The pickup tournament — open to anyone in attendance who wanted in, seats limited at the door.
Saturday · Aug 1group play
31 tournament matches across six maps — the full field, every company bracketed up. Roughly 22 hours of server time in one day.
Sunday · Aug 2playoffs & finals
27 tournament matches across seven maps, the field thinning through knockouts to a champion by evening.

Thirty-three matches a day, three days running. Friday was 16 draft matches, 15 scrims and 2 twelve-mans. Saturday was 31 tournament matches, a scrim and a twelve-man. Sunday was 27 tournament matches, 5 scrims and a twelve-man. Three completely different days, and every one of them landed on exactly 33 — with one twelve-man the Thursday night before to round the weekend to 100. Stats are cool, huh.

The venue
Where
TAP Esport Center — basement floor
924 Cherry St, Philadelphia, PA 19107
Area
Chinatown gate two blocks east — dinner solves itself
Transit
SEPTA Race–Vine (BSL) four blocks south · 30th St Station ten minutes west
How it ran

Matches ran on five LAN servers on the full KTP stack — the same engine, cvar enforcement and match handling as the online league, with the broadcast HUD capturing per-player telemetry the whole weekend. Comms on self-hosted TeamSpeak, POV demos recorded every half, HLTV on every match.

Questions about the event: the WSDoD Discord.

Teams

the order of battle · ten companies · rosters as registered
North Atlantic Treaty OrgNATO
  1. 1CPTbaiko
  2. 2Ho0liii
  3. 3nightmare
  4. 4NoName
  5. 5Sq
  6. 6Sz
FINISHED 1st · 6 players
icyHOTicyHOT ~
  1. 1CPTkanguh
  2. 2hildebrand?
  3. 3Monday
  4. 4seanality
  5. 5sik
  6. 6vertex
FINISHED 2nd · 6 players
dicEdicE [::]
  1. 1CPTstealthlol
  2. 2element
  3. 3gorilla[bc]
  4. 4m00cat
  5. 5player
  6. 6warchyld[dd]
FINISHED 3rd · 6 players
Arrested DevelopmentBLUTH |
  1. 1CPTkroD
  2. 2incite[bc]
  3. 3Nicholson
  4. 4p12
  5. 5Patten
  6. 6tilljim
FINISHED 4th · 6 players
onLAN thunderFJTM
  1. 1CPTomenayr
  2. 2dorito
  3. 3ian
  4. 4JaGGonator
  5. 5jules
  6. 6mogers
FINISHED 5th · 6 players
Best Buds[bb]
  1. 1CPThopper
  2. 23sidedquarter
  3. 3bromley
  4. 4ckilla
  5. 5pb
  6. 6piff
  7. 7Polak
FINISHED 6th · 7 players
NoSoulNoSo !
  1. 1CPTkhoi
  2. 2arachnid
  3. 3bausch
  4. 4savage
  5. 5stamp
  6. 6yayme
FINISHED 7th · 6 players
Price is Right[$]
  1. 1CPTNein
  2. 2bsod
  3. 3Cory
  4. 4hypnotik
  5. 5nomis
  6. 6tokih
FINISHED 8th · 6 players
b Teamb.
  1. 1CPTtwist
  2. 2Epyon
  3. 3hey hi
  4. 4reptaR
  5. 5sTarK
  6. 6Steve
FINISHED 9th · 6 players
Uncle Rico's Time MachineuR[TM]*
  1. 1CPThlah
  2. 2bullet fodder
  3. 3Jee
  4. 4kev.de
  5. 5Las1k64
  6. 6SirSnipeys
  7. 7zamp0lit
FINISHED 10th · 7 players

Rosters shown are as registered. Several squads reshuffled between registration and the weekend.

Results

58 tournament matches · verified against HLTV demos
The record is complete. Standings are verified by staff against captains' score submissions and the HLTV record, and hold up independently against the placement matches. The bracket below is the Sunday playoff as played; the match logs are the engine's own record, and every row links its demos in the public archive.
Final placements verified · bracket + placement matches
ChampionNorth Atlantic Treaty Org
Runner-upicyHOT
ThirddicE
  1. 4Arrested Development
  2. 5onLAN thunder
  3. 6Best Buds
  4. 7NoSoul
  5. 8Price is Right
  6. 9b Team
  7. 10Uncle Rico's Time Machine
Sunday playoff bracket single elimination · best-of-three from the quarters · hover a map line for the pick/ban
Play-inseeds 7–10 · best of one
8Price is Right1
9b Team0
railroad2_s9a
7NoSoul1
10Uncle Rico's Time Machine0
armory_b6
Quarter-finalsbest of three
1icyHOT2
8Price is Right0
harrington · railroad2_s9a · armory_b6
4Arrested Development2
5Best Buds0
armory_b6 · saints2_b3e · railroad2_s9a
3North Atlantic Treaty Org2
6onLAN thunder0
lennon5_b1 · saints2_b3e · anzio
2dicE2
7NoSoul0
harrington · railroad2_s9a · lennon5_b1
Semi-finalsbest of three
1icyHOT2
4Arrested Development0
lennon5_b1 · armory_b6 · anzio
3North Atlantic Treaty Org2
2dicE1
thunder2 · lennon5_b1 · saints2_b3e
Finalbest of three
1icyHOT0
3North Atlantic Treaty Org2
harrington · anzio · armory_b6
★ Champion

Placement matches eliminated teams kept playing — every place was settled on the server, not on paper

Lower semi-finalsquarter-final losers · best of three
QF1 / QF2 losers
8Price is Right0
5Best Buds2
lennon5_b1 · harrington · railroad2_s9a
QF3 / QF4 losers
6onLAN thunder2
7NoSoul0
railroad2_s9a · saints2_b3e
Placement deciderswho finished where
3rd–4th · semi-final losers
4Arrested Development0
2dicE1
armory_b6
5th–6th · lower-semi winners
5Best Buds0
6onLAN thunder1
railroad2_s9a
7th–8th · lower-semi losers
8Price is Right0
7NoSoul1
armory_b6
9th–10th · play-in losers
10Uncle Rico's Time Machine0
9b Team2
Saturday match log 31 matches · six maps · ~22h of play
StartMapLengthHalvesDemos
113:19dod_armory_b645 min22 demos
213:25dod_armory_b644 min22 demos
313:26dod_armory_b644 min22 demos
413:26dod_armory_b643 min22 demos
513:27dod_armory_b646 min22 demos
614:35dod_thunder242 min22 demos
714:37dod_thunder243 min22 demos
814:39dod_thunder243 min22 demos
914:39dod_thunder245 min22 demos
1014:40dod_thunder244 min22 demos
1115:43dod_lennon5_b142 min22 demos
1215:45dod_lennon5_b113 demos
1315:47dod_lennon5_b144 min22 demos
1415:47dod_lennon5_b143 min22 demos
1515:50dod_lennon5_b142 min22 demos
1615:52dod_lennon5_b142 min22 demos
1718:10dod_saints2_b3e43 min22 demos
1818:16dod_saints2_b3e46 min22 demos
1918:16dod_saints2_b3e43 min22 demos
2018:23dod_saints2_b3e46 min22 demos
2118:23dod_saints2_b3e49 min22 demos
2219:27dod_harrington45 min22 demos
2319:28dod_harrington42 min22 demos
2419:29dod_harrington43 min22 demos
2519:32dod_harrington47 min22 demos
2619:35dod_harrington44 min22 demos
2720:45dod_anzio44 min22 demos
2820:46dod_anzio43 min22 demos
2920:47dod_anzio44 min22 demos
3020:51dod_anzio44 min22 demos
3121:08dod_anzio44 min22 demos
Sunday match log 27 matches · seven maps · finals by evening
StartMapLengthHalvesDemos
111:07dod_railroad2_s9a44 min22 demos
211:33dod_armory_b642 min22 demos
312:22dod_lennon5_b143 min22 demos
412:29dod_armory_b644 min22 demos
512:36dod_harrington43 min22 demos
612:45dod_harrington12 demos
712:45dod_saints2_b3e45 min22 demos
812:47dod_harrington43 min22 demos
913:30dod_saints2_b3e44 min22 demos
1013:39dod_railroad2_s9a43 min22 demos
1113:43dod_saints2_b3e45 min22 demos
1213:50dod_railroad2_s9a43 min22 demos
1315:12dod_thunder244 min22 demos
1415:34dod_railroad2_s9a43 min22 demos
1515:38dod_lennon5_b142 min22 demos
1615:56dod_lennon5_b145 min22 demos
1716:13dod_lennon5_b150 min22 demos
1816:39dod_saints2_b3e43 min22 demos
1916:47dod_armory_b644 min22 demos
2016:54dod_harrington51 min22 demos
2117:34dod_saints2_b3e43 min22 demos
2218:34dod_railroad2_s9a43 min22 demos
2318:39dod_armory_b642 min22 demos
2419:01dod_armory_b645 min22 demos
2519:59dod_railroad2_s9a46 min22 demos
2620:12dod_harrington14 demos
2721:39dod_anzio44 min22 demos

Two matches were aborted a couple of minutes in and replayed immediately: Best Buds v onLAN thunder on lennon5_b1 (restarted 15:47) and NoSoul v dicE on harrington (restarted 12:47). Their demos also predate the naming change that puts team names in the filename, so the matchup was recovered from HUD player data instead. The replays alongside them carry the real result.

Player stats

HLStatsX + broadcast HUD · tournament (.ktp) matches only · one grid, three views
One formula, three fields. Saturday, Sunday and the full weekend are views of one board, and every view is scored by the formula KTPR actually uses now — six contributions (kill volume, kill efficiency, assists, damage, flags, capture breaks) weighted into one number, each measured against the median of the player’s own position. 1.00 is an average player for the view you’re looking at. What changes when you switch views is only the field being measured against: Saturday is rated against Saturday’s players, Sunday against Sunday’s thinner playoff field, the weekend against combined weekend totals. Same formula everywhere, different baseline populations — so compare numbers within a view, not across views. The weekend view is not an average of the day views: its counts are the two days summed and its rates are recomputed from those totals.
None of this existed last year. Switch to Philly 2025 in the edition bar: same event, same people, and the stats there are a scoreboard transcribed by hand. The difference is two pieces of work built between the LANs. The KTP stack made it possible — a 1.3 server that can be instrumented at all, which is not something DoD came with. The broadcast HUD, written by Cadaver, is what actually watched the matches, and it produced everything the scoreboard never knew: assists, damage down to the hitbox, kill streaks, capture breaks, who spent the round on the deck. One made the recording possible; the other did the recording. Both are open source — github.com/afraznein and github.com/JimmyLockhart65616.
Two sources, and they don't measure the same window. Columns marked HUD come from the broadcast HUD, which saved on a timer while the server was up rather than only during live play — so those figures can include warmup. Two of the six rating inputs are HUD-sourced — assists and capture breaks exist nowhere else — and they carry the badge below. The other four (kill volume, kill efficiency, damage, flags) come from the match record and count match time only. The fix is to teach the match record to log assists and breaks itself; until then the badge is the honest label.
Team finish is deliberately not in here. The live formula can multiply each player by where their company finished. That is switched off for this board — it would fold the result of the weekend into a number presented as individual performance, and the awards this feeds are judged per stage.
About KTPR — an experiment, and how its worked out

Philly LAN 2026 is running an experimental KTPR. It leans on stats that only exist because the broadcast HUD was watching — assists, damage, capture breaks — and that is exactly why it is not the finished article for future seasons. Read it as a worked example of what KTP could rate players on, not a settled standard. It will keep being tweaked.

What it is trying to do. A scoreboard rewards whoever killed the most, and Day of Defeat is not that game. Someone breaks a capture and dies for it. Someone puts four hundred damage into a push a teammate finishes. Someone spends the half holding a flag nobody ends up contesting. Those players win matches and a kill count cannot see any of them. KTPR is an attempt to put a number on the rest of the game, and to weigh each part against what an average player at the same position did — so a sniper is judged against snipers rather than against the field.

Nine seasons of KTPR

This is not a first draft. The three-term formula below is what KTPR has been refined into across roughly nine seasons of KTP play, and it is what the day boards on this page used until now. Every term in it earned its place by being argued over and kept. Three ratios, each against the field average:

KTPR = [ (K/D ÷ field avg K/D) + (kills per half ÷ field avg) + 0.25 × (flags per half ÷ field avg) ] ÷ 2.25

It is honest about what it measures, and what it measures is fragging with a nod to flags — because for nine seasons that was all the server could tell us. A player who never tops a kill count cannot rate well in it, however the match was actually won. The version below is not a replacement for that work so much as the same idea given more to work with: the HUD finally made assists, damage and capture breaks measurable, so they could join the formula rather than be argued about from memory.

What this board uses

Six contributions instead of three, each normalised against the median of the player’s own position, then blended. 1.00 is an average player. Every number below is printed from the weights the engine actually ran:

every stat becomes a ratio to the position median, then is clamped: R = clamp( value ÷ position median, 0.55, 2.5 ) capture breaks get +0.5 on both sides first — the median is near zero, so without it one extra break swamps everything else low kills lift the support terms, because they are saying something the kill count missed: kill term = R(kills) ^ 0.65 damage term = R(damage) × clamp( 1 + 1.2 × (1 − R(kills)), 0.6, 2.5 ) assist term = R(assists) × clamp( 1 + 0.6 × (1 − R(kills)), 0.6, 2.5 ) the blend — kill efficiency carries the most weight: score = ( 1.0 × kill term + 3.0 × R(K/D) + 1.0 × assist term + 0.5 × damage term + 0.7 × R(flags) + 1.0 × R(breaks) ) ÷ 7.2 deaths normalise rather than punish, and dying while out-fragging the field counts as pushing rather than failing: deaths = (deaths per half ÷ position median) ÷ ( 1 + 1.5 × max(0, R(kills) − 1) ) death adjust = 1 − clamp( 0.2 × (deaths − 1), −0.1, +0.15 ) KTPR = score × death adjust

What the LAN bought us

The weekend was the use case. Damage already reaches the match record and this board now reads it from there; assists and capture breaks are the two the record does not log yet, which is the only reason they still carry a HUD badge. The work to log them through HLStatsX is planned for Season 10, and that matters for more than tidiness: the match record is gated to live play, so stats that arrive through it drop warmup automatically the way kills and flags already do. The LAN is what proved the stats were worth having and showed exactly which ones are missing.

Thanks are owed. To Cadaver, for the broadcast HUD — none of the stats beyond a scoreboard exist without it. To Krod and Chi for the work on KTPR itself, which is where the formula above came from. And to everyone else who has put time into KTP’s stats over the years, named here or not — this is a long list and leaving anyone off it would be the wrong kind of accuracy. It is a group effort, and it shows.

Leaderboard

Positions are the league's four — Rifle, Heavy, 3rd, Sniper — finalized with staff after the event (dashed pill = read from class play; solid = named by staff). Click any column header to sort; rank, and the medal colours with it, recompute within whatever view, filter and sort you're looking at. Hover KTPR or Style for what the numbers and labels mean. Click detail on any row for hitboxes, class spawns and the rest of the ledger. Clan tags are stripped for display — the full in-game name is on each player cell's title, and a player who re-tagged between days appears under the name they played that day.

Counting basis: kills, deaths, K/D, flags, damage, headshot kills and the longest streak are from the match record — exact, and scoped to match time. The streak is rebuilt from the frag log rather than read off the HUD, which reported it short whenever a run was still going at its last save. Everything marked HUD — assists, capture breaks, prone, and the HUD rows in the detail panel — comes from the broadcast HUD's periodic save, and is pulled in two directions: the save runs whenever the server is up, so warmup and knife rounds can land in the total, while its final write comes before a half ends, so the tail of each half is missing (worth 11–19%, on every player alike). Treat HUD columns as close, not exact. On the weekend view, counts are the two days summed, the streak is the better day's run, and rates are recomputed from the summed totals.

Map boards (a map chip on a day view) are rated against that day's baselines with the breaks term omitted — breaks aren't recorded per map — and the remaining five weights renormalized; they also drop the streak/breaks columns and the detail panel, which are day-level. Weights kill_exp 0.65 · kills 1.0 · K/D 3.0 · assists 1.0 · damage 0.5 · flags 0.7 · breaks 1.0 · break smoothing 0.5. Generated from the published stats by build_season_board.py, so the board and the numbers behind it cannot disagree.

Awards

The numbers decide these

Best six by position best single-day performances · two rifles, two heavies, a 3rd and a sniper

Each of these is a single day's performance, not a weekend average — the tag on each slot says which day. They are the best mark seen at each position, so they do not add up to a line-up that ever played together, and a Saturday figure and a Sunday one are not measured against the same field.

Single-match records

One match, not the weekend. Where the top mark is shared the card says so — a record several people hit isn't one.

These need a vote

Categories drawn from the WIP awards sheet in the 2025 stats workbook. Anything decided by a HUD column carries the same caveat it does on the stats board — those figures can include warmup, so treat a HUD-decided award as a strong indication rather than a settled count. Once awards are given they publish here permanently, with the edition they belong to.

Rules

as enforced on the weekend · captains held the authoritative copy
Rules of engagement match rules · complete text

1. General conduct

1.1LAN admins reserve the right to modify any rules as needed at any time as deemed necessary to the good continuation of the tournament.
1.2Matches require the correct map, configuration file, and LAN server. No exceptions.
1.3Server crash protocol. If the server goes down within the first five minutes of a half, the half is restarted in full. After five minutes, the half resumes with score restored and clock rounded up. No substitutions during recovery.
1.4Pixel-walking forbidden. Accessing an area via pixel walking, occupying an area only reachable by pixel walking (e.g., harrington ladder), or hanging in such an area results in suspension and/or forfeiture.
1.5Tied matches proceed to two five-minute overtime halves. Failure to complete overtime rounds results in a loss for both teams.
1.7Seating assignments are final. LAN staff may modify seating as needed for operational reasons.

2. Cheating, penalties & disputes

2.1–2.3Admins investigate suspicious activity. Matches involving cheaters may be overturned.
2.4Prohibited tooling. Visual player-location aids, recoil-control software, target-acquisition software, illegally modified game files, null binds, monitor or software crosshairs, and mouse-acceleration programs.
2.5Only default game files may be used unless explicitly approved or provided by LAN staff. Approved scoreboard modifiers and custom crosshairs (except sniper-rifle crosshair) are allowed.
2.6Spectating after a match goes live is considered cheating. Spec hopping is permitted only during full-map captures or stuck-player situations.

3. Player rules

3.1–3.2Players must pass file and cvar checks, record POV demos each half, screenshot scoreboards, and remain through match conclusion.
3.3Player boosting is allowed so long as the destination area is accessible by a single player without boosting.
3.4Unauthorized voice commands and excessive opponent negging are prohibited.
3.5–3.8Prohibited binds: actions coupled with attack, duck-scrollwheel macros, automated attack or movement scripts, and any weapon-spawning exploits.

4. Captain rules

4.1–4.3Captains: enhance scoreboard screenshot legibility, provide rcon status screenshots, and submit final scores with documentation to the shared drive.

5. Pauses

5.1–5.2Each team receives one two-minute pause per half, callable only immediately after a cap-out.
5.3–5.4Only captains may initiate pauses, with the exception of technical crashes (any team member may call).
5.5Unauthorized-pause penalties: first offense awards opposing team cap-out points; second offense results in immediate match forfeiture.
Above text is an abridged transcription pending verification against the original on file at WSDoD command. In any conflict, the original wording governs. Captains will be issued the authoritative copy on the day.
Code of conduct adult competitors, in good faith · complete text

0. Purpose

This Code of Conduct exists to ensure a fair, respectful, and enjoyable experience for all participants. As adult competitors, we expect players to uphold the highest standards of integrity, sportsmanship, and professionalism throughout the weekend.

1. Sportsmanship & respect

1.1While toxic behavior is common in this community online, let's strive to do better in person. Treat all players, officials, and spectators with respect. Harassment, abuse, or discriminatory behavior — verbal, written, or physical — will not be tolerated.
1.2Practice good sportsmanship. Healthy competition is encouraged, but win or lose, do so with dignity. Excessive taunting, gloating, or inflammatory behavior is prohibited. A little is normal in this community — keep it within reason.
1.3We are all here to have a good time, connect with others, and be competitive. Be considerate of the people around you.

2. Fair play

2.1No cheating or exploiting of any kind. The LAN follows the KTP rules wherever applicable, including Nein's CVAR checker on all LAN servers.
2.2Use of third-party software, scripts, exploits, or tampering with game files — outside of approved files submitted to LAN organizers prior to the tournament — is grounds for immediate disqualification.

3. Conduct during matches

3.1Follow all match rules and schedules. Be on time and ready to play. Chronic lateness may result in penalties or forfeits. Group-stage schedule will be posted prior to the tournament; knock-out stage prior to leaving for the day. Be responsible for your team and know when your matches will take place.
3.2To keep the tournament on time, matches will start no later than 10 minutes after their scheduled start, regardless of how many players are ready. Teams can choose to forfeit at that time if they don't have a full squad. Ringers are not allowed during tournament play except in extenuating circumstances at tournament-staff discretion.
3.3Be mindful of noise levels and behavior. Keep noise at a reasonable level so everyone can enjoy the gaming experience.
3.4Stream sniping is prohibited. Using information not available to players within their (or their teammates') point of view, in a way that gains unfair advantage, can result in forfeit of the match.
3.5Mumble is the sole authorized comms tool. Using any tool outside of Mumble or in-game voice is prohibited.
3.6Follow instructions from Tournament Staff. They are here to ensure everyone has a good time and to maintain order. Respect their decisions — their decisions are final.
3.7Players are required to use the alias they signed up with, or some variation thereof. Aliasing is prohibited.

4. Conduct outside of matches

4.1Outside of matches, available PCs can be claimed and used at will for other activities. Be aware that PCs are not permanently assigned — be respectful of other attendees and allow others a chance to use the PCs.
4.2No formal time limits on PC use — use your best judgement. Tournament Staff will intervene if necessary to free up PCs for others.

5. Equipment and LAN etiquette

5.1Handle equipment with care. Take care of shared equipment and respect the venue. Treat the space responsibly.
5.2Be accountable for your own equipment. Neither the LAN Center nor Tournament Staff is responsible for any lost or stolen items. Bring a tote or box for your peripherals when not actively using a PC.
5.3Clean up your area after using a PC — including when leaving for an extended period — so that others may have a chance to play. Ask Tournament Staff before leaving peripherals at a specific PC.
5.4Be respectful of, and do not tamper with, others' equipment.
5.5Use the network responsibly. Don't abuse bandwidth or download anything illegal.
5.6Report any damaged or malfunctioning equipment to Tournament Staff immediately.
5.7Admin access is available on the PCs, but limit any changes to those necessary for your peripheral use. All changes are subject to review by Tournament Staff. This includes "Snap Tap." No unauthorized software or hardware modifications. If unsure, ask an official before making changes.

6. Substance use

6.1We are here to have a good time — maintain control of yourself when consuming substances. Excessive rowdiness can result in expulsion from the LAN for the remainder of the day.
6.2The LAN center has banned smoking inside. Respect their rules.
6.3Vaping is allowed by the LAN center, but be considerate of others — keep excessive vaping outside.

7. Penalties for violations

7.1Tournament organizers reserve the right to issue the following based on severity and frequency of misconduct: verbal or written warnings; match or round forfeiture; temporary or permanent removal from the tournament; ban from future events.

8. Agreement

8.1By participating in this tournament, you agree to abide by this Code of Conduct. Ignorance of the rules is not a valid defense. Let's work together to foster a competitive but respectful community.
Operative copy. The Code of Conduct above is published verbatim from the WSDoD command archive; any future amendments will be reflected here on the next document refresh. One historical note: rule 3.5 names Mumble; on the weekend itself, comms ran on self-hosted TeamSpeak. The wording above is the rule as issued.

LAN command

tournament staff · floor decisions are final · competing staff recuse on their own teams
seanalityLAN staff
neinLAN staff
cKLAN staff
kanguhLAN staff
kr0dLAN staff
las1k64LAN staff
stealthlolLAN staff
twistLAN staff

(remote)

shmaltzLAN staff · remote
chiLAN staff · remote

Archive

the record of the weekend
Demos

242 HLTV demos were recorded across the weekend — every match, every half — plus per-player POV demos filed under the match rules. The tournament demos are published at fastdl.ktpdod.com/demos/LAN-PHILLY2026; every row of the match log links its files.

League demos live at fastdl.ktpdod.com/demos.

Broadcast

The weekend was cast by Corey Marko and Dyelife. VOD links publish here when the channels post them.

Filed by players

Photos

Want a photo taken down? Each one carries a Request removal line — staff read it and decide. Anything filed at the event that doesn't offer one, ask about in Feedback.

Player demos

Uploaded by players during and after the event through the LAN site, which required a Discord sign-in — so each file is credited to whoever filed it. These are player POV demos, distinct from the HLTV recordings above; they are served as uploaded, unedited, and are zipped. A blank match means the uploader didn't tag one. Ten files were filed twice and are listed once, keeping whichever upload named a match.

Add to the record

Add a photo 15 MB · jpg, png, webp, gif

Photos are credited to your Discord account — the same sign-in the rest of the site uses, sharing your username and ID and nothing else.

Sign in with Discord

Upload a POV demo 250 MB · zipped for you

POV demos are filed against your roster entry, which is why this one needs a sign-in — the uploader column above is never blank.

Sign in with Discord

Feedback

goes to LAN staff on Discord · attributed to your account · never public
Sign in to send feedback

Feedback here is attributed — staff read it knowing who sent it, and can follow up with you on Discord. Signing in shares only your Discord username and ID; nothing is posted as you, anywhere.

Sign in with Discord

This starts the Discord OAuth flow the LAN site used (identify scope only) and returns you to this section.

Why sign in?

So staff can answer. Anonymous feedback can't be followed up, and this event is small enough that every note gets read. Your Discord name is the address a reply comes back to.

Something urgent or mid-event? Say it in the WSDoD Discord — it's faster.

Never public. There is no feedback list, no ticket tracker, no status page. What you write goes to staff and stops there.