Giter Club home page Giter Club logo

tamacro's Introduction

TAMacro - WIP TAS/Macro tool for Rain World Remix

TAMacro is a WIP tool for writing macros for experimenting with movement and eventually partial TASes. The mod can be downloaded from the Workshop (and eventually from here on the GitHub).

TAMacro is in a very early alpha state and is nowhere near feature-complete.

How to use

Install and enable TAMacro like any other Workshop mod. Once the simulation is running (i.e., in Story/Arena/Expedition), a display panel will appear that can be moved with the backslash key.

TAMacro reads from .tmc files (TAMacro cookbooks) in %appdata%/../LocalLow/Videocult/Rain World\ModConfigs/TAMacro on Windows systems. The exact file path is printed to the console log (Steam/steamapps/common/Rain World/consoleLog.txt) as Rain World starts up. Pressing F5 while the simulation is running reads from this folder again. Any errors that occur while reading the file will be printed to the console log and do not currently show up in-game.

See the wiki for:

tamacro's People

Contributors

alphappy avatar

Stargazers

 avatar

Watchers

 avatar

tamacro's Issues

Infinite instruction loops freeze the game

Running a macro with infinite instruction loops freezes the game. Infinite instruction loops were properly detected and halted in an earlier version; not sure when it stopped working.

Automatic reload

Add a filesystem watcher that should mostly preclude the need for manual reloading.

Detect pipe entry/exit

Add a trigger for entering or exiting pipes.

Because the Player does not update in a pipe, it is probably not reliable to do this is the current macro execution loop. This mechanism may require implementing a latent trigger or a loop not tied to the Player.

Add open button

Add button that opens the folder containing cookbooks in Explorer.

Overhaul instruction structure

Instructions currently interact with a Stack<object> which requires some ugly casting that wouldn't be necessary with a better implementation. Consider making a dedicated struct as the information carrier instead.

Make macros non-static

Currently, macros are static; if macro A executes itself (once, not endlessly), it resets its own state.
For example, the following macro only runs R~20 once, regardless of where Slugcat starts.
If non static, it would run R~20 once for every L~20.

/NAME: foo
L~20
>goto 1 if scug located left of 500
>execute foo
>label 1
R~20

Macro names are not sanitized

Macro names can contain characters which shouldn't be allowed (e.g., / in a macro name would make >executeing it impossible).

Support for multiple players

Add support for multiple players running macros simultaneously.

Possible designs:

  1. Add an optional flag to each line that indicates which player the line affects, default to 1 (or a macro-level default). This is incredibly cumbersome to write a macro and would require refactoring how exactly a macro tick is decided.
  2. Add an interface-level setting for deciding which player runs which macro. This requires making the library and macros non-static and makes the interface more complicated.
  3. Add an extension to >execute which allows specifying player. This requires making the library and macros non-static. >execute does not tick and so simultaneously running different macros for different players would not be complicated.

Support for possessed pups

Because the macros affect a specific Player, they do not affect possessed pups (via beeglitch), which should always respond to player 1 input.

Fixing this robustly may require intercepting input handling at an earlier stage.

On a pole condition

if the slugcat is on a pole. Maybe could be expanded to include states. My use case is so a fast-climb macro automatically stops at the top of a pole.

Loop

Syntax:
>loop macro (for number|while condition)
if its a number, then macro will be executed x amount of times (not yet possible, but usefull)
if it's a condition, execute while true (possible with current system, but impractical)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.