A DOOM Shareware browser port that runs entirely on the client. Databricks Apps runs a small Node.js server that serves the UI, WebAssembly engine, and local game data. The application does not use Databricks resources or an external CDN.
server.jslistens on0.0.0.0:$DATABRICKS_APP_PORTand servespublic.- The user launches the game with an explicit click, unlocking browser audio.
- Emscripten loads
doomgeneric.js,doomgeneric.wasm, and the data package locally. - Computation, rendering, audio, and input remain in the user's browser.
The loader resolves engine assets from the actual app.js URL, so it also works
when Databricks Apps exposes the application behind a URL path prefix.
This design does not require a SQL Warehouse, Unity Catalog, secrets, or additional
service principal permissions. The largest file (doomgeneric.data) is 9.4 MB,
which is below the Databricks Apps 10 MB per-file limit.
Node.js 18 or newer is required. The project has no npm dependencies.
npm startThe application is available at http://localhost:8000; the health endpoint is
available at /health.
npm testCreate an application in Compute > Apps, then synchronize this directory to a Workspace path:
databricks sync . /Workspace/Users/<email>/doom-databricks-app
databricks apps deploy <app-name> \
--source-code-path /Workspace/Users/<email>/doom-databricks-appAfter deployment completes, open the URL from the application view. app.yaml
explicitly configures npm run start; the platform runs npm install during the
build and the server reads its port from DATABRICKS_APP_PORT.
The repository can also be configured while creating a custom app and deployed
from a branch. Ensure that the binary files in public/vendor/doomgeneric and
DOOM1.WAD are stored in the repository, or that Git LFS is supported by the
selected synchronization process.
The engine comes from the GPL-2.0 ozkl/doomgeneric project. Provenance, the source
revision, and checksums are documented in THIRD_PARTY_NOTICES.md; the license text
is available in third_party/doomgeneric/LICENSE.