Could it be possible to add some sort of test of cornering ability? Something like a simple test of lateral Gs at a given speed. I'll admit I haven't a clue how complex this would be to implement, I just love this feature and use it all the time, and would love to see it expanded like this
I think you could just use the cruise control app and the understeer assistant/a racing wheel to measure maximum lateral Gs at a certain speed.
This is not working with "Luuks tyre thermals" or "Luuks drafting mod" installed (not even disabling it is enough, you have to remove it from repo). One of those, I don´t know which, it worked again after I removed them. Why is this so?
Tried using this today, its currently broken (force closes immediately after opening) I verified the integrity of my game files and it all came back as intact. I'm assuming something with the update has broken this feature Just thought Id let ya'll know
I'm currently having the exact same issue. I was going to release my new mod, but now I'm stuck, cause I can't generate performance stats.
I had this working before the most recent update, it now brings up the command prompt for half a second, then closes and nothing happens this isn't the worst issue, as I can just fake the numbers, and not put in numbers I don't care about, but this was good for a better mod
Can anyone confirm this? Just tried it on my own game, and it crashes after a few seconds without even opening the game window. Spoiler: Error log I skipped earlier lines – nothing unusual there. Code: 1.34732|D|engine::GFXInit::createDevice| Device created, setting adapter and enumerating modes 10.67721|E|Crashreport| *** A crash has happened in C++ code. To fix it, please provide a programmer with the crash report (ZIP file when available, or DMP file otherwise). 10.67726|E|Crashreport| *** If the previous log lines are timestamped milliseconds away from this line, they might be related to the crash. Otherwise, the logs are likely unrelated. 10.67727|E|Crashreport| *** Below is how the buggy C++ code got called from Lua side: 10.67739|E|GELua.main_static_crashrpt| =============== Stack Traceback >> START >> (1) main chunk of line at line 1 (2) method C function 'registerObject' (3) Lua field 'createCanvas' at line 42 of chunk 'lua/ge/client/canvas.lua' windowPlacement = string[31]: "0 1 -1 -1 -1 -1 -9 -9 1389 2569" canvas = userdata: (...) (4) Lua field 'initializeCanvas' at line 62 of chunk 'lua/ge/client/canvas.lua' graphicsOptions = table: 0x020f25a0c848 {uiUpscaling:table: 0x020f25a15598, GraphicDynMirrorsTexsize:table: 0x020f25a170d8 (more...)} windowPlacement = string[31]: "0 1 -1 -1 -1 -1 -9 -9 1389 2569" (5) Lua field 'initializeCore' at line 1051 of chunk 'lua/ge/client/core.lua' canvas_module = table: 0x020f273b8f48 {createCanvas:function: 0x020f273b9b10, checkedLastDevice:NVIDIA GeForce RTX 3060 Laptop GPU (D3D11) (more...)} (6) Lua global 'onGameEngineStartup' at file '/lua/ge/main.lua:947' mainEventManager = userdata: (...) clientCore = table: 0x020f273aeba8 {initializeCore:function: 0x020f2618c3e0, loadCoreMaterials:function: 0x020f2618c1d8 (more...)} (7) main chunk of line at line 1 --------------- << END <<
There is no "testVehiclesPerformances.lua" anymore in the "..\BeamNG.drive\lua\ge\extensions\util\" folder. But i can't get the "calibrateESC.lua" get to run either, maybe @Diamondback and @tdev could have a look at this.
Spoiler Bumpity bump, but this seems to be fixed with 0.34. On a side note, I'm still mad that you can't performance test multiple configs at once (or I couldn't figure out how), so I created a PowerShell script that lets me automate this. Put it in your BeamNG.drive root folder (default: ...SteamLibrary\steamapps\common\BeamNG.drive\, next to BeamNG.drive.exe, not BeamNG.drive.x64.exe). Tested only on 0.34. Here's how it works: First, it finds all the vehicles in your BeamNG user folder (%LocalAppData%\BeamNG.drive\0.34\vehicles) and lets you pick which one you want to test. After you select a vehicle, it searches for all the different configurations (.pc files) that vehicle has. For each configuration, the script looks for an info_XXX.json file that contains details about that setup. If any configurations are missing their info files, it offers to create them automatically to keep everything organized. Then comes the actual testing – the script runs through each configuration one by one. For each .pc file, it: Edits the work.json file telling BeamNG what to test Launches the game using the standard batch command Runs the performance test Waits until the game closes and moves on to the next configuration When it's done, you get a summary showing: Which vehicle you tested How many configurations it went through How many new info files it had to create The only downside of this script is that the game restarts with every config, so it takes some time for it to load. To minimize this, disable all unnecessary mods and set your game to lowest settings. TL;DR: This script automatically tests all configurations for a specific car saved in your user data. Pick one car, and it'll run performance tests on every config you've saved without you having to edit work.json and re-run the tests manually. Obligatory: This script is provided AS-IS without any warranty. I take no responsibility for any damage or issues that may arise from its use. Use at your own risk. VirusTotal results.
Spoiler: ghost_cauli's message Even bumpier bump, but I really liked this script (it works in 0.35 as well). Mass-testing multiple configs for a vehicle is now a lot easier. Mass-testing all configs of multiple vehicles, however, is still a hassle. And the user folder is hardcoded which is not cool. That's why I decided to make a few tweaks to this script to make the process even more automated and personalized. I hope ghost_cauli won't be mad lol. Introducing BeamNG Vehicle Test Automation Script: Tweaked! Yeah that's a reference to ComputerCraft: Tweaked by the way. Put it in your BeamNG.drive root folder (default: ...SteamLibrary\steamapps\common\BeamNG.drive\, next to BeamNG.drive.exe, not BeamNG.drive.x64.exe). Tested on 0.35 but should be futureproof. The script itself works on both PowerShell 5.1 and 7, tested on Windows 10 but should work on other systems as well. Here's what was added: Personalized user folder: if the default one was not found, you'll be asked to input your user folder location. You can do this even if the default one was found, if you want! Personalized version folder: the latest one (found in version.txt) gets detected automatically but you'll be asked whether you want to change it as well. Selection of multiple vehicles: once you've selected the version, it searches through the vehicles folder and returns the available options as a handy array - this is part of the original functionality. But after that you can type out multiple needed vehicles (the script later checks them for existing) or use a * wildcard to select all. Batch creation of missing info files: this feature in the original script is cool but requires the user to always be ready for it popping up mid-testing so the process doesn't idle. I implemented it on the all vehicles level - even before testing you can allow for all, deny for all, or select to be asked for each one individually. Embedding of placeholders for missing info files: back in the original script the generated info_config.jsons were filled with Name and Description. I went one step further and topped it up with Config Type, Population and Value. Moreover, after selecting 'Y' on the previous question, you'll be able to define placeholders for all these elements except the name. Or type 'N' if you don't want to. Task summary for all vehicles: just as the individual summary for each vehicle, but for all of them at the end of the script sequence! Other tweaks: Pause before exiting: if something goes wrong and the script catches it, it doesn't shut the console down immediately but instead lets you read the issue and press any key to close it whenever you feel like to. Visual data framing: user folder path, game version, available vehicles list - all are now visually framed to look more appealing (and the frame isn't hardcoded but adjusts to the covered string's length). Better string coloring and spacing between elements: just for convenience! TL;DR: The script by ghost_cauli is cool but had room for improvements so I made a tweaked version with more automation and personalization. Some notes to add: The same way as in the ghost_cauli's version everything was topped up with explaining comments (thanks for it!), each new block of my version has the comment starting with (Tweak) to differentiate with the base version... though "bragging" might also be the answer. First experience with PowerShell coding, actually! Yes, the code might be a little unoptimized, but it works anyway! An AI (not embedded in the IDE) was engaged but only as a suggestion provider and additional debugger. No vibe-coding involved, I'm serious Obligatory: All the credits for the original idea and base script go to ghost_cauli. This script is provided AS-IS without any warranty. I take no responsibility for any damage or issues that may arise from its use. Use at your own risk. VirusTotal results. --- Post updated --- Edit: for some reason BeamNG thinks I haven't passed the Two-Factor yet. I will attach the .ps1 file when able to! For now, the code: Spoiler: vehicle-test-automation-tweaked.ps1 Code: # BeamNG Vehicle Test Automation Script: Tweaked # Originally scripted by ghost_cauli | Tweaked by VladisRacer # (Tweak) Get the user folder path by searching at default location and allow user to specify it immediately if not found or preferred to be changed $defaultUserFolderPath = Join-Path -Path $env:LOCALAPPDATA -ChildPath "BeamNG.drive" if (Test-Path $defaultUserFolderPath) { Write-Host "`nDefault user folder detected:`n$("-" * $defaultUserFolderPath.Length)`n$defaultUserFolderPath`n$("-" * $defaultUserFolderPath.Length)" -ForegroundColor Cyan Write-Host "`nWould you like to change it? ('N' for no)`nIf yes, paste the user folder path (game launcher > manage user folder > open folder location)" -ForegroundColor Yellow Write-Host "For example: E:\BeamNG_userfolder" -ForegroundColor DarkCyan } else { Write-Host "`nUnable to find the default user folder! Please specify its location manually." -ForegroundColor Yellow Write-Host "Paste the user folder path (game launcher > manage user folder > open folder location):" -ForegroundColor Yellow } $changeUserFolderPath = Read-Host if ($changeUserFolderPath -ieq 'N') { $userFolderPath = $defaultUserFolderPath } else { $userFolderPath = $changeUserFolderPath if (-not (Test-Path $userFolderPath)) { Write-Host "`nUser folder not found! Exiting...`n`n`n" -ForegroundColor Red Pause Exit } else { Write-Host "`nUser folder set:`n$("-" * $userFolderPath.Length)`n$userFolderPath`n$("-" * $userFolderPath.Length)" -ForegroundColor Green } } # (Tweak) Get the latest BeamNG version in the user folder to find vehicles in $userFolderVersions = Get-ChildItem -Path $userFolderPath -Directory if ($userFolderVersions.Count -eq 0) { Write-Host "`nNo game version folders found! Exiting...`n`n`n" - -ForegroundColor Red Pause Exit } try { $userFolderVersionDataString = Get-Content -Path (Join-Path -Path $userFolderPath -ChildPath "version.txt") -Raw -ErrorAction Stop $changeUserFolderVersion = '' $selectedUserFolderVersion = $userFolderVersionDataString -replace "^(\d+\.\d+)\.\d+.*", '$1' $gameVersionGetMsg = "Latest game version folder detected: $selectedUserFolderVersion" Write-Host "`n$("-" * $gameVersionGetMsg.Length)`n$gameVersionGetMsg`n$("-" * $gameVersionGetMsg.Length)" -ForegroundColor Cyan } catch { Write-Host "`nUnable to identify the currently used game version! Please select it manually." -ForegroundColor Yellow $changeUserFolderVersion = 'Y' } # (Tweak) Ask user to select a version folder if needed and check it for the vehicles subfolder if ($changeUserFolderVersion -eq '') { Write-Host "`nWould you like to change it? (Y/N)" -ForegroundColor Yellow $changeUserFolderVersionIfFound = Read-Host if ($changeUserFolderVersionIfFound -ieq 'Y') { $changeUserFolderVersion = 'Y' } } if ($changeUserFolderVersion -ieq 'Y') { $userFolderVersions = Get-ChildItem -Path $userFolderPath -Directory $userFolderVersionsLength = ($userFolderVersions | Sort-Object { $_.Name.Length } -Descending | Select-Object -First 1).Name.Length Write-Host "`nAvailable version folders:`n$("-" * $userFolderVersionsLength)" -ForegroundColor Cyan $userFolderVersions | ForEach-Object { Write-Host $_.Name } Write-Host "$("-" * $userFolderVersionsLength)" -ForegroundColor Cyan Write-Host "`nEnter the version folder name from the list above:" -ForegroundColor Yellow $selectedUserFolderVersion = Read-Host if (-not (Test-Path (Join-Path -Path $userFolderPath -ChildPath $selectedUserFolderVersion))) { Write-Host "`nThe entered version folder is missing or missspelled! Exiting...`n`n`n" -ForegroundColor Red Pause Exit } else { $gameVersionSetMsg = "Game version folder set: $selectedUserFolderVersion" Write-Host "`n$("-" * $gameVersionSetMsg.Length)`n$gameVersionSetMsg`n$("-" * $gameVersionSetMsg.Length)" -ForegroundColor Green } } if (-not (Test-Path (Join-Path -Path $userFolderPath -ChildPath (Join-Path -Path $selectedUserFolderVersion -ChildPath "vehicles")))) { Write-Host "`nThe entered version folder does not have the vehicles subfolder in it! Exiting...`n`n`n" -ForegroundColor Red Pause Exit } # (Tweaked: changed to a more universal way of string concatenation for cross-platform path handling) Get all available vehicles from BeamNG vehicles directory $vehiclesPath = Join-Path -Path $userFolderPath -ChildPath (Join-Path -Path $selectedUserFolderVersion -ChildPath "vehicles") $vehicles = Get-ChildItem -Path $vehiclesPath -Directory $vehiclesNamesLength = ($vehicles | Sort-Object { $_.Name.Length } -Descending | Select-Object -First 1).Name.Length Write-Host "`nAvailable vehicles:`n$("-" * $vehiclesNamesLength)" -ForegroundColor Cyan $vehicles | ForEach-Object { Write-Host $_.Name } Write-Host "$("-" * $vehiclesNamesLength)" -ForegroundColor Cyan # (Tweaked: added ability to select multiple vehicles) Ask user to select a vehicle Write-Host "`nType out the vehicle names from the list above separated with spaces ('*' to select all):" -ForegroundColor Yellow $enteredVehiclesList = Read-Host if ($enteredVehiclesList -ieq '*') { $validVehicles = $vehicles.Name } else { $selectedVehicles = $enteredVehiclesList -split '\s+' $validVehicles = @() $invalidVehicles = @() foreach ($testedVehicle in $selectedVehicles) { if (Test-Path (Join-Path -Path $vehiclesPath -ChildPath $testedVehicle)) { $validVehicles += $testedVehicle } else { $invalidVehicles += $testedVehicle } } $validVehiclesLength = $($validVehicles -join " | ").Length Write-Host "`nThe following vehicles were identified:`n$("-" * $validVehiclesLength)`n$($validVehicles -join " | ")`n$("-" * $validVehiclesLength)" -ForegroundColor Green if ($invalidVehicles.Count -gt 0) { $invalidVehiclesLength = $($invalidVehicles -join " | ").Length Write-Host "`nThe following vehicles are missing or missspelled:`n$("-" * $invalidVehiclesLength)`n$($invalidVehicles -join " | ")`n$("-" * $invalidVehiclesLength)`n`nExiting...`n`n`n" -ForegroundColor Red Pause # (Tweaked: added Pause before Exit so the error message can be clearly read) Exit } } <# (Deprecated: no longer needed) Write-Host "`nThe vehicles are selected for testing. Press Enter to continue or Ctrl+C to exit..." Read-Host if (-not (Test-Path "$vehiclesPath\$selectedVehicle")) { Write-Host "Vehicle not found! Exiting...`n`n`n" -ForegroundColor Red Exit } Write-Host "`nSelected vehicle: $selectedVehicle" -ForegroundColor Green Write-Host "Press Enter to continue or Ctrl+C to exit..." Read-Host #> # (Tweak) Ask user about creating missing info files for all selected vehicles if needed Write-Host "`nWould you like to create missing info files for all selected vehicles if there are any?" -ForegroundColor Yellow Write-Host "Select A if you want to be asked about each one individually. (Y/N/A)" -ForegroundColor Yellow $createFilesForAll = Read-Host # (Tweak) Ask user for placeholders $configPlaceholderType = "Unspecified" $configPlaceholderDesc = "Unspecified" $configPlaceholderValue = 0 $configPlaceholderPop = 0 Write-Host "`nWould you like to define placeholders that will be used to fill in the data fields of created configs? ('N' for no)" -ForegroundColor Yellow Write-Host "If yes, type the placeholders in the following structure: [Config Type, Description, Value, Population]" -ForegroundColor Yellow Write-Host "For example: Factory, A config generated with VTAS Tweaked, 50000, 1000" -ForegroundColor DarkCyan $addConfigPlaceholders = Read-Host if (-not($addConfigPlaceholders -ieq 'N')) { $configPlaceholders = $addConfigPlaceholders -split ',\s*' if ($configPlaceholders.Length -eq 4) { $configPlaceholderType = $configPlaceholders[0] $configPlaceholderDesc = $configPlaceholders[1] $configPlaceholderValue = $configPlaceholders[2] $configPlaceholderPop = $configPlaceholders[3] } else { Write-Host "`nIncorrect input structure: there should be THREE elements separated by commas and spaces. Exiting...`n`n`n" -ForegroundColor Red Pause Exit } if (-not ($configPlaceholderValue -match '^\d+$') -or -not ($configPlaceholderPop -match '^\d+$') ) { Write-Host "`nIncorrect input structure: Value and Population should be integers. Exiting...`n`n`n" -ForegroundColor Red Pause Exit } } # (Tweak) Log the numbers of processed configs created info files for summaries $processedConfigsNumbers = @() $createdFilesNumbers = @() # (Tweaked: made getting all .pc files and their corresponding info files repeat for each selected vehicle) Write-Host "`n" foreach ($currentVehicle in $validVehicles) { $selectedVehicle = $currentVehicle # Get all .pc files and their corresponding info files $pcFiles = Get-ChildItem -Path (Join-Path -Path $vehiclesPath -ChildPath $selectedVehicle) -Filter "*.pc" $existingInfoFiles = @{} $missingInfoFiles = @() # (Tweak) Locally log the numbers of processed configs and created info files for $currentVehicle $processedConfigsLocalNumber = 0 $createdFilesLocalNumber = 0 Write-Host "`nAnalyzing configuration files for $selectedVehicle..." -ForegroundColor Cyan # (Tweaked: added $selectedVehicle in the message) foreach ($pcFile in $pcFiles) { $infoFileName = "info_$($pcFile.BaseName).json" $infoFilePath = Join-Path $pcFile.Directory.FullName $infoFileName $processedConfigsLocalNumber ++ if (Test-Path $infoFilePath) { $existingInfoFiles[$pcFile.Name] = $infoFileName Write-Host "Identified: $($pcFile.Name) -> $infoFileName" -ForegroundColor Green } else { $missingInfoFiles += $pcFile Write-Host "Missing: $($pcFile.Name) -> $infoFileName" -ForegroundColor Yellow } } # (Tweaked: made it skip the asking process unless selected A and added $selectedVehicle in the message) Create missing info files if needed if ($missingInfoFiles.Count -gt 0) { if ($createFilesForAll -ieq 'A') { Write-Host "`nWould you like to create missing info files for $($selectedVehicle)? (Y/N)" -ForegroundColor Yellow $createFiles = Read-Host } elseif ($createFilesForAll -ieq 'Y') { $createFiles = 'Y' } elseif ($createFilesForAll -ieq 'N') { $createFiles = 'N' } if ($createFiles -ieq 'Y') { foreach ($pcFile in $missingInfoFiles) { $infoFileName = "info_$($pcFile.BaseName).json" $infoFilePath = Join-Path $pcFile.Directory.FullName $infoFileName # (Tweaked: added Config Type, Value and Population) Create new info file content $infoContent = @{ "Config Type" = $configPlaceholderType Configuration = "$($pcFile.BaseName) (Transmission type)" Description = $configPlaceholderDesc Population = $configPlaceholderPop Value = $configPlaceholderValue } $infoContent | ConvertTo-Json | Set-Content $infoFilePath (Get-Content -Path $infoFilePath) -replace ' ', ' ' | Set-Content -Path $infoFilePath $existingInfoFiles[$pcFile.Name] = $infoFileName Write-Host "Created info file: $infoFileName" -ForegroundColor Green # (Tweaked: added $selectedVehicle in the message) $createdFilesLocalNumber ++ } } } # (Tweak) Hand the number of processed configs created info configs over to the global loggers $processedConfigsNumbers += $processedConfigsLocalNumber $createdFilesNumbers += $createdFilesLocalNumber } Write-Host "`n" # (Tweaked: made the final configs lists appear for each selected vehicle separately) foreach ($currentVehicle in $validVehicles) { $selectedVehicle = $currentVehicle # Get all .pc files and their corresponding info files $pcFiles = Get-ChildItem -Path (Join-Path -Path $vehiclesPath -ChildPath $selectedVehicle) -Filter "*.pc" # (Tweaked: "fabricated" the info file name because their names are now same anyway) Final configuration files list Write-Host "`nFinal configuration files list for $($selectedVehicle):" -ForegroundColor Cyan foreach ($pcFile in $pcFiles) { Write-Host "$($pcFile.Name) -> info_$($pcFile.BaseName).json" } } Write-Host "`n`n" # (Tweak) Implement an index counter workaround to sync with $createdFilesNumbers $currentVehicleIndex = 0 # (Tweaked: made processing each configuration repeat for each selected vehicle) foreach ($currentVehicle in $validVehicles) { $selectedVehicle = $currentVehicle # Get all .pc files and their corresponding info files $pcFiles = Get-ChildItem -Path (Join-Path -Path $vehiclesPath -ChildPath $selectedVehicle) -Filter "*.pc" # Process each configuration Write-Host "Starting testing configurations of $selectedVehicle..." -ForegroundColor Cyan # (Tweaked: added $selectedVehicle in the message) foreach ($pcFile in $pcFiles) { # Update work.json as a simple text file with exact format $workContent = '[{"type": "testVehiclesPerformances", "vehicle":"' + $selectedVehicle + '", "pcFile":"' + $pcFile.BaseName + '"}]' Set-Content "work.json" -Value $workContent -NoNewline Write-Host "Testing configuration: $($pcFile.BaseName)" -ForegroundColor DarkCyan # (Tweaked: changed the color to differentiate with questions) # Run the test command $process = Start-Process -FilePath (Join-Path -Path "Bin64" -ChildPath "BeamNG.drive.x64.exe") -ArgumentList "-batch -lua extensions.load('util_worker')" -Wait -PassThru # (Tweak) Add check for successful game launch if ($process.ExitCode -eq 0) { Write-Host "Completed testing: $($pcFile.BaseName)" -ForegroundColor Green } else { Write-Host "The game crashed while testing: $($pcFile.BaseName) | Exit code: $($process.ExitCode)" -ForegroundColor Red } } # (Tweak) Recall the numbers of processed configs and created info files for the summary $processedConfigsCurrentNumber = $processedConfigsNumbers[$currentVehicleIndex] $createdFilesCurrentNumber = $createdFilesNumbers[$currentVehicleIndex] # (Tweaked: shortened) Summary Write-Host "`nTask Summary for $($selectedVehicle):" -ForegroundColor Cyan Write-Host "- Total configurations processed: $processedConfigsCurrentNumber" -ForegroundColor Green Write-Host "- Info files created: $createdFilesCurrentNumber`n`n" -ForegroundColor Green $currentVehicleIndex ++ } # (Tweak) Total summary Write-Host "`nTask Summary for all vehicles:" -ForegroundColor Cyan Write-Host "- Vehicles tested: $($validVehicles -join " | ")" -ForegroundColor Green Write-Host "- Total configurations processed: $(($processedConfigsNumbers | Measure-Object -Sum).Sum)" -ForegroundColor Green Write-Host "- Info files created: $(($createdFilesNumbers | Measure-Object -Sum).Sum)" -ForegroundColor Green Write-Host "`nPress Enter to exit..." -ForegroundColor Yellow Read-Host
Well, if you mean buttons, then something "above" PowerShell will have to be involved. And you're right, nowadays a certain part of the project has to be vibe-coded! /j For some reason I thought you'd lowkey be irritated by me not asking for permission to take your script as a base. Glad that isn't the case --- Post updated --- Argh it still doesn't allow me to attach the file. I passed 2FA four hours ago you silly forum backend
Wubba lubba bump bump! So I created a GUI version that brings all the functionality into a proper Windows application. Introducing: BeamNG Vehicle Test Automation Script – GUI Edition. Put it in your BeamNG.drive root folder (default: ...SteamLibrary\steamapps\common\BeamNG.drive\, next to BeamNG.drive.exe, not BeamNG.drive.x64.exe). Tested on 0.35, but should work on future versions. What's new in the GUI version: Wizard interface: Step-by-step screens guide you through the process instead of command-line prompts Visual vehicle selection: Check/uncheck vehicles from a list with "Select All" and "Select None" buttons Live testing log: Real-time progress updates in a terminal-style black/green log window Responsive interface: You can cancel testing, close the window, or navigate back at any time – no more frozen command windows Performance optimization: NEW! Option to temporarily use the lowest graphics settings during testing – automatically backs up and restores your original settings. Easy navigation: Go back to start new tests without restarting the application How it works: Step 1: Auto-detects your BeamNG user folder (or browse to select manually) Step 2: Select which vehicles to test from a visual checklist Step 3: Configure options (info file creation, custom values, performance settings) Step 4: Watch progress with live updates and detailed logging Features carried over from VladisRacer's version: Multiple vehicle testing in one session Automatic missing info file creation with customizable placeholders Batch operations Testing summaries IMPORTANT NOTES: You may start the script either by running the PowerShell script (ps1) or using the .bat file. Lowest Settings (Optional): The app can temporarily replace your settings.json with "lowest" graphics settings during testing. It automatically backs up and restores your original settings once the testing is finished You need the provided "settings-lowest.json" file next to the script to use this feature. You can edit it with your own settings, i.e. adding a line defining the GPU to use. If something goes wrong, your backup will be at %LocalAppData%\BeamNG.drive\0.35\settings\settings.json.bak. Always close the app using the X button or Exit/Cancel buttons. Don't kill it via Task Manager or closing the PowerShell window – the app needs to clean up BeamNG processes and restore your settings. The app was made in PowerShell using .NET Framework/Core. VirusTotal results. Screenshots: Obligatory: This script is provided AS-IS without any warranty. I take no responsibility for any damage or issues that may arise from its use. Use at your own risk. Thanks to @VladisRacer for the improvements that inspired this GUI version.
Oi oi oi that's astonishing! While the decision is make the interface themed like it's from 2000's seems so-so relative to BeamNG.drive itself, hey that's some interfacing visuals! Thought I don't get the "Don't panic!" thing. What is it for? Also, baikal mentioned let's gooooo-
"Space," it says, "is big. Really big. You just won't believe how vastly, hugely, mind-bogglingly big it is. I mean, you may think it's a long way down the road to the chemist's, but that's just peanuts to space."
O-o-oh I get it now. Never thought you'd make such a reference in a BeamNG vehicle testing automation script but wow that's pretty neat! Hi Zeit by the way, I'm a big fan of Zeidio!