游戏-关于星际争霸2各种卡顿原因详解

最近玩星际争霸2.老出现瞬间卡顿问题。没找到问题,但后来做分析慢慢解决了一些。
测试条件
电脑 :几年前的华硕笔记本
CPU:I7 6700HQ 4C8T 2.6GHZ
显卡:GTX 960M
硬盘:普通西数机械硬盘+镁光 500M/s+500M/s固态硬盘
屏幕分辨率 :1920*1080

星际2 所有配置最低模式

进入游戏选择界面
在这里插入图片描述
刚进入游戏选择界面CPU总体配置 占用 32%。其中第三线程 几乎快满了。很明显,这游戏多核优化可能没做特别好,或许线程分工没做 是否需要一个单核能力强的CPU 比如I3 台式 ,效果或许比笔记本 i7会好?

游戏对战模式
在这里插入图片描述

在这里插入图片描述
游戏中 对战模式。静默状态 显卡占用率 20%左右。 平均 FPS 110

在这里插入图片描述

最低特效 200步兵运动 fps69. 显卡占用率 20%

最高配置 ,所有最高 在这里插入图片描述
CPU 50% 显卡 80%

游戏静默状态
在这里插入图片描述

fps 79
在这里插入图片描述
显卡 90% CPU 70%

200人口。。45FPS 显卡100% CPU70%

最后 ,,有一个容易被忽略的点,我也遇到了,,玩合作模式 FPS 100.。但是会出现瞬间掉帧到5FPS 等,,CPU占用也没满, 显卡也没满,,为什么?,后来发现,是硬盘问题。机械硬盘速度不够,合作模式出兵的时候瞬间加载量过大 ,,导致卡顿,,,吧游戏装在固态里面后,,再也没卡过。。。不过游戏优化还是有问题,CPU 。看线程占用来看,应该是写程序的是手动对CPU核心分工了。而不是自动分配,导致 个别核心爆满,。其他围观的现象

Pysc2是一个用于创建人工智能星际争霸2(StarCraft II)理程序的Python库。它允许您通过Python代码与StarCraft II进行交互,并使用Python编写的算法来控制游戏单位。以下是一个简单的Pysc2示例,展示如何使用Pysc2库来控制星际争霸2游戏单位: ```python import numpy as np import cv2 import time import pysc2 from pysc2 import maps from pysc2.lib import actions from pysc2.lib import features # 加载StarCraft II地图 pysc2.maps.get("Simple64") # 定义动作和特征 FUNCTIONS = actions.FUNCTIONS FEATURES = features.features_from_game_version(game_version=pysc2.maps.get("Simple64").game_version) # 定义代理类 class SimpleAgent(pysc2.agents.Agent): def __init__(self): super(SimpleAgent, self).__init__() self.attack_coordinates = None def step(self, obs): super(SimpleAgent, self).step(obs) # 如果没有准备好攻击坐标,则选择一个 if self.attack_coordinates is None: player_relative = obs.observation["screen"][features.SCREEN_FEATURES.player_relative.index] x, y = (player_relative == features.PlayerRelative.ENEMY).nonzero() target = [x.mean(), y.mean()] self.attack_coordinates = target # 如果可以攻击,则攻击 if FUNCTIONS.Attack_screen.id in obs.observation["available_actions"]: player_relative = obs.observation["screen"][features.SCREEN_FEATURES.player_relative.index] x, y = (player_relative == features.PlayerRelative.ENEMY).nonzero() if not y.any(): return FUNCTIONS.no_op() target = [x[0], y[0]] return FUNCTIONS.Attack_screen("now", target) # 如果无法攻击,则移动到攻击坐标 player_relative = obs.observation["screen"][features.SCREEN_FEATURES.player_relative.index] x, y = (player_relative == features.PlayerRelative.SELF).nonzero() if not x.any(): return FUNCTIONS.no_op() player = [int(x.mean()), int(y.mean())] if self.attack_coordinates is not None: return FUNCTIONS.Move_screen("now", self.attack_coordinates) return FUNCTIONS.no_op() # 运行代理 agent = SimpleAgent() try: while True: with sc2_env.SC2Env( map_name="Simple64", players=[sc2_env.Agent(sc2_env.Race.terran)], agent_interface_format=features.AgentInterfaceFormat( feature_dimensions=features.Dimensions(screen=84, minimap=64), use_feature_units=True), step_mul=16, game_steps_per_episode=0, visualize=True) as env: # 运行一局游戏 agent.setup(env.observation_spec(), env.action_spec()) # 重置游戏环境 timesteps = env.reset() agent.reset() # 运行游戏 while True: step_actions = [agent.step(timesteps[0])] if timesteps[0].last(): break timesteps = env.step(step_actions) except KeyboardInterrupt: pass ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值