Skip to content

Latest commit

 

History

History
461 lines (323 loc) · 10.6 KB

File metadata and controls

461 lines (323 loc) · 10.6 KB

时间系统使用指南

概述

本项目已成功集成了完整的游戏时间系统,支持时间加速、时间控制和时间管理功能。现在可以实现"现实 1 小时 = 游戏 1 天"的时间加速效果。

系统功能

1. 游戏时间管理器 (GameTimeManager)

时间加速功能

  • 暂停时间 - 时间速度为 0,所有游戏时间相关事件暂停
  • 正常速度 - 时间速度为 1x,与现实时间同步
  • 加速播放 - 时间速度可调节,最高 24x
  • 预设速度 - 提供多种预设时间速度

时间控制功能

  • 时间跳转 - 跳转到下一个整点或下一天
  • 时间显示 - 实时显示游戏时间和日期
  • 时间统计 - 提供详细的时间统计信息

时间数据

# 游戏时间数据
class GameTimeData:
    var total_seconds: float = 0.0
    var days: int = 0
    var hours: int = 9  # 默认从9点开始
    var minutes: int = 0
    var seconds: int = 0

2. 时间加速定时器 (TimeAcceleratedTimer)

定时器类型

  • 现实时间定时器 - 不受时间加速影响
  • 游戏时间定时器 - 受时间加速影响

定时器功能

  • 自动适配 - 根据时间速度自动调整
  • 状态管理 - 支持暂停、恢复、重置
  • 进度跟踪 - 提供剩余时间和进度信息

3. 时间控制 UI (TimeControlUI)

UI 功能

  • 时间显示 - 实时显示游戏时间和状态
  • 速度控制 - 滑块控制时间速度
  • 快捷按钮 - 暂停、播放、快进、超快进
  • 预设按钮 - 快速设置常用时间速度
  • 跳转功能 - 跳转到下一个整点或下一天

快捷键

  • T 键 - 切换时间控制 UI 显示
  • 空格键 - 暂停/恢复时间
  • 数字键 1-4 - 设置预设时间速度
  • 数字键 0 - 暂停时间

使用方法

1. 基本时间控制

设置时间速度

# 获取时间管理器
var game_time_manager = get_node("/root/GameTimeManager")

# 设置时间速度
game_time_manager.set_time_speed(6.0)  # 6倍速度

# 使用预设速度
game_time_manager.set_time_speed_preset(GameTimeManager.TimeSpeedPreset.VERY_FAST)

时间控制

# 暂停时间
game_time_manager.pause_time()

# 恢复时间
game_time_manager.resume_time()

# 快进时间
game_time_manager.fast_forward_time()

# 超快进时间
game_time_manager.ultra_fast_forward_time()

时间跳转

# 跳转到下一个整点
game_time_manager.jump_to_next_hour()

# 跳转到下一天
game_time_manager.jump_to_next_day()

# 跳转到指定时间
game_time_manager.jump_to_time(14, 30, 0)  # 14:30:00

2. 时间信息获取

获取当前时间

# 获取时间数据
var time_data = game_time_manager.get_current_game_time()
print("当前时间: %s" % time_data.get_formatted_date())

# 获取格式化时间
var formatted_time = game_time_manager.get_formatted_game_time()
print("格式化时间: %s" % formatted_time)

获取时间状态

# 获取时间速度
var speed = game_time_manager.get_time_speed()
print("时间速度: %.1fx" % speed)

# 获取时间状态
var state = game_time_manager.get_time_state()
print("时间状态: %s" % GameTimeManager.TimeState.keys()[state])

# 获取状态描述
var description = game_time_manager.get_time_state_description()
print("状态描述: %s" % description)

获取时间统计

# 获取时间统计信息
var stats = game_time_manager.get_time_statistics()
print("现实时间: %.1f秒" % stats.real_time_elapsed)
print("游戏时间: %.1f秒" % stats.game_time_elapsed)
print("效率比: %.2fx" % stats.efficiency_ratio)

3. 时间加速定时器

创建定时器

# 创建游戏时间定时器
var game_timer = TimeAcceleratedTimer.create_game_time_timer(60.0, false)
add_child(game_timer)
game_timer.timeout.connect(_on_timer_timeout)

# 创建现实时间定时器
var real_timer = TimeAcceleratedTimer.create_real_time_timer(60.0, false)
add_child(real_timer)
real_timer.timeout.connect(_on_timer_timeout)

定时器控制

# 启动定时器
timer.start()

# 停止定时器
timer.stop()

# 暂停定时器
timer.pause()

# 恢复定时器
timer.resume()

# 重置定时器
timer.reset()

定时器信息

# 获取剩余时间
var time_left = timer.get_time_left()
print("剩余时间: %.1f秒" % time_left)

# 获取总时间
var total_time = timer.get_total_time()
print("总时间: %.1f秒" % total_time)

# 获取进度
var progress = timer.get_progress()
print("进度: %.1f%%" % (progress * 100))

4. 时间控制 UI

显示 UI

# 获取时间控制UI
var time_control_ui = get_node("/root/TimeControlUI")

# 显示UI
time_control_ui.show_time_control()

# 隐藏UI
time_control_ui.hide_time_control()

# 切换UI显示
time_control_ui.toggle_ui()

UI 设置

# 设置自动隐藏
time_control_ui.set_auto_hide(true)

# 获取时间统计
var stats = time_control_ui.get_time_statistics()

# 导出时间数据
var time_data = time_control_ui.export_time_data()

系统集成

1. 现有系统适配

