Skip to content

Commit 647379a

Browse files
authored
Merge pull request #49 from Wyliemaster/server-improve
tweaks to server to make them more informative
2 parents 94b2e22 + 24ff60b commit 647379a

File tree

10 files changed

+487
-192
lines changed

10 files changed

+487
-192
lines changed

docs/resources/server/comment.md

Lines changed: 77 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,91 @@
22

33
## Comment
44

5-
A comment is a message left on a level by a user. The server stores the message and its ID, along with the author's player ID, the likes, the percentage, etc.
5+
A Comment is a message that the player can create inside of Geometry Dash. There are **Two** types of comments: `Level Comments` and `Account Comments`
66

7-
#### Comment Object
7+
> - `Level Comments` can be found after pressing the `i` button which is located on the right side of the level menu which then opens the Comment Menu - you can also view comments by clicking on the comment icon on the player Profile. To Post a comment, the player has to click on the speech bubble icon and they can type their comment. Without any external tools, a comment can be up to **100** Characters in length<br/><br/>
8+
> - `Account Comments` can be found on a user's profile. `Account Comments` are exactly the same as `Level Comments` however the following keys will not affect it: `10, 11, 12`<br/>To Upload an Account Comment the player must click the speech bubble icon on their profile and they can type their comment. Without any external tools, a comment can be up to **140** Characters in length
89
9-
A comment is split into two sections, separated by a colon. The first part is the comment information, and the second part is the author information.
10+
### Comment Object
1011

11-
#### Comment Structure
12+
A comment object is split into two sections: a `Comment String` and an `Author String`. these two strings are divided by a `:`
1213

13-
**Note:** Keys marked with an asterisk `*` are not returned by the getGJAccountComments20 endpoint.
14+
> - The `Comment String` contains all the data regarding the comment itself<br/><br/>
15+
> - The `User String` contains all the data regarding the user who is commenting
16+
17+
The `Comment String` and `User String` are both structured with a `key~value~key~value` pairing. Here is some examples of raw responses from the server
18+
19+
20+
<!-- tabs:start -->
21+
22+
#### **Level Comment Example**
23+
```md
24+
2~R0QgRG9jcyBhcmUgZXBpYw==~3~84696119~4~0~7~0~10~0~9~2 seconds~6~12872819:1~TheWylieMaster~9~1~10~4~11~16~14~3~15~2~16~9276649
25+
```
26+
27+
#### **Account Comment Example**
28+
```md
29+
2~R0QgRG9jcyBhcmUgZXBpYw==~4~11~9~3 months~6~18083050
30+
```
31+
32+
<!-- tabs:end -->
33+
34+
Each `key` is tied to a component within the client and the `value` sets data for the specific component.
35+
A list of all known keys can be found in the table below
36+
37+
### Comment Structure
38+
39+
**Note:** Keys marked with an asterisk `*` do not affect `Account Comments`
1440

1541
| Key | Name/Value | Type | Description
1642
|-----|---------------------------|----------------------------------------------|--------------------------------------------------------------------------
17-
| 2 | Comment | **string** | The comment left by the user, encoded in [base64](/topics/encryption/base64.md)
18-
| 3 | Author* | **number** | The player ID of the author. **This is different than the account ID**
19-
| 4 | Likes | **number** | The amount of likes the comment has
20-
| 6 | Message ID | **number** | The message ID. Account comments have different IDs than level comments
21-
| 7 | isSpam | **Bool** | if a comment has been flagged as spam
22-
| 9 | Age | **string** | How long ago the comment was posted (e.g. "2 months")
23-
| 10 | Percent* | **number** | The percent the player put in their comment
24-
| 11 | ModBadge | **number** | The Mod Badge of a moderator commenting
25-
| 12 | Moderator Chat Color | **string** | Comma separated list of the RGB values of the moderator's chat color. only appears if `modBadgeID != 0`
26-
27-
#### Player Structure
43+
| 1 | levelID | **Integer** | The levelID linked to the comment
44+
| 2 | comment | **String** | The comment left by the user, encoded in [base64](/topics/encryption/base64.md)
45+
| 3 | author* | **Integer** | The player ID of the author. **This is different than the account ID**
46+
| 4 | likes | **Integer** | The amount of likes the comment has
47+
| 6 | messageID | **Integer** | The message ID. Account comments have different IDs than level comments
48+
| 7 | spam | **Bool** | If a comment has been flagged as spam
49+
| 9 | age | **String** | How long ago the comment was posted (e.g. "2 months")
50+
| 10 | percent* | **Integer** | The percent the player put in their comment
51+
| 11 | modBadge* | **Integer** | The Mod Badge of a moderator commenting
52+
| 12 | moderatorChatColor* | **String** | Comma separated list of the RGB values of the moderator's chat color - only appears if the players `modBadge > 0`
2853

