#wasmdome #wascc #api-bindings

wasmdome-mech-sdk

开发用于在竞技场中自主竞争的 WebAssembly 机器人的 SDK

7 个版本

0.0.7 2020年7月29日
0.0.6 2020年7月13日
0.0.4 2020年5月20日
0.0.3 2020年3月4日
0.0.1 2020年2月26日

#1511 in WebAssembly

Apache-2.0

17KB
187

机械组装:超越 WasmDome - Mech SDK

这是开发者用于构建在 WasmDome 中竞争的机械的 SDK。那些将为地球的生存而战的机械的开发者将通过响应游戏引擎提供的转向事件并返回一个机械命令向量来完成。

以下是一个简单地向北移动并在每回合发射的机械示例(显然,如果您想获胜,您将需要一个更聪明的策略)

extern crate wasmdome_mech_sdk as mech;

use mech::*;

mech_handler!(handler);

pub fn handler(mech: impl MechInstruments) -> Vec<MechCommand> {
     vec![
          mech.request_radar(),
          mech.move_mech(GridDirection::North),
          mech.fire_primary(GridDirection::South)
     ]
}

lib.rs:

机械组装:超越 WasmDome SDK

年份是 2020 年,我们的容器化文明正在瓦解。一个名叫 Boylur Plait 的残忍而邪恶的 DevOps 恶魔从云端降临地球,向人类发起挑战.

为了赢得这场比赛,Assembly Mechs 必须在一个荒谬地过度戏剧化的比赛中竞争。这些机械将挑战其创造者编写能够超越并击败恶魔及其几乎无限的军队所投掷的一切的代码的能力。人类唯一的希望是掌握一种名为 WebAssembly 的技术,赢得比赛,并向云端的宿敌证明这个世界得到了很好的保护。

如何玩

游戏通过您的机械声明一个 handler 函数来玩。在每一回合,机械的处理程序将被调用,并负责返回一个命令列表。这些命令可以包括移动、发射武器、执行雷达扫描等请求。命令需要消耗 行动点,您需要小心不要超过每一回合的最大行动点数(目前为 4)。

您的机械将必须巧妙地利用其有限的资源和信息来制定赢得比赛的策略。

机械通过使用 MechInstruments 特性与其环境进行交互。

可能的机械动作

以下是一个机械可以通过使用 Assembly Mech SDK 中的适当方法执行的动作列表

动作 AP 成本 描述
move_mech 1 将机械移动一个网格单位到给定的方向。
fire_primary 2 在给定的方向上发射机械的主要武器。主要武器发射一个单一的、会损坏遇到的第一个目标的较小弹丸。主要武器的射程可以通过传感器询问获得。
fire_secondary 4 在给定的方向上发射机械的次要武器。次要武器发射一个会损坏遇到的第一个目标的爆炸性弹丸,并在冲击点产生辐射状的溅射伤害。次要武器的射程可以通过传感器询问获得。
radar_scan 1 对机甲周围环境进行全面雷达扫描,报告检测到的敌人和障碍物。机甲将在下一回合的开始接收扫描结果。

机甲默认不受影响的功率为 4 单位,这意味着在单个回合内,机甲可以发射一次次要武器,移动 4 次,或执行其他组合动作。访问传感器值不消耗任何资源。

警告

请注意不要超过给定回合中消耗的最大行动点数。命令超出你的 功率 时,最好的情况是失败,最坏的情况(取决于比赛规则)你的机甲可能会因尝试而受到惩罚

碰撞伤害是真实的,当机甲与其他机甲和墙壁相撞时,机甲的船体将失去结构完整性

示例

extern crate wasmdome_mech_sdk as mech;

use mech::*;

mech_handler!(handler);

// Respond to a request to take a turn
pub fn handler(mech: impl MechInstruments) -> Vec<MechCommand> {
    // Respond with up to 4 action points worth of actions
    vec![
        mech.request_radar(),
        mech.move_mech(GridDirection::North),
        mech.fire_primary(GridDirection::South),
    ]
}

依赖关系

~2.3–3.5MB
~69K SLoC