Skip to content
milkytoasto edited this page Mar 11, 2023 · 11 revisions

Welcome to the DSChaosMod wiki!

You can navigate to pages covering more specific topics via the sidebar.

Creating Your Branch

Moving forward, all changes will be done by branching off of main and naming your branch after the feature you are adding or bug you are fixing. Ideally, this matches the name of an issue on the feature or bug, if there isn't one, you should probably open one first and assign yourself to it to let others know it exists and is being worked on.

A valid branch might look something like gwyndolin/14-loading-state if your username is gwyndolin and you're contributing to addressing issue #14 for a Loading State feature.

Thus, you should follow the following steps:

  • git checkout main and git pull to get the latest changes
  • git checkout -b your-name/issue#-issue-title or for this example, git checkout -b gwyndolin/14-loading-state to checkout your new branch

In the case of no existing issue opened for your branch, or in a case where it might not make sense to open a new issue, simply exclude the issue number from both the branch and PR.

Submitting a Pull Request

PRs, likewise, should be named after the feature. Using the previous branch and corresponding issue for example, a valid PR title might be [14] Loading State. Inside that PR, please make sure to link back to the issue or issues being resolved, and provide a brief description of the changes being made as well as the motivation for those changes.

Project Structure

The repository is broken up into two major parts, with much of the logic being handled by the server portion.

DSChaosMod/

├── TwitchVotingOverlay/ // Contains overlay related code meant to be used as a browser source
   ├── index.html // Websocket client and overlay that communicates with server in the app
   ├── styles.css

├── TwitchVotingServer/ // Python based portion of the app that communicates with the source
   ├── bots/ // Bots for communicating with Twitch, etc.
   ├── chaos/ // Memory manipulation portion of the application
   ├── config/ // Contains configurations for the app and games
   ├── config_handler/ // Handles loading configurations found in the config directory
   ├── gui/ // All components and themes relating to the app's GUI
   ├── http_server/ // Temporary http server for adding a connection with twitch
   ├── voting/ // Handles all logic as it pertains to voting
   ├── websocket/ // Websocket server that communicates with the client in the html file
   └── server.py

├── README.md
├── LICENSE
└── ...

All of these parts rely on one another in one way or another, and communicate with each other's modules asynchronously.

I recommended starting with reading the server.py file to see at a base level how these different parts are able to access one another.

Clone this wiki locally