29-
**Note:** This is not returned by the getGJAccountComments20 endpoint.
54+
### User Structure
55+
56+
**Note:** These values are only returned through `Level Comments`
3057

3158
| Key | Name/Value | Type | Description
3259
|-----|---------------------------|----------------------------------------------|--------------------------------------------------------------------------
33-
| 1 | Username | **string** | Author's username
34-
| 9 | Icon | **number** | Which icon the player is using, starting with 1 as the first icon
35-
| 10 | Player Color 1 | **number** | Author's primary player color, presumably ordered cronologically from left to right per update
36-
| 11 | Player Color 2 | **number** | Author's secondary player color, presumably ordered cronologically from left to right per update
37-
| 14 | Icon Type | **number** | Author's icon type indexing an array of `icon, ship, ball, ufo, wave, robot, spider`
38-
| 15 | glow | **number** | 0 = no glow, 2 = glow
39-
| 16 | Account ID | **number** | Author's account ID. **This is different than the player ID**
60+
| 1 | userName | **String** | Author's username
61+
| 9 | icon | **Integer** | Which icon the player is using, starting with 1 as the first icon
62+
| 10 | playerColor | **Integer** | Author's primary player color, presumably ordered cronologically from left to right per update
63+
| 11 | playerColor2 | **Integer** | Author's secondary player color, presumably ordered cronologically from left to right per update
64+
| 14 | iconType | **Integer** | Author's icon type indexing an array of `icon, ship, ball, ufo, wave, robot, spider`
65+
| 15 | glow | **Integer** | 0 = no glow, 2 = glow
66+
| 16 | accountID | **Integer** | Author's account ID. **This is different than the player ID**
67+
68+
### Comment Bans
69+
70+
If a user violates [the commenting rules](https://imgur.com/a/US0Biaj), they can be banned from posting comments.
71+
> As of Geometry Dash version 2.11, there are 2 different types of bans<br/>
72+
> - Permanent Bans - Only way to recieve one is by RobTop directly. The server response to trigger this is `-10`
73+
> - Temporary Bans - Elder Moderators and RobTop are able to enforce these onto people. The server response to trigger temporary bans is split into 3 components `temp_{length}_{reason}`
74+
75+
#### Temporary Ban Structure
76+
77+
| Component | Description |
78+
|:----------|:------------|
79+
| `temp` | is used for the game to identify if the user is banned |
80+
| `length` | The duration of the ban in seconds |
81+
| `reason` | The reason the user was banned |
82+
83+
### Trivia
84+
85+
- The `User String` uses the same response parser that [player profiles](/resources/server/user) use
86+
87+
- The only example of `Account Comments` where it was able to display a colour is with [RobTop's](https://gdbrowser.com/u/71) profile, this is because RobTop hardcoded the account colour into the accountID of `71`
88+
89+
- In the [December 2019 2.2 leaks](https://www.reddit.com/r/geometrydash/comments/e9b0y6/update_22_leaks_megathread/), a key wih the ID of `8` can be found hardcoded into a string for the `Versus Mode` feature - it seems to be linked to accountID as you can see from [this piece of pseudocode](https://imgur.com/a/Rjvzshb)
90+
91+
92+

docs/resources/server/friendrequest.md

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,40 @@
22

33
## Friend Request
44

5-
A friend request is an invite with a message that you can send to someone to invite them to be friends with you on Geometry Dash.
5+
One of the features in Geometry Dash is the friend system which allows players to add each other as a friend. It is part of a poorly developed social System in which players can send messages to each other.
6+
7+
The server response returns a [User String](/resources/server/user) in a response which is structured with a `key:value:key:value` pairing. Each friend request string is then split with a `|`
8+
9+
<!-- tabs:start -->
10+
11+
#### **Friend Request Example**
12+
```md
13+
1:TheWylieMaster:2:84696119:9:9:10:5:11:3:14:1:15:0:16:9276649:32:45272143:35:aGVsbG8=:41:1:37:1 week
14+
```
15+
<!-- tabs:end -->
16+
17+
Each `key` is tied to a component within the client and the `value` sets data for the specific component.
18+
A list of all known keys can be found in the table below
619

720
#### Friend Request Structure
821

922
**Note:** We will use "other user" to describe the user on the other side of the friend request, be it the receiving end or the sending end.
1023

1124
| Key | Name/Value | Type | Description
1225
|-----|---------------------------|----------------------------------------------|--------------------------------------------------------------------------
13-
| 1 | Username | **string** | The username of the other user
14-
| 2 | Player ID | **number** | The player ID of the other user. **This is different than the account ID**
15-
| 9 | Icon | **number** | Which icon the other user is using, starting with 1 as the first icon
16-
| 10 | Player Color 1 | **number** | The other user's primary player color, presumably ordered cronologically from left to right per update
17-
| 11 | Player Color 2 | **number** | The other user's secondary player color, presumably ordered cronologically from left to right per update
18-
| 14 | Icon Type | **number** | The other user's icon type indexing an array of `icon, ship, ball, ufo, wave, robot, spider`
19-
| 15 | Unknown | **number** | Either 0 or 2, might be related to glow
20-
| 16 | Account ID | **number** | The other user's account ID. **This is different than the player ID**
21-
| 32 | Friend Request ID | **number** | An ID unique to each friend request. (I'm not 100% certain on this)
22-
| 35 | Message | **string** | The friend requests's message, encoded in [base64](/topics/encryption/base64.md)
23-
| 37 | Age | **string** | How long ago the friend request was sent (e.g. "2 months")
24-
| 41 | isBlocked | **Bool** | if you have blocked the user
26+
| 1 | userName | **String** | The username of the other user
27+
| 2 | playerID | **Integer** | The player ID of the other user. **This is different than the account ID**
28+
| 9 | icon | **Integer** | Which icon the other user is using, starting with 1 as the first icon
29+
| 10 | playerColor | **Integer** | The other user's primary player color, presumably ordered cronologically from left to right per update
30+
| 11 | playerColor2 | **Integer** | The other user's secondary player color, presumably ordered cronologically from left to right per update
31+
| 14 | iconType | **Integer** | The other user's icon type indexing an array of `icon, ship, ball, ufo, wave, robot, spider`
32+
| 15 | glow | **Integer** | Either 0 or 2, might be related to glow
33+
| 16 | accountID | **Integer** | The other user's account ID. **This is different than the player ID**
34+
| 32 | friendRequestID | **Integer** | An ID unique to each friend request. (I'm not 100% certain on this)
35+
| 35 | message | **String** | The friend requests's message, encoded in [base64](/topics/encryption/base64.md)
36+
| 37 | age | **String** | How long ago the friend request was sent (e.g. "2 months")
37+
| 41 | isBlocked | **Bool** | if you have blocked the user
38+
39+
### Trivia
40+
41+
- By sending yourself a friend request through 3rd party tools, you can actually block yourself. Doing so doesn't have any serious consequences as you can see in this [video by Cvolton](https://www.youtube.com/watch?v=R18tKYFrIqE)

docs/resources/server/gauntlet.md

Lines changed: 78 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,86 @@
11
# Server Gauntlet Resource
22

3-
#### Gauntlet
3+
## Gauntlet Info
44

5-
A gauntlet is a series of 5 levels handpicked by robtop all with a common theme based on the name of the gauntlet.
5+
Gauntlets are a collection of themed levels created by the users of Geometry Dash which were hand-picked by RobTop.
66

7-
#### Gauntlet Structure
7+
- As of Geometry Dash 2.11, There are `15 gauntlets`
8+
9+
- According to the [December 2019 2.2 leaks](https://www.reddit.com/r/geometrydash/comments/e9b0y6/update_22_leaks_megathread/), 2.2 will include `44 Gauntlets`
10+
- **A list of the Gauntlet Names can be found [here](/resources/server/gauntlet?id=gauntlet-names)**<br/>*Keep in mind that these are subject to change*
11+
12+
A typical gauntlet server response is structured with a `key:value:key:value` pairing and is then split with a `|`
13+
<!-- tabs:start -->
14+
15+
#### **Gauntlet Example Response**
16+
```md
17+
1:1:3:27732941,28200611,27483789,28225110,27448202|1:2:3:20635816,28151870,25969464,24302376,27399722
18+
```
19+
<!-- tabs:end -->
20+
21+
Each `key` is tied to a component within the client and the `value` sets data for the specific component.
22+
A list of all known keys can be found in the table below
23+
24+
### Gauntlet Structure
825

926
| Key | Name/Value | Type | Description |
1027
| --- | ---------- | ---------- | ------------------------------------- |
11-
| 1 | Index | **number** | Which gauntlet this is, starting at 1 |
12-
| 3 | Levels | **string** | List of gauntlet level IDs |
28+
| 1 | gauntletID | **Integer**| the Gauntlet ID, starting at 1 |
29+
| 3 | levels | **String** | List of gauntlet level IDs seperated by `,`|
30+
31+
### Gauntlet names
32+
33+
Here is a table which shows which `gauntletID` corresponds to a specific gauntlet
34+
35+
<!-- table made with a json to mdtable script so it looks ugky :/-->
36+
37+
| ID ⠀| Name |
38+
|:---|:-----|
39+
| 1| Fire|
40+
| 2| Ice|
41+
| 3| Poison|
42+
| 4| Shadow|
43+
| 5| Lava|
44+
| 6| Bonus|
45+
| 7| Chaos|
46+
| 8| Demon|
47+
| 9| Time|
48+
| 10| Crystal|
49+
| 11| Magic|
50+
| 12| spike|
51+
| 13| Monster|
52+
| 14| Doom|
53+
| 15| Death|
54+
| 16| Forest|
55+
| 17| Rune|
56+
| 18| Force|
57+
| 19| Spooky|
58+
| 20| Dragon|
59+
| 21| Water|
60+
| 22| Haunted|
61+
| 23| Acid|
62+
| 24| Witch|
63+
| 25| Power|
64+
| 26| Potion|
65+
| 27| Snake|
66+
| 28| Toxic|
67+
| 29| Halloween|
68+
| 30| Treasure|
69+
| 31| Ghost|
70+
| 32| Gem|
71+
| 33| Inferno|
72+
| 34| Portal|
73+
| 35| Strange|
74+
| 36| Fantasy|
75+
| 37| Christmas|
76+
| 38| Surprise|
77+
| 39| Mystery|
78+
| 40| Cursed|
79+
| 41| Cyborg|
80+
| 42| Castle|
81+
| 43| Grave|
82+
| 44| Temple|
83+
84+
### Trivia
1385

86+
- Gauntlets use the same response parser as [MapPacks](/resources/server/mappack) but they do not share the full range of features mappacks have

0 commit comments

Comments
 (0)