Skip to content

About

The project packages a browser-based DOOM port as a Databricks App and walks through the complete deployment process - from local development to hosting inside a Databricks workspace. While intentionally fun, it also serves as a practical example of building and deploying Node.js applications on Databricks Apps.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Doom on Databricks Apps

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.

Architecture

  1. server.js listens on 0.0.0.0:$DATABRICKS_APP_PORT and serves public.
  2. The user launches the game with an explicit click, unlocking browser audio.
  3. Emscripten loads doomgeneric.js, doomgeneric.wasm, and the data package locally.
  4. 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.

Local development

Node.js 18 or newer is required. The project has no npm dependencies.

npm start

The application is available at http://localhost:8000; the health endpoint is available at /health.

npm test

Deploy to Databricks Apps

From a Workspace directory

Create 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-app

After 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.

From Git

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.

Provenance and licenses

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.

About

The project packages a browser-based DOOM port as a Databricks App and walks through the complete deployment process - from local development to hosting inside a Databricks workspace. While intentionally fun, it also serves as a practical example of building and deploying Node.js applications on Databricks Apps.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages