Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
OpenVMK는 디즈니 가상 매직 킹덤(2005–2008)을 위한 오픈소스 서버이다
OpenVMK is an open source server for Disney's Virtual Magic Kingdom (2005–2008): self-hostable, documented, and built to speak the original client's protocol so the game can be preserved, studied and
게임LiveScript · TypeScriptGitHub @OpenVMK온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Open VMK Private Server Discord: https://discord.gg/WG9ch4exd5
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Just want to play or host? Download the latest release, unzip it, and start it — no plugin, no installs. This repository is the full source code; see Running from source to work on it.
An open source server implementation for Virtual Magic Kingdom (VMK), the Disney virtual world that ran from 2005 to 2008.
The goal is a self-hostable, well-documented server that speaks the original VMK client protocol, so the game can be preserved, studied, and run by anyone.
Website: openvmk.site · Join the Discord for discussion, progress updates, and release announcements.
Virtual Magic Kingdom launched in 2005 as part of Disneyland's 50th anniversary celebration. Players explored virtual versions of the Disney parks, collected pins and furniture, decorated their own rooms, and played mini games. Disney shut the servers down on May 21, 2008. The client was Shockwave based, and since the official servers went dark, the game has only lived on through community preservation work.
You need about 5 GB of free disk space (a 1.8 GB download that unpacks to about 3 GB).
Open the latest release and, under Assets, download vmk-release.zip. Skip the "Source code" archives GitHub adds automatically; they are the unbuilt source (see Running from source), not the ready-to-run game.
(Optional) Check the download against the SHA-256 in the release notes:
Get-FileHash vmk-release.zipshasum -a 256 vmk-release.zipExtract it to a folder of your choice, such as Documents\OpenVMK. The game is about 340,000 small files, so Windows' built-in "Extract All" is very slow. 7-Zip is much faster, or from a terminal in the download folder:
tar -xf vmk-release.zipunzip vmk-release.zipStart it from inside the new vmk-release folder:
| You have | Do this |
|---|---|
| Windows | Double-click Start VMK.bat. Nothing to install: the release carries its own Node.js. |
| macOS / Linux | Install Node.js 22.5 or newer, then run sh start.sh in a terminal. |
| Linux, with Docker | Run docker compose up -d, then open http://<your-server>:5199. |
Windows may warn because the file came from the internet: on "Windows protected your PC" click More info, then Run anyway; on "Open File – Security Warning" click Run.
Wait for "VMK is running" (10–30 seconds). Your browser opens http://127.0.0.1:5199/. Leave the window open while you play; closing it stops the server.
Playing with friends, or hosting on a domain with HTTPS? The release includes SELF-HOSTING.md: playing over your network, Docker with automatic HTTPS, running behind your own reverse proxy, every setting, backups, and troubleshooting.
Updating: stop the server, extract the new release next to the old one, copy your old data folder (your accounts, inventories, and rooms) into it, and start the new one.
Uninstalling: stop the server and delete the folder. Nothing is installed anywhere else.
For working on OpenVMK. To play or run a server for people, use the release: it is built, optimised (recompressed art, packed casts, bundled servers) and loads much faster.
You need Node.js 22.5 or newer and about 4.5 GB of disk. The clone is large (about a 600 MB download that checks out to about 3 GB and 143,000 files) because it carries the game's extracted art in client/assets, exactly as it was extracted.
On Windows, clone into a short path such as C:\OpenVMK or Documents\OpenVMK: some asset paths are long, and a deeply nested folder can pass Windows' 260-character limit. If checkout fails with "Filename too long", run git config --global core.longpaths true and clone again.
git clone https://github.com/OpenVMK/OpenVMK.git
cd OpenVMK
npm install
npx vite build --config client/vite.config.ts
node start.mjs
The game opens at http://127.0.0.1:5199/. The first account you create becomes the admin (/hk).
Build before you play. client/dist is not in the repository; the servers serve the built client, and start.mjs refuses to start without it. Rebuild after changing anything under client/src. The Vite dev server (npx vite --config client/vite.config.ts, port 5180) works for quick iteration, but transforms ~13,800 generated modules on first load, so it is slow.
Optional: cast packs. The release bundles each cast's bitmaps into one bitmaps.pack download. They are derived files and not committed; without them the client batches its requests instead. To build them locally:
node tools/pack-cast-bitmaps.mjs
These act directly on your local database (data/vmk.db), so only someone who can already edit that file can use them:
node tools/dev-account.mjs [name] [--new-user | --existing] creates a password-less test account (default devtest) that can only log in with a minted ticket.node tools/mint-ticket.mjs [name] [--new-user | --existing] issues a 10-minute login ticket for an existing account and prints a client URL that skips the login page. --new-user sends it through avatar creation again.node tools/set-admin.mjs <name> grants staff permissions (--revoke, --list).client/assets was produced from the original Shockwave files (.dcr / .cct) by tools/extract-casts.mjs, using LibreShockwave. The originals are not in this repository (they are available on request, see Game Files). With them in shockwave/ (or VMK_SHOCKWAVE pointing at them) and a LibreShockwave build (see tools/shockwave/README.md), node tools/extract-casts.mjs regenerates the casts. Re-extracting is only needed when changing the extractor.
Working
In progress
Known issues
| Layer | Choice |
|---|---|
| Game server | TypeScript / Node.js, speaking VMK's original protocol (100+ client messages handled) |
| Web server | TypeScript / Node.js: serves the client, casts, and texts; accounts; staff panel |
| Database | SQLite |
| Client | TypeScript port of the original Lingo client, running in the browser |
| Reference client | Original Shockwave client, used to verify behavior |
| Deployment | Windows launcher (Node.js bundled), Node.js on macOS / Linux, or Docker Compose |
The release and this repository both include the game files the browser client needs (extracted art, sounds and texts in client/assets), so you won't have to track down an archive to run a server.
The original Shockwave files (.dcr / .cct casts) are not included, but are available on request for preservation and research. Ask in the Discord.
Discussion, questions, and development chat happen in Discord: https://discord.gg/WG9ch4exd5
For bugs and feature requests, use GitHub Issues so they stay searchable. When reporting a problem with the release, mention your operating system and attach the relevant file from the release's logs folder.
Pull requests are welcome. For anything bigger than a fix, say hello in the Discord or open an issue first so work isn't duplicated. Other contributions are just as useful:
Open an issue or drop into the Discord if you want to get involved.
OpenVMK's browser client wouldn't be possible without two open source Shockwave projects:
Years of reverse-engineering Director and Shockwave went into both. Thank you.
This project is not affiliated with, endorsed by, or associated with The Walt Disney Company or any of its subsidiaries. Virtual Magic Kingdom, Disney, and all related names and marks are the property of their respective owners.
OpenVMK's own code is licensed under the GNU Affero General Public License v3.0 or later (LICENSE). If you run a modified OpenVMK server for other people, the AGPL requires you to offer them your modified source.
Parts of the browser runtime (client/src/lingo) are ported from LibreShockwave (AGPL-3.0) and DirPlayer (GPL-3.0); the comments mark where. See Special Thanks.
The game content is not covered by this license: the art, sounds and texts in client/assets and assets, and the original client scripts translated into client/src/generated*, remain the property of their respective owners and are included for preservation.
Create your account. The first account on a new server becomes the admin, with the staff panel at /hk.