Skip to content

URML (open robot intent language): declarative intent as a teaching on-ramp alongside imperative bots (request for comment) #217

Description

@idoco2003

Hi Tank Royale maintainers,

URML (urml.dev) is a small, Apache-2.0 language for robot intent: a goal becomes a typed primitive, validated against the actor's declared capabilities, then dispatched. Tank Royale is a programming game widely used to teach programming, and while a game bot is virtual, the shared idea is interesting: a declarative, checkable way to state what a bot should try to do. This is a conceptual note, not an integration ask.

Nothing here asks the project to adopt, host, or maintain anything. This is a request for comment.

The idea: a Tank Royale bot is written imperatively against an API. URML's angle is a declarative, typed intent layer that states a goal and is validated against the actor's declared capabilities. For a teaching game, an optional declarative-intent mode could be a gentle on-ramp before learners write full imperative bots, and it makes "what is this bot allowed to do" explicit. This is exploratory; a battle game is not a physical robot, and the value, if any, is pedagogical.

Two real questions: (1) is a declarative, typed intent layer an interesting on-ramp or teaching aid alongside imperative bot programming? (2) Does "declare what the bot should try to do, validated against its capabilities" map onto how Tank Royale bots are written?

Full write-up: https://github.com/URML-MARS/URML/blob/main/docs/rfcs/0574-tank-royale-outreach.md

Thanks for Tank Royale; carrying the Robocode tradition forward is great, and the declarative-on-ramp idea felt worth floating with you.

Ido Yahalomi (URML, greenvh@gmail.com)

AI-assisted prose, maintainer-reviewed before posting (see https://github.com/URML-MARS/URML/blob/main/VIBE.md). Human-only correspondence available on request.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions