j36a2 2024-05-21 22:57 采纳率: 12.5%
浏览 1

如何自动测试电脑游戏效能?

如何自动测试电脑游戏效能?
许多UP主都用赛博庞克:2077跟CS2测试CPU跟显卡效能,他们看起来是自动化测试,有人知道是用什么方法达成的吗?或是有人有现成的自动化测试脚本可以参考吗?谢谢

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-21 22:57
    关注

    引自免费微信小程序:皆我百晓生

    要实现自动测试电脑游戏性能,你需要一个能够运行游戏、记录帧率并分析结果的工具。这里有一个基本的步骤指南以及一个Python示例脚本来帮你开始。

    步骤1:安装必要的库 首先,你需要安装一些Python库来控制鼠标和键盘(pyautogui),读取GPU和CPU信息(psutil)以及处理图形数据(matplotlib)。在命令行中运行以下命令进行安装:

    pip install pyautogui psutil matplotlib
    

    步骤2:编写自动化脚本 下面是一个简单的Python脚本,它会启动《赛博朋克2077》游戏,运行一段时间,然后计算平均帧率。这个脚本只是一个基础模板,你需要根据实际情况调整游戏路径、截图频率以及测试时长等参数。

    import time
    import os
    import pyautogui
    import psutil
    import matplotlib.pyplot as plt
    
    # 游戏启动路径(根据你的实际位置修改)
    game_path = r"C:\path\to\Cyberpunk 2077.exe"
    
    # 按钮点击间隔(单位:秒)
    click_interval = 5
    # 测试时长(单位:秒)
    test_duration = 60
    # 截图频率(单位:每秒多少次)
    screenshot_freq = 1
    
    def start_game():
        # 点击游戏图标启动游戏
        pyautogui.click(game_path)
    
    def take_screenshot_and_count_fps():
        # 在游戏中截屏并保存到临时文件
        screenshot = pyautogui.screenshot()
        screenshot.save("temp.png")
    
        # 使用第三方库(如framerate-calculation)计算帧率
        # 这里仅作为示例,实际操作可能需要其他方法
        fps = calculate_frame_rate("temp.png")  # 假设calculate_frame_rate是从图片中计算帧率的函数
    
        return fps
    
    def main():
        print("Starting game...")
        start_game()
    
        fps_list = []
        for _ in range(int(test_duration / click_interval)):
            time.sleep(click_interval)
            fps = take_screenshot_and_count_fps()
            fps_list.append(fps)
    
        average_fps = sum(fps_list) / len(fps_list)
        print(f"Average FPS during the test: {average_fps}")
    
        # 绘制帧率曲线
        plt.plot(range(len(fps_list)), fps_list, label="Frame Rate")
        plt.xlabel("Time (seconds)")
        plt.ylabel("Frames per second")
        plt.title("Cyberpunk 2077 Frame Rate Test")
        plt.legend()
        plt.show()
    
    if __name__ == "__main__":
        main()
    

    注意:

    • calculate_frame_rate 函数需要你自己实现,这通常涉及比较连续截图之间的差异来估计帧率。这可能需要用到图像处理库(如OpenCV)。
    • 为了确保准确测量,你需要在游戏中设置为全屏模式,并且确保没有其他应用程序干扰。
    • 对于更复杂的测试,例如针对不同图形质量设置或分辨率的测试,你需要扩展脚本以适应这些变化。
    • 如果你想在多台机器上执行此测试,你可能需要将这个脚本与远程执行工具结合使用,如SSH或Powershell Remoting(对于Windows)。

    步骤3:优化和扩展 根据需求,你可能需要进一步优化脚本,例如添加错误处理、配置选项、日志记录,甚至集成到持续集成/持续部署(CI/CD)流程中。

    请注意,这个脚本可能不适用于所有情况,因为不同的游戏可能有不同的启动方式和帧率计算方法。但这是一个起点,你可以在此基础上进行调整和扩展,以满足你的具体需求。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月21日