工资系统

  • 工资发放定时器已适配游戏时间
  • 每小时发放一次工资(游戏时间)
  • 时间加速时,工资发放频率相应增加

AI 决策系统

  • AI 决策定时器已适配游戏时间
  • 每分钟进行一次决策(游戏时间)
  • 时间加速时,AI 决策频率相应增加

绩效系统

  • 绩效评估定时器已适配游戏时间
  • 每 5 分钟评估一次(游戏时间)
  • 时间加速时,绩效评估频率相应增加

交易系统

  • 价格更新定时器已适配游戏时间
  • 每 5 分钟更新一次价格(游戏时间)
  • 时间加速时,价格更新频率相应增加

2. 时间事件系统

时间变化事件

# 连接时间变化信号
game_time_manager.time_speed_changed.connect(_on_time_speed_changed)
game_time_manager.time_state_changed.connect(_on_time_state_changed)
game_time_manager.game_time_updated.connect(_on_game_time_updated)
game_time_manager.day_changed.connect(_on_day_changed)
game_time_manager.hour_changed.connect(_on_hour_changed)

事件处理

func _on_time_speed_changed(new_speed: float):
    print("时间速度变化: %.1fx" % new_speed)

func _on_day_changed(new_day: int):
    print("新的一天开始: 第%d天" % (new_day + 1))

func _on_hour_changed(new_hour: int):
    print("时间变化: %02d:00" % new_hour)

3. 数据记录系统

时间日志

  • 所有时间变化都会记录到综合日志系统
  • 包括时间速度变化、天数变化、小时变化等
  • 支持时间数据的导出和分析

时间统计

  • 提供详细的时间统计信息
  • 包括现实时间、游戏时间、效率比等
  • 支持时间数据的可视化分析

时间加速效果

1. 加速倍数对照表

时间速度 现实时间 游戏时间 效果描述
0.0x 1 小时 0 小时 暂停
0.5x 1 小时 0.5 小时 慢速
1.0x 1 小时 1 小时 正常
2.0x 1 小时 2 小时 快速
6.0x 1 小时 6 小时 快进
24.0x 1 小时 1 天 超快进

2. 实际应用场景

科研观察

  • 使用 24x 速度快速观察长期行为模式
  • 现实 1 小时 = 游戏 1 天
  • 适合观察 AI 角色的长期发展

游戏测试

  • 使用 6x 速度进行功能测试
  • 现实 10 分钟 = 游戏 1 小时
  • 适合测试各种游戏机制

实时观察

  • 使用 1x 速度进行实时观察
  • 现实时间 = 游戏时间
  • 适合观察 AI 角色的实时行为

3. 系统性能

时间加速对性能的影响

  • 时间加速不会显著影响游戏性能
  • 定时器频率增加,但计算量相对较小
  • 建议在性能较好的设备上使用高倍速

内存使用

  • 时间系统内存占用很小
  • 时间数据存储效率高
  • 支持长时间运行

测试和验证

1. 运行测试

# 在Godot中运行测试脚本
var test_script = preload("res://test_time_system.gd").new()
get_tree().root.add_child(test_script)
test_script.run_all_tests()

2. 测试内容

  • 时间管理器功能测试
  • 时间加速效果测试
  • 定时器适配测试
  • UI 界面测试
  • 系统集成测试

3. 验证方法

  • 观察时间显示是否正确
  • 检查定时器是否按预期工作
  • 验证时间加速效果
  • 测试 UI 功能是否正常

故障排除

1. 常见问题

时间不更新

  • 检查 GameTimeManager 是否正确初始化
  • 确认时间速度不为 0
  • 检查定时器是否正常启动

定时器不工作

  • 检查 TimeAcceleratedTimer 是否正确创建
  • 确认定时器类型设置正确
  • 检查信号连接是否正确

UI 不显示

  • 检查 TimeControlUI 是否正确创建
  • 确认 UI 节点路径正确
  • 检查显示/隐藏逻辑

2. 调试信息

系统会在控制台输出详细的调试信息:

[GameTimeManager] 游戏时间管理器已初始化
[TimeAcceleratedTimer] 定时器启动: 60.00秒 (GAME_TIME)
[TimeControlUI] 时间控制UI已初始化
[TimeSystemIntegration] 时间系统集成完成

3. 性能监控

时间统计

# 获取时间统计信息
var stats = game_time_manager.get_time_statistics()
print("效率比: %.2fx" % stats.efficiency_ratio)

系统状态

# 获取系统状态
var status = time_system_integration.get_time_system_status()
print("系统状态: %s" % str(status))

扩展功能

1. 自定义时间事件

# 添加自定义时间事件
func _on_game_time_updated(time_data: GameTimeData):
    if time_data.hours == 12 and time_data.minutes == 0:
        # 中午12点事件
        trigger_lunch_event()

2. 时间相关任务

# 创建时间相关任务
func create_time_based_task():
    var task_timer = TimeAcceleratedTimer.create_game_time_timer(3600.0, true)
    task_timer.timeout.connect(_on_task_completed)
    task_timer.start()

3. 时间数据分析

# 分析时间数据
func analyze_time_data():
    var time_data = game_time_manager.export_time_data()
    # 分析游戏时间分布
    # 分析时间加速效果
    # 生成时间报告

总结

时间系统为 Microverse 项目增加了强大的时间控制功能,不仅实现了"现实 1 小时 = 游戏 1 天"的时间加速效果,更为科研应用提供了灵活的时间管理工具。通过时间加速,可以快速观察 AI 角色的长期行为模式,收集丰富的时间相关数据,为 AI 研究提供宝贵的时间维度支持。