# Danmaku-Genesis **Repository Path**: ls007player/danmaku-genesis ## Basic Information - **Project Name**: Danmaku-Genesis - **Description**: 自已开发的东方弹幕游戏,弹幕创世纪 Danmaku Genesis - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-14 - **Last Updated**: 2025-09-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Danmaku Genesis - 东方弹幕游戏引擎 一个现代化的、数据驱动的东方风格弹幕射击游戏引擎,基于 Python Arcade 构建。 ## 🎮 项目特色 ### 核心特性 - **动态分辨率适配**:支持任意屏幕比例,自动调整游戏画面 - **数据驱动设计**:所有游戏元素通过 JSON 配置,无需修改代码即可创建新内容 - **物理引擎集成**:真实的子弹物理模拟,支持碰撞和反弹 - **AI行为系统**:复杂的敌人AI,支持多阶段行为模式 - **程序化渲染**:动态生成子弹纹理和特效 ### 技术亮点 - **模块化架构**:清晰的代码分层,易于扩展和维护 - **性能优化**:智能剔除策略,高效的碰撞检测 - **跨平台支持**:Windows原生支持,可扩展至其他平台 - **资源热加载**:运行时动态重载配置,便于调试 ## 🚀 快速开始 ### 环境要求 - Python 3.8 或更高版本 - Windows 10/11 (推荐) - 支持 OpenGL 的显卡 ### 安装步骤 1. **克隆项目** ```bash git clone [项目地址] cd Danmaku-Genesis ``` 2. **安装依赖** ```bash pip install arcade pip install pillow ``` 3. **运行游戏** ```bash python main.py ``` ### 可选依赖 ```bash # 用于打包发布 pip install pyinstaller # 用于图像处理优化 pip install numpy ``` ## 🎯 游戏操作 ### 基本控制 - **移动**:方向键 ↑↓←→ 或 WASD - **慢速移动**:按住 Shift 键 - **射击**:Z 键(持续按住) - **炸弹**:X 键 - **暂停**:ESC 键 ### 高级操作 - **精确射击**:配合慢速移动进行精准操作 - **擦弹系统**:靠近子弹获得额外分数 - **连击系统**:连续击中敌人获得分数加成 ## 📁 项目结构 ``` Danmaku-Genesis/ ├── core/ # 核心游戏引擎 │ ├── entities/ # 游戏实体类 │ │ ├── player.py # 玩家角色 │ │ ├── enemy.py # 敌人系统 │ │ ├── bullet.py # 子弹系统 │ │ ├── laser.py # 激光系统 │ │ └── effects.py # 特效系统 │ ├── physics/ # 物理引擎 │ │ ├── physics_engine.py # 主要物理计算 │ │ └── physics_utils.py # 物理工具函数 │ ├── system/ # 游戏系统 │ │ ├── stage_manager.py # 关卡管理 │ │ ├── sound_manager.py # 音效管理 │ │ └── data_loader.py # 数据加载 │ ├── utils/ # 工具模块 │ │ ├── graphics.py # 图形渲染 │ │ └── utils.py # 通用工具 │ └── constants.py # 游戏常量 ├── stages/ # 关卡配置 │ ├── level 1/ # 基础教学关卡 │ ├── battle 1-4/ # 主题战斗关卡 │ └── battle pinball/ # 特殊玩法关卡 ├── definitions/ # 全局定义 │ ├── bullet_definitions.json # 子弹定义 │ ├── enemy_definitions.json # 敌人定义 │ └── shared_bullet_patterns.json # 共享弹幕模式 ├── assets/ # 游戏资源 │ ├── images/ # 图像资源 │ ├── music/ # 背景音乐 │ └── sfx/ # 音效文件 ├── views/ # 游戏视图 │ ├── game_view.py # 主游戏视图 │ ├── start_view.py # 开始界面 │ └── level_select_view.py # 关卡选择 └── main.py # 游戏入口 ``` ## 🎨 内容创作指南 ### 创建新关卡 1. **创建关卡目录** ``` stages/ └── my_new_level/ ├── level_script.json # 关卡事件脚本 ├── enemy_definitions.json # 敌人定义 └── bullet_patterns.json # 弹幕模式 ``` 2. **关卡脚本示例** ```json [ { "timestamp": 3.0, "event_type": "spawn_enemy", "params": { "enemy_id": "my_boss", "start_x": 450, "start_y": 800 } } ] ``` 3. **敌人定义示例** ```json { "my_boss": { "image_path": "assets/images/my_boss.png", "scale": 1.5, "max_hp": 1000, "ai_sequence": [ { "action_group": [ { "action": "fire_pattern", "pattern": "circular_burst", "interval": 0.5 } ] } ] } } ``` ### 创建新弹幕模式 在 `bullet_patterns.json` 中定义新的弹幕模式: ```json { "my_pattern": { "type": "circular", "bullet_type": "rice_bullet_red", "count": 12, "speed": 200, "angle_offset": 30 } } ``` ### 添加新子弹类型 在 `bullet_definitions.json` 中定义新的子弹: ```json { "my_bullet": { "generator": "glowing_circle", "params": { "core_radius": 8, "glow_radius": 16, "core_color": [255, 255, 255], "glow_color": [255, 0, 0, 150] }, "damage": 1, "speed": 300 } } ``` ## 🔧 开发指南 ### 配置系统 #### 分辨率适配 游戏支持动态分辨率适配,基于设计分辨率 1920x1080: ```python # 在 constants.py 中调整基础参数 DESIGN_SCREEN_WIDTH = 1920 DESIGN_SCREEN_HEIGHT = 1080 LOGICAL_WIDTH = 900 # 游戏逻辑区域宽度 LOGICAL_HEIGHT = 1080 # 游戏逻辑区域高度 ``` #### 物理参数 ```python # 物理引擎配置 PLAYER_SPEED = 12 # 基础移动速度 PLAYER_SPEED_LOW = 6 # 慢速移动速度 CULLING_MARGIN = 800 # 剔除边界 ``` ### 调试工具 1. **调试模式**:按 F1 显示调试信息 2. **慢动作模式**:按住 Tab 键减慢游戏速度 3. **碰撞显示**:按 F2 显示碰撞体积 ### 性能监控 内置性能监控面板: - FPS 显示 - 实体数量统计 - 内存使用监控 - 碰撞检测耗时 ## 📦 打包发布 ### 使用 PyInstaller 1. **安装打包工具** ```bash pip install pyinstaller ``` 2. **执行打包** ```bash pyinstaller Danmaku-Genesis.spec ``` 3. **打包配置** `Danmaku-Genesis.spec` 已配置好所有依赖项,包括: - 资源文件自动包含 - 图标设置 - 单文件模式 - 优化选项 ### 发布文件结构 ``` dist/ └── Danmaku-Genesis/ ├── Danmaku-Genesis.exe # 主程序 ├── assets/ # 资源目录 └── README.txt # 用户手册 ``` ## 🎵 音效与音乐 ### 支持的音频格式 - **背景音乐**:MP4, MP3, OGG - **音效**:WAV, MP3 ### 音效系统 - **3D音效**:基于距离的声音衰减 - **动态混音**:根据游戏状态调整音量 - **音效池**:避免重复播放相同音效 ### 添加新音效 1. **音效文件命名规范** ``` sfx/ ├── player_shoot.wav # 玩家射击 ├── enemy_hit.wav # 敌人被击中 ├── explosion_large.wav # 大爆炸 └── ui_select.wav # UI选择 ``` 2. **在 sound_manager.py 中注册** ```python sfx_to_load = { "my_sound": "assets/sfx/my_sound.wav", # 添加到加载列表 } ``` ## 🐛 常见问题 ### 运行问题 **Q: 游戏启动后黑屏** A: 检查显卡驱动是否支持 OpenGL 3.3+,尝试更新驱动 **Q: 音效无法播放** A: 确保音频文件格式正确,检查系统音频驱动 **Q: 窗口大小异常** A: 删除配置文件 `settings.json`,重启游戏 ### 开发问题 **Q: 关卡加载失败** A: 检查 JSON 文件格式,确保所有引用的资源存在 **Q: 子弹纹理显示异常** A: 验证纹理文件路径,检查生成器参数 **Q: 物理碰撞不准确** A: 调整碰撞体积参数,使用调试模式查看碰撞框 ## 🤝 贡献指南 ### 代码规范 - 使用 4 空格缩进 - 函数命名使用 snake_case - 类命名使用 PascalCase - 添加必要的注释和文档字符串 ### 提交规范 - 使用清晰的提交信息 - 每个功能单独提交 - 包含必要的测试 ### 分支管理 - `main`: 稳定版本 - `dev`: 开发分支 - `feature/*`: 新功能分支 - `hotfix/*`: 紧急修复 ## 📄 许可证 本项目采用 MIT 许可证,详见 [LICENSE](LICENSE) 文件。 ## 🙏 致谢 - **Arcade 社区**:优秀的 Python 游戏开发库 - **东方Project**:灵感来源 - **开源社区**:各种工具和库的支持 ## 📞 联系方式 - **项目主页**: [GitHub 地址] - **问题反馈**: [Issues 页面] - **讨论群组**: [Discord/QQ群] --- **享受弹幕的快感吧!** ✨