Jump to Main Content

Timeline — Research Notes

The Crossfire Development Timeline was reconstructed from primary sources rather than written from memory. This page records where the material came from, what it turned up, which of the timeline's own claims had to be corrected along the way, and what was not examined. It exists so the timeline can be checked, extended, or disagreed with.

155Milestones 13Sources ~42kCommits 34Years covered 22Corrections

Sources examined

SourceCoverageWhat it yielded
rec.games.programmer1992The three earliest public records of the game. Moved the timeline's start back four months and supplied Johansen's own statement of design intent.
Early mailing list archives1992–1996Release announcements for 0.88.0 through 0.92.7, verbatim, with send dates.
Release announcement pages55 pages, 0.91.7–1.75.0Per-release summaries in the maintainer's own words; the backbone of the pre-2000 entries.
crossfire-announce archives34 periods, Jun 2000–Aug 2025Authoritative send dates for every announced release. Corrected 13 dates and revealed four client releases the timeline was missing.
Release tarballs448 filesThe CHANGES files the announcements kept referring to — 50 server archives, cumulative, the 1.3.0 copy running to 7,394 lines and covering 1994–2002.
Map archives (same directory)0.91.8–1.75.0Diffed by file count and top-level region to date content additions the announcements never mentioned.
Git repositories13 repos, ~42k commitsserver, arch, maps, client, jxclient, metaserver, sounds, gridarta, retro-arch, web-client, Flathub packaging, Spell Shuffle and ElvenLands branches.
Project news archive29 years, 1999–2027Client releases, community infrastructure and convention appearances that leave no trace in any commit history.
Screenshot archiveclients and editorsThe Gridarta, JXClient, GTK-v2 and DockWindow images used on the timeline.
DEVELOPERS fileadded 1999, removed 2014Recovered from git history; identifies contributors by full name and self-described role.
Map creator headerswhole map setCreated: / Modified: lines giving per-map authorship and dates.
Windows client archives1999Four builds of a native Win32 client, with its readme.
Website git repository1,810 commits from 2016Creation dates for site sections — how the Discord page was dated.

Principal findings

Origins

1992·May·04The game's first public appearance

A Usenet post headed "Co-developers for X-Windows game wanted", offering version 0.2 as a 176,582-byte tarball from a borrowed /tmp directory on ftp.uu.net. Four months earlier than any record the project itself retains.

rec.games.programmer

1992·Jun·29v0.8, and the move to Oslo

Distribution moves to ftp.ifi.uio.no:/pub/crossfire, its home for the rest of the decade. The post also proves the mailing list already existed — three months before the earliest message the project's own archive preserves — and that Kjetil Torgrim Homme administered it.

rec.games.programmer

1992·Sep·25Johansen states the design intent

Answering "what are you all doing?", he describes the lineage the project still claims — Gauntlet first, then Nethack, then Ultima — and, four months before 0.88.0 shipped, the architecture:

"I'm trying to write the game in a way that makes it fairly easy to expand, trying to move stuff from the code into separate data-files, hoping to make editors for those data-files in the future."

That is the archetype system, described as an intention before it existed. Everything downstream — crossedit, Gridarta, the classic and retro image sets — follows from it.

rec.games.programmer

Things the release notes did not mention

Announcements track code. Content arrived quietly in the maps tarball, and is only visible by diffing the archives.

1998·Jan·05Pup Land

The 0.93.7 announcement says there is "no real notable change worth mentioning". The map archive grew from 677 files to 1,040 in that release — a 54% jump — because Pup Land arrived. The largest content addition of the 1990s, entirely unremarked.

maps archive, 0.93.6 vs 0.93.7

1996 & 1998Lake Country and Dragon Island

Both regions appear in the map archives (0.92.5 and 0.95.1 respectively) with no mention in either release announcement.

maps archives

Systems dated from the CHANGES files

1994·Feb·17Crossfire had forked, and was repaired by hand

The 0.90.1 CHANGES records that "crossedit 0.7 was merged in with the 0.90.0 source. This once again creates a common distribution." Mark Wedel's first release as maintainer was a reunification: artifact code and cursed items from one line, font filepaths and bitmap handling from the other, many patches "implemented by hand". The archetype directory structure adopted in that merge is still the shape of the arch tree.

CHANGES (0.90.1)

1994·Mar·08"Changes from the Berkeley Folks", and runes

A section heading in the 0.90.2 CHANGES marks a distinct contribution stream from Peter Mardahl and others at Berkeley: spell level-dependency tunable at runtime, superimposing protection spells with diminishing returns, an invoke casting interface — and runes, magical traps into which any spell can be stored.

CHANGES (0.90.2)

1999·Jan·30The random map generator

"Random map code by Peter Mardahl added." The maps archive gains a styles/ tree in the same release — floor, wall, monster and decor styles — the template library that makes a generated dungeon read as a place. Direct ancestor of the Crawl generator added in 2026.

