SC2重播文件解析器

zephyrus-sc2-parser的Python项目详细描述


Zephyrus回放分析器

一个健壮而详细的.SC2Replay文件解析器

zephyrus.gg用于深入回放分析

详细文档即将发布!在

核心功能

  • 易于使用

    不需要配置任何东西,只需安装包并调用parse_replay即可开始

  • 有状态且面向对象

    游戏的核心元素是用对象重新创建的,这样就可以很容易地理解信息的位置以及信息是如何相互联系的。 每一个相关事件的事件和信息都会重新计算,因此您始终拥有正确的游戏状态。 游戏状态也会定期记录,以便于对解析的信息进行分析

  • 非常详细的信息

    解析器利用来自重播文件的跟踪器和游戏事件来重新创建游戏状态,允许收集更复杂的信息。 单位、建筑和能力的游戏ID都经过了艰苦的寻找和记录,以获得诸如单位和建筑模式等信息, 要解析的能力使用和创建状态

  • 精确选择跟踪

    以前的解析器要么没有跟踪播放器选择,要么实现不准确。我们的实现准确地跟踪玩家 由于强大的位掩码算法,即使在复杂的子选择和取消选择操作中也可以进行选择

安装和使用

解析器托管在PyPI上。你可以通过pip安装它

pip install zephyrus_sc2_parser

您可以将parse_replay导入为顶级导入

from zephyrus_sc2_parser import parse_replay

必需参数

唯一需要的参数是要解析的重播的相对路径

可选参数

您可以选择使用local标志来表示您想要解析没有MMR的重播,否则解析器将中止重播。local默认设置为False。在

如果您想在解析过程中访问存储在Player对象中的原始数据,例如每个玩家的对象或相机的移动,detailed标志也很有用。在

返回值

解析器返回4个值,一个包含两个玩家对象的字典,一个记录的游戏状态列表,一个包含 玩家的基本信息和游戏元数据字典。在

players, timeline, summary_stats, metadata = parse_replay(filepath, local=False, detailed=True)

players示例:

{
  1: <Player object>,
  2: <Player object>,
}

timeline示例:

^{pr2}$

summary_stats示例:

{
    'mmr': { 1: 3958, 2: 3893 },
    'mmr_diff': { 1: 65, 2: -65 },
    'avg_resource_collection_rate': {
        'minerals': { 1: 1150.9, 2: 1238.6 },
        'gas': { 1: 321.7, 2: 316.8 }
    },
    'avg_unspent_resources': {
        'minerals': { 1: 330.7, 2: 247.3 },
        'gas': { 1: 205.2, 2: 174.5 }
    },
    'apm': { 1: 123.0, 2: 187.0 },
    'resources_lost': {
        'minerals': { 1: 2375, 2: 800 },
        'gas': { 1: 1000, 2: 425 } 
    },
    'workers_produced': { 1: 63, 2: 48 },
    'workers_killed': { 1: 12, 2: 41 },
    'workers_lost': { 1: 41, 2: 12 },
    'inject_count': { 1: 0, 2: 0 },
    'sq': { 1: 91, 2: 104 },
    'avg_pac_per_min': { 1: 28.15, 2: 36.29 },
    'avg_pac_action_latency': { 1: 0.46, 2: 0.32 },
    'avg_pac_actions': { 1: 3.79, 2: 4.65 },
    'avg_pac_gap': { 1: 0.37, 2: 0.25 },
}

metadata示例:

{
    'map': 'Acropolis LE',

    # UTC timezone
    'time_played_at': <datetime.datetime object>,

    # player ID
    'winner': 1,

    # seconds
    'game_length': 750,
}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
我可以用C++代码使用java代码吗?   java使用JSR303在派生类中提供更具体的约束   java在这个查找唯一路径数算法中我做错了什么?   java如何为2个不同的服务提供商使用2个不同的SSL证书?   java在Gridview上绘制文本   java使用连接for循环构建字符串名   java StringBuilder拆分无法处理某些文件   java事件关注EditText   Java Web Start“找不到URL的缓存资源”   java程序从命令行运行的速度比在Eclipse中慢   java为什么HttpServletRequest会截断#字符上的url输入?   java自定义折叠工具栏平滑标题大小调整   使用Mockito对安卓 java中调用另一个静态函数的函数进行单元测试   http在java客户机中使用cachecontrol头   java如何使用。是否使用Delimiter从输入文件中排除标点符号和数字?   使用上下文作为参数/参数的java   java更有效地从Jar中提取文件   java为多个JButton提供相同的actionListener