Fisrt version

This commit is contained in:
2025-08-27 18:40:30 +08:00
commit ba1096f1e8
134 changed files with 24938 additions and 0 deletions

View File

@@ -0,0 +1,215 @@
#!/usr/bin/env python3
"""
快速音频设置脚本
为游戏创建音频文件 - 组合了下载和占位文件创建
"""
import os
import requests
import time
from pathlib import Path
TARGET_DIR = "app/src/main/res/raw"
# 可靠的免费音频下载链接
RELIABLE_DOWNLOADS = {
# 从 opengameart.org 和其他可靠的免费资源
"button_click.mp3": "https://opengameart.org/sites/default/files/button-09.wav",
"notification_beep.mp3": "https://opengameart.org/sites/default/files/notification.wav",
"error_alert.mp3": "https://opengameart.org/sites/default/files/error.wav",
"discovery_chime.mp3": "https://opengameart.org/sites/default/files/pickup.wav",
}
# 无法下载的文件将创建占位符
ALL_AUDIO_FILES = [
("ambient_mystery.mp3", "神秘氛围音乐 - 适合探索场景"),
("electronic_tension.mp3", "电子紧张音乐 - 适合危险场景"),
("orchestral_revelation.mp3", "管弦乐启示 - 适合重大发现"),
("epic_finale.mp3", "史诗终章 - 适合游戏结局"),
("ventilation_soft.mp3", "轻柔通风音效 - 基地背景音"),
("heart_monitor.mp3", "心率监控音效 - 医疗舱音效"),
("reactor_hum.mp3", "反应堆嗡鸣 - 工业区背景音"),
("space_silence.mp3", "太空寂静 - 外太空氛围"),
("wind_gentle.mp3", "微风音效 - 晴朗天气"),
("rain_light.mp3", "小雨音效 - 下雨天气"),
("storm_cyber.mp3", "电子风暴 - 特殊天气"),
("solar_storm.mp3", "太阳风暴 - 极端天气"),
("button_click.mp3", "按钮点击音效 - UI反馈"),
("notification_beep.mp3", "通知提示音 - 系统通知"),
("error_alert.mp3", "错误警报音 - 错误提示"),
("discovery_chime.mp3", "发现音效 - 物品发现"),
("time_distortion.mp3", "时间扭曲音效 - 特殊事件"),
("oxygen_leak_alert.mp3", "氧气泄漏警报 - 紧急情况"),
]
def create_directories():
"""创建必要的目录"""
Path(TARGET_DIR).mkdir(parents=True, exist_ok=True)
print(f"📁 目录已准备: {TARGET_DIR}")
def try_download(url, filename):
"""尝试下载文件"""
file_path = Path(TARGET_DIR) / filename
if file_path.exists():
print(f"✅ 已存在: {filename}")
return True
print(f"⬇️ 尝试下载: {filename}")
try:
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36'}
response = requests.get(url, headers=headers, timeout=10, stream=True)
if response.status_code == 200:
with open(file_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
if chunk:
f.write(chunk)
print(f"✅ 下载成功: {filename}")
return True
else:
print(f"❌ 下载失败: {filename} (HTTP {response.status_code})")
return False
except Exception as e:
print(f"❌ 下载错误: {filename} - {e}")
return False
def create_audio_placeholder(filename, description):
"""创建音频占位文件"""
file_path = Path(TARGET_DIR) / filename
if file_path.exists():
return
# 创建一个简单的文本占位文件
placeholder_content = f"""AUDIO PLACEHOLDER FILE
音频占位文件
文件名: {filename}
描述: {description}
这是一个占位文件,用于测试音频系统架构。
要获得完整的游戏体验,请下载真实的音频文件。
推荐下载网站:
1. https://pixabay.com/sound-effects/ (免费,无需注册)
2. https://freesound.org/ (免费,需注册)
3. https://opengameart.org/ (开源游戏音频)
下载后,请将文件重命名为: {filename}
并放置在目录: {TARGET_DIR}/
提示: 运行 ./audio_rename.sh 可以自动重命名下载的文件
"""
try:
with open(file_path, 'w', encoding='utf-8') as f:
f.write(placeholder_content)
print(f"📄 占位符已创建: {filename}")
except Exception as e:
print(f"❌ 创建占位符失败: {filename} - {e}")
def create_download_instructions():
"""创建下载说明文件"""
instructions_file = Path(TARGET_DIR) / "README_AUDIO.txt"
instructions = """音频文件下载说明
=================
本目录包含游戏所需的 18 个音频文件。
当前状态:
- ✅ 部分文件可能已通过脚本自动下载
- 📄 其他文件为占位符,需要手动下载替换
手动下载步骤:
1. 访问 https://pixabay.com/sound-effects/
2. 搜索对应的音效类型 (例如: "button click", "ambient space")
3. 下载 MP3 格式的音频文件
4. 重命名为对应的文件名 (如 button_click.mp3)
5. 替换本目录中的占位符文件
自动化工具:
- 运行 ../../../audio_rename.sh 自动重命名下载的文件
- 查看 ../../../AUDIO_DOWNLOAD_GUIDE.md 获取详细下载指南
测试音频系统:
即使使用占位文件,游戏的音频系统也能正常运行,
这样你就可以先测试功能,稍后再添加真实音频。
编译游戏:
cd ../../../
./gradlew assembleDebug
下载完成后,游戏将拥有完整的音频体验!
"""
try:
with open(instructions_file, 'w', encoding='utf-8') as f:
f.write(instructions)
print(f"📖 说明文件已创建: {instructions_file.name}")
except Exception as e:
print(f"❌ 创建说明文件失败: {e}")
def main():
"""主函数"""
print("🎵 快速音频设置工具")
print("=" * 40)
print("🎯 目标: 为游戏设置完整的音频文件集")
print("💡 策略: 下载 + 占位符 = 立即可测试")
print()
# 创建目录
create_directories()
# 尝试下载可靠的文件
print("⬇️ 尝试下载可用的音频文件...")
download_count = 0
for filename, url in RELIABLE_DOWNLOADS.items():
if try_download(url, filename):
download_count += 1
time.sleep(1) # 避免请求过频
print(f"\n📊 下载统计: {download_count}/{len(RELIABLE_DOWNLOADS)} 个文件成功下载")
# 为所有文件创建占位符(如果不存在)
print(f"\n📄 创建完整的音频文件集 ({len(ALL_AUDIO_FILES)} 个文件)...")
for filename, description in ALL_AUDIO_FILES:
create_audio_placeholder(filename, description)
# 创建说明文件
create_download_instructions()
# 检查结果
audio_files = list(Path(TARGET_DIR).glob("*"))
print(f"\n📂 音频目录文件总数: {len(audio_files)}")
# 最终说明
print("\n🎉 音频设置完成!")
print("\n✅ 你现在可以:")
print(" 1. 立即编译并测试: ./gradlew assembleDebug")
print(" 2. 音频系统界面将正常显示")
print(" 3. 所有音频功能都可以测试")
print("\n🎵 要获得完整音频体验:")
print(" 1. 访问 https://pixabay.com/sound-effects/")
print(" 2. 下载对应类型的音频文件")
print(" 3. 使用 ./audio_rename.sh 自动重命名")
print(" 4. 或查看 AUDIO_DOWNLOAD_GUIDE.md 详细指南")
if download_count > 0:
print(f"\n🎊 已有 {download_count} 个真实音频文件!")
print(f"\n📁 音频文件位置: {TARGET_DIR}/")
print("🔧 占位符确保系统正常运行,真实音频提升体验")
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("\n⏹️ 设置中断")
except Exception as e:
print(f"\n💥 设置错误: {e}")
print("请检查目录权限和网络连接")