#overlay #gw2 #guild-wars2

已删除 jokolay

Rust编写的《Guild Wars 2》覆盖层

0.1.9 2021年6月30日
0.1.8 2021年6月28日

#8 in #gw2

MIT 和可能 GPL-2.0-only

84KB
2K SLoC

jokolay

在 Rust 中为《Guild Wars 2》创建覆盖层

 

我正在尝试为 Linux 创建一个 taco 端口(技术上,它是跨平台的)。我还在学习编程,所以进展很慢。它基本上由3部分组成。并且是用 rust ❤️ 编写的

  1. Jokolink:这是您将从运行 gw2 的相同 wine 前缀中运行的程序。它读取 gw2 的共享内存(https://wiki.guildwars2.com/wiki/API:MumbleLink)以获取玩家位置/摄像头位置/哪个角色已登录等信息,当然还有窗口位置。任何想要了解这些信息的客户端都可以通过套接字请求,因此可以有多个覆盖层或其他插件请求数据。这真的很令人害怕,因为使用了糟糕的 Windows API。无论如何,这已经完成了 90%,只需要在本周进行一些润色和改进。
  2. jokoapi:是的。这是一个用于我们覆盖层的 API 库,但也适用于通用用途。这是最容易的部分,主要是复制粘贴 API 端点并填写结构体等所需的字段等。如果有人想贡献力量,这里是最好的地方,任何程度的编程人员都可以做这个。这里的瓶颈实际上是复制粘贴和打字速度。
  3. Jokolay:这是实际的覆盖层。它依赖于3个条件。首先是它必须是透明的,并且只允许标记可见。第二个条件是它必须允许输入(如点击)通过它(因此,必须不可聚焦)。最后一个条件是它必须保持在窗口全屏或窗口模式下。Jokolay 目前使用 glfw3.4 的补丁版本,可以完成上述所有事情。待办事项:当前障碍是学习游戏引擎开发,因为 taco/jokolay 主要是第一人称游戏,它从 gw2 共享内存中获取输入以更新摄像头/玩家位置,而不是大多数游戏像 wsad 那样。标记只是“地图”或“世界”中的对象或您想要称它们为何物,这些标记是透明的。我需要学习所有这些内容,还有一些涉及矩阵等内容的硬核数学。读取标记/轨迹格式的能力。一旦我们完成前面两件事(我估计最早可能需要一个月半),其余的都是相当简单的,比如 GUI 用于启用/禁用标记或显示计时器,创建标记(我希望尽可能简单,以便 lore/rp 人员可以为其他人制作迷你 D&D 游戏),等等。

我一直想为Linux开发一个taco端口,当taco开源时,我以为我只是改动一些代码就可以在Linux上运行。是的,我错了。在taco的一篇博客文章中,他提到他是从头开始做的,没有使用stdlib。这是真的。这对像我这样的新手来说已经足够接受失败了,去处理这个代码库。而且,由于代码库非常特定于Windows,我没有别的选择,只能重写。当然,我通过浏览代码大致了解了制作覆盖层需要多少工作量。这就是为什么我选择使用成熟的库,以避免从头开始编写代码,从而减轻负担。并且使其成为跨平台,实际上使用glfw3比处理X11要少做很多工作。

完成jokolay的步骤共有8步。

[] 使核心渲染器非常稳定。[] 在未聚焦时从键盘鼠标获取原始输入。[] 使非常稳定的egui用户界面工作。[] 开始添加功能,如计时器窗口/kp查找/切换标记。[] 标记/轨迹记录器/编辑器 [] 通知系统类似Gw2Pao [] 文档/教程 [] 精炼并与其他项目合作以扩展标记格式/模块,如blish/定制等。

核心渲染器、egui和输入的稳定性是最重要的组件,因为其他功能都将基于这三个组件。

依赖关系

~26–43MB
~655K SLoC