Building some tools for playing with the UDP data out feature from the Forza Motorsport and Forza Horizon games. Built with golang.
- Forza Motorsport 7 (and newer Forza Motorsport titles)
- Forza Horizon 4, 5 (use the
-zflag)
- Realtime telemetry output to terminal
- Telemetry data logging to csv file
- Serve Forza Telemetry data as JSON over HTTP
- Display race statistics from race/drive (when logging to CSV)
(Feel free to open an issue if you have any suggestions/feature requests)
Before building this application, you need to have Go installed on your system.
-
Install Go: Download and install Go from https://go.dev/dl/
- For Windows: Download the
.msiinstaller and run it - For macOS: Download the
.pkginstaller or usebrew install go - For Linux: Download the archive and follow the installation instructions
- For Windows: Download the
-
Verify Go installation: Open a terminal/command prompt and run:
go versionYou should see output showing your Go version (e.g.,
go version go1.x.x- any recent version will work)
To compile the application:
- Clone or download this repository
- Open a terminal/command prompt and navigate to the project directory
- Build the application with:
On Windows, you might want to use:
go build -o fdtgo build -o fdt.exe
This will create an executable file named fdt (or fdt.exe on Windows) in the current directory.
If you encounter errors while building:
- "go: command not found": Go is not installed or not in your system PATH. Install Go and make sure it's added to your PATH.
- Module-related errors: Run
go mod downloadto ensure all dependencies are available (though this project uses only the Go standard library). - Permission errors: Make sure you have write permissions in the directory where you're building.
After building the application, you need to configure your Forza game:
- From your game HUD options, enable the data out feature
- Set it to use the IP address of your computer (the application will display this when it starts)
- Set the port to 9999
- For Forza Motorsport 7, select the "car dash" format
Specify a CSV file to log to: -c log.csv (File will be overwritten if it exists)
Enable support for Forza Horizon 4/5: -z
Enable JSON server: -j
Disable realtime terminal output: -q
Enable debug information: -d
./fdt -z -j -c log.csv
./fdt -z
./fdt -c log.csv -j
On Windows, use fdt.exe instead of ./fdt.
If the -j flag is provided, JSON data will be available at: http://localhost:8080/forza. Could be used to make a web dashboard interface or something similar. JSON Format is an array of objects containing the various Forza data types.
You can see a sample of the kind of data that will be returned here.
There is a basic example JavaScript dashboard (with rev limiter function) in the /dash directory.
-
Forza data out format: https://forums.forzamotorsport.net/turn10_postsm926839_Forza-Motorsport-7--Data-Out--feature-details.aspx#post_926839
-
Forza Horizon 4 has some mystery data in the packet, waiting on info from the developers: https://forums.forzamotorsport.net/turn10_postsm1086012_Data-Output.aspx#post_1086012