From 646dbd49a7393b3c18f927bb981fceffda5c513c Mon Sep 17 00:00:00 2001
From: jojo989 <70300454+jojo989@users.noreply.github.com>
Date: Thu, 29 Jan 2026 02:54:41 -0300
Subject: [PATCH 01/31] aa
---
.vitepress/sidebar.mts | 11 +++++++++++
docs/player physics/hitboxes.md | 16 ++++++++++++++++
docs/player physics/index.md | 2 ++
package-lock.json | 2 +-
4 files changed, 30 insertions(+), 1 deletion(-)
create mode 100644 docs/player physics/hitboxes.md
create mode 100644 docs/player physics/index.md
diff --git a/.vitepress/sidebar.mts b/.vitepress/sidebar.mts
index 147181c..2a7ff4e 100644
--- a/.vitepress/sidebar.mts
+++ b/.vitepress/sidebar.mts
@@ -616,5 +616,16 @@ export default [
}
],
"collapsed": false
+ },
+
+
+ {
+ "text": "Player physics",
+ "items": [
+ {
+ "text": "hitboxes",
+ "link": "/player physics/hitboxes"
+ }
+ ]
}
];
diff --git a/docs/player physics/hitboxes.md b/docs/player physics/hitboxes.md
new file mode 100644
index 0000000..f104d38
--- /dev/null
+++ b/docs/player physics/hitboxes.md
@@ -0,0 +1,16 @@
+# Player hitboxes
+a table of the hitbox size of every gamemode, including red hitbox and blue, and also including the size of the hitboxed in the mini gamemode
+
+**as reference, 1 block/1 grid on the editor is 30 units**
+
+
+| Gamemode | Normal blue | Mini blue | Normal red | Mini red |
+|----------|-------------|-----------|------------|----------|
+| Cube | 9 | 10 | 30 | 18 |
+| Ship | 9 | 10 | 30 | 18 |
+| Ball | 9 | 10 | 30 | 18 |
+| UFO | 9 | 10 | 30 | 18 |
+| Wave | 3 | 3 | 10 | 6 |
+| Robot | 9 | 10 | 30 | 18 |
+| Spider | 9 | 10 | 27.5 | 16.5 (?) |
+| Swing | 9 | 10 | 30 | 18 |
\ No newline at end of file
diff --git a/docs/player physics/index.md b/docs/player physics/index.md
new file mode 100644
index 0000000..3718c8d
--- /dev/null
+++ b/docs/player physics/index.md
@@ -0,0 +1,2 @@
+# what is this?
+this is a page focused to document all the information we have found related to the icon physics
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 56c36ec..0d254e0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,5 +1,5 @@
{
- "name": "gd-docs",
+ "name": "gd-docs-new",
"lockfileVersion": 3,
"requires": true,
"packages": {
From dab39edd5da52c51b82c141811b19731a1add1e9 Mon Sep 17 00:00:00 2001
From: jojo989 <70300454+jojo989@users.noreply.github.com>
Date: Thu, 29 Jan 2026 02:55:02 -0300
Subject: [PATCH 02/31] caacc
---
docs/player physics/index.md | 2 --
1 file changed, 2 deletions(-)
delete mode 100644 docs/player physics/index.md
diff --git a/docs/player physics/index.md b/docs/player physics/index.md
deleted file mode 100644
index 3718c8d..0000000
--- a/docs/player physics/index.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# what is this?
-this is a page focused to document all the information we have found related to the icon physics
\ No newline at end of file
From a930a29eb5a81fb07add088878e78015de40162c Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 21 Feb 2026 19:03:09 -0600
Subject: [PATCH 03/31] gamemodes.md
---
docs/player physics/gamemodes.md | 77 ++++++++++++++++++++++++++++++++
1 file changed, 77 insertions(+)
create mode 100644 docs/player physics/gamemodes.md
diff --git a/docs/player physics/gamemodes.md b/docs/player physics/gamemodes.md
new file mode 100644
index 0000000..40d2943
--- /dev/null
+++ b/docs/player physics/gamemodes.md
@@ -0,0 +1,77 @@
+## Gamemodes
+
+For the tables below, gravity is describing whether the player falls up or down.
+The variable G is simply 1 when the player has regular gravity, or -1 when the player has inverse gravity.
+All the velocities are in Vels (1 Vel = 60 units/sec).
+Max velocity is the highest velocity the player can reach by falling normally, with the exception of ship which also has an upwards max velocity in addition to the downwards one.
+However the max velocity can be temporarily overridden by force blocks until it goes back down to the regular max velocity.
+Ticks held is how many ticks one needs to hold for before the click action triggers.
+1 would mean it triggers on that tick, 2 would mean it triggers on the nextt
+(Both would have their actions occur on the following tick, but 2 would mean swift clicks don't trigger the click action).
+
+Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump velocity.
+
+#### 0.5x Speed Portal
+
+| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
+| Cube | Sets the y-velocity to 10.62G | N/A | -15G | 1 | No |
+| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
+| Ball | Sets the y-velocity to 3.186G then toggles the gravity | N/A | -15G | 1 | No |
+| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
+| Wave | Sets the y-velocity to 4.186G | Sets the velocity to -4.186G | N/A | 2 | Yes |
+| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
+| Spider | See section "Spider" below | N/A | -15 | 1 | No |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
+
+#### 1x Speed Portal
+
+| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
+| Cube | Sets the y-velocity to 11.18G | N/A | -15G | 1 | No |
+| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
+| Ball | Sets the y-velocity to 3.354G then toggles the gravity | N/A | -15G | 1 | No |
+| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
+| Wave | Sets the y-velocity to 5.193G | Sets the velocity to -5.193G | N/A | 2 | Yes |
+| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
+| Spider | See section "Spider" below | N/A | -15 | 1 | No |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
+
+#### 2x Speed Portal
+
+| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
+| Cube | Sets the y-velocity to 11.42G | N/A | -15G | 1 | No |
+| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
+| Ball | Sets the y-velocity to 3.426G then toggles the gravity | N/A | -15G | 1 | No |
+| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
+| Wave | Sets the y-velocity to 6.457G | Sets the velocity to -6.457G | N/A | 2 | Yes |
+| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
+| Spider | See section "Spider" below | N/A | -15 | 1 | No |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
+
+#### 3x Speed Portal
+
+| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
+| Cube | Sets the y-velocity to 11.23G | N/A | -15G | 1 | No |
+| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
+| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | -15G | 1 | No |
+| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
+| Wave | Sets the y-velocity to 7.8G | Sets the velocity to -7.8G | N/A | 2 | Yes |
+| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
+| Spider | See section "Spider" below | N/A | -15 | 1 | No |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
+
+#### 4x Speed Portal
+
+| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
+| Cube | Sets the y-velocity to 11.23G | N/A | -15G | 1 | No |
+| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
+| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | -15G | 1 | No |
+| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
+| Wave | Sets the y-velocity to 9.6G | Sets the velocity to -9.6G | N/A | 2 | Yes |
+| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
+| Spider | See section "Spider" below | N/A | -15 | 1 | No |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
From 7b684a3073c680143c7b66c4e330814cb0ce9ae9 Mon Sep 17 00:00:00 2001
From: jojo989 <70300454+jojo989@users.noreply.github.com>
Date: Sat, 21 Feb 2026 23:18:27 -0300
Subject: [PATCH 04/31] added hitboxes.md on sidebar
---
.vitepress/sidebar.mts | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/.vitepress/sidebar.mts b/.vitepress/sidebar.mts
index 2a7ff4e..3b17f10 100644
--- a/.vitepress/sidebar.mts
+++ b/.vitepress/sidebar.mts
@@ -623,8 +623,12 @@ export default [
"text": "Player physics",
"items": [
{
- "text": "hitboxes",
+ "text": "Hitboxes",
"link": "/player physics/hitboxes"
+ },
+ {
+ "text": "Gamemodes",
+ "link": "/player physics/gamemodes"
}
]
}
From 9aa9781f73297097ac26df27948b2136e2852fdf Mon Sep 17 00:00:00 2001
From: jojo989 <70300454+jojo989@users.noreply.github.com>
Date: Thu, 26 Feb 2026 07:39:10 -0300
Subject: [PATCH 05/31] clarify what is a "unit" in gamemodes.md and
hitboxes.md
---
docs/player physics/gamemodes.md | 2 +-
docs/player physics/hitboxes.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/player physics/gamemodes.md b/docs/player physics/gamemodes.md
index 40d2943..eaa2d60 100644
--- a/docs/player physics/gamemodes.md
+++ b/docs/player physics/gamemodes.md
@@ -2,7 +2,7 @@
For the tables below, gravity is describing whether the player falls up or down.
The variable G is simply 1 when the player has regular gravity, or -1 when the player has inverse gravity.
-All the velocities are in Vels (1 Vel = 60 units/sec).
+All the velocities are in Vels (1 Vel = 60 units/sec, as reference 1 block is 30 units).
Max velocity is the highest velocity the player can reach by falling normally, with the exception of ship which also has an upwards max velocity in addition to the downwards one.
However the max velocity can be temporarily overridden by force blocks until it goes back down to the regular max velocity.
Ticks held is how many ticks one needs to hold for before the click action triggers.
diff --git a/docs/player physics/hitboxes.md b/docs/player physics/hitboxes.md
index f104d38..edacb63 100644
--- a/docs/player physics/hitboxes.md
+++ b/docs/player physics/hitboxes.md
@@ -1,5 +1,5 @@
# Player hitboxes
-a table of the hitbox size of every gamemode, including red hitbox and blue, and also including the size of the hitboxed in the mini gamemode
+a table of the hitbox size of every gamemode in units, including red hitbox and blue, and also including the size of the hitboxed in the mini gamemode
**as reference, 1 block/1 grid on the editor is 30 units**
From 749e3082b6ab97d3a52054393169e98ca0160db0 Mon Sep 17 00:00:00 2001
From: jojo989 <70300454+jojo989@users.noreply.github.com>
Date: Thu, 26 Feb 2026 15:03:16 -0300
Subject: [PATCH 06/31] Added input Restrictions table at gamemodes.md
---
docs/player physics/gamemodes.md | 116 +++++++++++++++++--------------
1 file changed, 65 insertions(+), 51 deletions(-)
diff --git a/docs/player physics/gamemodes.md b/docs/player physics/gamemodes.md
index eaa2d60..ef0835f 100644
--- a/docs/player physics/gamemodes.md
+++ b/docs/player physics/gamemodes.md
@@ -6,72 +6,86 @@ All the velocities are in Vels (1 Vel = 60 units/sec, as reference 1 block is 30
Max velocity is the highest velocity the player can reach by falling normally, with the exception of ship which also has an upwards max velocity in addition to the downwards one.
However the max velocity can be temporarily overridden by force blocks until it goes back down to the regular max velocity.
Ticks held is how many ticks one needs to hold for before the click action triggers.
-1 would mean it triggers on that tick, 2 would mean it triggers on the nextt
+1 would mean it triggers on that tick, 2 would mean it triggers on the next
(Both would have their actions occur on the following tick, but 2 would mean swift clicks don't trigger the click action).
Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump velocity.
+## Input restrictions
+| Gamemode | Ticks Held | Can Click Midair? |
+| ----------- | ---------- | ----------------- |
+| Cube | 1 | No |
+| Ship | 2 | Yes |
+| Ball | 1 | No |
+| UFO | 2 | Yes |
+| Wave | 2 | Yes |
+| Robot | 1 | No |
+| Spider | 1 | No |
+| Swingcopter | 2 | Yes |
+
+
+
#### 0.5x Speed Portal
-| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
-| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
-| Cube | Sets the y-velocity to 10.62G | N/A | -15G | 1 | No |
-| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
-| Ball | Sets the y-velocity to 3.186G then toggles the gravity | N/A | -15G | 1 | No |
-| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
-| Wave | Sets the y-velocity to 4.186G | Sets the velocity to -4.186G | N/A | 2 | Yes |
-| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
-| Spider | See section "Spider" below | N/A | -15 | 1 | No |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
+| Gamemode | Click | Release | Max y-velocity |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- |
+| Cube | Sets the y-velocity to 10.62G | N/A | -15G |
+| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release |
+| Ball | Sets the y-velocity to 3.186G then toggles the gravity | N/A | -15G |
+| Ufo | Sets the y-velocity to 7G | N/A | -6.4G |
+| Wave | Sets the y-velocity to 4.186G | Sets the velocity to -4.186G | N/A |
+| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G |
+| Spider | See section "Spider" below | N/A | -15 |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G |
#### 1x Speed Portal
-| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
-| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
-| Cube | Sets the y-velocity to 11.18G | N/A | -15G | 1 | No |
-| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
-| Ball | Sets the y-velocity to 3.354G then toggles the gravity | N/A | -15G | 1 | No |
-| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
-| Wave | Sets the y-velocity to 5.193G | Sets the velocity to -5.193G | N/A | 2 | Yes |
-| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
-| Spider | See section "Spider" below | N/A | -15 | 1 | No |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
+| Gamemode | Click | Release | Max y-velocity |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- |
+| Cube | Sets the y-velocity to 11.18G | N/A | -15G |
+| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release |
+| Ball | Sets the y-velocity to 3.354G then toggles the gravity | N/A | -15G |
+| Ufo | Sets the y-velocity to 7G | N/A | -6.4G |
+| Wave | Sets the y-velocity to 5.193G | Sets the velocity to -5.193G | N/A |
+| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G |
+| Spider | See section "Spider" below | N/A | -15 |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G |
#### 2x Speed Portal
-| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
-| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
-| Cube | Sets the y-velocity to 11.42G | N/A | -15G | 1 | No |
-| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
-| Ball | Sets the y-velocity to 3.426G then toggles the gravity | N/A | -15G | 1 | No |
-| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
-| Wave | Sets the y-velocity to 6.457G | Sets the velocity to -6.457G | N/A | 2 | Yes |
-| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
-| Spider | See section "Spider" below | N/A | -15 | 1 | No |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
+| Gamemode | Click | Release | Max y-velocity |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- |
+| Cube | Sets the y-velocity to 11.42G | N/A | -15G |
+| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release |
+| Ball | Sets the y-velocity to 3.426G then toggles the gravity | N/A | -15G |
+| Ufo | Sets the y-velocity to 7G | N/A | -6.4G |
+| Wave | Sets the y-velocity to 6.457G | Sets the velocity to -6.457G | N/A |
+| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G |
+| Spider | See section "Spider" below | N/A | -15 |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G |
#### 3x Speed Portal
-| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
-| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
-| Cube | Sets the y-velocity to 11.23G | N/A | -15G | 1 | No |
-| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
-| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | -15G | 1 | No |
-| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
-| Wave | Sets the y-velocity to 7.8G | Sets the velocity to -7.8G | N/A | 2 | Yes |
-| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
-| Spider | See section "Spider" below | N/A | -15 | 1 | No |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
+| Gamemode | Click | Release | Max y-velocity |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- |
+| Cube | Sets the y-velocity to 11.23G | N/A | -15G |
+| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release |
+| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | -15G |
+| Ufo | Sets the y-velocity to 7G | N/A | -6.4G |
+| Wave | Sets the y-velocity to 7.8G | Sets the velocity to -7.8G | N/A |
+| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G |
+| Spider | See section "Spider" below | N/A | -15 |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G |
#### 4x Speed Portal
-| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
-| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
-| Cube | Sets the y-velocity to 11.23G | N/A | -15G | 1 | No |
-| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
-| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | -15G | 1 | No |
-| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
-| Wave | Sets the y-velocity to 9.6G | Sets the velocity to -9.6G | N/A | 2 | Yes |
-| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
-| Spider | See section "Spider" below | N/A | -15 | 1 | No |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
+| Gamemode | Click | Release | Max y-velocity |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- |
+| Cube | Sets the y-velocity to 11.23G | N/A | -15G |
+| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release |
+| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | -15G |
+| Ufo | Sets the y-velocity to 7G | N/A | -6.4G |
+| Wave | Sets the y-velocity to 9.6G | Sets the velocity to -9.6G | N/A |
+| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G |
+| Spider | See section "Spider" below | N/A | -15 |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G |
From d68fb95d5a5c91725590b5cea03e776fbbbe6e9e Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 28 Feb 2026 12:07:06 -0600
Subject: [PATCH 07/31] updated
---
docs/player physics/gamemodes.md | 162 ++++++++++++++++++-------------
1 file changed, 94 insertions(+), 68 deletions(-)
diff --git a/docs/player physics/gamemodes.md b/docs/player physics/gamemodes.md
index 40d2943..225bc30 100644
--- a/docs/player physics/gamemodes.md
+++ b/docs/player physics/gamemodes.md
@@ -1,77 +1,103 @@
+
+
## Gamemodes
-For the tables below, gravity is describing whether the player falls up or down.
-The variable G is simply 1 when the player has regular gravity, or -1 when the player has inverse gravity.
-All the velocities are in Vels (1 Vel = 60 units/sec).
+For the tables below, G is describing whether the player falls up or down.
+The variable G is simply 1 when the player falls downwards, or -1 when the player has upwards.
+
+All the velocities are in Vels (1 Vel = 60 units/sec, as reference 1 block is 30 units).
+
Max velocity is the highest velocity the player can reach by falling normally, with the exception of ship which also has an upwards max velocity in addition to the downwards one.
However the max velocity can be temporarily overridden by force blocks until it goes back down to the regular max velocity.
+
Ticks held is how many ticks one needs to hold for before the click action triggers.
-1 would mean it triggers on that tick, 2 would mean it triggers on the nextt
+1 would mean it triggers on that tick, 2 would mean it triggers on the next
(Both would have their actions occur on the following tick, but 2 would mean swift clicks don't trigger the click action).
Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump velocity.
-#### 0.5x Speed Portal
-
-| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
-| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
-| Cube | Sets the y-velocity to 10.62G | N/A | -15G | 1 | No |
-| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
-| Ball | Sets the y-velocity to 3.186G then toggles the gravity | N/A | -15G | 1 | No |
-| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
-| Wave | Sets the y-velocity to 4.186G | Sets the velocity to -4.186G | N/A | 2 | Yes |
-| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
-| Spider | See section "Spider" below | N/A | -15 | 1 | No |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
-
-#### 1x Speed Portal
-
-| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
-| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
-| Cube | Sets the y-velocity to 11.18G | N/A | -15G | 1 | No |
-| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
-| Ball | Sets the y-velocity to 3.354G then toggles the gravity | N/A | -15G | 1 | No |
-| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
-| Wave | Sets the y-velocity to 5.193G | Sets the velocity to -5.193G | N/A | 2 | Yes |
-| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
-| Spider | See section "Spider" below | N/A | -15 | 1 | No |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
-
-#### 2x Speed Portal
-
-| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
-| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
-| Cube | Sets the y-velocity to 11.42G | N/A | -15G | 1 | No |
-| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
-| Ball | Sets the y-velocity to 3.426G then toggles the gravity | N/A | -15G | 1 | No |
-| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
-| Wave | Sets the y-velocity to 6.457G | Sets the velocity to -6.457G | N/A | 2 | Yes |
-| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
-| Spider | See section "Spider" below | N/A | -15 | 1 | No |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
-
-#### 3x Speed Portal
-
-| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
-| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
-| Cube | Sets the y-velocity to 11.23G | N/A | -15G | 1 | No |
-| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
-| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | -15G | 1 | No |
-| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
-| Wave | Sets the y-velocity to 7.8G | Sets the velocity to -7.8G | N/A | 2 | Yes |
-| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
-| Spider | See section "Spider" below | N/A | -15 | 1 | No |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
-
-#### 4x Speed Portal
-
-| Gamemode | Click | Release | Max y-velocity | Ticks held | Can click in midair? |
-| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------- | ---------- | -------------------- |
-| Cube | Sets the y-velocity to 11.23G | N/A | -15G | 1 | No |
-| Ship | skipped for now | skipped for now | 8G on hold, -6.4G on release | 2 | Yes |
-| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | -15G | 1 | No |
-| Ufo | Sets the y-velocity to 7G | N/A | -6.4G | 2 | Yes |
-| Wave | Sets the y-velocity to 9.6G | Sets the velocity to -9.6G | N/A | 2 | Yes |
-| Robot | Sets the y-velocity to 5.31G | Decelerates according to the tps | -15G | 1 | No |
-| Spider | See section "Spider" below | N/A | -15 | 1 | No |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | -8G | 2 | Yes |
+### Gamemode Restrictions
+
+| Gamemode | Ticks Held | Can Click Midair? | Max y-velocity |
+| ----------- | ---------- | ----------------- | ---------------------------- |
+| Cube | 1 | No | -15G |
+| Ship | 2 | Yes | 8G on hold, -6.4G on release |
+| Ball | 1 | No | -15G |
+| UFO | 2 | Yes | -6.4G |
+| Wave | 2 | Yes | N/A |
+| Robot | 1 | No | -15G |
+| Spider | 1 | No | -15G |
+| Swingcopter | 2 | Yes | -8G |
+
+
+
+### 0.5x Speed Portal
+
+| Gamemode | Click | Hold | Release |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
+| Cube | Sets the y-velocity to 10.62G | continuously checks if the player is on the ground to process another jump* | N/A |
+| Ship | N/A | skipped for now | skipped for now |
+| Ball | Sets the y-velocity to 3.186G then toggles the gravity | N/A | N/A |
+| Ufo | Sets the y-velocity to 7G | N/A | N/A |
+| Wave | N/A | Sets the y-velocity to 4.186G | Sets the velocity to -4.186G |
+| Robot | N/A | Sets the y-velocity to 5.31G | Decelerates according to the tps and speed* |
+| Spider | See section "Spider" below | N/A | N/A |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
+
+### 1x Speed Portal
+
+| Gamemode | Click | Hold | Release |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
+| Cube | Sets the y-velocity to 11.18G | continuously checks if the player is on the ground to process another jump* | N/A |
+| Ship | N/A | skipped for now | skipped for now |
+| Ball | Sets the y-velocity to 3.354G then toggles the gravity | N/A | N/A |
+| Ufo | Sets the y-velocity to 7G | N/A | N/A |
+| Wave | N/A | Sets the y-velocity to 5.193G | Sets the velocity to -5.193G |
+| Robot | N/A | Sets the y-velocity to 5.59G | Decelerates according to the tps and speed* |
+| Spider | See section "Spider" below | N/A | N/A |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
+
+### 2x Speed Portal
+
+| Gamemode | Click | Hold | Release |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
+| Cube | Sets the y-velocity to 11.42G | continuously checks if the player is on the ground to process another jump* | N/A |
+| Ship | N/A | skipped for now | skipped for now |
+| Ball | Sets the y-velocity to 3.426G then toggles the gravity | N/A | N/A |
+| Ufo | Sets the y-velocity to 7G | N/A | N/A |
+| Wave | N/A | Sets the y-velocity to 6.457G | Sets the velocity to -6.457G |
+| Robot | N/A | Sets the y-velocity to 5.71G | Decelerates according to the tps and speed* |
+| Spider | See section "Spider" below | N/A | N/A |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
+
+### 3x Speed Portal
+
+| Gamemode | Click | Hold | Release |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
+| Cube | Sets the y-velocity to 11.23G | continuously checks if the player is on the ground to process another jump* | N/A |
+| Ship | N/A | skipped for now | skipped for now |
+| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | N/A |
+| Ufo | Sets the y-velocity to 7G | N/A | N/A |
+| Wave | N/A | Sets the y-velocity to 7.8G | Sets the velocity to -7.8G |
+| Robot | N/A | Sets the y-velocity to 5.615G | Decelerates according to the tps and speed* |
+| Spider | See section "Spider" below | N/A | N/A |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
+
+### 4x Speed Portal
+
+| Gamemode | Click | Hold | Release |
+| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
+| Cube | Sets the y-velocity to 11.23G | continuously checks if the player is on the ground to process another jump* | N/A |
+| Ship | N/A | skipped for now | skipped for now |
+| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | N/A |
+| Ufo | Sets the y-velocity to 7G | N/A | N/A |
+| Wave | N/A | Sets the y-velocity to 9.6G | Sets the velocity to -9.6G |
+| Robot | N/A | Sets the y-velocity to 5.615G | Decelerates according to the tps and speed* |
+| Spider | See section "Spider" below | N/A | N/A |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
+
+*Every gamemode is constantly affected by an acceleration similar to the mechanism of real life gravity which is dependent on the speed portal and tps. Robot hold disables that gravity while holding and sets the yvel to 5.31G until release. This "gravity" affects the velocity on a tick by tick basis so that is part of one of the many game loops. for cube click, it first sets the velocity then later on processes gravity in that same tick so it would not be exactly 11.18G on the first tick for 1x speed, but rather it would be 11.18G - acceleration (in the case of 240tps that would be 11.18 - 0.216 or 10.964). However, on the second jump of a hold or a buffer click, the gravity is processed before the buffered jump meaning the player would experience the full jump force on the first tick which is what causes the common effect of the player jumping slightly higher on the second jump. More info on gravity acceleration can be seen on this desmos graph: https://www.desmos.com/calculator/chaw9hqeew (keep in mind that ship is still not fully understood so don't rely on it for ship)
+
+### Spider
+
+Spider is relatively complex compared to the other gamemodes. When the player clicks, the blue hitbox searches in the direction of -G (meaning normal gravity would search upwards and vice versa) for the nearest unobstructed solid platform. "Unobstructed" means there is no hazard in the way. To my knowledge, this is the only time where hazards affect the blue hitbox and not the red hitbox. Once it finds an unobstructed platform, it simply teleports to it and switches the gravity. If the platform was obstructed, then it teleports to the first obstruction then, as expected, kills the player. However, just because the platform was unobstructed to the smaller blue hitbox does not mean that it is unobstructed to the red hitbox. If there is a hazard that touches the red hitbox after it teleports, then it kills the player despite it not touching the blue hitbox as it was teleporting. This all happens in the span of one tick.
From cbd49e201f88ef150a270981d1ffb20e99b0b402 Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 28 Feb 2026 12:10:05 -0600
Subject: [PATCH 08/31] Add documentation for orbs and pads mechanics
---
docs/player physics/orbs and pads.md | 29 ++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
create mode 100644 docs/player physics/orbs and pads.md
diff --git a/docs/player physics/orbs and pads.md b/docs/player physics/orbs and pads.md
new file mode 100644
index 0000000..461647b
--- /dev/null
+++ b/docs/player physics/orbs and pads.md
@@ -0,0 +1,29 @@
+## Orbs and Pads
+
+### Orbs
+
+| | Cube | Ship | Ball | Ufo | Wave | Robot | Spider | Swingcopter |
+| ---------- | ----------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------- | ----------------------------------------------------------- | --------------- | ----------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
+| Yellow Orb | Sets yvel to cube jump velocity at respective speed portal | Sets yvel to 8G | Cube yellow orb but multiplied by 0.7 | Sets yvel to 8G | N/A | Cube yellow orb but multiplied by 0.9 | Cube yellow orb but multiplied by 0.7 | Cube yellow orb but multiplied by 0.6 |
+| Pink Orb | Cube yellow orb but multiplied by 0.72 | Cube yellow orb but multiplied by 0.37 | Ball yellow orb but multiplied by 0.77 | Cube yellow orb but multiplied by 0.42 | N/A | Cube yellow orb but multiplied by 0.72 | Spider yellow orb but multiplied by 0.77 | Swingcopter yellow orb but multiplied by 0.72 |
+| Red Orb | Cube yellow orb but multiplied by 1.38 | Same as cube yellow orb | Ball yellow orb but multiplied by 1.34 | Cube yellow orb but multiplied by 1.02 | N/A | Cube yellow orb but multiplied by 1.28 | Spider yellow orb but multiplied by 1.34 | Swingcopter yellow orb but multiplied by 1.38 |
+| Blue Orb | Cube yellow orb but multiplied by 0.4, then toggles gravity | Cube yellow orb but multiplied by 0.4, then toggles gravity | Ball yellow orb but multiplied by 0.4, then toggles gravity | Cube yellow orb but multiplied by 0.4, then toggles gravity | Toggles gravity | Cube yellow orb but multiplied by 0.4, then toggles gravity | Spider yellow orb but multiplied by 0.4, then toggles gravity | Swingcopter yellow orb but multiplied by 0.4, then toggles gravity |
+| Green Orb | Cube yellow orb but multiplied by -1, then toggles gravity | Cube yellow orb but multiplied by -0.7, then toggles gravity | Ball yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -8G, then toggles the gravity | Toggles gravity | Cube yellow orb but multiplied by -1, then toggles gravity | Spider yellow orb but multiplied by -1, then toggles gravity | Spider yellow orb but multiplied by -1, then toggles gravity |
+| Black Orb | Sets yvel to -15G | Sets yvel to -14G, slows down the velocity back to the max velocity (-6.4G) at a rate of ship >= 1.916 click velocity acceleration (what??) | Sets yvel to -15G | Sets yvel to -11.2G, does not stop accelerating | N/A | Sets yvel to -15G | Sets yvel to -15G | Sets yvel to -14G, does not stop accelerating |
+
+#### Spider Orbs
+
+Spider orbs are the same as spider click, but for any gamemode. Except the direction is not always -G, and it depends on the rotation of the orb. It will be downwards if \(91\le\theta\lt270\), then the gravity will be set to normal. It will be upwards if \(-90\le\theta\lt91\) and \(\theta\ge-90\) then the gravity will be set to inverse. Also, object rotation wraps around to \(-90\) when \(\theta\gt270\). This is true for any rotatable object.
+
+#### Dash Orbs
+
+Dash orbs can be somewhat compared to slopes. The y-velocity is always displayed as 0 but the player moves along an angle equal to the angle of the dash orb. With the release of 2.2, dash orbs were allowed to be rotated freely contrary to their previous limit of \(-70\le\theta\le70\). However, that change was purely visual, and the player's movement will still be limited to those constraints if the angle were outside of those bounds. In the situation where \(90\le\theta\le270\) then the player's rotation will be \(180-\theta\) and then limited to the constraints of \(-70\le\theta\le70\). All this happens after the second tick of holding, meaning swift clicks (on green dash orbs) would do nothing. Pink dash orbs are slightly different. Swift clicks multiply the current yvel by 0.5 before toggling the gravity. Otherwise, they function the same as green dash orbs, but they toggle the gravity as well.
+
+### Pads
+
+| | Cube | Ship | Ball | Ufo | Wave | Robot | Spider | Swingcopter |
+| ---------- | --------------------------------------- | ------------------------------------------------------ | ---------------------------------------- | ------------------------------------------------------ | --------------- | --------------------------------------- | ---------------------------------------- | ---------------------------------------- |
+| Yellow Pad | Sets yvel to 16G | Sets yvel to 16G, then sets it to 8G on following tick | Sets yvel to 9.6G | Sets yvel to 16G, then sets it to 8G on following tick | N/A | Sets yvel to 16G | Sets yvel to 9.6G | Sets yvel to 9.6G |
+| Pink Pad | Sets yvel to 10.4G | Sets yvel to 5.6G | Sets yvel to 6.72G | Sets yvel to 6.4G | N/A | Sets yvel to 10.4G | Sets yvel to 6.72G | Sets yvel to 6.24G |
+| Red Pad | Sets yvel to 20G | Sets yvel to 10.08G | Sets yvel to 12G | Sets yvel to 9.6G | N/A | Sets yvel to 20G | Sets yvel to 12G | Sets yvel to 12G |
+| Blue Pad | Sets yvel to 6.4G, then toggles gravity | Sets yvel to 6.4G, then toggles gravity | Sets yvel to 3.84G, then toggles gravity | Sets yvel to 6.4G, then toggles gravity | Toggles gravity | Sets yvel to 6.4G, then toggles gravity | Sets yvel to 3.84G, then toggles gravity | Sets yvel to 3.84G, then toggles gravity |
From 9d1d3b6ee5ce7d79a2b2756a02235de5a4eb7018 Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 28 Feb 2026 12:15:13 -0600
Subject: [PATCH 09/31] Document force blocks and their acceleration
calculations
---
docs/player physics/force blocks.md | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 docs/player physics/force blocks.md
diff --git a/docs/player physics/force blocks.md b/docs/player physics/force blocks.md
new file mode 100644
index 0000000..7beb53d
--- /dev/null
+++ b/docs/player physics/force blocks.md
@@ -0,0 +1,21 @@
+## Force Blocks
+
+The acceleration in Vels from a force block without relative or range turned on can be calculated with the following equation.
+$$
+\Large
+F=\tfrac{\operatorname{round}\left(\left(\tfrac{\cos(\theta_1)9x_1 \ + \ \cos(\theta_2)9x_2\ ...\ + \ \cos(\theta_n)9x_n}{40}\right) \ \cdot \ 1000 \right)}{1000}+A
+\\
+\text{Where \(x\) is the value of the force block, \(A\) is the acceleration from gravity*,}
+\\
+\text{\(n\) is the amount of force blocks that are being stacked, and \(\theta\) is the angle of rotation of the force block}
+\\
+\\
+\text{*(refer to desmos graph in "Gamemodes" section)}
+$$
+The acceleration ends once the player is no longer touching the force block and it returns back to \(A\). If the player is touching two or more force blocks with no ForceIDs or different ForceIDs at once, then their accelerations get added up together, which is all added to the acceleration \(A\) as usual. However, if a force block causes the velocity to go past the maximum velocity, then the maximum velocity is temporarily increased by \(F\). Another way of saying that is the velocity is set to \(F\) rather than increase by \(F\) every tick. The force is also affected depending on the rotation of the force block.
+
+The equation above can be simplified if there is no force block stacking.
+$$
+\Large
+F=\tfrac{\operatorname{round}(\cos(\theta) \ \cdot \ 225x)}{1000}+A
+$$
From 5daa84e91d717e09127734c4dfda44d208db9d25 Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 28 Feb 2026 12:23:09 -0600
Subject: [PATCH 10/31] added equation1
---
docs/player physics/forceblocksvg/equation1.svg | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 docs/player physics/forceblocksvg/equation1.svg
diff --git a/docs/player physics/forceblocksvg/equation1.svg b/docs/player physics/forceblocksvg/equation1.svg
new file mode 100644
index 0000000..03e9c77
--- /dev/null
+++ b/docs/player physics/forceblocksvg/equation1.svg
@@ -0,0 +1,2 @@
+
+
From e2c0a3a798534c17b0c045481d30e5751d714c46 Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 28 Feb 2026 12:23:58 -0600
Subject: [PATCH 11/31] updated equation1
---
docs/player physics/forceblocksvg/equation1.svg | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/player physics/forceblocksvg/equation1.svg b/docs/player physics/forceblocksvg/equation1.svg
index 03e9c77..f2d7e49 100644
--- a/docs/player physics/forceblocksvg/equation1.svg
+++ b/docs/player physics/forceblocksvg/equation1.svg
@@ -1,2 +1,2 @@
-
+
From 725b2f84f8cab97a236e5e3240960da10fa7c0bc Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 28 Feb 2026 12:25:04 -0600
Subject: [PATCH 12/31] added equation2
---
docs/player physics/forceblocksvg/equation2 | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 docs/player physics/forceblocksvg/equation2
diff --git a/docs/player physics/forceblocksvg/equation2 b/docs/player physics/forceblocksvg/equation2
new file mode 100644
index 0000000..3acf3c8
--- /dev/null
+++ b/docs/player physics/forceblocksvg/equation2
@@ -0,0 +1,2 @@
+
+
From 46a31ba0f215e29e80e7e23531a0b10c2d9d9555 Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 28 Feb 2026 12:25:16 -0600
Subject: [PATCH 13/31] Rename equation2 to equation2.svg
---
docs/player physics/forceblocksvg/{equation2 => equation2.svg} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename docs/player physics/forceblocksvg/{equation2 => equation2.svg} (100%)
diff --git a/docs/player physics/forceblocksvg/equation2 b/docs/player physics/forceblocksvg/equation2.svg
similarity index 100%
rename from docs/player physics/forceblocksvg/equation2
rename to docs/player physics/forceblocksvg/equation2.svg
From 29c339da44763c4a9b3c5ebcaead1619f394a45b Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 28 Feb 2026 12:28:12 -0600
Subject: [PATCH 14/31] asdasd
---
docs/player physics/force blocks.md | 18 +++---------------
1 file changed, 3 insertions(+), 15 deletions(-)
diff --git a/docs/player physics/force blocks.md b/docs/player physics/force blocks.md
index 7beb53d..8d5c23a 100644
--- a/docs/player physics/force blocks.md
+++ b/docs/player physics/force blocks.md
@@ -1,21 +1,9 @@
## Force Blocks
The acceleration in Vels from a force block without relative or range turned on can be calculated with the following equation.
-$$
-\Large
-F=\tfrac{\operatorname{round}\left(\left(\tfrac{\cos(\theta_1)9x_1 \ + \ \cos(\theta_2)9x_2\ ...\ + \ \cos(\theta_n)9x_n}{40}\right) \ \cdot \ 1000 \right)}{1000}+A
-\\
-\text{Where \(x\) is the value of the force block, \(A\) is the acceleration from gravity*,}
-\\
-\text{\(n\) is the amount of force blocks that are being stacked, and \(\theta\) is the angle of rotation of the force block}
-\\
-\\
-\text{*(refer to desmos graph in "Gamemodes" section)}
-$$
+
+
The acceleration ends once the player is no longer touching the force block and it returns back to \(A\). If the player is touching two or more force blocks with no ForceIDs or different ForceIDs at once, then their accelerations get added up together, which is all added to the acceleration \(A\) as usual. However, if a force block causes the velocity to go past the maximum velocity, then the maximum velocity is temporarily increased by \(F\). Another way of saying that is the velocity is set to \(F\) rather than increase by \(F\) every tick. The force is also affected depending on the rotation of the force block.
The equation above can be simplified if there is no force block stacking.
-$$
-\Large
-F=\tfrac{\operatorname{round}(\cos(\theta) \ \cdot \ 225x)}{1000}+A
-$$
+
From f5e1e780f7366a102019f8fd2445a0f675b632e8 Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 28 Feb 2026 12:33:40 -0600
Subject: [PATCH 15/31] asd
---
docs/player physics/forceblocksvg/equation1.svg | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/player physics/forceblocksvg/equation1.svg b/docs/player physics/forceblocksvg/equation1.svg
index f2d7e49..653815a 100644
--- a/docs/player physics/forceblocksvg/equation1.svg
+++ b/docs/player physics/forceblocksvg/equation1.svg
@@ -1,2 +1,2 @@
-
+
From b846f205d8ff1f2fe716700d0e1a742642426682 Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 28 Feb 2026 12:34:15 -0600
Subject: [PATCH 16/31] asdsad
---
docs/player physics/forceblocksvg/equation2.svg | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/player physics/forceblocksvg/equation2.svg b/docs/player physics/forceblocksvg/equation2.svg
index 3acf3c8..bb1346f 100644
--- a/docs/player physics/forceblocksvg/equation2.svg
+++ b/docs/player physics/forceblocksvg/equation2.svg
@@ -1,2 +1,2 @@
-
+
From a451fd04f1cb1f711674b17947ba6ed1c7e7603f Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 28 Feb 2026 12:35:22 -0600
Subject: [PATCH 17/31] asd
---
docs/player physics/forceblocksvg/equation2.svg | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/player physics/forceblocksvg/equation2.svg b/docs/player physics/forceblocksvg/equation2.svg
index bb1346f..23b3ed9 100644
--- a/docs/player physics/forceblocksvg/equation2.svg
+++ b/docs/player physics/forceblocksvg/equation2.svg
@@ -1,2 +1,2 @@
-
+
From 96a1f180791a5360926bb37d8460367b618ce70b Mon Sep 17 00:00:00 2001
From: ch-zzzy <123283435+ch-zzzy@users.noreply.github.com>
Date: Sat, 28 Feb 2026 12:35:53 -0600
Subject: [PATCH 18/31] Update force blocks.md
From 884c982d892ce42f857682bfb9558406ac74f7f9 Mon Sep 17 00:00:00 2001
From: jojo989 <70300454+jojo989@users.noreply.github.com>
Date: Mon, 16 Mar 2026 19:50:40 -0300
Subject: [PATCH 19/31] Update 'Ticks held' explanation in gamemodes.md
Clarified the explanation of 'Ticks held' and its impact on action triggers.
---
docs/player physics/gamemodes.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/docs/player physics/gamemodes.md b/docs/player physics/gamemodes.md
index 225bc30..94e448e 100644
--- a/docs/player physics/gamemodes.md
+++ b/docs/player physics/gamemodes.md
@@ -11,7 +11,9 @@ Max velocity is the highest velocity the player can reach by falling normally, w
However the max velocity can be temporarily overridden by force blocks until it goes back down to the regular max velocity.
Ticks held is how many ticks one needs to hold for before the click action triggers.
-1 would mean it triggers on that tick, 2 would mean it triggers on the next
+The action occurs on the tick immediately following the last required tick:
+ 1 means the action triggers on the next tick.
+ 2 means it triggers one tick later.
(Both would have their actions occur on the following tick, but 2 would mean swift clicks don't trigger the click action).
Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump velocity.
From a69e9b0544b56a1d4a4da5fff6f667f773fe1ae7 Mon Sep 17 00:00:00 2001
From: xparadoxical <43796685+xparadoxical@users.noreply.github.com>
Date: Mon, 16 Mar 2026 17:04:10 +0100
Subject: [PATCH 20/31] Use underscores in filenames, add everything to
Reference
---
.vitepress/sidebar.mts | 37 +++++++++++--------
.../player_physics/force_blocks.md} | 0
.../forceblocksvg/equation1.svg | 0
.../forceblocksvg/equation2.svg | 0
.../player_physics}/gamemodes.md | 0
.../player_physics}/hitboxes.md | 0
.../player_physics/orbs_and_pads.md} | 0
7 files changed, 22 insertions(+), 15 deletions(-)
rename docs/{player physics/force blocks.md => reference/player_physics/force_blocks.md} (100%)
rename docs/{player physics => reference/player_physics}/forceblocksvg/equation1.svg (100%)
rename docs/{player physics => reference/player_physics}/forceblocksvg/equation2.svg (100%)
rename docs/{player physics => reference/player_physics}/gamemodes.md (100%)
rename docs/{player physics => reference/player_physics}/hitboxes.md (100%)
rename docs/{player physics/orbs and pads.md => reference/player_physics/orbs_and_pads.md} (100%)
diff --git a/.vitepress/sidebar.mts b/.vitepress/sidebar.mts
index 3b17f10..60e3f62 100644
--- a/.vitepress/sidebar.mts
+++ b/.vitepress/sidebar.mts
@@ -340,6 +340,28 @@ export default [
{
"text": "Reference",
"items": [
+ {
+ "text": "Player physics",
+ "items": [
+ {
+ "text": "Hitboxes",
+ "link": "/reference/player_physics/hitboxes"
+ },
+ {
+ "text": "Gamemodes",
+ "link": "/reference/player_physics/gamemodes"
+ },
+ {
+ "text": "Force Blocks",
+ "link": "/reference/player_physics/force_blocks"
+ },
+ {
+ "text": "Orbs and Pads",
+ "link": "/reference/player_physics/orbs_and_pads"
+ }
+ ],
+ "collapsed": true
+ },
{
"text": "Keys",
"link": "/reference/keys"
@@ -616,20 +638,5 @@ export default [
}
],
"collapsed": false
- },
-
-
- {
- "text": "Player physics",
- "items": [
- {
- "text": "Hitboxes",
- "link": "/player physics/hitboxes"
- },
- {
- "text": "Gamemodes",
- "link": "/player physics/gamemodes"
- }
- ]
}
];
diff --git a/docs/player physics/force blocks.md b/docs/reference/player_physics/force_blocks.md
similarity index 100%
rename from docs/player physics/force blocks.md
rename to docs/reference/player_physics/force_blocks.md
diff --git a/docs/player physics/forceblocksvg/equation1.svg b/docs/reference/player_physics/forceblocksvg/equation1.svg
similarity index 100%
rename from docs/player physics/forceblocksvg/equation1.svg
rename to docs/reference/player_physics/forceblocksvg/equation1.svg
diff --git a/docs/player physics/forceblocksvg/equation2.svg b/docs/reference/player_physics/forceblocksvg/equation2.svg
similarity index 100%
rename from docs/player physics/forceblocksvg/equation2.svg
rename to docs/reference/player_physics/forceblocksvg/equation2.svg
diff --git a/docs/player physics/gamemodes.md b/docs/reference/player_physics/gamemodes.md
similarity index 100%
rename from docs/player physics/gamemodes.md
rename to docs/reference/player_physics/gamemodes.md
diff --git a/docs/player physics/hitboxes.md b/docs/reference/player_physics/hitboxes.md
similarity index 100%
rename from docs/player physics/hitboxes.md
rename to docs/reference/player_physics/hitboxes.md
diff --git a/docs/player physics/orbs and pads.md b/docs/reference/player_physics/orbs_and_pads.md
similarity index 100%
rename from docs/player physics/orbs and pads.md
rename to docs/reference/player_physics/orbs_and_pads.md
From 7d697dda86892dab38483adad36cc6abdab7e8b8 Mon Sep 17 00:00:00 2001
From: xparadoxical <43796685+xparadoxical@users.noreply.github.com>
Date: Tue, 17 Mar 2026 00:56:40 +0100
Subject: [PATCH 21/31] Unformat/reformat tables, transpose the orb one
less columns = less vertical reading experience
---
docs/reference/player_physics/gamemodes.md | 10 +++---
docs/reference/player_physics/hitboxes.md | 18 +++++-----
.../reference/player_physics/orbs_and_pads.md | 34 +++++++++++--------
3 files changed, 34 insertions(+), 28 deletions(-)
diff --git a/docs/reference/player_physics/gamemodes.md b/docs/reference/player_physics/gamemodes.md
index 94e448e..5f963bb 100644
--- a/docs/reference/player_physics/gamemodes.md
+++ b/docs/reference/player_physics/gamemodes.md
@@ -37,7 +37,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
-| Cube | Sets the y-velocity to 10.62G | continuously checks if the player is on the ground to process another jump* | N/A |
+| Cube | Sets the y-velocity to 10.62G | continuously checks if the player is on the ground to process another jump* | N/A |
| Ship | N/A | skipped for now | skipped for now |
| Ball | Sets the y-velocity to 3.186G then toggles the gravity | N/A | N/A |
| Ufo | Sets the y-velocity to 7G | N/A | N/A |
@@ -50,7 +50,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
-| Cube | Sets the y-velocity to 11.18G | continuously checks if the player is on the ground to process another jump* | N/A |
+| Cube | Sets the y-velocity to 11.18G | continuously checks if the player is on the ground to process another jump* | N/A |
| Ship | N/A | skipped for now | skipped for now |
| Ball | Sets the y-velocity to 3.354G then toggles the gravity | N/A | N/A |
| Ufo | Sets the y-velocity to 7G | N/A | N/A |
@@ -63,7 +63,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
-| Cube | Sets the y-velocity to 11.42G | continuously checks if the player is on the ground to process another jump* | N/A |
+| Cube | Sets the y-velocity to 11.42G | continuously checks if the player is on the ground to process another jump* | N/A |
| Ship | N/A | skipped for now | skipped for now |
| Ball | Sets the y-velocity to 3.426G then toggles the gravity | N/A | N/A |
| Ufo | Sets the y-velocity to 7G | N/A | N/A |
@@ -76,7 +76,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
-| Cube | Sets the y-velocity to 11.23G | continuously checks if the player is on the ground to process another jump* | N/A |
+| Cube | Sets the y-velocity to 11.23G | continuously checks if the player is on the ground to process another jump* | N/A |
| Ship | N/A | skipped for now | skipped for now |
| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | N/A |
| Ufo | Sets the y-velocity to 7G | N/A | N/A |
@@ -89,7 +89,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
-| Cube | Sets the y-velocity to 11.23G | continuously checks if the player is on the ground to process another jump* | N/A |
+| Cube | Sets the y-velocity to 11.23G | continuously checks if the player is on the ground to process another jump* | N/A |
| Ship | N/A | skipped for now | skipped for now |
| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | N/A |
| Ufo | Sets the y-velocity to 7G | N/A | N/A |
diff --git a/docs/reference/player_physics/hitboxes.md b/docs/reference/player_physics/hitboxes.md
index edacb63..e076517 100644
--- a/docs/reference/player_physics/hitboxes.md
+++ b/docs/reference/player_physics/hitboxes.md
@@ -5,12 +5,12 @@ a table of the hitbox size of every gamemode in units, including red hitbox and
| Gamemode | Normal blue | Mini blue | Normal red | Mini red |
-|----------|-------------|-----------|------------|----------|
-| Cube | 9 | 10 | 30 | 18 |
-| Ship | 9 | 10 | 30 | 18 |
-| Ball | 9 | 10 | 30 | 18 |
-| UFO | 9 | 10 | 30 | 18 |
-| Wave | 3 | 3 | 10 | 6 |
-| Robot | 9 | 10 | 30 | 18 |
-| Spider | 9 | 10 | 27.5 | 16.5 (?) |
-| Swing | 9 | 10 | 30 | 18 |
\ No newline at end of file
+| -------- | ----------- | --------- | ---------- | -------- |
+| Cube | 9 | 10 | 30 | 18 |
+| Ship | 9 | 10 | 30 | 18 |
+| Ball | 9 | 10 | 30 | 18 |
+| UFO | 9 | 10 | 30 | 18 |
+| Wave | 3 | 3 | 10 | 6 |
+| Robot | 9 | 10 | 30 | 18 |
+| Spider | 9 | 10 | 27.5 | 16.5 (?) |
+| Swing | 9 | 10 | 30 | 18 |
\ No newline at end of file
diff --git a/docs/reference/player_physics/orbs_and_pads.md b/docs/reference/player_physics/orbs_and_pads.md
index 461647b..078c9c3 100644
--- a/docs/reference/player_physics/orbs_and_pads.md
+++ b/docs/reference/player_physics/orbs_and_pads.md
@@ -2,14 +2,16 @@
### Orbs
-| | Cube | Ship | Ball | Ufo | Wave | Robot | Spider | Swingcopter |
-| ---------- | ----------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------- | ----------------------------------------------------------- | --------------- | ----------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
-| Yellow Orb | Sets yvel to cube jump velocity at respective speed portal | Sets yvel to 8G | Cube yellow orb but multiplied by 0.7 | Sets yvel to 8G | N/A | Cube yellow orb but multiplied by 0.9 | Cube yellow orb but multiplied by 0.7 | Cube yellow orb but multiplied by 0.6 |
-| Pink Orb | Cube yellow orb but multiplied by 0.72 | Cube yellow orb but multiplied by 0.37 | Ball yellow orb but multiplied by 0.77 | Cube yellow orb but multiplied by 0.42 | N/A | Cube yellow orb but multiplied by 0.72 | Spider yellow orb but multiplied by 0.77 | Swingcopter yellow orb but multiplied by 0.72 |
-| Red Orb | Cube yellow orb but multiplied by 1.38 | Same as cube yellow orb | Ball yellow orb but multiplied by 1.34 | Cube yellow orb but multiplied by 1.02 | N/A | Cube yellow orb but multiplied by 1.28 | Spider yellow orb but multiplied by 1.34 | Swingcopter yellow orb but multiplied by 1.38 |
-| Blue Orb | Cube yellow orb but multiplied by 0.4, then toggles gravity | Cube yellow orb but multiplied by 0.4, then toggles gravity | Ball yellow orb but multiplied by 0.4, then toggles gravity | Cube yellow orb but multiplied by 0.4, then toggles gravity | Toggles gravity | Cube yellow orb but multiplied by 0.4, then toggles gravity | Spider yellow orb but multiplied by 0.4, then toggles gravity | Swingcopter yellow orb but multiplied by 0.4, then toggles gravity |
-| Green Orb | Cube yellow orb but multiplied by -1, then toggles gravity | Cube yellow orb but multiplied by -0.7, then toggles gravity | Ball yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -8G, then toggles the gravity | Toggles gravity | Cube yellow orb but multiplied by -1, then toggles gravity | Spider yellow orb but multiplied by -1, then toggles gravity | Spider yellow orb but multiplied by -1, then toggles gravity |
-| Black Orb | Sets yvel to -15G | Sets yvel to -14G, slows down the velocity back to the max velocity (-6.4G) at a rate of ship >= 1.916 click velocity acceleration (what??) | Sets yvel to -15G | Sets yvel to -11.2G, does not stop accelerating | N/A | Sets yvel to -15G | Sets yvel to -15G | Sets yvel to -14G, does not stop accelerating |
+| Gamemode | Yellow Orb | Pink Orb | Red Orb | Blue Orb | Green Orb | Black Orb |
+| -------- | ---------- | -------- | ------- | -------- | --------- | --------- |
+| Cube | Sets yvel to cube jump velocity at respective speed portal | Cube yellow orb but multiplied by 0.72 | Cube yellow orb but multiplied by 1.38 | Cube yellow orb but multiplied by 0.4, then toggles gravity | Cube yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -15G |
+| Ship | Sets yvel to 8G | Cube yellow orb but multiplied by 0.37 | Same as cube yellow orb | Cube yellow orb but multiplied by 0.4, then toggles gravity | Cube yellow orb but multiplied by -0.7, then toggles gravity | Sets yvel to -14G, slows down the velocity back to the max velocity (-6.4G) at a rate of ship >= 1.916 click velocity acceleration (what??) |
+| Ball | Cube yellow orb but multiplied by 0.7 | Ball yellow orb but multiplied by 0.77 | Ball yellow orb but multiplied by 1.34 | Ball yellow orb but multiplied by 0.4, then toggles gravity | Ball yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -15G |
+| Ufo | Sets yvel to 8G | Cube yellow orb but multiplied by 0.42 | Cube yellow orb but multiplied by 1.02 | Cube yellow orb but multiplied by 0.4, then toggles gravity | Sets yvel to -8G, then toggles the gravity | Sets yvel to -11.2G, does not stop accelerating |
+| Wave | N/A | N/A | N/A | Toggles gravity | Toggles gravity | N/A |
+| Robot | Cube yellow orb but multiplied by 0.9 | Cube yellow orb but multiplied by 0.72 | Cube yellow orb but multiplied by 1.28 | Cube yellow orb but multiplied by 0.4, then toggles gravity | Cube yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -15G |
+| Spider | Cube yellow orb but multiplied by 0.7 | Spider yellow orb but multiplied by 0.77 | Spider yellow orb but multiplied by 1.34 | Spider yellow orb but multiplied by 0.4, then toggles gravity | Spider yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -15G |
+| Swingcopter | Cube yellow orb but multiplied by 0.6 | Swingcopter yellow orb but multiplied by 0.72 | Swingcopter yellow orb but multiplied by 1.38 | Swingcopter yellow orb but multiplied by 0.4, then toggles gravity | Spider yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -14G, does not stop accelerating |
#### Spider Orbs
@@ -21,9 +23,13 @@ Dash orbs can be somewhat compared to slopes. The y-velocity is always displayed
### Pads
-| | Cube | Ship | Ball | Ufo | Wave | Robot | Spider | Swingcopter |
-| ---------- | --------------------------------------- | ------------------------------------------------------ | ---------------------------------------- | ------------------------------------------------------ | --------------- | --------------------------------------- | ---------------------------------------- | ---------------------------------------- |
-| Yellow Pad | Sets yvel to 16G | Sets yvel to 16G, then sets it to 8G on following tick | Sets yvel to 9.6G | Sets yvel to 16G, then sets it to 8G on following tick | N/A | Sets yvel to 16G | Sets yvel to 9.6G | Sets yvel to 9.6G |
-| Pink Pad | Sets yvel to 10.4G | Sets yvel to 5.6G | Sets yvel to 6.72G | Sets yvel to 6.4G | N/A | Sets yvel to 10.4G | Sets yvel to 6.72G | Sets yvel to 6.24G |
-| Red Pad | Sets yvel to 20G | Sets yvel to 10.08G | Sets yvel to 12G | Sets yvel to 9.6G | N/A | Sets yvel to 20G | Sets yvel to 12G | Sets yvel to 12G |
-| Blue Pad | Sets yvel to 6.4G, then toggles gravity | Sets yvel to 6.4G, then toggles gravity | Sets yvel to 3.84G, then toggles gravity | Sets yvel to 6.4G, then toggles gravity | Toggles gravity | Sets yvel to 6.4G, then toggles gravity | Sets yvel to 3.84G, then toggles gravity | Sets yvel to 3.84G, then toggles gravity |
+| Gamemode | Yellow Pad | Pink Pad | Red Pad | Blue Pad |
+|-------------|--------------------------------------------------------|--------------------|---------------------|------------------------------------------|
+| Cube | Sets yvel to 16G | Sets yvel to 10.4G | Sets yvel to 20G | Sets yvel to 6.4G, then toggles gravity |
+| Ship | Sets yvel to 16G, then sets it to 8G on following tick | Sets yvel to 5.6G | Sets yvel to 10.08G | Sets yvel to 6.4G, then toggles gravity |
+| Ball | Sets yvel to 9.6G | Sets yvel to 6.72G | Sets yvel to 12G | Sets yvel to 3.84G, then toggles gravity |
+| Ufo | Sets yvel to 16G, then sets it to 8G on following tick | Sets yvel to 6.4G | Sets yvel to 9.6G | Sets yvel to 6.4G, then toggles gravity |
+| Wave | N/A | N/A | N/A | Toggles gravity |
+| Robot | Sets yvel to 16G | Sets yvel to 10.4G | Sets yvel to 20G | Sets yvel to 6.4G, then toggles gravity |
+| Spider | Sets yvel to 9.6G | Sets yvel to 6.72G | Sets yvel to 12G | Sets yvel to 3.84G, then toggles gravity |
+| Swingcopter | Sets yvel to 9.6G | Sets yvel to 6.24G | Sets yvel to 12G | Sets yvel to 3.84G, then toggles gravity |
From 5c73b574e1b93cb0cf9370ea246ad86b9507339d Mon Sep 17 00:00:00 2001
From: xparadoxical <43796685+xparadoxical@users.noreply.github.com>
Date: Tue, 17 Mar 2026 01:07:34 +0100
Subject: [PATCH 22/31] Fix headers
---
docs/reference/player_physics/force_blocks.md | 2 +-
docs/reference/player_physics/gamemodes.md | 20 ++++++++-----------
.../reference/player_physics/orbs_and_pads.md | 10 +++++-----
3 files changed, 14 insertions(+), 18 deletions(-)
diff --git a/docs/reference/player_physics/force_blocks.md b/docs/reference/player_physics/force_blocks.md
index 8d5c23a..48b175d 100644
--- a/docs/reference/player_physics/force_blocks.md
+++ b/docs/reference/player_physics/force_blocks.md
@@ -1,4 +1,4 @@
-## Force Blocks
+# Force Blocks
The acceleration in Vels from a force block without relative or range turned on can be calculated with the following equation.

diff --git a/docs/reference/player_physics/gamemodes.md b/docs/reference/player_physics/gamemodes.md
index 5f963bb..13acbd0 100644
--- a/docs/reference/player_physics/gamemodes.md
+++ b/docs/reference/player_physics/gamemodes.md
@@ -1,6 +1,4 @@
-
-
-## Gamemodes
+# Gamemodes
For the tables below, G is describing whether the player falls up or down.
The variable G is simply 1 when the player falls downwards, or -1 when the player has upwards.
@@ -18,7 +16,7 @@ The action occurs on the tick immediately following the last required tick:
Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump velocity.
-### Gamemode Restrictions
+## Gamemode Restrictions
| Gamemode | Ticks Held | Can Click Midair? | Max y-velocity |
| ----------- | ---------- | ----------------- | ---------------------------- |
@@ -31,9 +29,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Spider | 1 | No | -15G |
| Swingcopter | 2 | Yes | -8G |
-
-
-### 0.5x Speed Portal
+## 0.5x Speed Portal
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
@@ -46,7 +42,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Spider | See section "Spider" below | N/A | N/A |
| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
-### 1x Speed Portal
+## 1x Speed Portal
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
@@ -59,7 +55,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Spider | See section "Spider" below | N/A | N/A |
| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
-### 2x Speed Portal
+## 2x Speed Portal
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
@@ -72,7 +68,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Spider | See section "Spider" below | N/A | N/A |
| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
-### 3x Speed Portal
+## 3x Speed Portal
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
@@ -85,7 +81,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Spider | See section "Spider" below | N/A | N/A |
| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
-### 4x Speed Portal
+## 4x Speed Portal
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
@@ -100,6 +96,6 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
*Every gamemode is constantly affected by an acceleration similar to the mechanism of real life gravity which is dependent on the speed portal and tps. Robot hold disables that gravity while holding and sets the yvel to 5.31G until release. This "gravity" affects the velocity on a tick by tick basis so that is part of one of the many game loops. for cube click, it first sets the velocity then later on processes gravity in that same tick so it would not be exactly 11.18G on the first tick for 1x speed, but rather it would be 11.18G - acceleration (in the case of 240tps that would be 11.18 - 0.216 or 10.964). However, on the second jump of a hold or a buffer click, the gravity is processed before the buffered jump meaning the player would experience the full jump force on the first tick which is what causes the common effect of the player jumping slightly higher on the second jump. More info on gravity acceleration can be seen on this desmos graph: https://www.desmos.com/calculator/chaw9hqeew (keep in mind that ship is still not fully understood so don't rely on it for ship)
-### Spider
+## Spider
Spider is relatively complex compared to the other gamemodes. When the player clicks, the blue hitbox searches in the direction of -G (meaning normal gravity would search upwards and vice versa) for the nearest unobstructed solid platform. "Unobstructed" means there is no hazard in the way. To my knowledge, this is the only time where hazards affect the blue hitbox and not the red hitbox. Once it finds an unobstructed platform, it simply teleports to it and switches the gravity. If the platform was obstructed, then it teleports to the first obstruction then, as expected, kills the player. However, just because the platform was unobstructed to the smaller blue hitbox does not mean that it is unobstructed to the red hitbox. If there is a hazard that touches the red hitbox after it teleports, then it kills the player despite it not touching the blue hitbox as it was teleporting. This all happens in the span of one tick.
diff --git a/docs/reference/player_physics/orbs_and_pads.md b/docs/reference/player_physics/orbs_and_pads.md
index 078c9c3..a34f31e 100644
--- a/docs/reference/player_physics/orbs_and_pads.md
+++ b/docs/reference/player_physics/orbs_and_pads.md
@@ -1,6 +1,6 @@
-## Orbs and Pads
+# Orbs and Pads
-### Orbs
+## Orbs
| Gamemode | Yellow Orb | Pink Orb | Red Orb | Blue Orb | Green Orb | Black Orb |
| -------- | ---------- | -------- | ------- | -------- | --------- | --------- |
@@ -13,15 +13,15 @@
| Spider | Cube yellow orb but multiplied by 0.7 | Spider yellow orb but multiplied by 0.77 | Spider yellow orb but multiplied by 1.34 | Spider yellow orb but multiplied by 0.4, then toggles gravity | Spider yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -15G |
| Swingcopter | Cube yellow orb but multiplied by 0.6 | Swingcopter yellow orb but multiplied by 0.72 | Swingcopter yellow orb but multiplied by 1.38 | Swingcopter yellow orb but multiplied by 0.4, then toggles gravity | Spider yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -14G, does not stop accelerating |
-#### Spider Orbs
+### Spider Orbs
Spider orbs are the same as spider click, but for any gamemode. Except the direction is not always -G, and it depends on the rotation of the orb. It will be downwards if \(91\le\theta\lt270\), then the gravity will be set to normal. It will be upwards if \(-90\le\theta\lt91\) and \(\theta\ge-90\) then the gravity will be set to inverse. Also, object rotation wraps around to \(-90\) when \(\theta\gt270\). This is true for any rotatable object.
-#### Dash Orbs
+### Dash Orbs
Dash orbs can be somewhat compared to slopes. The y-velocity is always displayed as 0 but the player moves along an angle equal to the angle of the dash orb. With the release of 2.2, dash orbs were allowed to be rotated freely contrary to their previous limit of \(-70\le\theta\le70\). However, that change was purely visual, and the player's movement will still be limited to those constraints if the angle were outside of those bounds. In the situation where \(90\le\theta\le270\) then the player's rotation will be \(180-\theta\) and then limited to the constraints of \(-70\le\theta\le70\). All this happens after the second tick of holding, meaning swift clicks (on green dash orbs) would do nothing. Pink dash orbs are slightly different. Swift clicks multiply the current yvel by 0.5 before toggling the gravity. Otherwise, they function the same as green dash orbs, but they toggle the gravity as well.
-### Pads
+## Pads
| Gamemode | Yellow Pad | Pink Pad | Red Pad | Blue Pad |
|-------------|--------------------------------------------------------|--------------------|---------------------|------------------------------------------|
From 7e130344449c925ebf846134d28377a25f83027c Mon Sep 17 00:00:00 2001
From: xparadoxical <43796685+xparadoxical@users.noreply.github.com>
Date: Tue, 17 Mar 2026 01:22:59 +0100
Subject: [PATCH 23/31] Replace `N/A` with `-` for more distinction
---
docs/reference/player_physics/gamemodes.md | 80 +++++++++----------
.../reference/player_physics/orbs_and_pads.md | 4 +-
2 files changed, 42 insertions(+), 42 deletions(-)
diff --git a/docs/reference/player_physics/gamemodes.md b/docs/reference/player_physics/gamemodes.md
index 13acbd0..9226945 100644
--- a/docs/reference/player_physics/gamemodes.md
+++ b/docs/reference/player_physics/gamemodes.md
@@ -33,66 +33,66 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
-| Cube | Sets the y-velocity to 10.62G | continuously checks if the player is on the ground to process another jump* | N/A |
-| Ship | N/A | skipped for now | skipped for now |
-| Ball | Sets the y-velocity to 3.186G then toggles the gravity | N/A | N/A |
-| Ufo | Sets the y-velocity to 7G | N/A | N/A |
-| Wave | N/A | Sets the y-velocity to 4.186G | Sets the velocity to -4.186G |
-| Robot | N/A | Sets the y-velocity to 5.31G | Decelerates according to the tps and speed* |
-| Spider | See section "Spider" below | N/A | N/A |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
+| Cube | Sets the y-velocity to 10.62G | continuously checks if the player is on the ground to process another jump* | - |
+| Ship | - | skipped for now | skipped for now |
+| Ball | Sets the y-velocity to 3.186G then toggles the gravity | - | - |
+| Ufo | Sets the y-velocity to 7G | - | - |
+| Wave | - | Sets the y-velocity to 4.186G | Sets the velocity to -4.186G |
+| Robot | - | Sets the y-velocity to 5.31G | Decelerates according to the tps and speed* |
+| Spider | See section "Spider" below | - | - |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | - | - |
## 1x Speed Portal
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
-| Cube | Sets the y-velocity to 11.18G | continuously checks if the player is on the ground to process another jump* | N/A |
-| Ship | N/A | skipped for now | skipped for now |
-| Ball | Sets the y-velocity to 3.354G then toggles the gravity | N/A | N/A |
-| Ufo | Sets the y-velocity to 7G | N/A | N/A |
-| Wave | N/A | Sets the y-velocity to 5.193G | Sets the velocity to -5.193G |
-| Robot | N/A | Sets the y-velocity to 5.59G | Decelerates according to the tps and speed* |
-| Spider | See section "Spider" below | N/A | N/A |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
+| Cube | Sets the y-velocity to 11.18G | continuously checks if the player is on the ground to process another jump* | - |
+| Ship | - | skipped for now | skipped for now |
+| Ball | Sets the y-velocity to 3.354G then toggles the gravity | - | - |
+| Ufo | Sets the y-velocity to 7G | - | - |
+| Wave | - | Sets the y-velocity to 5.193G | Sets the velocity to -5.193G |
+| Robot | - | Sets the y-velocity to 5.59G | Decelerates according to the tps and speed* |
+| Spider | See section "Spider" below | - | - |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | - | - |
## 2x Speed Portal
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
-| Cube | Sets the y-velocity to 11.42G | continuously checks if the player is on the ground to process another jump* | N/A |
-| Ship | N/A | skipped for now | skipped for now |
-| Ball | Sets the y-velocity to 3.426G then toggles the gravity | N/A | N/A |
-| Ufo | Sets the y-velocity to 7G | N/A | N/A |
-| Wave | N/A | Sets the y-velocity to 6.457G | Sets the velocity to -6.457G |
-| Robot | N/A | Sets the y-velocity to 5.71G | Decelerates according to the tps and speed* |
-| Spider | See section "Spider" below | N/A | N/A |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
+| Cube | Sets the y-velocity to 11.42G | continuously checks if the player is on the ground to process another jump* | - |
+| Ship | - | skipped for now | skipped for now |
+| Ball | Sets the y-velocity to 3.426G then toggles the gravity | - | - |
+| Ufo | Sets the y-velocity to 7G | - | - |
+| Wave | - | Sets the y-velocity to 6.457G | Sets the velocity to -6.457G |
+| Robot | - | Sets the y-velocity to 5.71G | Decelerates according to the tps and speed* |
+| Spider | See section "Spider" below | - | - |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | - | - |
## 3x Speed Portal
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
-| Cube | Sets the y-velocity to 11.23G | continuously checks if the player is on the ground to process another jump* | N/A |
-| Ship | N/A | skipped for now | skipped for now |
-| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | N/A |
-| Ufo | Sets the y-velocity to 7G | N/A | N/A |
-| Wave | N/A | Sets the y-velocity to 7.8G | Sets the velocity to -7.8G |
-| Robot | N/A | Sets the y-velocity to 5.615G | Decelerates according to the tps and speed* |
-| Spider | See section "Spider" below | N/A | N/A |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
+| Cube | Sets the y-velocity to 11.23G | continuously checks if the player is on the ground to process another jump* | - |
+| Ship | - | skipped for now | skipped for now |
+| Ball | Sets the y-velocity to 3.369G then toggles the gravity | - | - |
+| Ufo | Sets the y-velocity to 7G | - | - |
+| Wave | - | Sets the y-velocity to 7.8G | Sets the velocity to -7.8G |
+| Robot | - | Sets the y-velocity to 5.615G | Decelerates according to the tps and speed* |
+| Spider | See section "Spider" below | - | - |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | - | - |
## 4x Speed Portal
| Gamemode | Click | Hold | Release |
| ----------- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------- |
-| Cube | Sets the y-velocity to 11.23G | continuously checks if the player is on the ground to process another jump* | N/A |
-| Ship | N/A | skipped for now | skipped for now |
-| Ball | Sets the y-velocity to 3.369G then toggles the gravity | N/A | N/A |
-| Ufo | Sets the y-velocity to 7G | N/A | N/A |
-| Wave | N/A | Sets the y-velocity to 9.6G | Sets the velocity to -9.6G |
-| Robot | N/A | Sets the y-velocity to 5.615G | Decelerates according to the tps and speed* |
-| Spider | See section "Spider" below | N/A | N/A |
-| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | N/A | N/A |
+| Cube | Sets the y-velocity to 11.23G | continuously checks if the player is on the ground to process another jump* | - |
+| Ship | - | skipped for now | skipped for now |
+| Ball | Sets the y-velocity to 3.369G then toggles the gravity | - | - |
+| Ufo | Sets the y-velocity to 7G | - | - |
+| Wave | - | Sets the y-velocity to 9.6G | Sets the velocity to -9.6G |
+| Robot | - | Sets the y-velocity to 5.615G | Decelerates according to the tps and speed* |
+| Spider | See section "Spider" below | - | - |
+| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | - | - |
*Every gamemode is constantly affected by an acceleration similar to the mechanism of real life gravity which is dependent on the speed portal and tps. Robot hold disables that gravity while holding and sets the yvel to 5.31G until release. This "gravity" affects the velocity on a tick by tick basis so that is part of one of the many game loops. for cube click, it first sets the velocity then later on processes gravity in that same tick so it would not be exactly 11.18G on the first tick for 1x speed, but rather it would be 11.18G - acceleration (in the case of 240tps that would be 11.18 - 0.216 or 10.964). However, on the second jump of a hold or a buffer click, the gravity is processed before the buffered jump meaning the player would experience the full jump force on the first tick which is what causes the common effect of the player jumping slightly higher on the second jump. More info on gravity acceleration can be seen on this desmos graph: https://www.desmos.com/calculator/chaw9hqeew (keep in mind that ship is still not fully understood so don't rely on it for ship)
diff --git a/docs/reference/player_physics/orbs_and_pads.md b/docs/reference/player_physics/orbs_and_pads.md
index a34f31e..3685341 100644
--- a/docs/reference/player_physics/orbs_and_pads.md
+++ b/docs/reference/player_physics/orbs_and_pads.md
@@ -8,7 +8,7 @@
| Ship | Sets yvel to 8G | Cube yellow orb but multiplied by 0.37 | Same as cube yellow orb | Cube yellow orb but multiplied by 0.4, then toggles gravity | Cube yellow orb but multiplied by -0.7, then toggles gravity | Sets yvel to -14G, slows down the velocity back to the max velocity (-6.4G) at a rate of ship >= 1.916 click velocity acceleration (what??) |
| Ball | Cube yellow orb but multiplied by 0.7 | Ball yellow orb but multiplied by 0.77 | Ball yellow orb but multiplied by 1.34 | Ball yellow orb but multiplied by 0.4, then toggles gravity | Ball yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -15G |
| Ufo | Sets yvel to 8G | Cube yellow orb but multiplied by 0.42 | Cube yellow orb but multiplied by 1.02 | Cube yellow orb but multiplied by 0.4, then toggles gravity | Sets yvel to -8G, then toggles the gravity | Sets yvel to -11.2G, does not stop accelerating |
-| Wave | N/A | N/A | N/A | Toggles gravity | Toggles gravity | N/A |
+| Wave | - | - | - | Toggles gravity | Toggles gravity | - |
| Robot | Cube yellow orb but multiplied by 0.9 | Cube yellow orb but multiplied by 0.72 | Cube yellow orb but multiplied by 1.28 | Cube yellow orb but multiplied by 0.4, then toggles gravity | Cube yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -15G |
| Spider | Cube yellow orb but multiplied by 0.7 | Spider yellow orb but multiplied by 0.77 | Spider yellow orb but multiplied by 1.34 | Spider yellow orb but multiplied by 0.4, then toggles gravity | Spider yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -15G |
| Swingcopter | Cube yellow orb but multiplied by 0.6 | Swingcopter yellow orb but multiplied by 0.72 | Swingcopter yellow orb but multiplied by 1.38 | Swingcopter yellow orb but multiplied by 0.4, then toggles gravity | Spider yellow orb but multiplied by -1, then toggles gravity | Sets yvel to -14G, does not stop accelerating |
@@ -29,7 +29,7 @@ Dash orbs can be somewhat compared to slopes. The y-velocity is always displayed
| Ship | Sets yvel to 16G, then sets it to 8G on following tick | Sets yvel to 5.6G | Sets yvel to 10.08G | Sets yvel to 6.4G, then toggles gravity |
| Ball | Sets yvel to 9.6G | Sets yvel to 6.72G | Sets yvel to 12G | Sets yvel to 3.84G, then toggles gravity |
| Ufo | Sets yvel to 16G, then sets it to 8G on following tick | Sets yvel to 6.4G | Sets yvel to 9.6G | Sets yvel to 6.4G, then toggles gravity |
-| Wave | N/A | N/A | N/A | Toggles gravity |
+| Wave | - | - | - | Toggles gravity |
| Robot | Sets yvel to 16G | Sets yvel to 10.4G | Sets yvel to 20G | Sets yvel to 6.4G, then toggles gravity |
| Spider | Sets yvel to 9.6G | Sets yvel to 6.72G | Sets yvel to 12G | Sets yvel to 3.84G, then toggles gravity |
| Swingcopter | Sets yvel to 9.6G | Sets yvel to 6.24G | Sets yvel to 12G | Sets yvel to 3.84G, then toggles gravity |
From 661ef5f9d2bcc03d2165a5ff855bad1046828279 Mon Sep 17 00:00:00 2001
From: xparadoxical <43796685+xparadoxical@users.noreply.github.com>
Date: Tue, 17 Mar 2026 01:23:34 +0100
Subject: [PATCH 24/31] pedantism
---
docs/reference/player_physics/orbs_and_pads.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/reference/player_physics/orbs_and_pads.md b/docs/reference/player_physics/orbs_and_pads.md
index 3685341..92c82ae 100644
--- a/docs/reference/player_physics/orbs_and_pads.md
+++ b/docs/reference/player_physics/orbs_and_pads.md
@@ -24,7 +24,7 @@ Dash orbs can be somewhat compared to slopes. The y-velocity is always displayed
## Pads
| Gamemode | Yellow Pad | Pink Pad | Red Pad | Blue Pad |
-|-------------|--------------------------------------------------------|--------------------|---------------------|------------------------------------------|
+| ----------- | ------------------------------------------------------ | ------------------ | ------------------- | ---------------------------------------- |
| Cube | Sets yvel to 16G | Sets yvel to 10.4G | Sets yvel to 20G | Sets yvel to 6.4G, then toggles gravity |
| Ship | Sets yvel to 16G, then sets it to 8G on following tick | Sets yvel to 5.6G | Sets yvel to 10.08G | Sets yvel to 6.4G, then toggles gravity |
| Ball | Sets yvel to 9.6G | Sets yvel to 6.72G | Sets yvel to 12G | Sets yvel to 3.84G, then toggles gravity |
From 8d4f2da7b3b539765901a938afe1955cea2c0102 Mon Sep 17 00:00:00 2001
From: xparadoxical <43796685+xparadoxical@users.noreply.github.com>
Date: Tue, 17 Mar 2026 15:40:44 +0100
Subject: [PATCH 25/31] Install and enable mathjax
---
.vitepress/config.mts | 4 +
package-lock.json | 502 ++++++++++++++++++++++++++++++++++++++++++
package.json | 1 +
3 files changed, 507 insertions(+)
diff --git a/.vitepress/config.mts b/.vitepress/config.mts
index b9ac945..3c9df06 100644
--- a/.vitepress/config.mts
+++ b/.vitepress/config.mts
@@ -30,6 +30,10 @@ export default defineConfig({
cleanUrls: true,
+ markdown: {
+ math: true
+ },
+
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
logo: "/assets/logo.png",
diff --git a/package-lock.json b/package-lock.json
index 0d254e0..e5f65e1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,6 +5,7 @@
"packages": {
"": {
"devDependencies": {
+ "markdown-it-mathjax3": "^4.3.2",
"vitepress": "^2.0.0-alpha.15",
"vitepress-sidebar": "^1.33.1",
"vue": "^3.5.27"
@@ -1366,6 +1367,26 @@
"vue": "^3.5.0"
}
},
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.9.8",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz",
+ "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.6"
+ }
+ },
+ "node_modules/ansi-colors": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
+ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/ansi-regex": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
@@ -1412,6 +1433,13 @@
"url": "https://github.com/sponsors/antfu"
}
},
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/ccount": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
@@ -1445,6 +1473,45 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/cheerio": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
+ "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cheerio-select": "^1.5.0",
+ "dom-serializer": "^1.3.2",
+ "domhandler": "^4.2.0",
+ "htmlparser2": "^6.1.0",
+ "parse5": "^6.0.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.1",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+ }
+ },
+ "node_modules/cheerio-select": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
+ "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "css-select": "^4.3.0",
+ "css-what": "^6.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -1476,6 +1543,16 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/copy-anything": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-4.0.5.tgz",
@@ -1507,6 +1584,36 @@
"node": ">= 8"
}
},
+ "node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
"node_modules/csstype": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
@@ -1538,6 +1645,75 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/dom-serializer/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -1607,6 +1783,29 @@
"@esbuild/win32-x64": "0.27.2"
}
},
+ "node_modules/escape-goat": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-3.0.0.tgz",
+ "integrity": "sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/esm": {
+ "version": "3.2.25",
+ "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
+ "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
@@ -1797,6 +1996,36 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/htmlparser2/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
"node_modules/is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
@@ -1867,6 +2096,26 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/juice": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/juice/-/juice-8.1.0.tgz",
+ "integrity": "sha512-FLzurJrx5Iv1e7CfBSZH68dC04EEvXvvVvPYB7Vx1WAuhCp1ZPIMtqxc+WTWxVkpTIC2Ach/GAv0rQbtGf6YMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cheerio": "1.0.0-rc.10",
+ "commander": "^6.1.0",
+ "mensch": "^0.3.4",
+ "slick": "^1.12.2",
+ "web-resource-inliner": "^6.0.1"
+ },
+ "bin": {
+ "juice": "bin/juice"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -1904,6 +2153,30 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/markdown-it-mathjax3": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/markdown-it-mathjax3/-/markdown-it-mathjax3-4.3.2.tgz",
+ "integrity": "sha512-TX3GW5NjmupgFtMJGRauioMbbkGsOXAAt1DZ/rzzYmTHqzkO1rNAdiMD4NiruurToPApn2kYy76x02QN26qr2w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "juice": "^8.0.0",
+ "mathjax-full": "^3.2.0"
+ }
+ },
+ "node_modules/mathjax-full": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.1.tgz",
+ "integrity": "sha512-aUz9o16MGZdeiIBwZjAfUBTiJb7LRqzZEl1YOZ8zQMGYIyh1/nxRebxKxjDe9L+xcZCr2OHdzoFBMcd6VnLv9Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esm": "^3.2.25",
+ "mhchemparser": "^4.1.0",
+ "mj-context-menu": "^0.6.1",
+ "speech-rule-engine": "^4.0.6"
+ }
+ },
"node_modules/mdast-util-to-hast": {
"version": "13.2.1",
"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
@@ -1926,6 +2199,20 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/mensch": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/mensch/-/mensch-0.3.4.tgz",
+ "integrity": "sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/mhchemparser": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz",
+ "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
"node_modules/micromark-util-character": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
@@ -2020,6 +2307,19 @@
],
"license": "MIT"
},
+ "node_modules/mime": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/minimatch": {
"version": "10.1.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
@@ -2060,6 +2360,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/mj-context-menu": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz",
+ "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
@@ -2079,6 +2386,40 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
"node_modules/oniguruma-parser": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz",
@@ -2105,6 +2446,23 @@
"dev": true,
"license": "BlueOak-1.0.0"
},
+ "node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parse5": "^6.0.1"
+ }
+ },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -2355,6 +2713,16 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/slick": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/slick/-/slick-1.12.2.tgz",
+ "integrity": "sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==",
+ "dev": true,
+ "license": "MIT (http://mootools.net/license.txt)",
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -2386,6 +2754,31 @@
"node": ">=0.10.0"
}
},
+ "node_modules/speech-rule-engine": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.2.tgz",
+ "integrity": "sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@xmldom/xmldom": "0.9.8",
+ "commander": "13.1.0",
+ "wicked-good-xpath": "1.3.0"
+ },
+ "bin": {
+ "sre": "bin/sre"
+ }
+ },
+ "node_modules/speech-rule-engine/node_modules/commander": {
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz",
+ "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -2559,6 +2952,13 @@
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/trim-lines": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
@@ -2570,6 +2970,13 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD"
+ },
"node_modules/unist-util-is": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz",
@@ -2643,6 +3050,16 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/valid-data-url": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-3.0.1.tgz",
+ "integrity": "sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/vfile": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
@@ -2831,6 +3248,84 @@
}
}
},
+ "node_modules/web-resource-inliner": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz",
+ "integrity": "sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-colors": "^4.1.1",
+ "escape-goat": "^3.0.0",
+ "htmlparser2": "^5.0.0",
+ "mime": "^2.4.6",
+ "node-fetch": "^2.6.0",
+ "valid-data-url": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/web-resource-inliner/node_modules/domhandler": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz",
+ "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/web-resource-inliner/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/web-resource-inliner/node_modules/htmlparser2": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz",
+ "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^3.3.0",
+ "domutils": "^2.4.2",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/htmlparser2?sponsor=1"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -2847,6 +3342,13 @@
"node": ">= 8"
}
},
+ "node_modules/wicked-good-xpath": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz",
+ "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
diff --git a/package.json b/package.json
index 3d47fb4..947b1a0 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,6 @@
{
"devDependencies": {
+ "markdown-it-mathjax3": "^4.3.2",
"vitepress": "^2.0.0-alpha.15",
"vitepress-sidebar": "^1.33.1",
"vue": "^3.5.27"
From 3939070ef8a079ff12849ce0a64eac31dcbcba7b Mon Sep 17 00:00:00 2001
From: xparadoxical <43796685+xparadoxical@users.noreply.github.com>
Date: Wed, 18 Mar 2026 21:48:54 +0100
Subject: [PATCH 26/31] Use latex
---
docs/reference/player_physics/force_blocks.md | 13 +++++++++----
.../player_physics/forceblocksvg/equation1.svg | 2 --
.../player_physics/forceblocksvg/equation2.svg | 2 --
docs/reference/player_physics/orbs_and_pads.md | 4 ++--
4 files changed, 11 insertions(+), 10 deletions(-)
delete mode 100644 docs/reference/player_physics/forceblocksvg/equation1.svg
delete mode 100644 docs/reference/player_physics/forceblocksvg/equation2.svg
diff --git a/docs/reference/player_physics/force_blocks.md b/docs/reference/player_physics/force_blocks.md
index 48b175d..a13aec9 100644
--- a/docs/reference/player_physics/force_blocks.md
+++ b/docs/reference/player_physics/force_blocks.md
@@ -1,9 +1,14 @@
# Force Blocks
-The acceleration in Vels from a force block without relative or range turned on can be calculated with the following equation.
-
+The acceleration in Vels from a force block without relative or range turned on can be calculated with the following equation:
+$$
+\large{F = \frac{\textrm{round}\left( \frac{\sum_{i=1}^n \cos(\theta_i)9x_i}{40}\cdot1000 \right)}{1000} + A}
+$$
+where $n$ is the number of force blocks being stacked, $x$ is the value of the force block, $A$ is the acceleration from gravity (refer to the [gravity acceleration graph](https://www.desmos.com/calculator/chaw9hqeew)), and $\theta$ is the angle of the force block.
-The acceleration ends once the player is no longer touching the force block and it returns back to \(A\). If the player is touching two or more force blocks with no ForceIDs or different ForceIDs at once, then their accelerations get added up together, which is all added to the acceleration \(A\) as usual. However, if a force block causes the velocity to go past the maximum velocity, then the maximum velocity is temporarily increased by \(F\). Another way of saying that is the velocity is set to \(F\) rather than increase by \(F\) every tick. The force is also affected depending on the rotation of the force block.
+The acceleration ends once the player is no longer touching the force block and it returns back to $A$. If the player is touching two or more force blocks with no ForceIDs or different ForceIDs at once, then their accelerations get added up together, which is all added to the acceleration $A$ as usual. However, if a force block causes the velocity to go past the maximum velocity, then the maximum velocity is temporarily increased by $F$. Another way of saying that is the velocity is set to $F$ rather than increase by $F$ every tick. The force is also affected depending on the rotation of the force block.
The equation above can be simplified if there is no force block stacking.
-
+$$
+\large{F = \frac{\textrm{round}(\cos(\theta)\cdot225x)}{1000} + A}
+$$
diff --git a/docs/reference/player_physics/forceblocksvg/equation1.svg b/docs/reference/player_physics/forceblocksvg/equation1.svg
deleted file mode 100644
index 653815a..0000000
--- a/docs/reference/player_physics/forceblocksvg/equation1.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/docs/reference/player_physics/forceblocksvg/equation2.svg b/docs/reference/player_physics/forceblocksvg/equation2.svg
deleted file mode 100644
index 23b3ed9..0000000
--- a/docs/reference/player_physics/forceblocksvg/equation2.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/docs/reference/player_physics/orbs_and_pads.md b/docs/reference/player_physics/orbs_and_pads.md
index 92c82ae..dee0a66 100644
--- a/docs/reference/player_physics/orbs_and_pads.md
+++ b/docs/reference/player_physics/orbs_and_pads.md
@@ -15,11 +15,11 @@
### Spider Orbs
-Spider orbs are the same as spider click, but for any gamemode. Except the direction is not always -G, and it depends on the rotation of the orb. It will be downwards if \(91\le\theta\lt270\), then the gravity will be set to normal. It will be upwards if \(-90\le\theta\lt91\) and \(\theta\ge-90\) then the gravity will be set to inverse. Also, object rotation wraps around to \(-90\) when \(\theta\gt270\). This is true for any rotatable object.
+Spider orbs are the same as spider click, but for any gamemode. Except the direction is not always -G, and it depends on the rotation of the orb. It will be downwards if $91\le\theta\lt270$, then the gravity will be set to normal. It will be upwards if $-90\le\theta\lt91$ and $\theta\ge-90$ then the gravity will be set to inverse. Also, object rotation wraps around to $-90$ when $\theta\gt270$. This is true for any rotatable object.
### Dash Orbs
-Dash orbs can be somewhat compared to slopes. The y-velocity is always displayed as 0 but the player moves along an angle equal to the angle of the dash orb. With the release of 2.2, dash orbs were allowed to be rotated freely contrary to their previous limit of \(-70\le\theta\le70\). However, that change was purely visual, and the player's movement will still be limited to those constraints if the angle were outside of those bounds. In the situation where \(90\le\theta\le270\) then the player's rotation will be \(180-\theta\) and then limited to the constraints of \(-70\le\theta\le70\). All this happens after the second tick of holding, meaning swift clicks (on green dash orbs) would do nothing. Pink dash orbs are slightly different. Swift clicks multiply the current yvel by 0.5 before toggling the gravity. Otherwise, they function the same as green dash orbs, but they toggle the gravity as well.
+Dash orbs can be somewhat compared to slopes. The y-velocity is always displayed as 0 but the player moves along an angle equal to the angle of the dash orb. With the release of 2.2, dash orbs were allowed to be rotated freely contrary to their previous limit of $-70\le\theta\le70$. However, that change was purely visual, and the player's movement will still be limited to those constraints if the angle were outside of those bounds. In the situation where $90\le\theta\le270$ then the player's rotation will be $180-\theta$ and then limited to the constraints of $-70\le\theta\le70$. All this happens after the second tick of holding, meaning swift clicks (on green dash orbs) would do nothing. Pink dash orbs are slightly different. Swift clicks multiply the current yvel by 0.5 before toggling the gravity. Otherwise, they function the same as green dash orbs, but they toggle the gravity as well.
## Pads
From 988662e9f2af75816f39ff93a0440e6c57bc0487 Mon Sep 17 00:00:00 2001
From: xparadoxical <43796685+xparadoxical@users.noreply.github.com>
Date: Wed, 18 Mar 2026 21:57:47 +0100
Subject: [PATCH 27/31] Enable aside for gamemodes beacuse it's too long
---
docs/reference/player_physics/gamemodes.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/docs/reference/player_physics/gamemodes.md b/docs/reference/player_physics/gamemodes.md
index 9226945..c4d7ed2 100644
--- a/docs/reference/player_physics/gamemodes.md
+++ b/docs/reference/player_physics/gamemodes.md
@@ -1,3 +1,7 @@
+---
+aside: true
+---
+
# Gamemodes
For the tables below, G is describing whether the player falls up or down.
From e65825554da6c2fb2f2c79f6473e46aac0c52989 Mon Sep 17 00:00:00 2001
From: xparadoxical <43796685+xparadoxical@users.noreply.github.com>
Date: Wed, 18 Mar 2026 21:58:26 +0100
Subject: [PATCH 28/31] Starts decelerating
---
docs/reference/player_physics/gamemodes.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/docs/reference/player_physics/gamemodes.md b/docs/reference/player_physics/gamemodes.md
index c4d7ed2..27b4b70 100644
--- a/docs/reference/player_physics/gamemodes.md
+++ b/docs/reference/player_physics/gamemodes.md
@@ -42,7 +42,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Ball | Sets the y-velocity to 3.186G then toggles the gravity | - | - |
| Ufo | Sets the y-velocity to 7G | - | - |
| Wave | - | Sets the y-velocity to 4.186G | Sets the velocity to -4.186G |
-| Robot | - | Sets the y-velocity to 5.31G | Decelerates according to the tps and speed* |
+| Robot | - | Sets the y-velocity to 5.31G | Starts decelerating according to the tps and speed* |
| Spider | See section "Spider" below | - | - |
| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | - | - |
@@ -55,7 +55,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Ball | Sets the y-velocity to 3.354G then toggles the gravity | - | - |
| Ufo | Sets the y-velocity to 7G | - | - |
| Wave | - | Sets the y-velocity to 5.193G | Sets the velocity to -5.193G |
-| Robot | - | Sets the y-velocity to 5.59G | Decelerates according to the tps and speed* |
+| Robot | - | Sets the y-velocity to 5.59G | Starts decelerating according to the tps and speed* |
| Spider | See section "Spider" below | - | - |
| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | - | - |
@@ -68,7 +68,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Ball | Sets the y-velocity to 3.426G then toggles the gravity | - | - |
| Ufo | Sets the y-velocity to 7G | - | - |
| Wave | - | Sets the y-velocity to 6.457G | Sets the velocity to -6.457G |
-| Robot | - | Sets the y-velocity to 5.71G | Decelerates according to the tps and speed* |
+| Robot | - | Sets the y-velocity to 5.71G | Starts decelerating according to the tps and speed* |
| Spider | See section "Spider" below | - | - |
| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | - | - |
@@ -81,7 +81,7 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Ball | Sets the y-velocity to 3.369G then toggles the gravity | - | - |
| Ufo | Sets the y-velocity to 7G | - | - |
| Wave | - | Sets the y-velocity to 7.8G | Sets the velocity to -7.8G |
-| Robot | - | Sets the y-velocity to 5.615G | Decelerates according to the tps and speed* |
+| Robot | - | Sets the y-velocity to 5.615G | Starts decelerating according to the tps and speed* |
| Spider | See section "Spider" below | - | - |
| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | - | - |
From 1d94f9dbee13951c59d0ef5fd3e52389e8e4fcd9 Mon Sep 17 00:00:00 2001
From: xparadoxical <43796685+xparadoxical@users.noreply.github.com>
Date: Wed, 18 Mar 2026 21:58:49 +0100
Subject: [PATCH 29/31] Make it a hyperlink
---
docs/reference/player_physics/gamemodes.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/reference/player_physics/gamemodes.md b/docs/reference/player_physics/gamemodes.md
index 27b4b70..94956c6 100644
--- a/docs/reference/player_physics/gamemodes.md
+++ b/docs/reference/player_physics/gamemodes.md
@@ -94,11 +94,11 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Ball | Sets the y-velocity to 3.369G then toggles the gravity | - | - |
| Ufo | Sets the y-velocity to 7G | - | - |
| Wave | - | Sets the y-velocity to 9.6G | Sets the velocity to -9.6G |
-| Robot | - | Sets the y-velocity to 5.615G | Decelerates according to the tps and speed* |
+| Robot | - | Sets the y-velocity to 5.615G | Starts decelerating according to the tps and speed* |
| Spider | See section "Spider" below | - | - |
| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | - | - |
-*Every gamemode is constantly affected by an acceleration similar to the mechanism of real life gravity which is dependent on the speed portal and tps. Robot hold disables that gravity while holding and sets the yvel to 5.31G until release. This "gravity" affects the velocity on a tick by tick basis so that is part of one of the many game loops. for cube click, it first sets the velocity then later on processes gravity in that same tick so it would not be exactly 11.18G on the first tick for 1x speed, but rather it would be 11.18G - acceleration (in the case of 240tps that would be 11.18 - 0.216 or 10.964). However, on the second jump of a hold or a buffer click, the gravity is processed before the buffered jump meaning the player would experience the full jump force on the first tick which is what causes the common effect of the player jumping slightly higher on the second jump. More info on gravity acceleration can be seen on this desmos graph: https://www.desmos.com/calculator/chaw9hqeew (keep in mind that ship is still not fully understood so don't rely on it for ship)
+*Every gamemode is constantly affected by an acceleration similar to the mechanism of real life gravity which is dependent on the speed portal and tps. Robot hold disables that gravity while holding and sets the yvel to 5.31G until release. This "gravity" affects the velocity on a tick by tick basis so that is part of one of the many game loops. for cube click, it first sets the velocity then later on processes gravity in that same tick so it would not be exactly 11.18G on the first tick for 1x speed, but rather it would be 11.18G - acceleration (in the case of 240tps that would be 11.18 - 0.216 or 10.964). However, on the second jump of a hold or a buffer click, the gravity is processed before the buffered jump meaning the player would experience the full jump force on the first tick which is what causes the common effect of the player jumping slightly higher on the second jump. More info on gravity acceleration can be seen on [this desmos graph](https://www.desmos.com/calculator/chaw9hqeew) (keep in mind that ship is still not fully understood so don't rely on it for ship)
## Spider
From 346f9e6a84f372a6e5f0eda8d13a168d1c783a38 Mon Sep 17 00:00:00 2001
From: xparadoxical <43796685+xparadoxical@users.noreply.github.com>
Date: Thu, 19 Mar 2026 00:49:29 +0100
Subject: [PATCH 30/31] misc
---
docs/reference/player_physics/force_blocks.md | 4 ++--
docs/reference/player_physics/gamemodes.md | 11 ++++-------
docs/reference/player_physics/hitboxes.md | 4 ++--
3 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/docs/reference/player_physics/force_blocks.md b/docs/reference/player_physics/force_blocks.md
index a13aec9..614b48c 100644
--- a/docs/reference/player_physics/force_blocks.md
+++ b/docs/reference/player_physics/force_blocks.md
@@ -1,12 +1,12 @@
# Force Blocks
-The acceleration in Vels from a force block without relative or range turned on can be calculated with the following equation:
+The acceleration in Vels from force blocks without relative or range turned on can be calculated with the following equation:
$$
\large{F = \frac{\textrm{round}\left( \frac{\sum_{i=1}^n \cos(\theta_i)9x_i}{40}\cdot1000 \right)}{1000} + A}
$$
where $n$ is the number of force blocks being stacked, $x$ is the value of the force block, $A$ is the acceleration from gravity (refer to the [gravity acceleration graph](https://www.desmos.com/calculator/chaw9hqeew)), and $\theta$ is the angle of the force block.
-The acceleration ends once the player is no longer touching the force block and it returns back to $A$. If the player is touching two or more force blocks with no ForceIDs or different ForceIDs at once, then their accelerations get added up together, which is all added to the acceleration $A$ as usual. However, if a force block causes the velocity to go past the maximum velocity, then the maximum velocity is temporarily increased by $F$. Another way of saying that is the velocity is set to $F$ rather than increase by $F$ every tick. The force is also affected depending on the rotation of the force block.
+The acceleration ends once the player is no longer touching the force block; it returns back to $A$. If the player is touching two or more force blocks with no ForceIDs or different ForceIDs at once, then their accelerations get added up together, which is all added to the acceleration $A$ as usual. However, if a force block causes the velocity to go past the maximum velocity, then the maximum velocity is temporarily increased by $F$. Another way of saying that is: the velocity is set to $F$, rather than increased by $F$ every tick. The force is also affected depending on the rotation of the force block.
The equation above can be simplified if there is no force block stacking.
$$
diff --git a/docs/reference/player_physics/gamemodes.md b/docs/reference/player_physics/gamemodes.md
index 94956c6..27a78ad 100644
--- a/docs/reference/player_physics/gamemodes.md
+++ b/docs/reference/player_physics/gamemodes.md
@@ -10,13 +10,10 @@ The variable G is simply 1 when the player falls downwards, or -1 when the playe
All the velocities are in Vels (1 Vel = 60 units/sec, as reference 1 block is 30 units).
Max velocity is the highest velocity the player can reach by falling normally, with the exception of ship which also has an upwards max velocity in addition to the downwards one.
-However the max velocity can be temporarily overridden by force blocks until it goes back down to the regular max velocity.
+However, max velocity can be temporarily overridden by force blocks until it goes back down to the regular max velocity.
Ticks held is how many ticks one needs to hold for before the click action triggers.
-The action occurs on the tick immediately following the last required tick:
- 1 means the action triggers on the next tick.
- 2 means it triggers one tick later.
-(Both would have their actions occur on the following tick, but 2 would mean swift clicks don't trigger the click action).
+The action occurs on the tick immediately following the last required tick.
Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump velocity.
@@ -98,8 +95,8 @@ Robot is also just 1/2 of cube jump velocity and ball is 3/10 of cube jump veloc
| Spider | See section "Spider" below | - | - |
| Swingcopter | Multiplies the y-velocity by 0.8 then toggles the gravity | - | - |
-*Every gamemode is constantly affected by an acceleration similar to the mechanism of real life gravity which is dependent on the speed portal and tps. Robot hold disables that gravity while holding and sets the yvel to 5.31G until release. This "gravity" affects the velocity on a tick by tick basis so that is part of one of the many game loops. for cube click, it first sets the velocity then later on processes gravity in that same tick so it would not be exactly 11.18G on the first tick for 1x speed, but rather it would be 11.18G - acceleration (in the case of 240tps that would be 11.18 - 0.216 or 10.964). However, on the second jump of a hold or a buffer click, the gravity is processed before the buffered jump meaning the player would experience the full jump force on the first tick which is what causes the common effect of the player jumping slightly higher on the second jump. More info on gravity acceleration can be seen on [this desmos graph](https://www.desmos.com/calculator/chaw9hqeew) (keep in mind that ship is still not fully understood so don't rely on it for ship)
+*Every gamemode is constantly affected by an acceleration similar to the mechanism of real life gravity which is dependent on the speed portal and tps. Robot hold disables that gravity while holding and sets the yvel to 5.31G until release. This "gravity" affects the velocity on a tick by tick basis so that is part of one of the many game loops. For cube click, it first sets the velocity then later on processes gravity in that same tick, so it would not be exactly 11.18G on the first tick for 1x speed, but rather it would be 11.18G - acceleration (in the case of 240tps that would be 11.18 - 0.216 or 10.964). However, on the second jump of a hold or a buffer click, the gravity is processed before the buffered jump meaning the player would experience the full jump force on the first tick which is what causes the common effect of the player jumping slightly higher on the second jump. More info on gravity acceleration can be seen on [this desmos graph](https://www.desmos.com/calculator/chaw9hqeew) (keep in mind that ship is still not fully understood so don't rely on it for ship).
## Spider
-Spider is relatively complex compared to the other gamemodes. When the player clicks, the blue hitbox searches in the direction of -G (meaning normal gravity would search upwards and vice versa) for the nearest unobstructed solid platform. "Unobstructed" means there is no hazard in the way. To my knowledge, this is the only time where hazards affect the blue hitbox and not the red hitbox. Once it finds an unobstructed platform, it simply teleports to it and switches the gravity. If the platform was obstructed, then it teleports to the first obstruction then, as expected, kills the player. However, just because the platform was unobstructed to the smaller blue hitbox does not mean that it is unobstructed to the red hitbox. If there is a hazard that touches the red hitbox after it teleports, then it kills the player despite it not touching the blue hitbox as it was teleporting. This all happens in the span of one tick.
+Spider is relatively complex compared to the other gamemodes. When the player clicks, the blue hitbox searches in the direction of -G (meaning normal gravity would search upwards and vice versa) for the nearest unobstructed solid platform. "Unobstructed" means there is no hazard in the way. To my knowledge, this is the only time where hazards affect the blue hitbox and not the red hitbox. Once it finds an unobstructed platform, it simply teleports to it and switches the gravity. If the platform was obstructed, then it teleports to the first obstruction and, as expected, kills the player. However, just because the platform was unobstructed to the smaller blue hitbox does not mean that it is unobstructed to the red hitbox. If there is a hazard that touches the red hitbox after it teleports, then it kills the player despite it not touching the blue hitbox as it was teleporting. This all happens in the span of one tick.
diff --git a/docs/reference/player_physics/hitboxes.md b/docs/reference/player_physics/hitboxes.md
index e076517..a0175da 100644
--- a/docs/reference/player_physics/hitboxes.md
+++ b/docs/reference/player_physics/hitboxes.md
@@ -1,7 +1,7 @@
# Player hitboxes
-a table of the hitbox size of every gamemode in units, including red hitbox and blue, and also including the size of the hitboxed in the mini gamemode
+A table of the hitbox size of every gamemode in units, including red hitbox and blue hitbox, also including sizes for the mini gamemode.
-**as reference, 1 block/1 grid on the editor is 30 units**
+As reference, 1 block/1 grid on the editor is 30 units.
| Gamemode | Normal blue | Mini blue | Normal red | Mini red |
From 543bbf6efe21a201cdfa638e88a07b478d7d8387 Mon Sep 17 00:00:00 2001
From: xparadoxical <43796685+xparadoxical@users.noreply.github.com>
Date: Thu, 19 Mar 2026 01:22:44 +0100
Subject: [PATCH 31/31] Add mathjax again lol
---
package-lock.json | 318 ++++++++++++++++++++++++++++++++++++++++++++++
package.json | 1 +
2 files changed, 319 insertions(+)
diff --git a/package-lock.json b/package-lock.json
index ec06c0a..d8ec992 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,6 +7,7 @@
"devDependencies": {
"@types/node": "^25.2.3",
"cheerio": "^1.2.0",
+ "markdown-it-mathjax3": "^4.3.2",
"vitepress": "^2.0.0-alpha.15",
"vitepress-sidebar": "^1.33.1",
"vue": "^3.5.27"
@@ -2152,6 +2153,155 @@
"node": ">=10.0.0"
}
},
+ "node_modules/juice/node_modules/cheerio": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
+ "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cheerio-select": "^1.5.0",
+ "dom-serializer": "^1.3.2",
+ "domhandler": "^4.2.0",
+ "htmlparser2": "^6.1.0",
+ "parse5": "^6.0.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.1",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+ }
+ },
+ "node_modules/juice/node_modules/cheerio-select": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
+ "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "css-select": "^4.3.0",
+ "css-what": "^6.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/juice/node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/juice/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/juice/node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/juice/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/juice/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/juice/node_modules/htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/juice/node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/juice/node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parse5": "^6.0.1"
+ }
+ },
"node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -2422,6 +2572,27 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
"node_modules/nth-check": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
@@ -3028,6 +3199,13 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD"
+ },
"node_modules/undici": {
"version": "7.22.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.22.0.tgz",
@@ -3316,6 +3494,135 @@
}
}
},
+ "node_modules/web-resource-inliner": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz",
+ "integrity": "sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-colors": "^4.1.1",
+ "escape-goat": "^3.0.0",
+ "htmlparser2": "^5.0.0",
+ "mime": "^2.4.6",
+ "node-fetch": "^2.6.0",
+ "valid-data-url": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/web-resource-inliner/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/web-resource-inliner/node_modules/dom-serializer/node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/web-resource-inliner/node_modules/domhandler": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz",
+ "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/web-resource-inliner/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/web-resource-inliner/node_modules/domutils/node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/web-resource-inliner/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/web-resource-inliner/node_modules/htmlparser2": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz",
+ "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^3.3.0",
+ "domutils": "^2.4.2",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/htmlparser2?sponsor=1"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
"node_modules/whatwg-encoding": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
@@ -3340,6 +3647,17 @@
"node": ">=18"
}
},
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
diff --git a/package.json b/package.json
index 48c6de3..37ed8f4 100644
--- a/package.json
+++ b/package.json
@@ -2,6 +2,7 @@
"devDependencies": {
"@types/node": "^25.2.3",
"cheerio": "^1.2.0",
+ "markdown-it-mathjax3": "^4.3.2",
"vitepress": "^2.0.0-alpha.15",
"vitepress-sidebar": "^1.33.1",
"vue": "^3.5.27"