Skip to main content

rpze: Remote Python, Zombie: Endless

Project description

rpze

Remote Python, Zombie Endless (or endless rp?)

一个远程 Python 的 Plants vs. Zombies (pvz) TAS / 修改器 及 I, Zombie Endless (ize) 测试框架.

介绍

rpze 是一个用于 ize 测试的框架, 旨在保持一定性能、高精度、少崩溃的同时大幅简化 ize 非定态测试脚本的编写.
通过与注入游戏的.dll进行 ipc 以实现理论100%精度和不崩溃的原版函数调用.

支持平台

仅支持 Windows 上的 CPython >= 3.11:

  • 3.11及以上的 CPython 仅支持 Windows 10 及以上平台
  • pypi 上提供了64位 cp311, cp312 的预编译.whl.
  • 32位平台原则上支持, 但需要自行构建

仅支持1.0.0.1051版本 pvz , 测试以 pt 站上的英语原版 (lcx 版)为准. 原则上支持各类汉化版, 不支持 jspvz 上的英语原版. 各种其他来源的“英语原版”有不小概率出自 jspvz 或者同样没去登录壳, 请注意.

安装

在满足上述平台要求后, 执行python -m pip install rpze即可.
若想确认安装成功, 执行python -m rpze --path "your\path\to\PlantVsZombies.exe", 若游戏正常启动且在加载界面加载到一半时自动运行生物钟脚本, 则安装成功.

常见安装 FAQ

  • 为什么弹出一个黑色窗口显示 console set?

    这是正常现象, 无须多注意. 用于确认成功以及在跳帧时关闭游戏等.

  • 游戏正常启动但并不自动运行脚本 / invalid command / failed to find shared memory?

    重新阅读支持平台. 请考虑你使用的版本是否符合上述要求. 请注意, 仅确保兼容 pt 站上的英语原版( lcx 版)!!!

  • failed to create shared memory / 未找到文件?

    请再运行一次试试, 可能和杀毒有关; 若一直这样请和我反馈.

  • xmake is not installed?

    重新阅读支持平台. 你使用的 Python 没有预编译.whl, 你可以选择换一个 Python 或者构建.

  • DLL load failed while importing rp_extend?

    原因未知, 请跟我反馈. 一定有效但非常麻烦的方法是自行构建, 一个不确定是否好用的解决方法是python -m pip install msvc-runtime.

使用

一个简单的完整 rpze 脚本示例如下:

from rpze.iztest import *

with InjectedGame(r"your\path\to\pvz.exe") as game:
    iz_test = IzTest(game.controller).init_by_str('''
                 1000 -1
                 3-0 4-0 5-0 3-3
                 .....
                 .....
                 bs3_c
                 b2ljh
                 blyl_
                 cg   cg   xg   ww
                 0    1    300  700
                 4-6  4-6  4-6  4-6''')
    print(iz_test.start_test(True))

结构

总体分成五个包:

  • rp_extend: 对控制 pvz 游戏本地运作的基本操作的封装
  • basic: .dll注入, 游戏启动, 汇编代码等基础功能
  • structs: pvz 内数据结构以及部分 method 的的封装
  • flow: coroutine-like 测试编写相关的函数
  • iztest: IzTest测试功能以及工具函数
  • examples: iztest编写例子

其中, 若仅对 Python pvz 框架感兴趣则只需关注前三个包, 对 ize 测试感兴趣则着重模仿examples并大致了解structs的成员(PlantsZombies).

优缺点

优点:

  • 使用普及度最高的 Python 编写, 尽可能做到低上手难度
  • 稳定性大幅领先几乎所有远程工具, 并且实现100%精度
  • 作为普通 Python 包发布, 无须编译 C++ 繁琐的配置环境
  • 相比于 AvZ 等方案更能和原有语言生态整合, 可以简单直接引用外部库, 处理测得数据等
  • 兼容过去的 iztools 工具以及各类简写, 对已有习惯友好

缺点:

  • 跳帧性能不如 AvZ, iztools 等注入框架
  • 相比于向.exe静态添加汇编和.dll注入等方案, 不够原生而存在大量性能浪费.
  • 支持平台过少 (>=win10, >=cpy311) 使得大量 win7 玩家无法使用
  • 对 ize 以外模式的键控暂无支持, 操控游戏底层实现(如跳帧)可能因为和Board耦合过高而不够通用.
  • 作者太菜了, 对软件工程和操作系统变成没有基本认知, 会存在大量浪费时间的试错和重构

鸣谢

Reisen - 提供初始思路, 模型以及解答各种问题,
63enjoy, Ghastasaucey(BiliBili) 等 - 反汇编结论参考以及教学,
vector-wlc/AsmVsZombies - 重要功能汇编函数参考,
sqrt07/iztools - 测试字符串, 功能和简写标准参照,

以及指针表, 函数表等资源工具和各位玩家的鼎力支持.

使用的开源项目

构建

100% certified works on my two machines

本框架采用 xmake 构建, 管理二进制依赖; 使用 MSVC 编译.

安装二者后, 构建 Python .whl只需python -m pip install buildpython -m build即可.

可以用python hatch_build.py --other xmake_args来自动设置 xmake config 的编译 arch

许可

Copyright © 2024 ObeliskGate

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rpze-0.2.2.tar.gz (75.3 kB view details)

Uploaded Source

Built Distributions

rpze-0.2.2-cp312-cp312-win_amd64.whl (774.1 kB view details)

Uploaded CPython 3.12 Windows x86-64

rpze-0.2.2-cp311-cp311-win_amd64.whl (773.7 kB view details)

Uploaded CPython 3.11 Windows x86-64

File details

Details for the file rpze-0.2.2.tar.gz.

File metadata

  • Download URL: rpze-0.2.2.tar.gz
  • Upload date:
  • Size: 75.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.9

File hashes

Hashes for rpze-0.2.2.tar.gz
Algorithm Hash digest
SHA256 698e73131a89de7ef6f99313bb81d5bd1f08ff7da8c2ef1a6e7e1f9350724417
MD5 f422faf761e158c2243dbabeafc17215
BLAKE2b-256 4cdb09230e2ecb3d2507ce1d917b8bc4351eb045900dca9001ab7cfd87537420

See more details on using hashes here.

File details

Details for the file rpze-0.2.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: rpze-0.2.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 774.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.9

File hashes

Hashes for rpze-0.2.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 afdde794a4f58b4e42323de08a74c0334242d543e65adff24cf19bbdd7ad1c5b
MD5 0a5892fb3a32f92fc992a7ae4e6dfbb7
BLAKE2b-256 580570fd294990707e6811ce1cfb864e0038ef1a41ba9687d58547308f38bdae

See more details on using hashes here.

File details

Details for the file rpze-0.2.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: rpze-0.2.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 773.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.9

File hashes

Hashes for rpze-0.2.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2a8c313e7010a10bae62b5926115efd030a8fbd00a9c3049caa084600387bd95
MD5 27b175e0bcd6f6f84388721473d1ae19
BLAKE2b-256 7aa544d6a2eb6605e515bcde99e71f4a77d2bcea242e2dbe6bec50cbde71f25b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page