Millennium - Welcome

An online RPG set around the year 2000.

Pagers, dial-up modems, internet cafés and burned CDs. A persistent city where you fix broken gadgets for cash, run errands for the locals, fight rival crews at the docks, hack payphones, drive a junker you rebuilt yourself and buy a house in the suburbs, with your friends online beside you.

Written in Rust with Bevy. Every sound and every note of music is synthesized in code. Free and open source.

  • 9 zones
  • 30 characters
  • 23 quests
  • 75 items
  • 7 skills
  • 4 factions
  • 8 music tracks
Downtown Maple and 5th at mid-morning: the Byte Cafe, Officer Pruitt with a quest marker, a red payphone, the messenger window and the minimap

What's in the city

A city and a region

Downtown Maple & 5th, the Harbor Docks, the Galleria Mall, an abandoned factory, the suburbs of Maple Heights and the rooftops. Take the highway to Route 9, the town of Pinecrest and Hollow Pines State Park.

Seven skills

Electronics, Mechanics, Cooking, Fitness, Driving, Hacking and Trading. Level up by doing: repair a walkman, rebuild a carburetor, flip a burger, win a fight.

Quests and a tutorial

Officer Pruitt shows you the ropes, then 23 quests: 56k Dreams, Rat Problem, Black ICE, a road trip to Pinecrest and more, with a quest tracker and tips.

A real economy

Shops that buy only what they deal in, limited stock, prices that drop when everyone sells the same thing, and the e-Bid auction house with escrow and claims.

Factions

City Services, Meridian Corp, the Dockside Crew and the Zer0 Day hackers. Your reputation opens discounts and locked gear.

Hacking

Payphones, ATMs and office terminals. Memorize the access code before it disappears; the better you are, the shorter the code.

Cars and races

Fix up Old Earl's junker and it's yours. Drive the highway, race Dash through Maple & 5th, and tune the car radio to Z-100 Hits or the pirate station.

Houses

Buy one of five houses in Maple Heights and furnish it. A stove, a workbench and a computer help your skills at home; a waterbed leaves you Well Rested.

New Year's Eve: Y2K

Count down to 2000 with the whole city, fireworks and all. Then the millennium bug hits: fix terminals, restart the Metro, hand out cocoa and stomp the bugs before time runs out.

Day and night

A 40-minute day. Streetlamps and lit windows after dark, a hot dog cart that only opens at night, and graffiti taggers who come out with it.

Synthesized sound

A dial-up handshake at login, pager beeps for chat, and a music loop for every part of town: boom-bap downtown, bossa muzak at the mall, jungle on the pirate radio.

Social

An instant-messenger chat with Say, Zone, Global, Whisper, Party and Crew. Trades, parties, a friends list and crews with tags.

Host Game

No server to rent: click Host Game and your friends join your world. Or run a dedicated server, even split over several machines.

Screenshots

Play it

Millennium is built from source. You need Rust (stable, 1.88 or newer). The first build takes a few minutes; after that it's quick.

Play with friends, no server needed

git clone https://github.com/rsantacroce/millennium.git
cd millennium
cargo run --release -p client

Type a screen name and a password, then click Host Game. The HUD shows the address your friends type into the Server field (TCP and UDP port 5888).

Or run a dedicated server

docker compose up -d                 # Postgres (or use a SQLite file, see the manual)
cargo run --release -p server
cargo run --release -p client        # as many as you like

Every control and how the systems work: the player manual. Running a world for others (settings, moderation, events, backups, monitoring): the admin guide.

Under the hood

Rust + Bevy

Bevy 0.19 for the client and the headless server, one ECS codebase. The UI is bevy_ui, styled like Windows 2000.

Server-authoritative

Networking with lightyear 0.30: client prediction and rollback for walking and driving, interpolation for everyone else. The client is never trusted.

Content as data

Items, NPCs, dialogue, quests, shops and recipes are RON files, checked by unit tests so a typo fails the build, not the game.

Persistence

PostgreSQL or SQLite. Trades, auctions and house sales are single database transactions, so items can't be lost or duplicated.

Procedural audio

No sound files: effects and eight music loops are synthesized at startup, from drum patterns written as strings and chords as MIDI notes.

Scales out

Run all zones in one process, or one zone server per part of the world, linked by a hub that hands players over.

What's next: running it for real players (backups, CI, moderation tools), more content (a Y2K New Year's Eve event, more towns, group jobs), and an exploration of a peer-to-peer version and blockchain-backed ownership. See the roadmap.