Skip to content

Repository files navigation

DIFF — DayZ Internal File Finder

DayZ Scripts documentation. Browsable documentation for the DayZ Enforce Script sources — every class, method, enum and constant, plus a file list of the whole script tree — generated from the official DayZ Script Diff repository.

Site: diff.yadz.app

Previously published as DayZ Scripts at dayz-scripts.yadz.app, generated by Doxygen. Those addresses redirect here, class reference and file reference pages included.

  • 🔍 Search — find any class, method, enum, or constant
  • 🌳 Inheritance trees — see the full type hierarchy and inherited members
  • 📄 Syntax-highlighted sources — browse the script files as they ship
  • 📋 Changelog — API diff between any two PC stable builds
  • ✅ Mod check — drop a local mod folder and check overrides against experimental or latest scripts (runs in the browser)
  • 🔗 Usage — where each member is called, when the sources have no official docs
  • 📝 Community notes — short annotations on types and members
  • 📦 Build archive — older PC stables stay at /v/<build>/ (e.g. /v/1.29.163451/); when an Experimental build is ahead of live, it is documented at /v/experimental/
  • 🤖 LLM-ready — api.json, llms.txt, agent.md, and Copy for LLM on class and enum pages
  • 📡 Feed — new builds as they ship, as Atom

What's on the site

  • Classes — inheritance tree, A–Z index, and every inherited member on /classes/<Name>/members/
  • Topics — the \defgroup groups the sources wrap themselves into (math, physics, entities, widgets, …)
  • Files — the script tree, plus globals declared outside a class
  • Changelog — API diff between any two builds
  • Mod check — check a local mod against experimental or the latest scripts; nothing leaves the browser
  • Feed — new builds as they ship, as Atom; every class and enum page also unfolds its own build-by-build history

Older builds stay at /v/<build>/… (e.g. /v/1.29.163451/). The PC stable changelog, official links and community links are on the homepage; the links themselves are hand-maintained in src/generate/content.js. Bugs and suggestions for this site: Discord.

When DayZ Script Diff Experimental is ahead of the newest PC stable, that head is documented at /v/experimental/ and appears in the version picker with an experimental marker. The live build stays at the site root. Once Bohemia ships a stable build that catches up, the experimental docs disappear automatically — the same path then redirects to /.

For language models

The HTML pages are for people. Agents should start at /llms.txt and fetch the JSON rather than scraping class pages. How to look a type up is in /agent.md.

  • /agent.md — fetch the dump, overlay notes, do not scrape pages
  • /api.json — latest build: every class, method, field, enum, global, typedef and macro, with signatures, inheritance, file locations and doc briefs
  • /search.json — compact name index the site search uses
  • /assets/notes.json — community notes, keyed by Type or Type.Member
  • /assets/versions.json — every documented PC build (and the experimental head when it is ahead of live)

api.json is latest-only. The script sources it describes are under the DPL; community notes are not.

For pasting into a chat by hand, every class and enum page has a Copy for LLM button under its title: the page as Markdown — signatures, inheritance, docs and community notes — with its build and source named.

Community notes

A community note is a short annotation on a class, enum, or member. Add it to site/notes.json, keyed by type name or Type.Member:

{
  "PlayerBase": "Server-side only outside of simulation callbacks.",
  "PlayerBase.SetQuantity": "Clamps to the config maximum instead of failing; read it back with `GetQuantity()`."
}

Edit that file and open a pull request. Type.Member covers every overload of that name; enum values key off the value name; backticks render as code. Notes show up on class and enum pages, labelled as community writing, on every build at once.

test/api.test.js rejects a key that is not Type or Type.Member, an empty value, or an unclosed backtick.

Local development

Requires Node.js 20+ and git. No npm dependencies.

npm run fetch            # clone/update upstream + experimental, detect versions
npm run experimental     # snapshot DayZ-Script-Diff-Experimental → data/experimental.json (Mod check)
npm run parse            # parse all versions (and experimental when ahead) into JSON models
npm run dev              # http://localhost:3000 — render on demand, reload on save
npm run generate         # write the static site into dist/
npm run generate:latest  # newest build only
npm run generate:verify  # re-render reused pages and fail if one changed
npm run build            # fetch, parse and generate
npm run preview          # serve a real dist/ at http://localhost:3000
npm test

npm run fetch updates both the stable and Experimental clones. When the Experimental head's build number is greater than the newest stable, it is written into data/versions.json as experimental and npm run parse produces data/model-experimental.json for /v/experimental/.

npm run experimental is also run by the scheduled sync when DayZ-Script-Diff-Experimental moves. It writes a signature index for Mod check (separate from the full docs archive at /v/experimental/).

npm run dev is the inner loop. It needs fetch and parse, not generate. It loads the newest build once and renders whichever page you open; older builds work the same at /v/<build>/. Assets come straight from site/.

Use npm run preview to check archive rewrites, redirects and the sitemap. After changing the parser, re-run with FORCE_PARSE=1 npm run parse (or ONLY_VERSION=1.29 for one build) so the commit-sha cache is not reused. LINK_THREADS overrides how many threads do the filesystem writes.

The pipeline is src/fetch.js → src/parse-all.js → src/generate/ (or src/dev.js in development). src/generate/routes.js is the site map both the writer and the dev server read. Page reuse, source links and the Enforce Script parser are documented in the files that implement them.

When a new PC stable ships, add its forum thread (if it has one) in src/generate/content.js. Builds without a thread still appear.

Contributing

The usual path is a pull request. Notes go in site/notes.json (see Community notes); everything else lives in this repo. CONTRIBUTING.md maps which file renders which URL, where the client-side behaviour lives, and the invariants to keep. Bugs and suggestions: Discord.

Acknowledgements

Special thanks to CreepyCrappyShow, for all the support, insights, cool name ideas, and friendship along the way. This site is better for all of it! 💚

To Doxygen, the open-source generator, that generated the first versions of these docs, and to Zeroy's DayZ Explorer, for the inspiration! 🙏

License

This generator (src/, site/, test/, and the build configuration) is MIT. Community notes in site/notes.json are original writing and covered by the same license.

The generated documentation — the DayZ script sources in data/ (tracked) and dist/ (not tracked) — is © BOHEMIA INTERACTIVE a.s. and licensed under the DayZ Public License (DPL): non-commercial, DayZ-only reuse with attribution. They are modified here only for presentation, from DayZ Script Diff and DayZ Script Diff Experimental (data/experimental.json for Mod check), and are offered as-is. MIT does not extend to them. (src/generate/pathnames.json holds file and directory names only, so the site can spell paths the way the game does.)

Release-note transcriptions in data/release-notes.json come from DayZ Wiki under CC BY-NC-SA 4.0; official DayZ forum links are retained alongside them.

This is not official documentation and is not affiliated with DayZ or Bohemia Interactive. DAYZ®, ENFUSION®, and BOHEMIA INTERACTIVE® are registered trademarks of BOHEMIA INTERACTIVE a.s.

About

DIFF stands for DayZ Internal File Finder. Browsable documentation for the DayZ scripts, the Enforce Script source of the game.

Resources

Contributing

Stars

5 stars

Watchers

2 watching

Forks

Contributors

Languages