diff --git a/.vitepress/sidebar.mts b/.vitepress/sidebar.mts
index 147181c..3b17f10 100644
--- a/.vitepress/sidebar.mts
+++ b/.vitepress/sidebar.mts
@@ -616,5 +616,20 @@ 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/player physics/force blocks.md
new file mode 100644
index 0000000..8d5c23a
--- /dev/null
+++ b/docs/player physics/force blocks.md
@@ -0,0 +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.
+
+
+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.
+
diff --git a/docs/player physics/forceblocksvg/equation1.svg b/docs/player physics/forceblocksvg/equation1.svg
new file mode 100644
index 0000000..653815a
--- /dev/null
+++ b/docs/player physics/forceblocksvg/equation1.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/docs/player physics/forceblocksvg/equation2.svg b/docs/player physics/forceblocksvg/equation2.svg
new file mode 100644
index 0000000..23b3ed9
--- /dev/null
+++ b/docs/player physics/forceblocksvg/equation2.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/docs/player physics/gamemodes.md b/docs/player physics/gamemodes.md
new file mode 100644
index 0000000..225bc30
--- /dev/null
+++ b/docs/player physics/gamemodes.md
@@ -0,0 +1,103 @@
+
+
+## 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.
+
+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 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.
+
+### 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.
diff --git a/docs/player physics/hitboxes.md b/docs/player physics/hitboxes.md
new file mode 100644
index 0000000..edacb63
--- /dev/null
+++ b/docs/player physics/hitboxes.md
@@ -0,0 +1,16 @@
+# 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
+
+**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/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 |
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": {