Here you'll find supplementary information that can be used to enhance TRBot!
See the chatbot guide for setting up a chatbot that your viewers can talk to!
Check out the guide to integrating LiveSplitOne for a speedrun timer with splits.
TRBot has an optional game message that can be set with the
SetGameMessageCommand. An example of such a message may be "Beat level 1". Once set, the message is saved into a file specified by the game_message_path setting in the database (the default is a GameMessage.txt file in the Data folder). You can display this message on screen using OBS via the following steps:
- Create Text (GDI+, FreeType2, etc.)
- Check the box labeled "Read from file"
- Browse and select the text file.
Now the message should be displayed on screen for all your viewers to see. Whenever the message is changed through the bot, it will be updated in the file and subsequently on screen. Consult the
SetGameMessageCommand reference in the commands documentation for more information.
Displaying Twitch Chat
There are several options for displaying Twitch chat on your stream:
- ChatGameFontificator is very easy to set up, customizable, and has themes for many games out of the box.
- KapChat can be set up in a few minutes and is capable of displaying Twitch chat, including emotes, through OBS and other streaming software.
- Restream Chat
- Find another API or write your own chat display using the messages that come in through the bot.
Displaying Game Inputs
- Many emulators support displaying inputs directly.
- Open Joystick Display is easy to use, supports many game controllers, and has a streaming mode, which displays only the controller.
- obs-advanced-timer for a non-I/O intensive timer on OBS (especially good for HDDs).
- This fork adds the ability to start a countup timer from a given time ("CountupStart" branch).
Inputs should work for PC games that can recognize the virtual controllers. Some games using the SDL library may need an input mapping string to recognize the controllers. You can put this input mapping as an environment variable if there are no options for inserting them directly into a file for the game itself. For more information, see this SDL mapping tool.
Some games may not support the virtual controllers well or even at all. In this case, you may have to map the controller input to keyboard and mouse inputs. See how to do this in this section.
PC Game Precautions
Be very careful when playing PC games! Make sure that players can't exit the game, access files or perform any other malicious activities, such as shutting down the system. If you're streaming a PC game, highly consider capturing only the window with the game and not the entire display; this way if players manage to exit the game, they won't be able to see anything else on your computer. This is easier to accomplish by playing the game in windowed mode.
Automatically restart PC games on exit
If there's no way to prevent players from exiting the game, you can set up a script to restart the game once it's closed. With this, OBS should also detect that the game window is available and display it on stream again. Here's an example for bash:
(while true; do ./mygame done)
This may not always work for all games, especially those with DRM and/or can only be launched through a client, such as Steam. However, you can find a bash script that does this for Steam games here.
Mapping button presses to keyboard, mouse, or custom scripts
There's a variety of software out there capable of mapping your virtual controller inputs to keyboard keys, mouse input, or even custom scripts. Here are a few:
- AntiMicroX can remap controller inputs to keyboard keys and mouse input. It also features custom scripts that can be executed when buttons are pressed. Other features include custom mouse smoothing and a tool to generate SDL2 gamepad mappings.
- AutoHotkey can remap controller inputs to keyboard and mouse input. It also allows for custom scripts to execute upon pressing buttons (Windows-only).
For games and consoles that sleep after a period of inactivity, you can enable periodic inputs to have TRBot automatically perform an input sequence on a virtual controller at a regular interval (Ex. "a" every 5 minutes). Doing so can prevent the game or console from sleeping. Here's how to configure it:
- Set the
ValueIntof periodic_input_enabled to 1 in the database.
- Provide the input(s) you'd like to press by setting the
ValueStrof periodic_input_value. These can also be input macros and input synonyms.
- Set the controller port you'd like to press this input on through periodic_input_port.
- Set the interval to press your input(s) with periodic_input_time.
Some games and game consoles have a reset function performed by inputting a specific combination of buttons. One example is the Game Boy Advance, in which pressing "A", "B", "Start", and "Select" will reset the game.
TRBot supports an invalid input combo for each console that can be used to prevent these combinations from being pressed to forbid players from resetting the game. Invalid input combos apply per controller port.
AddInvalidInputComboCommand(default: "!addinvalidcombo") can be used to add an input to the invalid input combo. The given input must already be a valid input on the console itself.
RemoveInvalidInputComboCommand(default: "!removeinvalidcombo") can be used to remove an input from the invalid input combo.
ListInvalidInputComboCommand(default: "!invalidcombo") can be used to list the invalid input combo for a given game console.
See the Commands Documentation for more information on these commands.
TRBot is free software; as such, you can run, study, modify, and distribute it for any purpose. See the License for more information.