---
title: "DOOM-PYTHON"
url: "https://aigamehub.app/zh-tw/games/doom-python-9cd793"
source: "https://github.com/Xznder1984/DOOM-PYTHON"
source_type: "github"
play_url: "https://xznder1984.github.io/DOOM-PYTHON/"
platform: "desktop"
login_required: false
pricing: "free"
origin: "original"
ai_tools: []
game_languages: ["en"]
author: "Xznder1984"
author_handle: "Xznder1984"
category: "動作"
categories: ["action"]
tags: ["doom-like", "first-person-shooter", "open-source", "pygame", "python", "raycasting"]
added: "2026-11-01T04:23:49.336Z"
updated: "2026-11-01T04:23:49.336Z"
locale: "zh-tw"
content_locale: "zh-tw"
---

# DOOM-PYTHON

一款以 Python 與 Pygame 製作、開源的 Doom 風格第一人稱光線投射射擊遊戲，具備四把槍、彈藥，以及會在可編輯 ASCII 地圖中遊蕩的幽靈敵人。

## Description

DOOM-PYTHON 是一款以 Python 與 Pygame 撰寫的小型第一人稱光線投射射擊遊戲。玩家使用 WASD 移動並以滑鼠視角觀看，可在手槍、霰彈槍、鏈砲與電漿步槍之間切換、重新裝填，並射擊四種會在關卡中遊蕩與追擊的彩色幽靈敵人。地圖是純 ASCII 格狀圖，可加入 maps/custom_maps.py 並從遊戲內選擇器挑選；武器數值、顏色、視野與敵人行為則在 config.py 中調整。可從原始碼執行，先 `pip install pygame-ce`，再 `python run.py`；另外也提供 GitHub Pages 連結，可在瀏覽器中遊玩。

## Original post

idk why I called it that

Topics: custom, customizable, customizable-ui, customization, doom, game, game-development, modable, python, vibe-coded, vibe-coding, vibecode, vibecoding

# DOOM-PYTHON A tiny, easy-to-hack Doom-style raycaster built with Python + Pygame. Great for learning raycasting, modding maps, and messing with weapons/enemies. ![Python](https://img.shields.io/badge/Python-3.11%2B-blue) ![Pygame](https://img.shields.io/badge/Pygame/Pygame--CE-green) ![License](https://img.shields.io/badge/License-MIT-yellow) Repo: [https://github.com/Xznder1984/DOOM-PYTHON](https://github.com/Xznder1984/DOOM-PYTHON) ## Features - **Classic raycasting** - First-person view with walls, sky/floor, fisheye-corrected - **Default view is just right** - Big raycasting view with a small map overlay (press `M` to cycle: split / full / 3D only) - **Pac-Man style ghosts** - 4 colored ghosts that wander/chase you - **4 guns + ammo** - Pistol, Shotgun, Chaingun, Plasma Rifle. Pick with `1-4` or `Q/E`. Reload with `R`. Shoot with `SPACE` or Left Mouse - **Easy custom maps** - Draw maps in ASCII, add them in seconds - **Map selector** - Press `TAB` in-game to pick any map - **Mouse look + WASD movement** - Feels nice and easy to customize - **Separated files** - Everything is split so it's easy to understand and extend ## Quick Start ```bash # Install dependencies pip install pygame-ce # Run the game python run.py ``` Or just `python main.py` / `python launch.py` too. ## Controls | Key | Action | |---|---| | `WASD` | Move | | `Mouse` | Look around | | `Arrow Keys` | Turn (backup) | | `SPACE` / `Left Mouse` | Shoot | | `1-4` or `Q/E` | Switch weapons | | `R` | Reload | | `TAB` | Map selector | | `M` | Cycle view mode | | `ESC` | Release mouse / Back to menu | ## Project Structure ``` DOOM-PYTHON/ ├── run.py # Start here (auto-handles pygame) ├── main.py # Game loop, rendering, enemies/guns integration ├── main_menu.py # Title screen ├── map_manager.py # Map loading system (easy to extend) ├── map_select_menu.py # In-game map picker ├── maps/ │ ├── __init__.py │ └── custom_maps.py # ADD YOUR CUSTOM MAPS HERE ├── weapons.py # Weapon/ammo system ├── gun_sprites.py # Gun viewmodel + crosshair ├── enemies.py # Enemy settings ├── sprites.py # Ghost sprites ├── mouse_control.py # Mouse look ├── config.py # All settings in one place (guns, colors, etc) └── docs/ # Documentation ``` ## Making Custom Maps (SUPER Easy) Open `maps/custom_maps.py` and add: ```python from map_manager import register_map def load(MAPS, register_map_fn=None): reg = register_map_fn or register_map reg('my_map', 'My Cool Map', [ "##########", "#S........#", "#..####..#", "#........#", "##########", ]) ``` Legend: `#` wall, `.` floor, `S` start. Every row same length, keep border walls. That's it - it'll show up in the map selector automatically. You can also add maps straight in `map_manager.py` if you want. See `docs/MAPS.md` for more details. ## Tweak Everything Everything is in `config.py` - map, screen size, FOV, colors, weapon stats, enemy behavior, etc. Want to change gun damage? Edit `WEAPONS`. Want different starting ammo? Edit `STARTING_AMMO`. Want to move ghosts? Edi
