
An interactive tool to help visualize the hidden complexity of shooting a rocket launcher at an adjacent wall in the game Team Fortress 2.
This project requires python >= 3.9.0 to run, and uses the numpy and matplotlib libraries for calculations and the UI.
- Install python if not already installed.
- Download and extract the zip file from the releases page.
- Install the required libraries using your system package manager, or by running the following command from the project's directory
On Windows:On Linux:py -m pip install -r requirements.txt
python -m pip install -r requirements.txt
- Run the program
On Windows:On Linux:py tf2-wallshot-tool.py
python tf2-wallshot-tool.py
The program opens two windows, one showing a set of controls to modify the scenario, and the other window showing graphs with knockback data and detailed wallshot information.
The displayed graphs demonstrate Soldier (represented by a black bounding box) facing left in front of an infinitely large wall to his right.
Right-side wallshots have a positive speed and move Soldier to the left; left-side wallshots have a negative speed and move Soldier to the right.
The data graphs and colorbar ranges can be manipulated using the buttons in the toolbar.
Clicking a point on the data graphs will select a wallshot for detailed info.
When a wallshot is selected, a button will appear in the controls window allowing very simple chaining of wallshots.
In the controls window, the textbox by the speed sliders allows simple arithmetic expressions.
In its current state, the script uses upwards of 500 MB of RAM.
- The script is still in a WIP state.
- Stock and Mangler deadzones aren't accurate directly above/below the player, and in the area where the offset clips into the wall (part of the 1-tick range)
This is due to the offset compensation being very simple, which introduces a roll to the player's viewangle vector after compensation, which isn't possible to replicate in-game without cheats.
The Original is not affected. setangangles in shown in the info box are approximate and are likely not applicable in TAS settings.
Thesetangcommand in-game applies some sort of snapping which is not accounted for by the tool.- Wallshot chaining is very basic and assumes the absolute speed of the selected wallshot becomes the next shot's forwards speed, which is unrealistic in many scenarios.
- The UI is not very responsive due to limitations with matplotlib. The frontend may swap to using pyqtgraph instead.
- The script currently does a brute-force approach for calculating knockback. This is slow and can be simplified.
- Re-generating the distance cache is very slow.