Skip to content

jerome-trc/viletech

VileTech

About

VileTech is a collection of Doom-related Rust technologies, oriented towards the building of new tools, game engines, and games descending from id Software's id Tech 1 engine.

The goals of the VileTech "project" are as follows, in descending order of priority:

  1. justforfunnoreally.dev badge
  2. Facilitate the development of a catch-all language server for Doom content development.
  3. Expose functionality developed in the Doom open-source ecosystem which is currently unavailable (i.e. due to being tied up in existing applications) as a public API, first with a Rust interface and then with a C API.
  4. Build a new Doom source port as an alternative to GZDoom, with the orthogonal goals of:
    • Implementing improvements which are impractical for GZDoom due to technical debt.
    • Adding features which fall outside GZDoom's scope.
    • Eliminating compatibility for the 1% of legacy user content which GZDoom supports to its detriment.

Beware that this project:

  • is deep in development. None of these crates are published for good reason; nothing is feature complete or rigorously-tested. You should not assume that an interface which isn't marked unsafe is safe.
  • is strictly a solo hobby project. The code within this repository is going to be deeply disorganized for the foreseeable future.

Contents

/cli

viletech-cli - VileTools - is a command-line interface for a set of tools built on the other parts of VileTech for performing common operations related to Doom modification, like building binary-space partition data for levels.

/client

viletech-client is an application for running games and editing associated content; it is the primary way for end users to interact with the engine.

/data

viletech-data - VileData - is a library underpinning the engine which provides data representations and reader/writers, kept separate to provide functionality for any outside parties who need to interact with formats in the id Tech 1-descendant ecosystem.

/doomfront

doomfront is a collection of parsers for Doom-related domain-specific languages.

/engine

viletech is a crate for backing the client and the dedicated server by rolling up all the other constituent parts of this repository and adding features needed to run games, like physics simulation.

/lith

lithica is the bespoke scripting language that gets embedded into the VileTech Engine (although it is agnostic to the software it underpins).

/mus2midi

mus2midi is a small library containing only a Rust port of a DMXMUS-to-MIDI converter.

/server

viletech-server is a dedicated (a.k.a. "headless") game simulation runner with a CLI for serving other clients.

/utils

viletech-utils is where small helper symbols which may not necessarily be related to Doom but are still useful to multiple other crates go.

/vfs

viletech-fs - VileTechFS - is a "virtual file system"; an abstraction over the user's "real" or "physical" operating system's FS to ease usage for the engine and mod developers, as well as providing a layer of "information hiding".

/wadload

wadload contains functionality for reading and writing files in the "Where's All the Data" (WAD) file format native to Doom.

Licensing, Attribution

A complete list of attributions and other third-party licensing information can be found here.

All VileTech-original source - i.e., that which is no way covered by the terms of the document provided above - is provided under either of

at your option.

About

Doom-related Rust technologies

Topics

Resources

License

GPL-3.0 and 2 other licenses found

Licenses found

GPL-3.0
LICENSE
Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks