- 共享引擎(app/src/main):GestureEngine 6 手势识别、AudioEngine 三层音频 (ExoPlayer BGM 交叉淡入 / 对白 ducking / SoundPool 低延迟)、Game/GameEngine 状态机接口、MainActivity 全屏封面 + TalkBack - 《声命线》storyline:末世互动广播剧,3 幕 8 抉择点 4 结局 - 《声东击西》reflex:听声辨位反应,12 波战斗 + BGM 三档 BPM 变速 - 《暗室》escape:3x3 网格密室逃脱,钥匙→铁柜→保险丝→电箱→大门谜题链 - 文档:setup(从零搭建)/ architecture(架构)/ engine-api(引擎 API)/ asset-pipeline(资产流水线)/ games/*(三款游戏设计文档) - 资产管线:Qwen3-TTS 对白 + 程序合成音效/BGM + Mureka BGM 的 gen 脚本与台账, 全部 ogg 资产入库可复现 - env.d 环境脚本:android/tts 入库;sfx/mureka 含密钥不入库,仅提交 .example.sh 模板
36 lines
1.2 KiB
Bash
Executable File
36 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Shortcut for running scripts/sa3_gradio.py with the project .venv.
|
|
# All args pass through unchanged.
|
|
#
|
|
# Examples:
|
|
# ./sa3-gradio # sm-music + same-s, public share link
|
|
# ./sa3-gradio --dit medium
|
|
# ./sa3-gradio --no-share # local-only
|
|
# ./sa3-gradio --help
|
|
set -e
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PY="${SCRIPT_DIR}/.venv/bin/python"
|
|
|
|
if [ ! -x "$PY" ]; then
|
|
echo "No .venv found — run ./install.sh first."
|
|
exit 1
|
|
fi
|
|
|
|
# gradio + pillow + soundfile are UI-only extras, not part of the base requirements.
|
|
if ! "$PY" -c "import gradio, PIL, soundfile" >/dev/null 2>&1; then
|
|
echo "The gradio UI needs a few extra packages (gradio, pillow, soundfile)."
|
|
read -r -p "Install them into .venv now? [Y/n] " ans
|
|
case "${ans:-Y}" in
|
|
[Yy]*)
|
|
if command -v uv >/dev/null 2>&1; then
|
|
uv pip install -p "$PY" -r "${SCRIPT_DIR}/requirements-gradio.txt"
|
|
else
|
|
"$PY" -m pip install -r "${SCRIPT_DIR}/requirements-gradio.txt"
|
|
fi
|
|
;;
|
|
*) echo "Aborted — install manually: uv pip install -p .venv/bin/python -r requirements-gradio.txt"; exit 1 ;;
|
|
esac
|
|
fi
|
|
|
|
exec "$PY" "${SCRIPT_DIR}/scripts/sa3_gradio.py" "$@"
|