sc2hs:StarCraft II API的Haskell绑定
介绍
sc2小时
是星际争霸II的基于效果的API。目前,该API相当小,基本上足以让worker rush bot工作,但框架已经存在。
例子
下面是API的一个快速示例!
--命令一名工人冲向第一帧。workerRush::成员日志记录r=>效率(代理':r)()--1workerRush=完成更新观察结果--2单位<-工人--3位置<-enemyStart位置--4单位“攻击”(头部锁定)--5日志消息1“工人匆忙^_^”环循环::成员日志记录r=>效率(代理':r)()循环=do步骤--6状态<-getStatus--7案例状态结束->logMessage 1“游戏结束”_->循环
让我们看看它的作用:
- 与SC2交互的实体是使用
代理人
效果。这大致是API的级别,例如,蟒蛇sc2
.
更新观察结果
要求SC2发送所有信息代理人
可以合法地知道并处理结果。每一次游戏都应该调用一次。
工人
是一个返回玩家工作单位(SCV/无人机/探测器)列表的函数
能源开始位置
检索敌人可能的起始位置列表,这是地图的属性。
攻击
是围绕订单
,指示单位使用技能。攻击
只是创建了一个订单
使用指定的单位
和给定的目标明确
,可以是点或指定单位。
步
告诉SC2准备好进入下一场比赛。这仅在非实时模式下有用。
获取状态
返回协议状态机的状态。
安装
所需依赖项
- 堆栈
- protoc(来自protobuf包)也必须在您的路径中
- 如果你想真正运行它,那么你需要安装星际争霸II。
窗户
我想就是这样。
Linux操作系统
强烈建议使用尼克斯。如果没有,请确保您也有可用的zlib头。
雨衣
不知道。有人告诉我!
编译前
由于proto-lens-protoc 0.4.0.1中的一个错误,当名称中有下划线时,枚举生成被中断。因此,必须将sc2-proto中的补丁应用于s2client-proto子模块。
汇编
堆栈构建
运行演示应用程序
首先,启动SC2并手动创建游戏。那么,做吧堆栈运行
.
这应该会运行演示机器人,它启动一个游戏,选择可用地图中的第9张地图,并作为神族玩家与随机的中型计算机玩家进行对抗。
设计
sc2小时
分为几个包:
图形BTsc2-proto-->sc2-低电平sc2-支持-->sc2-低电平sc2-协议-->sc2hssc2支持-->sc2hssc2-低电平-->sc2hssc2-低级-->sc2hs-demosc2hs-->sc2hs-demo
sc2-原型
sc2-原型
是一个围绕SC2 protobuf API描述自动生成的包装器库。
sc2支持
sc2支持
包含基本的SC2相关定义,如各种目录,以及一个Template Haskell模块,该模块生成数据类型和函数,将用于引用单位、能力、升级、buff和效果的原始整数转换为更可用的形式。它通过解析stableid.json公司
,仅在使用API运行SC2至少一次后创建。因此,它还包括一个备份副本,可能已经过期;但它不应该经常改变。
最终,目标是sc2支持
使用从SC2编辑器中提取的余额数据获取的属性来增加此数据,但如何做到这一点好当它随每个补丁发生变化时,仍有待解决。
sc2-低电平
sc2-低电平
处理启动游戏、管理其进程、连接游戏以及在protobuf API逻辑层进行通信。它还具有一些高级类型,供sc2小时
。协议状态机使用Effect建模。
sc2小时
sc2小时
以网络SC2.Agent
模块。这定义了一个效果,代理人
,它提供了对低级协议的抽象。目前它只使用Raw接口,但其目标是使用来自功能层接口和UI的数据对其进行扩充。
sc2hs演示
演示应用程序展示了如何创建一个基本的机器人并在游戏中使用它。
贡献
目前的重点是通过将更多的protobuf协议转换为可请求的
中的sc2-低电平
,并进入代理人
效果。那将是一个作出贡献的好地方;然而,其他任何地方的贡献都是非常受欢迎的!😻