CHANGES + maps archive (0.95.2)

People

2001David Hurst and the classic image set

1,459 files in one commit: an alternate artwork set, "now called classic or clsc … in preparation for support of arbitrary sets." It is the point at which Crossfire stopped having one look. 1,845 .clsc.* files remain in the tree, and they are the first place the 2020 retro image set project looks for art to downscale.

He signs commits "dnh" under the account darth_bob, which is why the connection was invisible until the DEVELOPERS file — deleted in 2014, recovered from git history — supplied the full name and his own summary of his work: "gods rebalancing, images for classes and other images, spell testing and concepts". He wrote exactly one map, the Dry Well beneath Scorn, created 6 November 2001 and last modified in July 2026.

arch + maps repositories, DEVELOPERS file

Infrastructure recovered from the announce list

2000·Dec·22The original metaserver

Went live at crossfire.real-time.com port 13326, opt-in per server via metaserver_notification on. The same announcement brought the mailing list web archives online — the archives this timeline is partly built from.

crossfire-announce

2006·Mar·09The 1.9.0 maps shipped wrong

"Due to a packaging error, the maps for the 1.9.0 release contained the smallworld maps." Corrected archives were reissued eleven days later with a -1 suffix — which is why crossfire-1.9.0-1.maps.tar.gz sits beside the original in the download archive.

crossfire-announce

2025·Aug·28The most recent release

GTKv2 client 1.75.5, a bugfix for a 1.75.4 that was tagged but never announced. It brought map labels, client-side ticks, and the first native macOS disk images in the project's history, for both Intel and Arm64.

crossfire-announce

Corrections applied to the timeline

Release dates originally came from repository release-preparation commits. The announcement send time is the actual release, so the announce archive supersedes them.

EntryWasCorrected toWhy
0.95.8 — race and class systemc. 2000-12-152000-11-29Announce list; also promoted from approximate to exact
0.96.0 — partial resistances2001-01-282001-02-13Announce list
1.11.02008-02-102008-02-01Announce list
1.70.02012-03-182012-03-26Announce list
1.75.3 client2024-05-052024-04-17Announce list; entry also split from an unrelated same-day item
1.10.0, 1.60.0, 1.71.0, 1.75.0Moved 2–8 days by the same evidence
1.0.0, 1.3.0, 1.9.0, 1.50.0, 0.95.7Moved 1–5 days
#crossfire IRC channelc. 20012003-08-13Supplied by the project maintainer; see caveat below
Forum and wiki2003 only2003 and 2008The 2003 sites were replaced; the current forum and wiki date from 2008
Source link, 1992 post…9Atr80lttCk…9Atr80IttCkLowercase L mistranscribed for capital I from a screenshot; the original link was dead

Method

  • CHANGES files are cumulative and newest-first. Each release prepends its own section, so the newest copy that still carries one — 1.3.0 — contains the entire history to that point. From 1.4.0 onward the file is a stub and the record moves to ChangeLog.
  • Archives were read without unpacking. tar -tzf to list and tar -xzOf to stream single files out, which is what made 448 archives tractable.
  • Content additions were found by diffing map archives on file count and top-level directory between consecutive releases, then confirmed against the announcements.
  • Announcement date beats commit date. Where a repository release-prep commit and an announcement disagree, the announcement is the release.
  • Precision is marked, not assumed. An exact date means a dated source exists. A grey c. means the date is inferred from a changelog tail, a follow-up post, or a prep commit. A bare year means only a year is known.

Limits and known weaknesses

One entry rests on testimony rather than a document. The IRC channel's founding date was supplied by the project maintainer. It corrected an earlier inference of c. 2001, which had been drawn from a "(formerly Open Project Network)" note on the site's IRC page — a remark about the network's history that was misread as evidence about the channel's age. No local source records the founding date.

  • Not every archive was opened. Client, image and sound tarballs carry no changelogs, and server tarballs from 1.4.0 onward contain only stub NEWS files. These were listed but not read in full.
  • The announce list is sparse by design. 34 periods across 25 years; it records releases, not development. Everything between releases comes from commit history or the news log.
  • Four entries carry year-only dates. They describe periods — peak map activity, the quiet years, the revival, the 2025 maintenance pass — rather than events, and no finer date exists.
  • Pre-1999 code history is reconstructed, not observed. The oldest repository begins on 2 April 1999. Everything earlier comes from release tarballs, announcements and mailing list traffic, so attribution before that point is only as good as what the CHANGES files recorded.
  • Contributor identity is fragile. Handles, CVS accounts and real names do not line up. One contributor appears as dnh, darth_bob and David Hurst in three different sources, and was only connected because a deleted file was recovered from git history. Others are certainly still unlinked.

Compiled August 2026 alongside the Crossfire Development Timeline. The changelog records how the page was built, pass by pass. A dark, self-contained version of the timeline is also available as index-dark.html.