-
-
Notifications
You must be signed in to change notification settings - Fork 21
Gbx Explorer (Discord Edition) Design (April ‐ May 2024)
Gbx Explorer (Discord Edition) is a logical part of the general purpose GBX.NET Discord bot. It is focused on general Gbx file exploration.
Gbx state is stored as serialized bytes in an encrypted-at-rest database due to resilient reasons. On each modification, the Gbx is automatically serialized and stored in the database.
Undo should be supported and steps should stored in the database.
Imports a Gbx file to work with.
This command is limited to 3 executions per hour for all users and 100 executions per hour for supporters.
- If executed by the command's user, the message is modified.
- If executed by other users, an ephemeral response is spawned.
Execution only allowed by command's user or server moderator.
Table is a form of content to display node properties. It has 2 columns.
-
Name
- Shows the property name as in C#
- Max length is
32
(22
in Mobile mode)
-
Value
- Shows the value formatted to certain forms (to be specified)
- Max length is
24
(14
in Mobile mode)
Columns are wide only as much as necessary while being within the limits.
Main node is the initial response of the /gbx
command. It shows primary information about the imported Gbx.
- Title
- Gbx file name
- Description
- Mono-spaced table with property name and values
-
Select menu
- Selecting a property spawns the Property response
-
Export (primary)
- Responds with an always-ephemeral attachment of the Gbx stored in the database (with all applied modifications)
-
Up, Down, Left, and Right arrows
- Adjust the table visibility
- Protected mode
-
Gbx properties
- View Gbx-specific parameters like header sizes, compression types, etc.
- Protected mode to Gbx Properties response
-
Mobile mode
- Render features in a tidier form on a mobile device
- Protected mode
-
Discard (danger)
- Delete the message and Gbx from memory and database entirely
- Owner mode
Property is an always-ephemeral response that shows in-depth information about the selected node property.
- Title
- Name of the property
- Fields
- Type
- Value
- Premium (configurable)
Interaction can be different on different property types.
-
Set (primary)
- Spawns a modal to change the value
- Expected values are different based on the type
- Some types can be too complex to set directly, so this can be disabled in these scenarios
- Can be disabled on Premium properties for non-supporter users
- Owner mode
-
Add (primary)
- Spawns a modal to add an item to a collection
- Available only for
ICollection
property types - Expected values are different based on the type
- Some types can be too complex to set directly, so this can be disabled in these scenarios
- Can be disabled on Premium properties for non-supporter users
- Owner mode
-
Remove (danger)
- Spawns the Remove Item response
- Available only for
ICollection
property types - Can be disabled on Premium properties for non-supporter users
- Owner mode
-
Export (primary)
- Spawns the Node Export response on all
CMwNod
types - Other types have unknown export forms for now
- Limited to 3 executions per hour for all users and 100 executions per hour for supporters
- Spawns the Node Export response on all
TODO
Property is an always-ephemeral response that allows to specify node export parameters.
- Confirm (success)
- Responds with an always-ephemeral Gbx file attachment of the serialized node
Gbx Properties is a response that shows Gbx-specific parameters like header sizes, compression types, etc.
Unavailable is a response when the Gbx GUID is either no longer available in database or the user does not have access to it.
- Beginner
- Extracting basic map data
- Extracting ghosts from replays
- Extracting input data from ghosts
- Extracting checkpoints from ghosts (soon)
- Builders - create new nodes extremely easily (soon)
- Intermediate
- Basic map modification (soon)
- Embedding custom items to a map
- Working with script metadata
- Extracting samples from ghosts (later)
- Fast header reading and writing (later)
- Advanced
- Advanced map modification (soon)
- Creating a MediaTracker clip from scratch (soon)
- Lightmap modification (later)
- Integrate GBX.NET with other languages (later)
-
TimeInt32
andTimeSingle
(soon) - Chunks in depth - why certain properties lag? (soon)
- High-performance parsing (later)
- Purpose of Async methods (soon)
- Compatibility, class ID remapping (soon)
- Class structure (soon)
- Class verification (soon)
- Class documentation
- Gbx from noob to master
- Reading chunks in your parser