====== Information ====== * [[https://www.dota2.com/|Dota 2]] * [[https://developer.valvesoftware.com/wiki/SteamCMD|SteamCMD]] * [[https://mr_goldberg.gitlab.io/goldberg_emulator/|Goldberg Emulator]] * These notes allow downloading Dota 2 using SteamCMD and running it in offline mode ((I only do singleplayer local bot matches; LAN usage is untested)) ===== Media ===== * [[https://www.youtube.com/watch?v=6rElYyThb4U|Quick-swap Bot Scripts]] ===== Prerequisites ===== * [[linux;distros;fedora_workstation_gnome|Fedora Workstation]] ===== Resources ===== * https://github.com/SteamDatabase/GameTracking-Dota2/tree/master/game/bin/linuxsteamrt64 * https://pastebin.com/CZqEP5Qr ====== AIO Update ====== * TODO: Desktop Launcher cd ~/'Steam/steamcmd' && ~/'Steam/steamcmd/steamcmd.sh' +login 'Espionage724' +app_update '570' +quit && ~/'Steam/steamcmd/steamcmd.sh' +login 'Espionage724' +app_update '1628350' +quit && rm -Rf ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/bots' ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/OpenHyperAI' && git clone --branch 'main' --depth '1' --recurse-submodules 'https://github.com/forest0xia/dota2bot-OpenHyperAI.git' ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/OpenHyperAI' && mv ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/OpenHyperAI/bots' ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts' && sync && cd ~ cd ~/'Steam/steamcmd' && ~/'Steam/steamcmd/steamcmd.sh' +login 'Espionage724' +app_update '570' validate +quit && sync && cd ~ ====== SteamCMD ====== ===== Install ===== * https://developer.valvesoftware.com/wiki/SteamCMD#Manually wget -O '/tmp/steamcmd_linux.tar.gz' 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz' && mkdir -p ~/'Steam/steamcmd' && cd ~/'Steam/steamcmd' && tar -xvzf '/tmp/steamcmd_linux.tar.gz' && cd ~ && sync ===== Login ===== **** cd ~/'Steam/steamcmd' && ~/'Steam/steamcmd/steamcmd.sh' +login 'Espionage724' +quit && sync && cd ~ ====== steamclient.so ====== * ''steamclient.so'' is required and can be copied from SteamCMD, a Steam install ((Linux 64-bit)), or provided by a Steam emulator * Goldberg Emu notes are provided below ===== Goldberg Emulator ===== * https://mr_goldberg.gitlab.io/goldberg_emulator/ ==== Install ==== * :!: This relies on [[https://gitlab.com/Mr_Goldberg/goldberg_emulator/-/jobs/4247811310/artifacts/download|this URL]] which looks fragile, but comes from the above download page rm -Rf '/tmp/Goldberg_Lan_Steam_Emu_master.zip' '/tmp/Goldberg_Lan_Steam_Emu' ~/'.steam/sdk64/steamclient.so' && wget -O '/tmp/Goldberg_Lan_Steam_Emu_master.zip' 'https://gitlab.com/Mr_Goldberg/goldberg_emulator/-/jobs/4247811310/artifacts/download' && unzip '/tmp/Goldberg_Lan_Steam_Emu_master.zip' -d '/tmp/Goldberg_Lan_Steam_Emu' && mkdir -p ~/'.steam/sdk64/steam_settings' && mv '/tmp/Goldberg_Lan_Steam_Emu/linux/x86_64/steamclient.so' ~/'.steam/sdk64' && ls ~/'.steam/sdk64/steamclient.so' && rm -Rf '/tmp/Goldberg_Lan_Steam_Emu_master.zip' '/tmp/Goldberg_Lan_Steam_Emu' && sync ==== Settings ==== * [[https://gitlab.com/Mr_Goldberg/goldberg_emulator/-/blob/master/Readme_release.txt|Readme_release.txt]] * ''offline'', ''disable_overlay'', ''disable_networking'', ''force_account_name'' touch ~/'.steam/sdk64/steam_settings/offline.txt' ~/'.steam/sdk64/steam_settings/disable_overlay.txt' ~/'.steam/sdk64/steam_settings/disable_networking.txt' && echo 'Espionage724' | tee ~/'.steam/sdk64/steam_settings/force_account_name.txt' ====== Dota 2 ====== ===== Restore Backup ===== **** mkdir -p ~/'Steam/steamapps' && mv ~/'Downloads/Dota 2/'* ~/'Steam/steamapps' && sync ===== Install/Update ===== * :!: This may need re-ran several times if game data is restored from backup ((''Error! App '570' state is 0xE after update job.'')) * :?: Presumably this fresh-installs Dota 2 also cd ~/'Steam/steamcmd' && ~/'Steam/steamcmd/steamcmd.sh' +login 'Espionage724' +app_update '570' +quit && sync && cd ~ ==== Check/Repair Data ==== * :!: This may need re-ran several times if game data is restored from backup ((''Error! App '570' state is 0xE after update job.'')) cd ~/'Steam/steamcmd' && ~/'Steam/steamcmd/steamcmd.sh' +login 'Espionage724' +app_update '570' validate +quit && sync && cd ~ ==== Runtime ==== * 2023/12/30: Sniper * TODO: Better way to check current Runetime, check for updated Runtimes online, and how Dota 2 would update it ((https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/container-runtime.md implies ''medic'' is next; https://steamdb.info/search/?a=all&q=Steam+Linux+Runtime)) cd ~/'Steam/steamcmd' && ~/'Steam/steamcmd/steamcmd.sh' +login 'Espionage724' +app_update '1628350' +quit && sync && cd ~ ls --directory ~/'Steam/steamapps/common/SteamLinuxRuntime'* gio open ~/'Steam/steamapps/common/' ==== Permissions ==== chmod -v +x ~/'Steam/steamapps/common/dota 2 beta/game/dota.sh' ~/'Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/dota2' sudo restorecon -F -I -R -v ~/'Steam' ~/'.steam' ===== In-game Settings ===== * This resets in-game Settings and starts Dota 2 ~/'Steam/steamapps/common/SteamLinuxRuntime_sniper/run' -- ~/'Steam/steamapps/common/dota 2 beta/game/dota.sh' -autoconfig -vulkan_disable_steam_shader_cache -novid -nodev -nojoy -console ==== Settings Save ==== - Configure in-game Settings - Open Dota 2's in-game Console with the ''\'' key - Type ''host_writeconfig'' host_writeconfig * :!: Errors with saving or finding a file path may require a Steam emulator if using an official ''steamclient.so'' ===== Launch ===== * Main Menu ~/'Steam/steamapps/common/SteamLinuxRuntime_sniper/run' -- ~/'Steam/steamapps/common/dota 2 beta/game/dota.sh' -vulkan_disable_steam_shader_cache -novid -nodev -nojoy -console ==== Bot Match ==== * Immediately launches into an All-pick Bot Match * :!: ''+sv_cheats 1'' allows controlling bots and [[https://dota2.fandom.com/wiki/Cheats|cheats]], but may cause click targeting to not work as-expected ((instead of clicking-off a selected enemy hero and automatically moving your hero, it'll keep the enemy hero selected and **not** move your hero)) * :?: Presumably ''3'' = Unfair difficulty ([[https://github.com/ValveSoftware/Dota2-Gameplay/discussions/15723|discussion]], [[https://github.com/adamqqqplay/dota2ai/issues/155|RMMAI discussion]], [[https://github.com/forest0xia/dota2bot-OpenHyperAI/issues/13|OHA discussion]]) ~/'Steam/steamapps/common/SteamLinuxRuntime_sniper/run' -- ~/'Steam/steamapps/common/dota 2 beta/game/dota.sh' -vulkan_disable_steam_shader_cache -novid -nodev -nojoy -console +sv_lan '1' +dota_bot_set_difficulty '3' +dota_start_ai_game '1' +map 'dota' ====== Bots Scripts ====== * Bot scripts are automatically loaded and used if present ((apparently relies on a ''Local Dev Script'' feature and the scripts being in a ''bots'' folder at ''dota\scripts\vscripts'')) sudo dnf install 'git-core' gio open ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts' ===== Default Bots ===== * Removing the ''vscripts/bots'' folder results in using default/built-in bot scripts rm -Rf ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/bots' ===== Open Hyper AI ===== * https://github.com/forest0xia/dota2bot-OpenHyperAI * https://steamcommunity.com/sharedfiles/filedetails/?id=3246316298 rm -Rf ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/bots' ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/OpenHyperAI' && git clone --branch 'main' --depth '1' --recurse-submodules 'https://github.com/forest0xia/dota2bot-OpenHyperAI.git' ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/OpenHyperAI' && mv ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/OpenHyperAI/bots' ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts' && sync ===== Ranked Matchmaking AI ===== * https://github.com/adamqqqplay/dota2ai * https://steamcommunity.com/sharedfiles/filedetails/?id=855965029 * :!: Possible performance concern: https://github.com/adamqqqplay/dota2ai/issues/158 rm -Rf ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/bots' && git clone --branch 'master' --depth '1' --recurse-submodules 'https://github.com/adamqqqplay/dota2ai.git' ~/'Steam/steamapps/common/dota 2 beta/game/dota/scripts/vscripts/bots' && sync ====== Desktop Launcher ====== * TODO: Icon mkdir -p ~/'.local/share/applications/Valve' && nano ~/'.local/share/applications/Valve/Dota 2 - Bots.desktop' && update-desktop-database --quiet ~/'.local/share/applications' [Desktop Entry] Name=Dota 2 Categories=Game Exec='/bin/bash' -c "~/'Steam/steamapps/common/SteamLinuxRuntime_sniper/run' -- ~/'Steam/steamapps/common/dota 2 beta/game/dota.sh' -vulkan_disable_steam_shader_cache -novid -nodev -nojoy -console +sv_lan '1' +dota_bot_set_difficulty '3' +dota_start_ai_game '1' +map 'dota'" Type=Application StartupNotify=true Icon=TODO.0 ====== Troubleshooting ====== * https://developer.valvesoftware.com/wiki/SteamCMD#Known_Issues * https://wiki.archlinux.org/title/Steam/Troubleshooting ldd ~/'Steam/steamcmd/linux32/steamcmd'