Kuberwastaken/DoomMe

DOOM running inside a README

โ˜… 63Forks 7PythonGitHub โ†—Compare

README

DoomMe: Running DOOM from a GitHub Readme

Click to Play DOOM
Yes, this is literally the game. You can click it to start playing.

Kuberwastaken - DoomMe Version 5 License MIT


What Is This?

DoomMe is Doom's E1M1 level running entirely inside GitHub's markdown viewer. Without using any javascript or a backend server, it's just 4,340 pre-rendered screenshots linked together with hyperlinks.

Every position ร— every angle = a unique markdown file. Click a direction, load a new file. That's the whole "engine."

๐Ÿ“– Full story: How I Made DOOM Run Inside a GitHub Readme


Gameplay

Here's some gameplay I captured locally

Repo Structure

DoomMe/
โ”œโ”€โ”€ assets/              # 4,340 WebP screenshots (doom_x_y_angle.webp)
โ”œโ”€โ”€ game/                # 4,340 navigation markdown files
โ”œโ”€โ”€ menu/                # Episode & difficulty selection screens
โ”œโ”€โ”€ static/              # Banner GIF, map image, menu assets
โ”œโ”€โ”€ linker.py            # Generates the markdown graph from map_data
โ”œโ”€โ”€ gridmapper.py        # VizDoom capture script
โ”œโ”€โ”€ omgi_mapper.py       # WAD parser using Omgifol
โ”œโ”€โ”€ map_data.json        # Valid (x, y) coordinates for E1M1
โ””โ”€โ”€ README.md            # You are here

How It Works (TL;DR)

  1. Parse the WAD โ€” omgi_mapper.py uses Omgifol to extract E1M1 geometry
  2. Generate the grid โ€” Point-in-Polygon filtering on a 64-unit grid โ†’ 1,085 valid spots
  3. Capture screenshots โ€” gridmapper.py teleports a VizDoom agent to each spot, 4 angles each
  4. Link it all โ€” linker.py builds the navigation graph as interlinked .md files

License

MIT - feel free to tweak around and play with the code Feel free to raise issues and PRs too

Credits


Made with <3 by Kuber Mehta

Contributors

Kuberwastaken

Issues