Tests
Suites
Latest Results
Search
Register
Login
Popular Tests
Flexible IO Tester
Timed Linux Kernel Compilation
Blender
7-Zip Compression
SVT-AV1
FFmpeg
Newest Tests
OpenVINO GenAI
Rustls
LiteRT
WarpX
Epoch
Valkey
Recently Updated Tests
srsRAN Project
VVenC
x265
RELION
Llamafile
Llama.cpp
New & Recently Updated Tests
Recently Updated Suites
Machine Learning
Server Motherboard
HPC - High Performance Computing
New & Recently Updated Suites
Component Benchmarks
CPUs / Processors
GPUs / Graphics
OpenGL
Disks / Storage
Motherboards
File-Systems
Operating Systems
OpenBenchmarking.org
Corporate / Organization Info
Bug Reports / Feature Requests
Total War: Three Kingdoms 1.0.3
pts/twtk-1.0.3
- 28 March 2021 -
Hang fix for latest Steam.
install.sh
#!/bin/bash -e # Install Total War Three Kingdoms on Linux and generate launcher scripts and preference templates # Base constants # export STEAM_GAME_ID=779340 export GAME_PREFS="$DEBUG_REAL_HOME/.local/share/feral-interactive/Three Kingdoms" export GAME_INSTALL_DIR_BASE="steamapps/common/Total War THREE KINGDOMS/" export DEFAULT_STEAM_INSTALL_BASE="$DEBUG_REAL_HOME/.steam/steam" # Try and install the game in case it isn't already # echo "Ensuring game is installed" HOME="$DEBUG_REAL_HOME" steam "steam://install/$STEAM_GAME_ID" # Work out the steam install directory # export CONFIG_PATH="$DEBUG_REAL_HOME/.steam/steam/config/config.vdf" echo "Searching ${CONFIG_PATH} for install directories" _INSTALL_PATHS=$( awk '/BaseInstallFolder/ { gsub(/"/, "", $2); print $2 }' "${CONFIG_PATH}" ) # Find one that contains the game while read -r STEAM_PATH; do _NEW_FULL_PATH="${STEAM_PATH}/${GAME_INSTALL_DIR_BASE}" echo "Checking for game install: ${_NEW_FULL_PATH}" if [ -d "${_NEW_FULL_PATH}" ]; then echo "Found game install: ${_NEW_FULL_PATH}" export GAME_INSTALL_DIR="${_NEW_FULL_PATH}" fi done <<< "${_INSTALL_PATHS}" # Allow the default location as well if [ ! -d "${GAME_INSTALL_DIR}" ]; then export GAME_INSTALL_DIR="${DEFAULT_STEAM_INSTALL_BASE}/${GAME_INSTALL_DIR_BASE}" echo "Using default directory for game install: ${GAME_INSTALL_DIR}" fi # Bail if we still couldn't find the game if [ ! -f "${GAME_INSTALL_DIR}/ThreeKingdoms.sh" ]; then >&2 echo "Missing run script in install dir - ${GAME_INSTALL_DIR}/ThreeKingdoms.sh" exit 1 fi # Gather the steam env variables the game runs with # echo "Gathering environment variables for game" HOME="$DEBUG_REAL_HOME" steam steam://run/$STEAM_GAME_ID & sleep 6 GAME_PID=$( pidof ThreeKingdoms | cut -d' ' -f1 ) if [ -z "$GAME_PID" ]; then echo "Could not find process ThreeKingdoms" exit 1 fi echo '#!/bin/bash' > steam-env-vars.sh echo "# Collected steam environment for Total War: Three Kingdoms\n# PID : $GAME_PID" >> steam-env-vars.sh while read -rd $'\0' ENV ; do NAME=$(echo "$ENV" | cut -zd= -f1); VAL=$(echo "$ENV" | cut -zd= -f2) case $NAME in *DBUS*) true ;; *) echo "export $NAME=\"$VAL\"" ;; esac done < "/proc/$GAME_PID/environ" >> steam-env-vars.sh killall -9 ThreeKingdoms sleep 6 if [ -z "${STEAM_ACCOUNT_ID}" ]; then pushd "${GAME_PREFS}/SaveData/" STEAM_ACCOUNT_ID="$(ls |head -1)" popd else STEAM_ACCOUNT_ID="Steam Saves (${STEAM_ACCOUNT_ID})" fi RESULTS_PREFIX="${GAME_PREFS}/VFS/User/AppData/Roaming/The Creative Assembly/ThreeKingdoms/" # Create the game launching script # echo "Generating run script" cat > twtk.sh <<- EOM #!/bin/bash # Generated run script for Total War: Three Kingdoms # $( date ) # Source the steam runtime environment # . steam-env-vars.sh # Run the game # cd "${GAME_INSTALL_DIR}/bin" ./ThreeKingdoms # Grab the output (most recent non _frametimes txt file) RESULTS_DIR="${RESULTS_PREFIX}benchmarks/" mkdir -p "\${RESULTS_DIR}" cd "\${RESULTS_DIR}" true > "\$LOG_FILE" FPS_VALUES=\$( grep -A3 "frames per second" \$(ls -t | grep -P "benchmark_.*[0-9]+.txt" | head -n 1) | tail -n 3 ) cat benchmark_*.txt >> "\$LOG_FILE" echo "\${FPS_VALUES}" >> "\$LOG_FILE" EOM chmod +x twtk.sh # Create the template preferences file # echo "Generating settings template" cat > preferences.template.xml <<- EOM <?xml version="1.0" encoding="UTF-8"?> <registry> <key name="HKEY_CURRENT_USER"> <key name="Software"> <key name="Feral Interactive"> <key name="Three Kingdoms"> <key name="Setup"> <!-- resolution --> <value name="ScreenH" type="integer">@screen_height@</value> <value name="ScreenW" type="integer">@screen_width@</value> <!-- disable pausing --> <value name="AllowPausing" type="integer">0</value> <value name="PauseMoviesOnPause" type="integer">0</value> <value name="PauseOnSuspend" type="integer">0</value> <value name="PauseSoundOnPause" type="integer">0</value> <value name="PauseTimersOnPause" type="integer">0</value> <value name="DisableAllMods" type="integer">1</value> <value name="AddSteamCloudAlias" type="integer">1</value> <value name="AllowSendCrashReports" type="integer">0</value> <value name="AllowSendUsageData" type="integer">0</value> <!-- Don't show splash screen --> <value name="GameOptionsDialogLastTab" type="integer">60000</value> <value name="GameOptionsDialogShouldShow" type="integer">0</value> <value name="GameOptionsDialogShouldShowBigPicture" type="integer">0</value> <value name="GameOptionsDialogShown" type="integer">1</value> <!-- Disable Splash Screen Warnings --> <value name="SoftwareUpdatedAskedUser" type="integer">1</value> <!-- Skip default settings --> <value name="SkipDefaultSettings" type="integer">1</value> <value name="SkipDriverWarnings" type="integer">1</value> <value name="SkipOSWarnings" type="integer">1</value> <key name="GraphicsSettings"> <value name="gfx_aa" type="integer">@gfx_aa@</value> <value name="gfx_aa_initial" type="integer">1</value> <value name="gfx_alpha_blend" type="integer">0</value> <value name="gfx_blood_effects" type="integer">1</value> <value name="gfx_building_quality" type="integer">@gfx_building_quality@</value> <value name="gfx_depth_of_field" type="integer">0</value> <value name="gfx_distortion" type="integer">1</value> <value name="gfx_effects_quality" type="integer">@gfx_effects_quality@</value> <value name="gfx_first_run" type="integer">0</value> <value name="gfx_gamma_setting" type="binary">0000000000000040</value> <value name="gfx_gpu_select" type="integer">0</value> <value name="gfx_grass_quality" type="integer">@gfx_grass_quality@</value> <value name="gfx_lighting_quality" type="integer">@gfx_lighting_quality@</value> <value name="gfx_post_mode" type="integer">0</value> <value name="gfx_resolution_scale" type="binary">000000000000f03f</value> <value name="gfx_screen_space_reflections" type="integer">0</value> <value name="gfx_shadow_quality" type="integer">@gfx_shadow_quality@</value> <value name="gfx_sharpening" type="integer">1</value> <value name="gfx_sky_quality" type="integer">@gfx_sky_quality@</value> <value name="gfx_ssao" type="integer">@gfx_ssao@</value> <value name="gfx_terrain_quality" type="integer">@gfx_terrain_quality@</value> <value name="gfx_tesselation" type="integer">0</value> <value name="gfx_texture_filtering" type="integer">@gfx_texture_filtering@</value> <value name="gfx_texture_quality" type="integer">@gfx_texture_quality@</value> <value name="gfx_tree_quality" type="integer">@gfx_tree_quality@</value> <value name="gfx_unit_quality" type="integer">@gfx_unit_quality@</value> <value name="gfx_unit_size" type="integer">@gfx_unit_size@</value> <value name="gfx_unlimited_video_memory" type="integer">0</value> <value name="gfx_vignette" type="integer">0</value> <value name="gfx_vsync" type="integer">0</value> <value name="gfx_water_quality" type="integer">@gfx_water_quality@</value> <value name="porthole_3d" type="integer">@porthole_3d@</value> </key> <key name="SpecificationAlerts"> <value name="LnxCPUGovernorSubOptimal" type="integer">1</value> <value name="ModsHaveBeenDisabled_1_0_5" type="integer">1</value> </key> </key> </key> </key> <key name="MacDoze"> <key name="Config"> <value name="ExtraCommandLine" type="string">game_startup_mode benchmark_auto_quit script/benchmarks/@benchmark_name@</value> <value name="ExtraCommandLineEnabled" type="integer">1</value> </key> </key> </key> </key> </registry> EOM
interim.sh
#!/bin/bash GAME_PREFS="$DEBUG_REAL_HOME/.local/share/feral-interactive/Three Kingdoms" if [ -z "${STEAM_ACCOUNT_ID}" ]; then pushd "${GAME_PREFS}/SaveData/" STEAM_ACCOUNT_ID="$(ls |head -1)" popd else STEAM_ACCOUNT_ID="Steam Saves (${STEAM_ACCOUNT_ID})" fi RESULTS_PREFIX="${GAME_PREFS}/SaveData/${STEAM_ACCOUNT_ID}/" rm -rf "${RESULTS_PREFIX:?}"
post.sh
#!/bin/bash -e GAME_PREFS="$DEBUG_REAL_HOME/.local/share/feral-interactive/Three Kingdoms" # Grab the old prefs bkp location DATETIME=$( cat /tmp/twtk-bkp-dt ) rm /tmp/twtk-bkp-dt GAME_PREFS_BKP="${GAME_PREFS}.pts-$DATETIME-bkp" # Put back our game prefs rm -rf "${GAME_PREFS:?}/" mv "$GAME_PREFS_BKP" "$GAME_PREFS"
pre.sh
#!/bin/bash -e set -o xtrace exec > /tmp/test exec 2>&1 # Input settings WIDTH=$1 HEIGHT=$2 SETTING=$3 SCENARIO=$4 # Game preferences export HOME=$DEBUG_REAL_HOME GAME_PREFS="$DEBUG_REAL_HOME/.local/share/feral-interactive/Three Kingdoms" # Set up (and back up) the game preferences files DATETIME=$( date +%Y-%d-%m-%H-%M ) echo "$DATETIME" >/tmp/twtk-bkp-dt GAME_PREFS_BKP="${GAME_PREFS}.pts-$DATETIME-bkp" cp -r "$GAME_PREFS" "$GAME_PREFS_BKP" # clear previous runs rm -rf "${GAME_PREFS:?}" mkdir -p "${GAME_PREFS}" # Set up the files to use cp "preferences.template.xml" "$GAME_PREFS/preferences" # Replace the resolutions cd "$GAME_PREFS" || exit 1 # Replace settings with those chosen sed -i "s/@screen_height@/$HEIGHT/g" preferences sed -i "s/@screen_width@/$WIDTH/g" preferences # Replace benchmark scenario, use commas as delimiters since this is replacing a # path string sed -i "s,@benchmark_name@,$SCENARIO,g" preferences # Lowest if [ $SETTING -eq "0" ]; then sed -i "s/@gfx_aa@/1/g" preferences sed -i "s/@gfx_building_quality@/0/g" preferences sed -i "s/@gfx_depth_of_field@/0/g" preferences sed -i "s/@gfx_effects_quality@/0/g" preferences sed -i "s/@gfx_grass_quality@/0/g" preferences sed -i "s/@gfx_shadow_quality@/0/g" preferences sed -i "s/@gfx_sky_quality@/0/g" preferences sed -i "s/@gfx_ssao@/0/g" preferences sed -i "s/@gfx_terrain_quality@/0/g" preferences sed -i "s/@gfx_texture_filtering@/0/g" preferences sed -i "s/@gfx_texture_quality@/2/g" preferences sed -i "s/@gfx_tree_quality@/0/g" preferences sed -i "s/@gfx_unit_quality@/0/g" preferences sed -i "s/@gfx_unit_size@/0/g" preferences sed -i "s/@gfx_water_quality@/0/g" preferences sed -i "s/@gfx_lighting_quality@/0/g" preferences sed -i "s/@porthole_3d@/0/g" preferences elif [ $SETTING -eq "1" ]; then sed -i "s/@gfx_aa@/1/g" preferences sed -i "s/@gfx_building_quality@/1/g" preferences sed -i "s/@gfx_depth_of_field@/0/g" preferences sed -i "s/@gfx_effects_quality@/1/g" preferences sed -i "s/@gfx_grass_quality@/1/g" preferences sed -i "s/@gfx_shadow_quality@/1/g" preferences sed -i "s/@gfx_sky_quality@/0/g" preferences sed -i "s/@gfx_ssao@/0/g" preferences sed -i "s/@gfx_terrain_quality@/1/g" preferences sed -i "s/@gfx_texture_filtering@/1/g" preferences sed -i "s/@gfx_texture_quality@/2/g" preferences sed -i "s/@gfx_tree_quality@/1/g" preferences sed -i "s/@gfx_unit_quality@/1/g" preferences sed -i "s/@gfx_unit_size@/1/g" preferences sed -i "s/@gfx_water_quality@/1/g" preferences sed -i "s/@gfx_lighting_quality@/1/g" preferences sed -i "s/@porthole_3d@/1/g" preferences elif [ $SETTING -eq "2" ]; then sed -i "s/@gfx_aa@/2/g" preferences sed -i "s/@gfx_building_quality@/2/g" preferences sed -i "s/@gfx_depth_of_field@/0/g" preferences sed -i "s/@gfx_effects_quality@/2/g" preferences sed -i "s/@gfx_grass_quality@/2/g" preferences sed -i "s/@gfx_shadow_quality@/2/g" preferences sed -i "s/@gfx_sky_quality@/1/g" preferences sed -i "s/@gfx_ssao@/0/g" preferences sed -i "s/@gfx_terrain_quality@/2/g" preferences sed -i "s/@gfx_texture_filtering@/2/g" preferences sed -i "s/@gfx_texture_quality@/2/g" preferences sed -i "s/@gfx_tree_quality@/2/g" preferences sed -i "s/@gfx_unit_quality@/2/g" preferences sed -i "s/@gfx_unit_size@/2/g" preferences sed -i "s/@gfx_water_quality@/2/g" preferences sed -i "s/@gfx_lighting_quality@/1/g" preferences sed -i "s/@porthole_3d@/1/g" preferences elif [ $SETTING -eq "3" ]; then sed -i "s/@gfx_aa@/2/g" preferences sed -i "s/@gfx_building_quality@/3/g" preferences sed -i "s/@gfx_depth_of_field@/2/g" preferences sed -i "s/@gfx_effects_quality@/3/g" preferences sed -i "s/@gfx_grass_quality@/3/g" preferences sed -i "s/@gfx_shadow_quality@/3/g" preferences sed -i "s/@gfx_sky_quality@/1/g" preferences sed -i "s/@gfx_ssao@/1/g" preferences sed -i "s/@gfx_terrain_quality@/3/g" preferences sed -i "s/@gfx_texture_filtering@/4/g" preferences sed -i "s/@gfx_texture_quality@/2/g" preferences sed -i "s/@gfx_tree_quality@/3/g" preferences sed -i "s/@gfx_unit_quality@/3/g" preferences sed -i "s/@gfx_unit_size@/3/g" preferences sed -i "s/@gfx_water_quality@/3/g" preferences sed -i "s/@gfx_lighting_quality@/1/g" preferences sed -i "s/@porthole_3d@/1/g" preferences else echo "Failed to set graphics preset" exit 2 fi
results-definition.xml
<?xml version="1.0"?> <!--Phoronix Test Suite v10.4.0m1--> <PhoronixTestSuite> <ResultsParser> <OutputTemplate> mean #_RESULT_# min #_MIN_RESULT_# max #_MAX_RESULT_#</OutputTemplate> </ResultsParser> <ExtraData> <Identifier>csv-individual-frame-times</Identifier> </ExtraData> </PhoronixTestSuite>
test-definition.xml
<?xml version="1.0"?> <!--Phoronix Test Suite v10.4.0m1--> <PhoronixTestSuite> <TestInformation> <Title>Total War: Three Kingdoms</Title> <AppVersion>1.0.1</AppVersion> <Description>Total War: Three Kingdoms on Steam. The test profile assumes you have a Steam account, have Steam installed for the system, and that you own a copy of this game. This automates the process of executing the game and using its built-in benchmark mode. Backs up old preferences (in ~/.local/share/feral-interactive/) for the run. NOTES for cross-platform comparisons: TODO </Description> <ResultScale>Frames Per Second</ResultScale> <Proportion>HIB</Proportion> <Executable>twtk.sh</Executable> <TimesToRun>3</TimesToRun> </TestInformation> <TestProfile> <Version>1.0.3</Version> <SupportedPlatforms>Linux</SupportedPlatforms> <SoftwareType>Game</SoftwareType> <TestType>Graphics</TestType> <License>Retail</License> <Status>Verified</Status> <SupportedArchitectures>x86_64</SupportedArchitectures> <ExternalDependencies>steam</ExternalDependencies> <RequiresDisplay>TRUE</RequiresDisplay> <ProjectURL>https://store.steampowered.com/app/779340/</ProjectURL> <Maintainer>Alex Dickerson</Maintainer> </TestProfile> <TestSettings> <Option> <DisplayName>Resolution</DisplayName> <Identifier>auto-resolution</Identifier> <Menu> <Entry> <Name>$VIDEO_WIDTH x $VIDEO_HEIGHT</Name> <Value>$VIDEO_WIDTH $VIDEO_HEIGHT</Value> </Entry> </Menu> </Option> <Option> <DisplayName>Graphics Preset</DisplayName> <Identifier>graphics-preset</Identifier> <Menu> <Entry> <Name>Low</Name> <Value>0</Value> </Entry> <Entry> <Name>Medium</Name> <Value>1</Value> </Entry> <Entry> <Name>High</Name> <Value>2</Value> </Entry> <Entry> <Name>Ultra</Name> <Value>3</Value> </Entry> </Menu> </Option> <Option> <DisplayName>Scenario</DisplayName> <Identifier>scenario</Identifier> <Menu> <Entry> <Name>Battle Benchmark</Name> <Value>battle_benchmark/battle_benchmark.xml</Value> </Entry> </Menu> </Option> </TestSettings> </PhoronixTestSuite>