分析SSBM重播文件的库

py-slippi的Python项目详细描述


py slipdi是一个python解析器,用于为任天堂gamecube的.slp游戏重播文件Super Smash Brothers Melee。这些回放是由jas laferriere的Slippi录制代码生成的,该代码运行在gamecube或Dolphin模拟器上。

安装

需要python>;=3.6。要安装,请运行以下命令(可选地在virtual environment中):

pip install py-slippi

用法

读取重播文件

>>> from slippi import Game
>>> game = Game('test/replays/game.slp')
>>> game.metadata
Metadata(date=2018-06-22 07:52:59+00:00, duration=5086, platform=Platform.DOLPHIN, players=(Player(characters={InGameCharacter.MARTH: 5086}), Player(characters={InGameCharacter.FOX: 5086}), None, None))
>>> game.start
Start(is_teams=False, players=(Player(character=CSSCharacter.MARTH, costume=3, stocks=4, team=None, type=Type.HUMAN, ucf=UCF(dash_back=False, shield_drop=False)), Player(character=CSSCharacter.FOX, costume=0, stocks=4, team=None, type=Type.CPU, ucf=UCF(dash_back=False, shield_drop=False)), None, None), random_seed=3803194226, slippi=Slippi(version=1.0.0.0), stage=Stage.YOSHIS_STORY)
>>> game.end
End(method=Method.CONCLUSIVE)
>>> game.frames[0]
Frame(index=-123, ports=(Port(follower=None, leader=Data(post=Post(character=InGameCharacter.MARTH, combo_count=0, damage=0.00, direction=Direction.RIGHT, last_attack_landed=None, last_hit_by=None, position=(-31.94, 0.00), shield=59.66, state=ActionState.LANDING, state_age=7.00, stocks=4), pre=Pre(buttons=Buttons(logical=Logical.NONE, physical=Physical.NONE), cstick=(0.00, 0.00), direction=Direction.RIGHT, joystick=(0.00, 0.00), position=(-32.08, 0.00), random_seed=1373931959, state=ActionState.LANDING, triggers=Triggers(logical=0.00, physical=Physical(l=0.00, r=0.00))))), Port(follower=None, leader=Data(post=Post(character=InGameCharacter.FOX, combo_count=0, damage=0.00, direction=Direction.LEFT, last_attack_landed=None, last_hit_by=None, position=(9.96, 53.35), shield=60.00, state=ActionState.JUMP_F, state_age=19.00, stocks=4), pre=Pre(buttons=Buttons(logical=Logical.NONE, physical=Physical.NONE), cstick=(0.00, 0.00), direction=Direction.LEFT, joystick=(-0.99, 0.00), position=(10.78, 54.04), random_seed=1373931959, state=ActionState.JUMP_F, triggers=Triggers(logical=0.00, physical=Physical(l=0.00, r=0.00))))), None, None))

遍历帧数据

for frame in game.frames:
    data = frame.ports[0].leader # see also: port.follower (ICs)
    print(data.post.state) # character's post-frame action state

API文档

有关详细的api文档,请参见Module Index,从slippi.game开始。

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

推荐PyPI第三方库


热门话题
java如何在表被注释到配置之前获取表的元数据?   java滚动条不会出现在JList上   java JOGL监视器GPU内存   java为什么要使用RecyclerView onDraw延迟   java定制Oppo Reno 2 Z CPH1951(手机型号)的固件(闪存文件)   java自定义线程池执行器   java如何解决发布版本中重复的jar条目[com/安卓/volley/R.class]?   java如何使用Bukkit API触发事件?   java在blazemeter jmeter RTE插件中使用ctrl+w输入   C#/Visual Studio的java JDT等价物   java为什么当maxread值很大而收到的消息数量很小时,卡夫卡消费者会无限期消费?   java游戏2。x:包含模板列表的绑定模型   带压缩的java日志旋转   运行时。exec用java运行程序读取它正在做什么