An open API service indexing awesome lists of open source software.

https://github.com/thisisignitedoreo/uvbot

A TAS tool for Geometry Dash
https://github.com/thisisignitedoreo/uvbot

geometry-dash geometry-dash-bot geometry-dash-mod

Last synced: 6 months ago
JSON representation

A TAS tool for Geometry Dash

Awesome Lists containing this project

README

          

image::logo.png[uvBot logo,200]

= uvBot
A free and open source TAS tool for Geometry Dash

WARNING: You are kinda early. This is still in heavy development

Features include:

* Good accuracy (Hardest recorded level by me is Flamewall I think?)
* Standalone-ness (You don't need an additional mod menu to use this bot efficiently)
* Internal Recorder

== Quickstart
Compile it, download from https://github.com/thisisignitedoreo/uvbot/actions[Actions] or from https://github.com/thisisignitedoreo/uvbot/releases[Releases]

== `.uv` format
The file format is as follows:

[source,c]
----
typedef uint64_t frame_t;

struct input {
frame_t frame;
uint8_t flags;
// Least significant bit - hold or release
// The rest (.flags >> 1) - button:
// 0 - Jump P1
// 1 - Left P1
// 2 - Right P1
// 3 - Jump P2
// 4 - Left P2
// 5 - Right P2
// Bits: [ U U U U B B B D ]
// U - unused
// B - button bits
// D - down bit
};

struct physic {
frame_t frame;
float x, y, rotation, y_velocity;
};

struct replay {
char front_magic[5] = "UVBOT";
uint8_t version = 2;
#if version == 2
float tps;
#endif
int32_t inputs, physics_p1, physics_p2;
struct input input_actions[inputs];
struct physic physic_p1_actions[inputs];
struct physic physic_p2_actions[inputs];
char back_magic[5] = "TOBVU";
};
----

== Contributions
This project is *Open Source*, however, it is not *Open Contribution*.
Any pull request created will be closed. Issues, however, are welcome.

The reason is simple - I want to have all the control over the codebase,
so a bad reviewed PR won't break the bot or introduce some kind of
undebuggable bug.

If you want to have a version with your modifications - feel free to
create a fork, however, none of them will be accepted into upstream.

== Links

* https://discord.gg/GmRDUKRqE8[Discord Server]

== Thanks to

* @matcool for ReplayBot, from which both the `subprocess.hpp` header
and recorder implementation was taken
* @tobyadd for GDH for a _lot_ of stuff (`grep -rn "// Thanks toby" src/ | wc -l`)
* @cvolton for Various Bugfixes from which both the hitboxes mirror fix
and the hitbox physics fix were taken