Skip to content

eevee/idchoppers

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 

idchoppers

idchoppers is a Rust library and command-line tool for parsing and manipulating WAD files and other data associated with classic Doom and Doom-era games.

The idea is to get all this stuff done once and for all in a safe, fast language that everything else can bind to. (Don't @ me with that xkcd strip.) I intend to provide C, C++, and Python bindings eventually.

It is extremely unfinished and a work in progress, unless I get bored with it, in which case it's not. I never finish anything. Sorry. (It does help if people show continued active interest, ahem.)

Roadmap?

No promises. I'm just throwing stuff at the wall here.

The basics

I have a dream that someday SLADE will become a GUI that merely wraps idchoppers, if that gives you a general idea. (I don't actually have buy-in from SLADE's author, but we can cross that bridge later.)

So, that would require:

  • Read and write various kinds of archives (WAD, PK3, directories...)
  • Read, write, and convert between various image formats, sound formats, etc.
  • Load, render, modify (!), and save maps

The intermediates

  • Understand all of ZDoom's extra lumps, plus DEHACKED
  • Detect which game (Doom, Doom II, Heretic, Hexen, Strife, etc.) a PWAD is intended for
  • Detect which port (Boom, Boom plus MBF sky transfers, ZDoom, GZDoom, Eternity, lord knows what else) a PWAD is intended for
  • Heuristically determine whether jumping/ducking are intended
  • Distinguish simple map sets from megawads from TCs
  • Extract map names, including using "OCR" on title lumps
  • Convert between map formats, including porting all of ZDoom's UDMF features to line specials, or "downgrading" a ZDoom map to Boom or vanilla when possible (and explaining why when not)
  • Guess at the overall aesthetic of a map by measuring the most-used textures by surface area
  • Detect, fix, and avoid a wide variety of mistakes and errors (unreachable secrets, duplicate secrets, missing keys, slime trails, bogus BLOCKMAP, visplane overflows, placement of the MAP02 sargeant, monster-filled hallways straddling a blockmap edge... and that's just vanilla!)

The advanceds

I sort of doubt many of these will happen without some serious third-party interest/assistance, but they're interesting ideas.

  • "Compress" resources like cc4tex.wad by using ZDoom features to express translations, rotations, flips, etc.
  • A good enough software renderer to generate the opening scene of a map
  • Estimate the difficulty of maps, based on monster count vs reachable area vs available resources
  • Try to find the intended route through maps
  • Decompile ACS to trace how scripts affect map geometry and progression
  • Generate a par time automatically
  • Find "interesting" vantage points for the sake of wadinfo_txt
  • Be useful enough to base something like Oblige on

About

Doom WAD manipulation library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •