home / skills / hhhh124hhhh / godot-mcp / godot-product-polisher

This skill polishes Godot products by transforming natural language descriptions into enhanced visuals, audio, UX, and packaging.

npx playbooks add skill hhhh124hhhh/godot-mcp --skill godot-product-polisher

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
28.4 KB
---
name: godot-product-polisher
description: Godot 产品美化与打磨专家,支持自然语言描述自动完成视觉效果增强、音效优化、用户体验改进、成品包装等美化工作
---

# Godot 产品美化专家技能

## 技能概述

`godot-product-polisher` 是专门用于 Godot 游戏产品美化与打磨的智能化技能,能够根据用户的自然语言描述自动完成视觉效果增强、音效优化、用户体验改进、成品包装、发布准备等全面的产品美化工作,让游戏从"能用"提升到"精美"。

## 核心功能

### 🎨 视觉效果增强
- **光影效果**:动态光照、阴影、反射等高级视觉效果
- **粒子特效**:精美的粒子特效和环境动画
- **后处理效果**:色彩校正、泛光、景深等后处理
- **材质升级**:高级PBR材质和着色器效果

### 🎵 音效系统优化
- **动态音效**:情境感知的动态音效系统
- **环境音效**:沉浸式的环境音效和氛围音乐
- **音效混合**:智能的音频混合和平衡
- **3D音效**:空间音频和音效定位

### 🎮 用户体验改进
- **手感和反馈**:操作手感优化和触觉反馈
- **流畅过渡**:场景切换和状态变化的无缝过渡
- **引导系统**:智能的新手引导和帮助系统
- **无障碍支持**:色盲模式、字幕等无障碍功能

### 📦 成品包装制作
- **图标设计**:游戏图标和启动画面设计
- **营销素材**:截图、视频、宣传片制作
- **本地化支持**:多语言文本和文化适配
- **发布准备**:各平台发布包的优化和配置

## 使用方法

### 视觉效果升级
```
用户: "游戏的画面看起来很平淡,需要提升视觉冲击力"
系统: 智能升级:
- 添加动态光影和阴影系统
- 实现屏幕空间反射和泛光效果
- 优化粒子特效和材质表现
- 调整色彩分级和对比度
- 添加环境遮挡和细节纹理
```

### 音效体验优化
```
用户: "游戏的音效很单调,需要更沉浸的音频体验"
系统: 全面优化:
- 创建情境感知的动态音效
- 设计环境音效层次和变化
- 实现智能音频混合系统
- 添加3D空间音效定位
- 优化音效触发和淡入淡出
```

### 用户体验打磨
```
用户: "需要让游戏操作更流畅,用户体验更好"
系统: 精细打磨:
- 优化操作手力和响应时间
- 添加视觉和触觉反馈效果
- 实现流畅的场景过渡动画
- 设计智能的新手引导系统
- 添加无障碍和辅助功能
```

### 成品发布准备
```
用户: "游戏即将发布,需要准备所有发布素材"
系统: 完整准备:
- 设计高质量游戏图标和logo
- 制作营销截图和宣传视频
- 实现多语言本地化支持
- 优化各平台的发布配置
- 准备应用商店描述和关键词
```

## 工作流程

### 1. 产品分析评估
```bash
# 分析产品现状
- 评估视觉质量等级
- 识别用户体验痛点
- 确定优化优先级
- 制定美化计划
```

### 2. 视觉效果增强
```bash
# 提升视觉表现
- 实现高级光照效果
- 添加粒子特效系统
- 优化材质和着色器
- 调整色彩和后期处理
```

### 3. 音效系统优化
```bash
# 完善音频体验
- 设计动态音效系统
- 创建环境音效层次
- 优化音频混合平衡
- 实现空间音效定位
```

### 4. 用户体验改进
```bash
# 优化用户体验
- 改进操作手感反馈
- 实现流畅过渡动画
- 添加引导和帮助系统
- 实现无障碍功能
```

### 5. 成品包装制作
```bash
# 准备发布材料
- 设计图标和视觉素材
- 制作营销宣传内容
- 实现本地化支持
- 优化发布配置
```

## MCP 工具集成

### 视觉效果工具
- `create_shader_material` - 创建着色器材质
- `configure_lighting` - 配置光照系统
- `add_particle_effect` - 添加粒子特效
- `setup_post_processing` - 设置后处理效果

### 音频处理工具
- `create_dynamic_audio` - 创建动态音效
- `mix_audio_tracks` - 混合音频轨道
- `configure_3d_audio` - 配置3D音效
- `optimize_audio_compression` - 优化音频压缩

### 用户体验工具
- `create_transition_animation` - 创建过渡动画
- `setup_haptic_feedback` - 设置触觉反馈
- `implement_accessibility` - 实现无障碍功能
- `create_tutorial_system` - 创建教程系统

### 发布准备工具
- `generate_app_icon` - 生成应用图标
- `create_screenshot_tool` - 创建截图工具
- `setup_localization` - 设置本地化
- `configure_store_listing` - 配置商店信息

## 视觉效果增强系统

### 智能光照系统
```gdscript
# 智能光照管理器
class_name SmartLightingManager extends Node
@export var enable_dynamic_shadows: bool = true
@export var ambient_light_color: Color = Color(0.3, 0.3, 0.4, 1.0)
@export var time_of_day_system: bool = true

var main_light: DirectionalLight3D
var ambient_light: WorldEnvironment

func _ready() -> void:
    _setup_lighting_system()
    if time_of_day_system:
        _start_time_cycle()

func _setup_lighting_system() -> void:
    # 主光源设置
    main_light = DirectionalLight3D.new()
    add_child(main_light)
    main_light.light_color = Color.WHITE
    main_light.light_energy = 1.0

    if enable_dynamic_shadows:
        main_light.shadow_enabled = true
        main_light.shadow_bias = 0.1

    # 环境光设置
    ambient_light = WorldEnvironment.new()
    add_child(ambient_light)
    var environment = Environment.new()
    ambient_light.environment = environment

    environment.ambient_light_color = ambient_light_color
    environment.ambient_light_sky_contribution = 0.5

func enhance_visual_effects() -> void:
    # 添加屏幕空间反射
    var environment = ambient_light.environment
    environment.ssr_enabled = true
    environment.ssr_max_steps = 64

    # 添加泛光效果
    environment.glow_enabled = true
    environment.glow_intensity = 1.0
    environment.glow_bloom = 0.2

    # 添加景深效果
    environment.dof_blur_far_enabled = true
    environment.dof_blur_far_distance = 50.0
    environment.dof_blur_far_amount = 0.3

func _start_time_cycle() -> void:
    var time_timer = Timer.new()
    time_timer.timeout.connect(_update_time_of_day)
    time_timer.wait_time = 60.0  # 每分钟更新一次
    time_timer.autostart = true
    add_child(time_timer)

func _update_time_of_day() -> void:
    var current_time = Time.get_datetime_dict_from_system()
    var hour = current_time.hour
    var minute = current_time.minute

    # 根据时间调整光照
    var sun_angle = (hour + minute / 60.0) / 24.0 * 2.0 * PI - PI / 2
    main_light.rotation = Vector3(sun_angle, 0, 0)

    # 调整光照颜色和强度
    if hour >= 6 and hour < 12:  # 早晨到中午
        main_light.light_color = Color.YELLOW
        main_light.light_energy = 1.2
    elif hour >= 12 and hour < 18:  # 下午
        main_light.light_color = Color.WHITE
        main_light.light_energy = 1.0
    elif hour >= 18 and hour < 21:  # 傍晚
        main_light.light_color = Color.ORANGE
        main_light.light_energy = 0.8
    else:  # 夜晚
        main_light.light_color = Color.BLUE
        main_light.light_energy = 0.3
```

### 高级粒子特效系统
```gdscript
# 高级粒子特效管理器
class_name AdvancedEffectManager extends Node
@export var effect_library: Dictionary = {}

func _ready() -> void:
    _create_effect_library()

func _create_effect_library() -> void:
    # 创建各种预定义特效
    effect_library["magic_explosion"] = create_magic_explosion_effect()
    effect_library["fire_trail"] = create_fire_trail_effect()
    effect_library["ice_shard"] = create_ice_shard_effect()
    effect_library["healing_aura"] = create_healing_aura_effect()

func create_magic_explosion_effect() -> GPUParticles3D:
    var explosion = GPUParticles3D.new()
    explosion.emitting = false
    explosion.one_shot = true

    # 配置爆炸粒子材质
    var material = ParticleProcessMaterial.new()
    material.direction = Vector3.UP
    material.spread = 45.0
    material.initial_velocity_min = 5.0
    material.initial_velocity_max = 15.0
    material.gravity = Vector3.DOWN * 9.8
    material.scale_min = 0.1
    material.scale_max = 0.5

    # 颜色渐变:从白色到紫色到透明
    var color_gradient = Gradient.new()
    color_gradient.add_color_point(0.0, Color.WHITE)
    color_gradient.add_color_point(0.3, Color.MAGENTA)
    color_gradient.add_color_point(0.7, Color.PURPLE)
    color_gradient.add_color_point(1.0, Color.TRANSPARENT)

    material.color = color_gradient
    explosion.process_material = material

    # 配置粒子数量和生命周期
    explosion.amount = 200
    explosion.lifetime = 2.0
    explosion.explosiveness = 0.8

    return explosion

func play_effect(effect_name: String, position: Vector3) -> void:
    var effect_template = effect_library.get(effect_name)
    if not effect_template:
        push_warning("Effect not found: " + effect_name)
        return

    var effect_instance = effect_template.duplicate()
    effect_instance.global_position = position
    get_tree().current_scene.add_child(effect_instance)
    effect_instance.emitting = true

    # 自动清理
    await effect_instance.finished
    effect_instance.queue_free()

func enhance_environment_effects() -> void:
    # 添加环境动态效果
    add_floating_particles()
    add_atmospheric_glow()
    add_dynamic_fog()

func add_floating_particles() -> void:
    var floating_particles = GPUParticles3D.new()
    floating_particles.position = Vector3(0, 10, 0)
    floating_particles.emitting = true

    var material = ParticleProcessMaterial.new()
    material.direction = Vector3.UP
    material.spread = 360.0
    material.initial_velocity_min = 0.5
    material.initial_velocity_max = 2.0
    material.gravity = Vector3.ZERO

    floating_particles.process_material = material
    floating_particles.amount = 50
    floating_particles.lifetime = 10.0

    get_tree().current_scene.add_child(floating_particles)
```

## 音效系统优化

### 动态音效管理器
```gdscript
# 动态音效管理器
class_name DynamicAudioManager extends Node
@export var master_bus_index: int = 0
@export var sfx_bus_index: int = 1
@export var music_bus_index: int = 2

var adaptive_audio_system: AdaptiveAudioSystem
var environmental_audio: EnvironmentalAudioSystem
var audio_mixer: SmartAudioMixer

func _ready() -> void:
    _setup_audio_systems()

func _setup_audio_systems() -> void:
    adaptive_audio_system = AdaptiveAudioSystem.new()
    environmental_audio = EnvironmentalAudioSystem.new()
    audio_mixer = SmartAudioMixer.new()

    add_child(adaptive_audio_system)
    add_child(environmental_audio)
    add_child(audio_mixer)

func enhance_audio_experience() -> void:
    # 实现情境感知音效
    adaptive_audio_system.enable_context_aware_effects()

    # 创建环境音效层次
    environmental_audio.create_atmospheric_layers()

    # 优化音频混合
    audio_mixer.optimize_frequency_spectrum()

# 自适应音频系统
class AdaptiveAudioSystem extends Node
var current_game_state: String = "normal"
var audio_context: Dictionary = {}

func enable_context_aware_effects() -> void:
    # 根据游戏状态调整音效
    set_process(true)

func _process(_delta: float) -> void:
    var game_state = detect_game_state()
    if game_state != current_game_state:
        update_audio_for_state(game_state)
        current_game_state = game_state

func detect_game_state() -> String:
    # 检测当前游戏状态
    var player = get_tree().get_first_node_in_group("player")
    if not player:
        return "normal"

    var health = player.get("health") if player.has_method("get") else 100

    if health < 30:
        return "critical_health"
    elif health < 60:
        return "low_health"
    elif player.get("in_combat", false):
        return "combat"
    else:
        return "normal"

func update_audio_for_state(state: String) -> void:
    match state:
        "critical_health":
            apply_critical_health_audio()
        "low_health":
            apply_low_health_audio()
        "combat":
            apply_combat_audio()
        _:
            apply_normal_audio()

func apply_critical_health_audio() -> void:
    # 添加心跳声
    play_heartbeat_sound()
    # 压低背景音乐
    AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Music"), -10.0)
    # 增强音效
    AudioServer.set_bus_volume_db(AudioServer.get_bus_index("SFX"), 3.0)
```

### 3D空间音效系统
```gdscript
# 3D空间音效系统
class_name SpatialAudioSystem extends Node
@export var max_audio_distance: float = 50.0
@export var audio_attenuation_curve: Curve

var audio_listener: AudioListener3D
var spatial_audio_sources: Dictionary = {}

func _ready() -> void:
    _setup_audio_listener()

func _setup_audio_listener() -> void:
    audio_listener = AudioListener3D.new()
    var player = get_tree().get_first_node_in_group("player")
    if player:
        player.add_child(audio_listener)

func play_spatial_sound(sound_path: String, position: Vector3) -> void:
    var audio_player = AudioStreamPlayer3D.new()
    audio_player.stream = load(sound_path)
    audio_player.global_position = position

    # 配置3D音效参数
    audio_player.max_distance = max_audio_distance
    audio_player.unit_size = 1.0
    audio_player.attenuation_model = AudioStreamPlayer3D.ATTENUATION_INVERSE_DISTANCE

    if audio_attenuation_curve:
        audio_player.attenuation_filter_cutoff_hz = audio_attenuation_curve.sample(
            position.distance_to(audio_listener.global_position) / max_audio_distance
        ) * 20000.0

    get_tree().current_scene.add_child(audio_player)
    audio_player.play()

    await audio_player.finished
    audio_player.queue_free()

func create_environmental_reverb(area: Area3D, reverb_preset: AudioEffectReverb.ReverbPreset) -> void:
    var reverb = AudioEffectReverb.new()
    reverb.preset = reverb_preset

    var audio_bus_name = "Reverb_" + str(area.get_instance_id())
    var bus_index = AudioServer.bus_count
    AudioServer.add_bus(bus_index)
    AudioServer.set_bus_name(bus_index, audio_bus_name)
    AudioServer.add_bus_effect(bus_index, reverb)

    # 连接区域检测
    area.body_entered.connect(_on_reverb_area_entered.bind(bus_index))
    area.body_exited.connect(_on_reverb_area_exited.bind(bus_index))

func _on_reverb_area_entered(bus_index: int, body: Node3D) -> void:
    if body.is_in_group("player"):
        var player_audio = body.find_child("AudioPlayer", true, false)
        if player_audio:
            player_audio.bus = AudioServer.get_bus_name(bus_index)
```

## 用户体验改进系统

### 流畅过渡系统
```gdscript
# 流畅过渡管理器
class_name SmoothTransitionManager extends Node
@export var default_transition_duration: float = 0.5
@export var transition_curve: Tween.TransitionType = Tween.TRANS_CUBIC

var active_transitions: Dictionary = {}

func _ready() -> void:
    # 连接场景切换信号
    get_tree().changing_scene.connect(_on_scene_changing)

func transition_scene(new_scene_path: String, transition_type: String = "fade") -> void:
    var transition_node = create_transition(transition_type)
    get_tree().current_scene.add_child(transition_node)

    await transition_node.play_transition()
    get_tree().change_scene_to_file(new_scene_path)
    await transition_node.play_reverse_transition()
    transition_node.queue_free()

func create_transition(type: String) -> Control:
    match type:
        "fade":
            return create_fade_transition()
        "slide":
            return create_slide_transition()
        "circle":
            return create_circle_transition()
        _:
            return create_fade_transition()

func create_fade_transition() -> Control:
    var fade_overlay = ColorRect.new()
    fade_overlay.color = Color.BLACK
    fade_overlay.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
    fade_overlay.mouse_filter = Control.MOUSE_FILTER_IGNORE

    var tween = create_tween()
    fade_overlay.set_script(preload("res://scripts/transitions/fade_transition.gd"))
    fade_overlay.tween = tween

    return fade_overlay

# 淡入淡出过渡脚本
extends Control
@export var tween: Tween
@export var duration: float = 0.5

func play_transition() -> void:
    modulate.a = 0.0
    tween.tween_property(self, "modulate:a", 1.0, duration)\
        .set_trans(Tween.TRANS_CUBIC)\
        .set_ease(Tween.EASE_IN_OUT)
    await tween.finished

func play_reverse_transition() -> void:
    modulate.a = 1.0
    tween.tween_property(self, "modulate:a", 0.0, duration)\
        .set_trans(Tween.TRANS_CUBIC)\
        .set_ease(Tween.EASE_IN_OUT)
    await tween.finished
```

### 手感和反馈系统
```gdscript
# 手感和反馈系统
class_name HapticFeedbackSystem extends Node
@export var vibration_duration: float = 0.1
@export var vibration_intensity: float = 0.5

func _ready() -> void:
    if OS.has_feature("mobile"):
        Input.set_use_accumulated_input(false)

func play_feedback(feedback_type: String, intensity: float = 1.0) -> void:
    match feedback_type:
        "button_press":
            play_button_feedback(intensity)
        "impact":
            play_impact_feedback(intensity)
        "success":
            play_success_feedback(intensity)
        "failure":
            play_failure_feedback(intensity)

func play_button_feedback(intensity: float) -> void:
    # 轻微震动表示按钮按下
    if OS.has_feature("mobile"):
        Input.vibrate_handheld(50, intensity * vibration_intensity)

    # 视觉反馈
    var current_focus = get_viewport().gui_get_focus_owner()
    if current_focus and current_focus has Button:
        var button = current_focus as Button
        create_button_press_effect(button)

func create_button_press_effect(button: Button) -> void:
    var original_scale = button.scale
    var tween = create_tween()

    # 按下效果
    tween.tween_property(button, "scale", original_scale * 0.95, 0.05)
    tween.tween_property(button, "scale", original_scale * 1.05, 0.1)
    tween.tween_property(button, "scale", original_scale, 0.05)

func enhance_interaction_feedback() -> void:
    # 为所有交互元素添加反馈
    var buttons = get_tree().get_nodes_in_group("interactable")
    for button in buttons:
        if button is BaseButton:
            button.pressed.connect(_on_interactable_pressed.bind(button))
            button.mouse_entered.connect(_on_interactable_hover.bind(button))

func _on_interactable_pressed(button: BaseButton) -> void:
    play_feedback("button_press")
    create_press_animation(button)

func _on_interactable_hover(button: BaseButton) -> void:
    play_feedback("hover")
    create_hover_effect(button)
```

## 成品包装系统

### 图标和素材生成器
```gdscript
# 图标和素材生成器
class_name IconAndAssetGenerator extends Node
@export var game_name: String = "MyGame"
@export var game_theme_color: Color = Color.BLUE

func generate_app_icons() -> void:
    var icon_sizes = [16, 32, 48, 64, 128, 256, 512, 1024]

    for size in icon_sizes:
        var icon_texture = generate_icon_texture(size)
        save_icon(icon_texture, size)

func generate_icon_texture(size: int) -> ImageTexture:
    var image = Image.create(size, size, false, Image.FORMAT_RGBA8)

    # 创建渐变背景
    for y in range(size):
        for x in range(size):
            var center = Vector2(size / 2.0, size / 2.0)
            var distance = center.distance_to(Vector2(x, y))
            var normalized_distance = distance / (size / 2.0)

            var color = game_theme_color.lerp(Color.BLACK, normalized_distance * 0.7)
            image.set_pixel(x, y, color)

    # 添加游戏名称缩写
    var abbreviation = game_name.substr(0, min(3, game_name.length()))
    # 这里可以使用Godot的绘图API添加文字

    var texture = ImageTexture.new()
    texture.set_image(image)
    return texture

func save_icon(texture: ImageTexture, size: int) -> void:
    var image = texture.get_image()
    var save_path = "res://export/icons/icon_" + str(size) + "x" + str(size) + ".png"
    image.save_png(save_path)

func create_screenshots() -> Array[String]:
    var screenshot_paths: Array[String] = []

    # 定义要截图的场景
    var screenshot_scenes = [
        "res://scenes/main_menu.tscn",
        "res://scenes/gameplay.tscn",
        "res://scenes/settings.tscn"
    ]

    for scene_path in screenshot_scenes:
        var screenshot_path = capture_screenshot(scene_path)
        if screenshot_path:
            screenshot_paths.append(screenshot_path)

    return screenshot_paths

func capture_screenshot(scene_path: String) -> String:
    # 切换到指定场景
    get_tree().change_scene_to_file(scene_path)
    await get_tree().process_frame

    # 等待场景稳定
    await get_tree().create_timer(1.0).timeout

    # 截图
    var screenshot = get_viewport().get_texture().get_image()
    var save_path = "res://export/screenshots/" + scene_path.get_file().get_basename() + ".png"
    screenshot.save_png(save_path)

    return save_path
```

### 营销素材制作器
```gdscript
# 营销素材制作器
class_name MarketingAssetGenerator extends Node
@export var game_description: String = ""
@export var feature_list: Array[String] = []

func create_store_listing() -> Dictionary:
    var listing = {
        "title": get_game_title(),
        "description": generate_compelling_description(),
        "features": format_feature_list(),
        "screenshots": get_screenshot_paths(),
        "tags": generate_relevant_tags(),
        "categories": suggest_categories()
    }

    return listing

func generate_compelling_description() -> String:
    var description = game_description

    # 添加吸引人的开头
    if not description.begins_with("Experience") and not description.begins_with("Dive"):
        description = "Experience an unforgettable adventure in " + description

    # 添加特性亮点
    description += "\n\nKey Features:\n"
    for feature in feature_list:
        description += "• " + feature + "\n"

    return description

func create_promotional_video() -> String:
    var video_path = "res://export/videos/promotional_video.mp4"

    # 创建游戏录制脚本
    var recording_script = create_recording_script()
    execute_recording_sequence(recording_script)

    return video_path

func create_recording_script() -> Array[Dictionary]:
    var script = [
        {
            "scene": "res://scenes/main_menu.tscn",
            "duration": 3.0,
            "actions": ["hover_buttons", "click_start"]
        },
        {
            "scene": "res://scenes/gameplay.tscn",
            "duration": 10.0,
            "actions": ["showcase_gameplay", "highlight_features"]
        },
        {
            "scene": "res://scenes/climax_moment.tscn",
            "duration": 5.0,
            "actions": ["dramatic_camera", "slow_motion"]
        }
    ]

    return script

func execute_recording_sequence(script: Array[Dictionary]) -> void:
    # 实现录制序列逻辑
    for sequence in script:
        await record_sequence(sequence)
```

## 智能特性

### 自动质量评估
- **视觉质量评分**:自动评估游戏视觉质量
- **音频质量分析**:分析音频体验和平衡
- **用户体验指标**:计算用户体验指数
- **商业化建议**:提供商业化改进建议

### 智能美化建议
- **色彩优化**:智能色彩搭配建议
- **音效增强**:音效改进和增强建议
- **交互优化**:交互体验优化方案
- **市场定位**:目标用户和市场定位建议

### 个性化定制
- **风格适配**:根据游戏类型定制美化风格
- **平台适配**:针对不同平台的特色优化
- **用户偏好**:根据用户偏好调整美化策略
- **文化适配**:考虑不同文化背景的设计

## 示例实现

### 完整产品美化系统
```gdscript
# 完整产品美化系统
class_name ComprehensiveProductPolisher extends Node
@export var polish_level: PolishLevel = PolishLevel.HIGH

enum PolishLevel {
    BASIC,
    STANDARD,
    HIGH,
    PREMIUM
}

var lighting_manager: SmartLightingManager
var effect_manager: AdvancedEffectManager
var audio_manager: DynamicAudioManager
var transition_manager: SmoothTransitionManager
var feedback_system: HapticFeedbackSystem
var asset_generator: IconAndAssetGenerator

func _ready() -> void:
    _initialize_polishing_systems()

func _initialize_polishing_systems() -> void:
    # 初始化各个美化系统
    lighting_manager = SmartLightingManager.new()
    effect_manager = AdvancedEffectManager.new()
    audio_manager = DynamicAudioManager.new()
    transition_manager = SmoothTransitionManager.new()
    feedback_system = HapticFeedbackSystem.new()
    asset_generator = IconAndAssetGenerator.new()

    add_child(lighting_manager)
    add_child(effect_manager)
    add_child(audio_manager)
    add_child(transition_manager)
    add_child(feedback_system)
    add_child(asset_generator)

func apply_comprehensive_polish() -> void:
    print("Starting comprehensive product polishing...")

    match polish_level:
        PolishLevel.BASIC:
            await apply_basic_polish()
        PolishLevel.STANDARD:
            await apply_standard_polish()
        PolishLevel.HIGH:
            await apply_high_polish()
        PolishLevel.PREMIUM:
            await apply_premium_polish()

func apply_high_polish() -> void:
    # 视觉效果增强
    lighting_manager.enhance_visual_effects()
    effect_manager.enhance_environment_effects()

    # 音效系统优化
    audio_manager.enhance_audio_experience()

    # 用户体验改进
    transition_manager.enhance_all_transitions()
    feedback_system.enhance_interaction_feedback()

    # 成品包装制作
    asset_generator.generate_app_icons()
    asset_generator.create_screenshots()

func generate_polish_report() -> Dictionary:
    var report = {
        "visual_quality_score": calculate_visual_quality(),
        "audio_quality_score": calculate_audio_quality(),
        "ux_quality_score": calculate_ux_quality(),
        "market_readiness_score": calculate_market_readiness(),
        "improvement_suggestions": get_improvement_suggestions()
    }

    return report

func calculate_visual_quality() -> float:
    # 计算视觉质量评分
    var lighting_score = 0.9 if lighting_manager else 0.5
    var effects_score = 0.85 if effect_manager else 0.4
    var performance_score = calculate_performance_score()

    return (lighting_score + effects_score + performance_score) / 3.0

func get_improvement_suggestions() -> Array[String]:
    var suggestions: Array[String] = []

    var visual_score = calculate_visual_quality()
    if visual_score < 0.8:
        suggestions.append("Consider enhancing lighting effects and particle systems")

    var audio_score = calculate_audio_quality()
    if audio_score < 0.8:
        suggestions.append("Add more dynamic audio effects and environmental sounds")

    var ux_score = calculate_ux_quality()
    if ux_score < 0.8:
        suggestions.append("Improve transition animations and user feedback")

    return suggestions
```

## 质量保证

### 美化效果验证
- **视觉一致性**:确保整体视觉风格统一
- **性能影响**:确保美化不影响性能
- **用户体验**:验证用户体验改善效果
- **平台兼容**:确保各平台美化效果一致

### 商业化准备
- **商店要求**:符合各应用商店的要求
- **法律法规**:遵守相关法律法规
- **用户反馈**:收集和响应用户反馈
- **竞争分析**:分析竞争对手产品

### 持续改进
- **数据收集**:收集使用数据和反馈
- **效果评估**:定期评估美化效果
- **迭代优化**:基于反馈持续优化
- **趋势跟随**:跟进行业和设计趋势

## 使用限制和注意事项

### 技术限制
- **硬件要求**:高级特效可能需要较高硬件配置
- **性能平衡**:需要在美化和性能之间找到平衡
- **平台差异**:不同平台的渲染能力差异

### 最佳实践
- **渐进增强**:从基础到高级逐步增强
- **用户中心**:以用户体验为中心进行美化
- **性能优先**:确保美化不影响核心性能

## 故障排除

### 常见问题
1. **帧率下降**:检查特效和后处理设置
2. **音频问题**:验证音频总线配置
3. **界面卡顿**:检查过渡动画复杂度
4. **素材生成失败**:检查文件路径和权限

### 调试技巧
- 使用性能监控工具
- 分阶段启用美化效果
- 收集用户使用反馈
- 对比美化前后的表现

## 更新日志

### v1.0.0 (当前版本)
- 基础视觉效果增强
- 音效系统优化
- 用户体验改进
- 成品包装功能

### 计划功能
- AI驱动美化建议
- 更多平台适配
- 高级特效模板
- 实时美化预览

---

**技能状态**: ✅ 可用
**最后更新**: 2025-11-09
**兼容性**: Godot 4.5+
**依赖**: Godot MCP 工具集 + 游戏设计美化知识

Overview

This skill is a Godot product polisher that turns playable prototypes into polished game builds. It automates visual enhancements, audio improvements, UX refinements, and release-ready packaging based on natural language instructions. The goal is to elevate aesthetic quality and player experience with practical, engine-ready solutions.

How this skill works

You describe the desired improvements in plain language and the skill maps requests to concrete Godot patterns: lighting, particles, post-processing, adaptive audio, transitions, haptics, accessibility, and packaging tools. It generates actionable changes and scripts (shaders, audio managers, transition controllers) and recommends priorities and configurations for a smooth integration into your project.

When to use it

  • When a prototype looks functional but lacks visual polish or atmosphere
  • Before a public demo or store submission to create marketing assets and icons
  • When audio feels flat and needs dynamic, context-aware sound design
  • To add smooth transitions, haptics, and accessibility for better UX
  • When preparing multi-platform builds and localized releases

Best practices

  • Start with a short product analysis to set priorities (visuals, audio, UX, packaging)
  • Apply changes incrementally and test on target devices to tune performance
  • Use environment-level post-processing sparingly to retain clarity
  • Balance audio bus volumes and test spatial audio with a real listener node
  • Keep shaders and particle counts optimized for your worst-case hardware

Example use cases

  • Upgrade flat scenes with dynamic directional lighting, SSR, glow, and DOF for cinematic presentation
  • Add context-aware audio that lowers music and adds heartbeats when player health is low
  • Create advanced particle effects (explosions, trails, ambient floats) that spawn and auto-clean
  • Implement smooth scene transitions and tutorial systems to improve onboarding
  • Generate app icons, screenshots, and store metadata for a submission-ready build

FAQ

Will these changes hurt performance on low-end devices?

The skill recommends performance-friendly variants and tunable parameters. Always profile on your target devices and reduce shader complexity, particle counts, and post-processing as needed.

Can I customize generated shaders and audio behaviors?

Yes. The outputs are engine-ready scripts and assets designed to be editable so you can adjust visuals, curves, and audio mixing to taste.