├── README.md ├── esports-for-engineers-brochure-2404LTS.pdf ├── files ├── .delayedMonitorReset_helper.sh ├── FAQ.txt ├── FRI │ ├── KaTrain │ │ ├── KaTrain.sh │ │ └── setWineDisplayResolution.sh │ ├── calculatingScore.txt │ ├── copyRecentFilesToAfterGameReport.sh │ ├── goreviewpartner.sh │ ├── igowin.sh │ ├── optionalNativeLinuxInstallation.txt │ ├── q5go.sh │ ├── sabaki.sh │ ├── setWineDisplayResolution.sh │ └── uninstall.sh ├── MON │ ├── bb12 │ │ ├── bb12.sh │ │ └── setWineDisplayResolution.sh │ ├── bcalc.sh │ ├── bridgeBaron.sh │ ├── calculatingScore.txt │ ├── copyRecentFilesToAfterGameReport.sh │ ├── jack.sh │ ├── mathQuiz.py │ ├── memoryTraining.sh │ ├── optionalLinuxNativeInstall.txt │ ├── qplus.sh │ ├── setWineDisplayResolution.sh │ ├── tenace.sh │ ├── uninstall.sh │ └── wBridge5.sh ├── ObjectivesAndKeyResults_OKR.txt ├── SAT │ ├── BFOpslog.txt │ ├── BMS435 │ │ ├── BMS435.sh │ │ ├── backup.sh │ │ ├── bmsPatch.sh │ │ ├── getBriefingDebriefing.sh │ │ ├── installTheater_Balkans.sh │ │ ├── installTheater_Iran_Iraq.sh │ │ ├── installTheater_Israel.sh │ │ ├── installTheater_Somalia.sh │ │ ├── installTheater_Taiwan.sh │ │ ├── installTheater_Vietnam.sh │ │ ├── mc.sh │ │ ├── replay.sh │ │ ├── runIfTheaterMissing.sh │ │ ├── setWineDisplayResolution.sh │ │ ├── tacview.sh │ │ ├── uninstall.sh │ │ └── wdp.sh │ ├── CFL.sh │ ├── FalconAF.sh │ ├── GettingStartedGuide.pdf │ ├── calculatingScore.txt │ ├── copyRecentFilesToAfterGameReport.sh │ ├── flightgear │ │ ├── training_F16.sh │ │ └── training_MiG21.sh │ ├── freeFalcon.sh │ ├── getBriefingDebriefing.sh │ ├── plotAircraftFlightPerformanceDiagrams.sh │ ├── rampStartTrainer.sh │ ├── replay.sh │ ├── setWineDisplayResolution.sh │ └── uninstall.sh ├── SUN │ ├── INSTALL │ │ ├── PokerTH-1.1.2 │ │ │ └── pokerth.sh │ │ └── install_ps_eval.py │ ├── bracelets.sh │ ├── calculatingScore.txt │ ├── copyRecentFilesToAfterGameReport.sh │ ├── generalPokerEvaluator.sh │ ├── hoylePoker.sh │ ├── pokerStove.sh │ ├── pokerth.sh │ ├── setWineDisplayResolution.sh │ └── uninstall.sh ├── THU │ ├── BattleOfBritain │ │ ├── .delayedMonitorReset_helper.sh │ │ ├── DEBUG │ │ │ └── debugScriptForCampaign.sh │ │ ├── INSTALL │ │ │ ├── lowres.sh │ │ │ └── lowresHelper.sh │ │ ├── battleOfBritain.sh │ │ ├── delayedMonitorReset.sh │ │ ├── runDesktop.sh │ │ ├── runFullScreen.sh │ │ ├── setWineDisplayResolution.sh │ │ └── uninstall.sh │ ├── FS9 │ │ ├── fs9.sh │ │ └── setWineDisplayResolution.sh │ ├── MigAlley │ │ ├── .delayedMonitorReset_helper.sh │ │ ├── INSTALL │ │ │ ├── lowres.sh │ │ │ └── lowresHelper.sh │ │ ├── delayedMonitorReset.sh │ │ ├── migAlley.sh │ │ ├── setWineDisplayResolution.sh │ │ └── uninstall.sh │ ├── SDOE │ │ ├── WWII_SDOE.sh │ │ ├── WWI_SDOE.sh │ │ ├── install_SDOE.sh │ │ └── setWineDisplayResolution.sh │ ├── calculatingScore.txt │ ├── copyRecentFilesToAfterGameReport.sh │ ├── flightgear │ │ ├── basicFlightTraining.sh │ │ ├── installFlightgear.sh │ │ ├── training_F86.sh │ │ ├── training_F86_startInAir.sh │ │ ├── training_MiG15.sh │ │ ├── training_P-51D.sh │ │ ├── training_me109.sh │ │ ├── training_me109_startInAir.sh │ │ ├── training_p51d_startInAir.sh │ │ └── training_spitfire.sh │ └── uninstall.sh ├── TUE │ ├── .delayedMonitorReset_helper.sh │ ├── GPLPatchLog.txt │ ├── INSTALL │ │ ├── originalDriverIniFiles │ │ │ └── randomizeDrivers.py │ │ └── tmdrv-master │ │ │ ├── tmdrv.py │ │ │ └── tmdrv_devices │ │ │ ├── thrustmaster_t500rs.py │ │ │ ├── thrustmaster_tmx.py │ │ │ ├── thrustmaster_tsxw.py │ │ │ └── thrustmaster_tx.py │ ├── NR2003 │ │ ├── NR2003.sh │ │ ├── additionalCarsAndTracks.sh │ │ ├── setWineDisplayResolution.sh │ │ └── trackEditor.sh │ ├── backup.sh │ ├── calculatingScore.txt │ ├── copyRecentFilesToAfterGameReport.sh │ ├── delayedMonitorReset.sh │ ├── editRaceLineup.sh │ ├── gammaControl.sh │ ├── getSetupPrintouts.sh │ ├── gpl.sh │ ├── match_AI_to_frame_rate │ │ ├── gpl_ai_60fpsaiv1.sh │ │ ├── gpl_ai_60fpsv2newmod.sh │ │ └── gpl_ai_default.sh │ ├── rFactor │ │ ├── addTelemetryLoggerToRfactor.sh │ │ ├── graphicsConfig_rFactor.sh │ │ ├── offlineAIimprovement_rFactor.sh │ │ ├── rFactor.sh │ │ └── setWineDisplayResolution.sh │ ├── randomizeDrivers.sh │ ├── replay.sh │ ├── runThisIfGPLTextUnreadable.sh │ ├── setRaceLaps.py │ ├── setWineDisplayResolution.sh │ ├── setup-manager.sh │ ├── slowDownGplAiCars.py │ ├── speedDreams.sh │ ├── twoMonitorTelemetry.sh │ └── uninstall.sh ├── WED │ ├── INSTALL │ │ ├── BanksiaGui │ │ │ └── BanksiaGui.sh │ │ └── build_lc0.py │ ├── banksiaGui.sh │ ├── calculatingScore.txt │ ├── chessmaster │ │ ├── chessmaster.sh │ │ ├── fixAnnotationsInChessmasterOutputPgnFile.sh │ │ └── setWineDisplayResolution.sh │ ├── copyRecentFilesToAfterGameReport.sh │ ├── grandmasterOpeningMove.sh │ ├── installTips.pdf │ ├── internetChess.sh │ ├── nibbler.sh │ ├── optionalLinuxNativeInstall.txt │ ├── scid.sh │ ├── setWineDisplayResolution.sh │ └── uninstall.sh ├── basicWalkthrough.pdf ├── calculatingScore.txt ├── delayedMonitorReset.sh ├── esports-for-engineers-brochure.pdf ├── filesForLauncher │ ├── launcherScores.csv │ ├── launcherScripts.csv │ └── launcherTitles.csv ├── findMissingExport.sh ├── find_binary.py ├── fourElementsOfMentalFunctioning.txt ├── game_reviews.txt ├── headtrackingAndForceFeedback.txt ├── installFlightgear.sh ├── installationTips.pdf ├── introduction.txt ├── launcher.py ├── links_to_source_code.txt ├── lutris_backup.py ├── lutris_restore.py ├── makeClean.sh ├── mathquiz.sh ├── metaLearning.txt ├── prepareForGithub.py ├── runThisScriptFirst.sh ├── runningOnWindows.txt ├── sortbysize.sh ├── syllabusFor_eSportsForEngineers.pdf ├── tipsForLauncher.txt └── troubleshooting.txt ├── license └── license.txt └── secureInstallationInstructions.txt /README.md: -------------------------------------------------------------------------------- 1 | # esports-for-engineers 2 | Let's work together to maintain some of the best old engineering simulation games. 3 | 4 | This project provides a linux installer containing a free, award-winning sim or strategy game for each day of the week. The games are organized into a weeklong mindsports decathlon, with a mechanism for scoring each day and saving the user's game files. Some slides describing the game package are [here](https://github.com/sim-museum/esports-for-engineers/blob/master/files/esports-for-engineers-brochure.pdf). There is also a self-study class [syllabus](https://github.com/sim-museum/esports-for-engineers/blob/master/files/syllabusFor_eSportsForEngineers.pdf) for learning the games. 5 | 6 | To play the games: 7 | 8 | 1. Choose either the Ubuntu 22.04 LTS package or the newer Ubuntu 24.04 LTS package. The 22.04 package is 9 | quicker to download and install. The 24.04 package provides incremental improvements to stability, 10 | documentation and games, and is supported long-term. 11 | 12 | 2. Install the operating system for the package you chose, either Ubuntu 22.04 LTS or Ubuntu 24.04 LTS. A partition 13 | size of at least 400 GB is recommended. 14 | 15 | 3. Download and unpack the chosen game package, either the [22.04 game package](https://www.mediafire.com/file/1cz9zq1z54x7765/esports-for-engineers22041LTS.tar.gz/file) or the [24.04 game package](https://mega.nz/file/fE8R0YRT#TKcgjf4Id4txC0qA3mv0Pqam812DTl2klqEvB1v7Iuc) 16 | 17 | 4. Optional: check the sha256sum for the downloaded package, either "4bdb371e9dec4426a7e3663262a09875e37c043e24e2026a4e01d5877a520030 esports-for-engineers22041LTS.tar.gz" or "c3f4df7557f0324075d249d5f26aa8ffcf97d000ca958ec890d22a06cb436c90 esports-for-engineers-2404LTS.tar.gz" 18 | 19 | 5. Unpack tar.gz file downloaded in step 3, then follow the instructions in ese/runThisScriptFirst.sh to install needed ubuntu packages 20 | 21 | 6. Run the launcher script, then select a game from the menu to play it: 22 | 23 | eSports for Engineers 24 | 25 | average score for last 7 days: 0 26 | 27 | 1. MON: Contract Bridge 28 | 2. TUE: Historical Sim Racing 29 | 3. WED: Deep Learning Chess 30 | 4. THU: Historical Flight/War Sim 31 | 5. FRI: Deep Learning Weiqi 32 | 6. SAT: Flight/War Sim (Advanced) 33 | 7. SUN: Poker 34 | 8. Export Scores and game output files 35 | 9. Read Documentation 36 | 10. Reset Scores 37 | 11. Exit 38 | 39 | Choose number listed above: 40 | 41 | 42 | For more information visit the Mastodon game [forum](https://fosstodon.org/@esports_for_engineers/followers). 43 | 44 | Note: The game tar file is a clone of this repo with binaries, documentation pdfs, etc. added to the directory tree. A separate binaries-included clone file is needed because github does not host large binaries. Generating binaries from source is difficult, as this is old MS Windows source code which requires a legacy development environment for compilation. 45 | 46 | Since this project runs Microsoft Windows programs on Linux, both Windows and Linux development expertise is needed. 47 | 48 | # See the issues tab for ways you can contribute to this project. 49 | 50 | -------------------------------------------------------------------------------- /esports-for-engineers-brochure-2404LTS.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sim-museum/esports-for-engineers/ad05854b7b539ba1e37bccaccca73b906864904f/esports-for-engineers-brochure-2404LTS.pdf -------------------------------------------------------------------------------- /files/.delayedMonitorReset_helper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | while IFS= read -r line; do 3 | xrandr --output $line --auto 4 | done 5 | 6 | -------------------------------------------------------------------------------- /files/FRI/KaTrain/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export WINEPREFIX="$PWD/WP" 3 | wine winecfg -v win7 2>/dev/null 1>/dev/null 4 | 5 | winecfg 2>/dev/null 1>/dev/null 6 | exit 0 7 | -------------------------------------------------------------------------------- /files/FRI/calculatingScore.txt: -------------------------------------------------------------------------------- 1 | FRI Scoring 2 | eSports for Engineers 24041LTS 3 | 4 | In order to enter your score you'll need to save your .sfg file. If playing 5 | against KaTrain, saved game files are in 6 | FRI/WP/drive_c/KaTrain/sgfout. Screenshot .png files showing 7 | ./goreviewpartner.sh ./sabaki.sh or ./q5go.sh analysis are also 8 | useful, along with .rsfg.csv files produced by ./goreviewpartners.sh. 9 | Copy the relevant files to the FRI/afterGameReport directory before 10 | entering your score in launcher.py. 11 | 12 | If your computer does not have a GPU, as is common with 13 | laptops, be sure to use a cpu-only version of the weiqi 14 | engine, e.g. katagoCpuOnly. 15 | 16 | OBJECTIVE #1: LEARN FROM WEIQI BOOKS AND TUTORIAL 17 | OBJECTIVE #2: LEARN FROM AI FEEDBACK 18 | OBJECTIVE #3: (ASPIRATIONAL) DEMONSTRATE WEIQI PROFICIENCY 19 | OBJECTIVE #4: USER DEFINED (can be regular or aspirational) 20 | 21 | --------------------------------------------------------------- 22 | OKR #1,1 23 | 24 | Add .05 to your daily score for each of the following tasks you complete: 25 | 26 | viewing the q5go “Learn Go” tutorial and using the “Open 27 | in Editor…” function to play from the more difficult tutorial 28 | positions against a q5go engine. 29 | 30 | reading Janice Kim’s “Learn to Play Go, A Master’s Guide 31 | to the Ultimate Game”, (Good Move Press, 2004) and working through the 32 | examples with KataGo 33 | 34 | reading Cho Chikun’s “Go, A Complete Introduction to the 35 | Game”, (Kiseido Publishing, 1997) and working through the examples 36 | with KaTrain 37 | 38 | analyzing your games with ./goreviewpartner.sh and 39 | printing out a pdf of each analyzed game. By keeping a 40 | record this way, you can keep track of your improvement. Include 41 | ./goreviewpartner.sh .rsfg files in FRI/afterGameReport. 42 | 43 | --------------------------------------------------------------- 44 | OKR #2,1 45 | 46 | Run ./KaTrain.sh. If you are a beginner, use a small board size such 47 | as 9x9 and a weakened version of KataGo, such as Blinded Policy. 48 | Choose Teaching Game. Remember to save your game and copy the .sfg 49 | file from FRI/WP/drive_c/KaTrain/sgfout to FRI/afterGameReport. 50 | 51 | Let u be the number of times KaTrain teaching game undid your move and 52 | s be the number of points on the side of the Go board (s=7 for a 7x7 53 | board). 54 | 55 | score = {1 – u/(s*2)}*.25, with score capped at 0.25, if score <0 then 56 | score =0 57 | 58 | --------------------------------------------------------------- 59 | OKR #2,2 60 | 61 | In Sabaki, turn on Engine/analysis before your first move. Let the 62 | highest value that appears at any point on the board be m. If using a 63 | 9x9 board, no handicap stones and 0 komi, that value is roughly 96%. 64 | If using a 19x19 board with no handicap stones and 6.5 komi, the 65 | maximum is about 51%. Your score is zero unless you win, so use as 66 | small a board, and as many handicap stones as you need to win. Engine 67 | analysis (heat map) must be turned off during the game. After you’ve 68 | won a game, use that initial highest value to determine your score per 69 | this formula. 70 | 71 | score = (1-(m-50)/50)*.4, if score>.4 then score=.4, if score<0 then 72 | score=0 73 | 74 | If you are using the default 6block network, multiply your score by 75 | 0.8 (There is no penalty if using the larger 15block.bin.gz network 76 | with KataGo) 77 | 78 | --------------------------------------------------------------- 79 | OKR #3,1 80 | 81 | score = (1-(m-50)/50)*.7, if score > .7, score =.7. if score<0 82 | then score=0. Same as OKR #2, 2, but use 83 | the 19x19 board with 6.5 komi and give KataGo a time limit of not less 84 | than 1 minute per move. Also let KataGo calculate during your 85 | turn. Use as many handicap stones as needed to win. 86 | 87 | -------------------------------------------------------------------------------- /files/FRI/copyRecentFilesToAfterGameReport.sh: -------------------------------------------------------------------------------- 1 | # copy game files created in the last 2 hours to afterGameReport 2 | find . -name "*.sgf" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 3 | find . -name "*.rsgf" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 4 | find . -name "*.rsgf.csv" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 5 | 6 | -------------------------------------------------------------------------------- /files/FRI/goreviewpartner.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export WINEPREFIX="$PWD/WP" 4 | export WINEARCH=win32 5 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 6 | 7 | cd "$WINEPREFIX/../INSTALL/GRP" 8 | 9 | wine GoReviewPartner.exe 2>/dev/null 1>/dev/null 10 | # print out credits 11 | cat $WINEPREFIX/../DOC/GoReviewPartnerDoc.txt 12 | 13 | -------------------------------------------------------------------------------- /files/FRI/igowin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export WINEPREFIX="$PWD/WP" 4 | export WINEARCH=win32 5 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 6 | 7 | cd "$WINEPREFIX/../INSTALL/igowin" 8 | 9 | wine igowin.exe 2>/dev/null 1>/dev/null 10 | 11 | -------------------------------------------------------------------------------- /files/FRI/optionalNativeLinuxInstallation.txt: -------------------------------------------------------------------------------- 1 | Check that the correction version of wine is installed via the command 2 | 3 | wine --version 4 | 5 | if the result is not "wine-6.0" issue the command 6 | 7 | sudo apt install -y wine-development 8 | 9 | If wine is installed, no further installation is needed to run: 10 | goreviewparter.sh (play against Leela Zero) 11 | 12 | If using Ubuntu 22.04LTS, KaTrain.sh (play against KataGo) will also work. 13 | The above programs are MS Windows binaries that run under wine. 14 | 15 | sabaki and g5go are provided as linux binaries which require the linux binary version 16 | of KataGo. 17 | 18 | To configure linux KataGo: 19 | cd INSTALL/katago/CPU-slow 20 | ./katago_CPU_EIGEN_2204LTS genconfig 21 | # it is recommended to specify an additional limit to make KataGo move much faster: 10 seconds 22 | # otherwise defaults 23 | # note 6block.bin.gz is copied to default_model.bin.gz, which is used here 24 | # a different weight file could be used in the genconfig 25 | # command with the optional -model flag, see documentation 26 | 27 | Now returning to the FRI directory and configuring sakaki: 28 | Run ./sabaki.sh 29 | Choose Engine/Show Engine Sidebar 30 | Then on the left click on the down arrow and select Manage Engines 31 | click Add 32 | specifiy the name katago 33 | click on the folder icon and navigate to the katago binary in FRI/INSTALL/katago 34 | for arguments specify 35 | gtp -config gtp.cfg 36 | # katago command is /katago_CPU_EIGEN_2204LTS gtp -config 'gtp.cfg' 37 | 38 | Optional: also add the gnugo engine 39 | In the manage engines dialog (see above) 40 | click Add 41 | specify the name gnugo 42 | for path specify /usr/games/gnugo 43 | for arguments specify 44 | --mode gtp 45 | 46 | The KataGo configuration directory is: 47 | $HOME/.katago 48 | The Sabaki configuration directory is: 49 | $HOME/.config/Sabaki 50 | 51 | To reset configuration, delete these directories 52 | 53 | In sabaki and other Go programs, it is recommended that beginners start with 54 | the small 9x9 board size. 55 | 56 | To use the latest version of KaTrain, issue these Ubuntu 20.04 linux commands: 57 | 58 | sudo apt install python3-pip 59 | pip3 install -U katrain 60 | 61 | This will automatically calibrate KataGo for your computer hardware 62 | Note: you'll need to add katrain to the path. The scripts cygdb, cython and cythonize are installed 63 | in '$HOME/.local/bin' which is not on PATH. 64 | sudo cp $HOME/.local/bin/katrain /usr/games 65 | export PATH=$HOME/.local/bin:$PATH 66 | 67 | -------------------------------------------------------------------------------- /files/FRI/q5go.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | clear 3 | echo "Before using qt5go, set up the computer Go engines by" 4 | echo "install gnugo and the katago libraries." 5 | echo "" 6 | echo "Then calibrate katago to your computer." 7 | echo "see installTips.pdf for details." 8 | 9 | ./INSTALL/q5go 2>/dev/null 1>/dev/null 10 | -------------------------------------------------------------------------------- /files/FRI/sabaki.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | clear 3 | echo "Before using sabaki, set up the computer Go engines by" 4 | echo "install gnugo and the katago libraries." 5 | echo "" 6 | echo "Then calibrate katago to your computer." 7 | echo "see installTips.pdf for details." 8 | 9 | ./INSTALL/sabaki-v0.52.0-linux-x64.AppImage --no-sandbox 2>/dev/null 1>/dev/null 10 | -------------------------------------------------------------------------------- /files/FRI/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export WINEPREFIX="$PWD/WP" 3 | export WINEARCH=win32 4 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 5 | 6 | winecfg 2>/dev/null 1>/dev/null 7 | exit 0 8 | -------------------------------------------------------------------------------- /files/FRI/uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "" 4 | echo "If an installation is not working correctly," 5 | echo "it can be helpful to delete the installation" 6 | echo "and re-install." 7 | echo "Press Enter to uninstall or C to cancel." 8 | read replyString 9 | rm -rf WP 10 | mkdir WP 11 | -------------------------------------------------------------------------------- /files/MON/bb12/bb12.sh: -------------------------------------------------------------------------------- 1 | # Script Outline: 2 | # 1. Check if Bridge Baron 12 is already installed. If so, run the application. 3 | # 2. If Bridge Baron 12 is not installed, guide the user through the installation process. 4 | # 3. Provide instructions for configuring Wine. 5 | # 4. Inform the user about successful installation. 6 | 7 | #!/bin/bash 8 | 9 | # This script installs and runs Bridge Baron 12 on Wine, assuming Wine is properly configured. 10 | # If Bridge Baron 12 is already installed, it launches the application. 11 | # If Bridge Baron 12 is not installed, it guides the user through the installation process. 12 | 13 | # Clear the terminal 14 | clear 15 | 16 | # Check Wine version and installation 17 | # $PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 18 | # if [ $? -ne 0 ]; then 19 | # exit 1 20 | # fi 21 | 22 | # Set Wine prefix directory 23 | export WINEPREFIX="$PWD/WP" 24 | export WINEARCH=win32 25 | wine winecfg -v win98 2>/dev/null 1>/dev/null 26 | 27 | # Check if Bridge Baron 12 is already installed 28 | if [ -f "$WINEPREFIX/Bridge Baron/Baron.exe" ]; then 29 | # If installed, change directory and run Bridge Baron 12 30 | cd "$WINEPREFIX/Bridge Baron" 31 | wine Baron.exe 2>/dev/null 1>/dev/null 32 | clear 33 | exit 0 34 | fi 35 | 36 | # Move the installation file to the INSTALL directory 37 | mv "$WINEPREFIX/../../../tar/Bridge-Baron-12_Win_EN.zip" "$WINEPREFIX/../INSTALL" 2>/dev/null 1>/dev/null 38 | 39 | # Check if installation file exists 40 | if [ ! -f "$WINEPREFIX/../INSTALL/Bridge-Baron-12_Win_EN.zip" ]; then 41 | # If installation file not found, provide instructions for downloading and placing the file 42 | printf "Bridge-Baron-12_Win_EN.zip file not found in $WINEPREFIX/../INSTALL\n\nFrom \n\nhttps://www.myabandonware.com/game/bridge-baron-12-f44#download\n\nDownload this file:\n\nBridge-Baron-12_Win_EN.zip\n\nPlace this file in the $WINEPREFIX/../INSTALL directory,\n\nthen run this script again.\n\n\n" 43 | exit 0 44 | fi 45 | 46 | # Move the installation file to the Wine prefix directory and unzip it 47 | mv "$WINEPREFIX/../INSTALL/Bridge-Baron-12_Win_EN.zip" "$WINEPREFIX" 48 | cd "$WINEPREFIX" 49 | unzip Bridge-Baron-12_Win_EN.zip 2>/dev/null 1>/dev/null 50 | 51 | # Provide instructions for configuring Wine 52 | #clear 53 | #printf "In the wine configuration dialog box select Windows 98 for the Windows version,\nthen in the graphics tab select virtual desktop, and enter a screen resolution, such as 800x600.\nDeselect allow the window manager to decorate the windows.\n\nPress any key to continue.\n\n\n" 54 | #read replyString 55 | WINEARCH=win32 winecfg 2>/dev/null 1>/dev/null 56 | wine winecfg -v win98 2>/dev/null 1>/dev/null 57 | 58 | # Inform user about successful installation 59 | clear 60 | printf "\nBridge Baron 12 installed successfully. Run this script again to play.\n\n" 61 | exit 0 62 | 63 | -------------------------------------------------------------------------------- /files/MON/bb12/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export WINEPREFIX="$PWD/WP" 3 | export WINEARCH=win32 4 | wine winecfg -v winxp # 2>/dev/null 1>/dev/null 5 | winecfg 2>/dev/null 1>/dev/null 6 | exit 0 7 | -------------------------------------------------------------------------------- /files/MON/bcalc.sh: -------------------------------------------------------------------------------- 1 | 2 | #!/bin/bash 3 | 4 | # This script runs a linux binary, with fallback to an .exe version running under wine 5 | # bcalc web site: bcalc.w8.pl/ 6 | 7 | # Set the Wine prefix directory 8 | export WINEPREFIX="$PWD/WP" 9 | 10 | # Change directory to the application's directory 11 | cd "$WINEPREFIX/../LINUX" 12 | 13 | # Run the application 14 | ./bcalcgui 2>/dev/null 1>/dev/null || wine $WINEPREFIX/bcalcgui.exe 2>/dev/null 1>/dev/null 15 | 16 | # Clear the terminal 17 | clear 18 | 19 | # Display exit message 20 | cat "$WINEPREFIX/../DOC/REFERENCE/exitMessageBcalc.txt" 21 | 22 | # Add some space for better readability 23 | echo "" 24 | echo "" 25 | 26 | # Exit with success status 27 | exit 0 28 | 29 | -------------------------------------------------------------------------------- /files/MON/bridgeBaron.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script launches Bridge Baron 29 under Wine, assuming Wine is properly configured. 4 | # If Bridge Baron 29 is not installed, it guides the user through the installation process. 5 | 6 | # Set the Wine prefix directory 7 | export WINEPREFIX="$PWD/WP" 8 | export WINEARCH=win32 9 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 10 | 11 | # Check if Bridge Baron 29 is installed 12 | if [ -d "$WINEPREFIX/drive_c/Program Files/Great Game Products/Bridge Baron 29" ]; then 13 | # Run Bridge Baron 29 if installed 14 | wine "$WINEPREFIX/drive_c/Program Files/Great Game Products/Bridge Baron 29/Baron.exe" 2>/dev/null 1>/dev/null 15 | clear 16 | # Display exit message 17 | cat "$WINEPREFIX/../DOC/REFERENCE/exitMessageBridgeBaron.txt" 18 | echo ""; echo "" 19 | exit 0 20 | else 21 | # If Bridge Baron 29 is not installed, check if installation file exists 22 | if [ -f "$WINEPREFIX/../INSTALL/BB29WinEngDownload.exe" ]; then 23 | # Run the installation file if it exists 24 | clear 25 | echo "Installing Bridge Baron for the first time; simply accept all defaults." 26 | echo "" 27 | wine "$WINEPREFIX/../INSTALL/BB29WinEngDownload.exe" 2>/dev/null 1>/dev/null 28 | clear 29 | # Display exit message 30 | cat "$WINEPREFIX/../DOC/REFERENCE/exitMessageBridgeBaron.txt" 31 | echo ""; echo "" 32 | exit 0 33 | else 34 | # Guide user on how to install Bridge Baron 35 | echo " "; echo "To install Bridge Baron, follow these steps:" 36 | echo "1. download BB29WinEngDownload.exe from https://www.greatgameproducts.com/download" 37 | echo "2. copy the exe into the MON/INSTALL directory" 38 | echo "3. run this script again."; echo " " 39 | fi 40 | fi 41 | 42 | -------------------------------------------------------------------------------- /files/MON/calculatingScore.txt: -------------------------------------------------------------------------------- 1 | MON Scoring 2 | eSports for Engineers 24041LTS 3 | 4 | OBJECTIVE #1: LEARN FROM AI FEEDBACK 5 | OBJECTIVE #2: DEEPEN YOUR KNOWLEDGE WITH BRIDGE VARIANTS, ANALYSIS 6 | OBJECTIVE #3: USER DEFINED (can be regular or aspirational) 7 | 8 | --------------------------------------------------------------- 9 | OKR #1,1, first key result for objective "learn from AI feedback" 10 | 11 | Run ./wBridge4.sh Set level to 5. 12 | 13 | Play 4 hands of duplicate bridge. (Don't select "Dup" to start play 14 | in the closed room until the Dummmy hand has been laid out ; this will 15 | cause the 4 AI players to start play using the same bid). 16 | 17 | Play these 4 hands in a single wBridge5 session; your total 18 | International Match Points (IMP) score for the 4 hands will be 19 | displayed at lower left. 20 | 21 | score=(IMP+18)/20*.25, if score>.4 then set score=.4, if score<0 then 22 | set score=0 If you viewed all the hidden cards during play, multiply 23 | score by 0.8 24 | 25 | There is no penalty for displaying info (on lower right in 26 | ./wBridge5sh). 27 | 28 | Rather than using "Dup", you can play the hand yourself, save to .pbn 29 | and txt, reload, then have the computer play the hand, then save to pbn 30 | and txt. This way you have saved two files documenting your game, 31 | and two files documenting the computer-only game with the same hand. 32 | You can use an IMP table to convert the difference between your 33 | score and the computer-only score to IMP. 34 | 35 | --------------------------------------------------------------- 36 | OKR #1,2 37 | 38 | Skim all documentation in the MON directory. Read an introductory 39 | Bridge book such as Bayone, “A Taste of Bridge”, Master Point Press 40 | (2017). 41 | 42 | score=0.1 43 | --------------------------------------------------------------- 44 | OKR #1,3 45 | 46 | Play 8 hands of duplicate bridge, this time allowing for a different 47 | bid in the closed room by selecting “Dup” before the bidding phase. 48 | Now you are being scored on the bidding as well as the card play. 49 | For the last 4 hands, specify in Options/Deal that a random player 50 | will have >19 points. Viewing hidden cards is not permitted at the 51 | silver level. Adjusting your partner’s bidding 52 | in Options/Bidding is allowed. Setting the bidding convention 53 | to Standard American Yellow Card (SAYC) is recommended for beginners. 54 | Determine score from net IMP as in OKR #1,1 55 | except with “.25” replaced by ".5" wherever it appears 56 | in the score formula, i.e. score=(IMP+18)/20*.5, if score>.5 then 57 | set score=.5, if score<0 then set score=0 58 | --------------------------------------------------------------- 59 | OKR #1,4 60 | 61 | Study bridge bidding, (see the videos and book recommentations in 62 | the DOC directory). 63 | 64 | score: 0.1 65 | --------------------------------------------------------------- 66 | OKR #2,1 67 | 68 | Same as OKR #1,3, except specify in Options/Deal that a random player 69 | will have >19 points. Scoring is the same as in OKR #1,3 70 | --------------------------------------------------------------- 71 | OKR #2,2 72 | 73 | Same as OKR #1,3, except select "Goulash" in Options/Deal. In goulash 74 | bridge, the deck is cut between hands but not thoroughly shuffled, 75 | making long suits more common and thus changing optimum strategy. 76 | Scoring is the same as in OKR #1,3 77 | --------------------------------------------------------------- 78 | OKR #2,3 79 | 80 | Review all play made in a previous OKR with .bcalc.sh. Create a text 81 | file in the afterGameReport directory describing insights 82 | gained. (You could also try using ./tenace.sh, but you'd have 83 | to manually convert from .pbn to .lin format for input into tenace.) 84 | 85 | score: 0.2 86 | --------------------------------------------------------------- 87 | 88 | Alternative software 89 | 90 | To complete these MON OKRs you can use any of the following 91 | bridge programs: wBridge5, Jack, Bridge Baron or Qplus. 92 | Only wBridge5 lets you enter your own deals for free. The 93 | others provide only some pre-selected deals unless you 94 | buy a license. The executables for wBridge5 and Jack 95 | are included. To use Bridge Baron or Qplus, you need 96 | to download a free executable from the web link given 97 | when you run ./bridgeBaron.sh or ./qplus.sh 98 | 99 | It is recommended to try all four bridge programs - 100 | each has its unique strengths. 101 | 102 | -------------------------------------------------------------------------------- /files/MON/copyRecentFilesToAfterGameReport.sh: -------------------------------------------------------------------------------- 1 | # copy .pbn files created in the last 2 hours to afterGameReport 2 | # note: you must manually copy screenshot pngs in ~/Pictures to ./afterGameReport manually. 3 | find . -name "*.pbn" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 4 | rm afterGameReport/precedent.pbn 2>/dev/null 1>/dev/null 5 | 6 | -------------------------------------------------------------------------------- /files/MON/jack.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Outline of jack.sh: 4 | # This script checks if the Jack 6 demo directory exists in the Wine prefix directory. 5 | # If the directory exists, it runs the Jack 6 demo. 6 | # If the directory does not exist, it installs the Jack bridge for the first time by running the Jack 6 demo installer. 7 | 8 | # Set the Wine prefix directory 9 | export WINEPREFIX="$PWD/WP" 10 | export WINEARCH=win32 11 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 12 | 13 | # Check if the Jack 6 demo directory exists in the Wine prefix 14 | if [ -d "$WINEPREFIX/drive_c/Program Files/Jack 6 demo" ]; then 15 | # Run the Jack 6 demo 16 | wine "$WINEPREFIX/drive_c/Program Files/Jack 6 demo/jackdemo.exe" 2>/dev/null 1>/dev/null 17 | clear 18 | # Display exit message from reference file 19 | cat "$WINEPREFIX/../DOC/REFERENCE/exitMessageJack.txt" 20 | echo ""; echo "" 21 | exit 0 22 | else 23 | # Install Jack bridge for the first time 24 | clear 25 | echo "Installing jack bridge for the first time; simply accept all defaults." 26 | echo "" 27 | # Run the Jack 6 demo installer 28 | wine "$WINEPREFIX/../INSTALL/Setup-Jack-6-demo-ENG.exe" 2>/dev/null 1>/dev/null 29 | clear 30 | # Display exit message from reference file 31 | cat "$WINEPREFIX/../DOC/REFERENCE/exitMessageJack.txt" 32 | echo ""; echo "" 33 | exit 0 34 | fi 35 | 36 | -------------------------------------------------------------------------------- /files/MON/memoryTraining.sh: -------------------------------------------------------------------------------- 1 | # Script Outline: 2 | # 1. Check if Brain Workshop is already installed. If so, run the application. 3 | # 2. If Brain Workshop is not installed, guide the user through the installation process. 4 | # 3. Check Wine version for compatibility. If incompatible, display message and exit. 5 | # 4. If Wine version is compatible, install Brain Workshop and display README instructions. 6 | #!/bin/bash 7 | 8 | # Script to install and run Brain Workshop on Wine, ensuring Wine version compatibility. 9 | # If Brain Workshop is already installed, it launches the application. 10 | # If Brain Workshop is not installed, it guides the user through the installation process. 11 | 12 | # Check if Wine is installed and configured properly 13 | # $PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 14 | # if [ $? -ne 0 ]; then 15 | # exit 1 16 | # fi 17 | 18 | #!/bin/bash 19 | 20 | # Set Wine prefix directory 21 | export WINEPREFIX="$PWD/WP" 22 | export WINEARCH=win32 23 | wine winecfg -v winxp 24 | 25 | # Check if Brain Workshop is already installed 26 | if [ -d "$WINEPREFIX/drive_c/Program Files/Brain Workshop" ]; then 27 | # If installed, change directory and run Brain Workshop 28 | cd "$WINEPREFIX/drive_c/Program Files/Brain Workshop" 29 | wine brainworkshop.exe 2>/dev/null 1>/dev/null 30 | # deactivate 31 | clear 32 | # Display README instructions 33 | cat Readme-instructions.txt 34 | printf "\n\n" 35 | exit 0 36 | else 37 | # Check Wine version for compatibility 38 | clear 39 | if wine --version | grep -q "wine-9.0"; then 40 | clear 41 | printf "Version 9.0 of wine detected. This version of wine will not install Brain workshop. Versions that will install Brain workshop include:\nwine-ge-8-26-x86 under lutris, and all tested versions of winehq staging. Run this installation .exe from lutris, or install winehq-staging.\n\nThen run this script again.\n\n" 42 | exit 0 43 | fi 44 | 45 | # If Brain Workshop is not installed and Wine version is compatible, install it 46 | echo "Installing Brain Workshop; simply accept all defaults." 47 | echo "" 48 | wine "$WINEPREFIX/../INSTALL/brainworkshop-4.8.4-win32-setup.exe" 2>/dev/null 1>/dev/null 49 | clear 50 | # Display README instructions 51 | cat "$WINEPREFIX/drive_c/Program Files/Brain Workshop/Readme-instructions.txt" 52 | printf "\n\nRun this script again to start the program\n\n" 53 | exit 0 54 | fi 55 | 56 | -------------------------------------------------------------------------------- /files/MON/optionalLinuxNativeInstall.txt: -------------------------------------------------------------------------------- 1 | By default, a Windows version of bcalc will be run under wine. This allows for 2 | maximum compatibility with different linux distributions. For better speed and 3 | graphics, enable the linux binary version of bcalc. If you install the 4 | libraries with the command below on Ubuntu 20.04 LTS, ./bcalc.sh will 5 | automatically switch to the linux version. 6 | 7 | Ubuntu 20.04 LTS versions of libraries needed for linux native bcalcgui: 8 | 9 | sudo apt install -y liblua5.2-dev libqt5widgets5 10 | 11 | now run ./bcalc.sh 12 | The graphics are now sharper because you're running a native linux 13 | binary. 14 | -------------------------------------------------------------------------------- /files/MON/qplus.sh: -------------------------------------------------------------------------------- 1 | # Script Outline: 2 | # 1. Set Wine prefix directory. 3 | # 2. Check if Qplus Bridge 15 is installed. If installed, run the application. 4 | # 3. Check Wine version for compatibility. If Wine version is 6.0, display message and exit. 5 | # 4. If Qplus Bridge 15 is not installed and Wine version is compatible, check if installation file exists. 6 | # 5. If installation file exists, initiate the installation process. 7 | # 6. If installation file does not exist, guide the user on how to install Qplus Bridge 15. 8 | #!/bin/bash 9 | 10 | # This script launches Qplus Bridge 15 under Wine, ensuring Wine version compatibility. 11 | # If Qplus Bridge 15 is not installed, it guides the user through the installation process. 12 | 13 | # Set Wine prefix directory 14 | export WINEPREFIX="$PWD/WP" 15 | export WINEARCH=win32 16 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 17 | 18 | # Check if Qplus Bridge 15 is installed 19 | if [ -d "$WINEPREFIX/drive_c/games/qbridge15" ]; then 20 | # If installed, run Qplus Bridge 15 21 | cd "$WINEPREFIX/drive_c/games/qbridge15" 22 | wine QBRIDGE.EXE 2>/dev/null 1>/dev/null 23 | cd "$WINEPREFIX/.." 24 | clear 25 | # Display exit message 26 | cat "$WINEPREFIX/../DOC/REFERENCE/exitMessageQplus.txt" 27 | echo ""; echo "" 28 | exit 0 29 | else 30 | # Check Wine version for compatibility 31 | if wine --version | grep "wine-6.0"; then 32 | # If Wine version is 6.0, display message and exit 33 | clear 34 | printf "Version 6.0 of wine detected.\nFor installation, Qplus Bridge requires wine version 7 or greater.\n\nFrom the esports-for-engineers directory, run \n\n./wine-experimental.sh\n\nto install wine 7.\n\nThen run this script again.\n\n" 35 | exit 0 36 | fi 37 | 38 | # If Qplus Bridge 15 is not installed and Wine version is compatible, check if installation file exists 39 | if [ -f "$WINEPREFIX/../INSTALL/qplus15-eng.exe" ]; then 40 | # If installation file exists, initiate the installation process 41 | clear 42 | echo "Installing Qplus Bridge for the first time; simply accept all defaults." 43 | echo "" 44 | wine "$WINEPREFIX/../INSTALL/qplus15-eng.exe" 2>/dev/null 1>/dev/null 45 | clear 46 | # Display exit message 47 | cat "$WINEPREFIX/../DOC/REFERENCE/exitMessageQplus.txt" 48 | echo ""; echo "" 49 | exit 0 50 | else 51 | # Guide user on how to install Qplus Bridge 52 | echo " "; echo "To install Qplus Bridge, follow these steps:" 53 | echo "1. Download qplus15-eng.exe from https://www.q-plus.com/engl/download/download_f.htm" 54 | echo "2. Copy the exe into the MON/INSTALL directory" 55 | echo "3. Run this script again."; echo " " 56 | fi 57 | fi 58 | 59 | -------------------------------------------------------------------------------- /files/MON/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export WINEPREFIX="$PWD/WP" 3 | export WINEARCH=win32 4 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 5 | winecfg 2>/dev/null 1>/dev/null 6 | exit 0 7 | -------------------------------------------------------------------------------- /files/MON/tenace.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | tenace & 3 | exit 0 4 | -------------------------------------------------------------------------------- /files/MON/uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "" 4 | echo "If an installation is not working correctly," 5 | echo "it can be helpful to delete the installation" 6 | echo "and re-install." 7 | echo "Press Enter to uninstall or C to cancel." 8 | read replyString 9 | rm -rf WP 10 | mkdir WP 11 | -------------------------------------------------------------------------------- /files/MON/wBridge5.sh: -------------------------------------------------------------------------------- 1 | # Script Outline: 2 | # 1. Check if Wbridge5 is already installed. If so, run the application. 3 | # 2. If Wbridge5 is not installed, guide the user through the installation process. 4 | # 3. Check Wine version for compatibility. If incompatible, display message and exit. 5 | # 4. If Wine version is compatible, install Wbridge5 and display exit message. 6 | #!/bin/bash 7 | 8 | # This script installs and runs Wbridge5 on Wine, ensuring Wine version compatibility. 9 | # If Wbridge5 is already installed, it launches the application. 10 | # If Wbridge5 is not installed, it guides the user through the installation process. 11 | 12 | # Check Wine version and installation 13 | # $PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 14 | # if [ $? -ne 0 ]; then 15 | # exit 1 16 | # fi 17 | 18 | # Set Wine prefix directory 19 | export WINEPREFIX="$PWD/WP" 20 | export WINEARCH=win32 21 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 22 | 23 | 24 | # Check if Wbridge5 is already installed 25 | if [ -d "$WINEPREFIX/drive_c/wbridge5" ]; then 26 | # If installed, run Wbridge5 27 | wine "$WINEPREFIX/drive_c/wbridge5/Wbridge5.exe" 2>/dev/null 1>/dev/null 28 | clear 29 | # Display exit message 30 | cat "$WINEPREFIX/../DOC/REFERENCE/exitMessageWbridge5.txt" 31 | echo ""; echo "" 32 | exit 0 33 | else 34 | # Check Wine version for compatibility 35 | clear 36 | if wine --version | grep -q "wine-6.0"; then 37 | printf "Version 6.0 of wine detected.\nFor installation, Omar Sharif Bridge requires wine version 7 or greater.\n\nFrom the esports-for-engineers directory, run \n\n./wine-experimental.sh\n\nto install wine 7.\n\nThen run this script again.\n\n" 38 | exit 0 39 | fi 40 | 41 | # If Wbridge5 is not installed and Wine version is compatible, install it 42 | echo "Installing Wbridge5 for the first time; simply accept all defaults." 43 | echo "" 44 | echo "Install gecko when prompted." 45 | echo "this will cause online help, as well as file load and save, to work."; echo "" 46 | wine "$WINEPREFIX/../INSTALL/Wbridge5_setup.exe" 2>/dev/null 1>/dev/null 47 | clear 48 | # Display exit message 49 | cat "$WINEPREFIX/../DOC/REFERENCE/exitMessageWbridge5.txt" 50 | echo ""; echo "" 51 | exit 0 52 | fi 53 | 54 | -------------------------------------------------------------------------------- /files/ObjectivesAndKeyResults_OKR.txt: -------------------------------------------------------------------------------- 1 | Google’s OKR Playbook 2 | 3 | No one has more collective experience in implementing OKRs than Google. As 4 | the company has scaled (and scaled), it has periodically issued OKR guidelines 5 | and templates. The following excerpts are drawn mostly from internal sources 6 | and reprinted with Google’s permission. (Note: This is Google’s approach to 7 | OKRs. Your approach may—and should—differ.) 8 | — 9 | At Google, we like to think big. We use a process called objectives and key 10 | results (OKRs) to help us communicate, measure, and achieve those lofty goals. 11 | 12 | Our actions determine Google’s future. As we’ve seen repeatedly—in Search, 13 | in Chrome, in Android—a team composed of a few percent of the company’s 14 | workforce, acting in concert toward an ambitious common goal, can change an 15 | entire mature industry in less than two years. Thus it is crucial that as Google 16 | employees and managers we make conscious, careful, and informed choices 17 | about how we allocate our time and energy—as individuals and as members of 18 | teams. OKRs are the manifestation of those careful choices, and the means by 19 | which we coordinate the actions of individuals to achieve great collective goals. 20 | We use OKRs to plan what people are going to produce, track their progress 21 | vs. plan, and coordinate priorities and milestones between people and teams. We 22 | also use OKRs to help people stay focused on the most important goals, and help 23 | them avoid being distracted by urgent but less important goals. 24 | OKRs are big, not incremental—we don’t expect to hit all of them. (If we do, 25 | we’re not setting them aggressively enough.) We grade them with a color scale 26 | to measure how well we did: 27 | 0.0–0.3 is red 28 | 0.4–0.6 is yellow 29 | 0.7–1.0 is green 30 | 31 | Poorly done/managed OKRs are a waste of time, an empty management gesture. 32 | Well done OKRs are a motivational management tool that helps make it clear to 33 | teams what’s important, what to optimize, and what tradeoffs to make during 34 | their day-to-day work. 35 | Writing good OKRs isn’t easy, but it’s not impossible, either. Pay attention to 36 | the following simple rules: 37 | 38 | Objectives are the “Whats.” They: 39 | express goals and intents; 40 | are aggressive yet realistic; 41 | must be tangible, objective, and unambiguous; should be obvious to a 42 | rational observer whether an objective has been achieved. 43 | The successful achievement of an objective must provide clear value 44 | for Google. 45 | 46 | Key Results are the “Hows.” They: 47 | express measurable milestones which, if achieved, will advance 48 | objective(s) in a useful manner to their constituents; 49 | must describe outcomes, not activities. If your KRs include words like 50 | “consult,” “help,” “analyze,” or “participate,” they describe activities. 51 | Instead, describe the end-user impact of these activities: “publish 52 | average and tail latency measurements from six Colossus cells by 53 | March 7,” rather than “assess Colossus latency”; 54 | must include evidence of completion. This evidence must be available, 55 | credible, and easily discoverable. Examples of evidence include change 56 | lists, links to docs, notes, and published metrics reports. 57 | 58 | 59 | Committed vs. Aspirational OKRs 60 | 61 | OKRs have two variants, and it is important to differentiate between them: 62 | Commitments are OKRs that we agree will be achieved, and we will be 63 | willing to adjust schedules and resources to ensure that they are delivered. 64 | The expected score for a committed OKR is 1.0; a score of less than 1.0 65 | requires explanation for the miss, as it shows errors in planning and/or 66 | execution. 67 | By contrast, aspirational OKRs express how we’d like the world to look, even 68 | though we have no clear idea how to get there and/or the resources necessary to 69 | deliver the OKR. 70 | Aspirational OKRs have an expected average score of 0.7, with high 71 | variance. 72 | 73 | Excerpt from Doerr, "Measure What Matters", Penguin (2017), p. 255. 74 | 75 | For more about OKR's: https://www.whatmatters.com/faqs/okr-meaning-definition-example/ 76 | 77 | -------------------------------------------------------------------------------- /files/SAT/BFOpslog.txt: -------------------------------------------------------------------------------- 1 | 41.282(540) :No exe ctdupl.exe 2 | -------------------------------------------------------------------------------- /files/SAT/BMS435/backup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # It is recommended, but not required, 3 | # to back up the WP directory so you can 4 | # restore it if it gets corrupted. 5 | # 6 | # ./backup WP comment 7 | # 8 | # to restore: 9 | # 10 | # rm -rf WP 11 | # cp -r WP.comment.bak WP 12 | # 13 | 14 | if [ $# -ne 2 ]; then 15 | echo "Usage: $0 source_dir comment" 1>&2 16 | exit 1 17 | fi 18 | 19 | newname=$1.$2_`date +%Y-%m-%d.%H%M.bak`; 20 | mv $1 $newname; 21 | echo "Backing up $1 to $newname ..."; 22 | cp -pr $newname $1; 23 | echo "Done." 24 | 25 | -------------------------------------------------------------------------------- /files/SAT/BMS435/bmsPatch.sh: -------------------------------------------------------------------------------- 1 | clear 2 | 3 | export WINEPREFIX=$PWD/WP 4 | 5 | if [ ! -f "$WINEPREFIX/drive_c/Falcon BMS 4.35/Launcher.exe" ] 6 | then 7 | printf "You must install Falcon BMS 4.35.3 before installing\nadd-on theaters. Run ./BMS435.sh first, then run this script again.\n\n" 8 | exit 0 9 | fi 10 | 11 | mv "$WINEPREFIX/../../../tar/bms-4.35.3-radar-xml-patch.exe" $WINEPREFIX/../INSTALL 2>/dev/null 1>/dev/null 12 | 13 | if [ ! -f "$WINEPREFIX/../INSTALL/bms-4.35.3-radar-xml-patch.exe" ] 14 | then 15 | printf "BMS 4.35 patch file not found in "$WINEPREFIX"/../INSTALL.\nFrom the theaters section of www.falcon-bms.com,\nDownload the BMS 4.35.3 radar xml patch file:\n\nbms-4.35.3-radar-xml-patch.exe\n\nPlace this file in the "$WINEPREFIX"/../INSTALL directory,\n\nthen run this script again.\n\n" 16 | exit 0 17 | fi 18 | 19 | cd "$WINEPREFIX/../INSTALL" 20 | 21 | wine "bms-4.35.3-radar-xml-patch.exe" 2>/dev/null 1>/dev/null 22 | clear 23 | printf "\nBMS 4.35.3 radar xml patch applied successfully.\n" 24 | exit 0 25 | 26 | -------------------------------------------------------------------------------- /files/SAT/BMS435/getBriefingDebriefing.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ ! -f /usr/bin/wine ]; then 4 | echo " " 5 | echo "ERROR: wine not found. Install wine 5 or later. If using the recommended Ubuntu 20.04 LTS linux distribution," 6 | echo "the command is:" 7 | echo "sudo apt install -y wine" 8 | echo "for more information, see https://wiki.winehq.org/Download" 9 | echo "Note: wine is the MS Windows emulation layer for linux. It runs MS Windows programs under linux." 10 | echo " " 11 | exit 1 12 | fi 13 | 14 | 15 | 16 | if wine --version | grep "wine-3"; then 17 | echo " " 18 | echo "ERROR: wine version 3 found, but wine version 5 or later is required for esports-for-engineers_3_0." 19 | echo "Uninstall wine, then download wine 5 using the instructions at https://wiki.winehq.org/Download" 20 | echo " " 21 | exit 1 22 | fi 23 | 24 | if wine --version | grep "wine-4"; then 25 | echo " " 26 | echo "ERROR: wine version 4 found, but wine version 5 or later is required for esports-for-engineers_3_0." 27 | echo "Uninstall wine, then download wine 5 using the instructions at https://wiki.winehq.org/Download" 28 | echo " " 29 | exit 1 30 | fi 31 | 32 | 33 | 34 | export WINEPREFIX="$PWD/WP" 35 | 36 | #copy briefing file to BMS434 directory 37 | 38 | echo " " 39 | 40 | if [ -f "$WINEPREFIX/drive_c/Falcon BMS 4.34/User/Briefings/Briefing.txt" ] 41 | then 42 | echo "Copying mission briefing file Briefing.txt to BMS434 directory" 43 | cp "$WINEPREFIX/drive_c/Falcon BMS 4.34/User/Briefings/Briefing.txt" $WINEPREFIX/.. 44 | else 45 | echo "No mission briefing file found." 46 | echo "On Mission screen select BRIEFING, then PRINT" 47 | fi 48 | 49 | echo " " 50 | 51 | if [ -f "$WINEPREFIX/drive_c/Falcon BMS 4.34/User/Briefings/debrief.txt" ] 52 | then 53 | echo "Copying mission debrief file debrief.txt to BMS433 directory" 54 | cp "$WINEPREFIX/drive_c/Falcon BMS 4.34 U1/User/Briefings/debrief.txt" $WINEPREFIX/.. 55 | else 56 | echo "No mission debriefing file found." 57 | echo "Debrief is only available after at least one mission has been completed." 58 | fi 59 | 60 | echo " " 61 | 62 | -------------------------------------------------------------------------------- /files/SAT/BMS435/installTheater_Balkans.sh: -------------------------------------------------------------------------------- 1 | clear 2 | 3 | export WINEPREFIX=$PWD/WP 4 | 5 | if [ ! -f "$WINEPREFIX/drive_c/Falcon BMS 4.35/Launcher.exe" ] 6 | then 7 | printf "You must install Falcon BMS 4.35.3 before installing\nadd-on theaters. Run ./BMS435.sh first, then run this script again.\n\n" 8 | exit 0 9 | fi 10 | 11 | if [ -d "$WINEPREFIX/drive_c/Falcon BMS 4.35/Data/Add-On Balkans" ] 12 | then 13 | printf "Theater already installed.\n" 14 | exit 0 15 | fi 16 | 17 | mv "$WINEPREFIX/../../../tar/Balkans_Theater_4.35.3.zip" $WINEPREFIX/../INSTALL 2>/dev/null 1>/dev/null 18 | 19 | if [ ! -f "$WINEPREFIX/../INSTALL/Balkans_Theater_4.35.3.zip" ] 20 | then 21 | printf "Balkans theater file not found in BMS435/INSTALL.\nFrom the theaters section of www.falcon-bms.com,\nDownload the latest BMS 4.35.3 Balkans theater file:\nBalkans_Theater_4.35.3.zip\nPlace this file in the BMS435/INSTALL directory,\n\nthen run this script again.\n\n" 22 | exit 0 23 | fi 24 | 25 | echo "unpacking zip file. This may take several mintes ..." 26 | cd "$WINEPREFIX/../INSTALL" 27 | unzip "Balkans_Theater_4.35.3.zip" 2>/dev/null 1>/dev/null 28 | wine "Balkans_Theater_4.35.3 v0393.exe" 2>/dev/null 1>/dev/null 29 | 30 | echo "Installing Tactical Engagement (TE) Mission set for Korea and Balkans Theaters" 31 | rsync -a "$WINEPREFIX/../INSTALL/Mission set for Falcon BMS 4.35/1. Korea Theater/" "$WINEPREFIX/drive_c/Falcon BMS 4.35/Data/Campaign/" 32 | rsync -a "$WINEPREFIX/../INSTALL/Mission set for Falcon BMS 4.35/2. Balkans Theater/" "$WINEPREFIX/drive_c/Falcon BMS 4.35/Data/Add-On Balkans/Campaign/" 33 | 34 | clear 35 | printf "\nBalkans theater added to BMS4.35.3\n" 36 | 37 | exit 0 38 | 39 | -------------------------------------------------------------------------------- /files/SAT/BMS435/installTheater_Iran_Iraq.sh: -------------------------------------------------------------------------------- 1 | clear 2 | 3 | export WINEPREFIX=$PWD/WP 4 | 5 | if [ ! -f "$WINEPREFIX/drive_c/Falcon BMS 4.35/Launcher.exe" ] 6 | then 7 | printf "You must install Falcon BMS 4.35.3 before installing\nadd-on theaters. Run ./BMS435.sh first, then run this script again.\n\n" 8 | exit 0 9 | fi 10 | 11 | if [ -d "$WINEPREFIX/drive_c/Falcon BMS 4.35/Data/Add-On Mideast128" ] 12 | then 13 | printf "Theater already installed.\n" 14 | exit 0 15 | fi 16 | 17 | mv "$WINEPREFIX/../../../tar/Add-On Mideast128 4-35-U3v10.zip" $WINEPREFIX/../INSTALL 2>/dev/null 1>/dev/null 18 | 19 | if [ ! -f "$WINEPREFIX/../INSTALL/Add-On Mideast128 4-35-U3v10.zip" ] 20 | then 21 | printf "Iran-Iraq theater file not found in "$WINEPREFIX"/../INSTALL.\nFrom the theaters section of www.falcon-bms.com,\nDownload the latest BMS 4.35.3 Mideast theater file:\nAdd-On Mideast128 4-35-U3v10.zip\nPlace this file in the "$WINEPREFIX"/../INSTALL directory,\n\nthen run this script again.\n\n" 22 | exit 0 23 | fi 24 | 25 | echo "unpacking zip file. This may take several mintes ..." 26 | cd "$WINEPREFIX/../INSTALL" 27 | unzip "Add-On Mideast128 4-35-U3v10.zip" 2>/dev/null 1>/dev/null 28 | cp -R "$WINEPREFIX/../INSTALL/Add-On Mideast128" "$WINEPREFIX/drive_c/Falcon BMS 4.35/Data" 29 | # now add to theater list per instructions 30 | cp $WINEPREFIX/../INSTALL/theater.lst "$WINEPREFIX/drive_c/Falcon BMS 4.35/Data/TerrData/TheaterDefinition" 31 | 32 | printf "\nIran-Iraq theater added to BMS4.35.3\n" 33 | exit 0 34 | 35 | -------------------------------------------------------------------------------- /files/SAT/BMS435/installTheater_Israel.sh: -------------------------------------------------------------------------------- 1 | clear 2 | 3 | export WINEPREFIX=$PWD/WP 4 | 5 | if [ ! -f "$WINEPREFIX/drive_c/Falcon BMS 4.35/Launcher.exe" ] 6 | then 7 | printf "You must install Falcon BMS 4.35.3 before installing\nadd-on theaters. Run ./BMS435.sh first, then run this script again.\n\n" 8 | exit 0 9 | fi 10 | 11 | if [ -d "$WINEPREFIX/drive_c/Falcon BMS 4.35/Data/Add-On Israel" ] 12 | then 13 | printf "Theater already installed.\n" 14 | exit 0 15 | fi 16 | 17 | mv "$WINEPREFIX/../../../tar/Israel_Theater_4.35.3.zip" $WINEPREFIX/../INSTALL 2>/dev/null 1>/dev/null 18 | mv "$WINEPREFIX/../../../tar/Israel Theater 1.05.4v Patch.zip" $WINEPREFIX/../INSTALL 2>/dev/null 1>/dev/null 19 | 20 | if [ ! -f "$WINEPREFIX/../INSTALL/Israel_Theater_4.35.3.zip" ] 21 | then 22 | printf "Isreal theater files not found in BMS435/INSTALL.\nFrom the theaters section of www.falcon-bms.com,\nDownload the latest BMS 4.35.3 Isreal theater files:\n\nIsrael_Theater_4.35.3.zip\n\nand\n\nIsrael Theater 1.05.4v Patch.zip\n\nPlace these files in the BMS435/INSTALL directory,\n\nthen run this script again.\n\n" 23 | exit 0 24 | fi 25 | 26 | echo "unpacking zip files. This may take several mintes ..." 27 | cd "$WINEPREFIX/../INSTALL" 28 | 29 | unzip "Israel_Theater_4.35.3.zip" 2>/dev/null 1>/dev/null 30 | unzip "Israel Theater 1.05.4v Patch.zip" 2>/dev/null 1>/dev/null 31 | wine "Israel_Theater_4.35 v1.05.3.exe" 2>/dev/null 1>/dev/null 32 | clear 33 | printf "\n applying Israel Theater 1.05.4v Patch ...\n\n" 34 | rsync -a "$WINEPREFIX/../INSTALL/Add-On Israel/" "$WINEPREFIX/drive_c/Falcon BMS 4.35/Data/Add-On Israel/" 35 | clear 36 | printf "\nIsreal theater installed successfully.\n" 37 | exit 0 38 | 39 | -------------------------------------------------------------------------------- /files/SAT/BMS435/installTheater_Somalia.sh: -------------------------------------------------------------------------------- 1 | clear 2 | 3 | export WINEPREFIX=$PWD/WP 4 | 5 | if [ ! -f "$WINEPREFIX/drive_c/Falcon BMS 4.35/Launcher.exe" ] 6 | then 7 | printf "You must install Falcon BMS 4.35.3 before installing\nadd-on theaters. Run ./BMS435.sh first, then run this script again.\n\n" 8 | exit 0 9 | fi 10 | 11 | if [ -d "$WINEPREFIX/drive_c/Falcon BMS 4.35/Data/Add-On Somalia" ] 12 | then 13 | printf "Theater already installed.\n" 14 | exit 0 15 | fi 16 | 17 | mv "$WINEPREFIX/../../../tar/Somalia 4.35.3.rar" $WINEPREFIX/../INSTALL 2>/dev/null 1>/dev/null 18 | 19 | if [ ! -f "$WINEPREFIX/../INSTALL/Somalia 4.35.3.rar" ] 20 | then 21 | printf "Somalia theater file not found in BMS435/INSTALL.\nFrom the theaters section of www.falcon-bms.com,\nDownload the latest BMS 4.35.3 Somalia theater file:\n\nSomalia 4.35.3.rar\n\nPlace this file in the BMS435/INSTALL directory,\n\nthen run this script again.\n\n" 22 | exit 0 23 | fi 24 | 25 | echo "unpacking rar file. This may take several mintes ..." 26 | cd "$WINEPREFIX/../INSTALL" 27 | mkdir somaliaInstall 28 | mv "Somalia 4.35.3.rar" somaliaInstall 29 | cd "$WINEPREFIX/../INSTALL/somaliaInstall" 30 | 31 | unrar e "Somalia 4.35.3.rar" 2>/dev/null 1>/dev/null 32 | wine "Somalia v4.35.3.exe" 2>/dev/null 1>/dev/null 33 | clear 34 | printf "\nSomalia theater installed successfully.\n" 35 | exit 0 36 | 37 | -------------------------------------------------------------------------------- /files/SAT/BMS435/installTheater_Taiwan.sh: -------------------------------------------------------------------------------- 1 | clear 2 | 3 | export WINEPREFIX=$PWD/WP 4 | 5 | if [ ! -f "$WINEPREFIX/drive_c/Falcon BMS 4.35/Launcher.exe" ] 6 | then 7 | printf "You must install Falcon BMS 4.35.3 before installing\nadd-on theaters. Run ./BMS435.sh first, then run this script again.\n\n" 8 | exit 0 9 | fi 10 | 11 | if [ -d "$WINEPREFIX/drive_c/Falcon BMS 4.35/Data/Add-On Taiwan" ] 12 | then 13 | printf "Theater already installed.\n" 14 | exit 0 15 | fi 16 | 17 | mv "$WINEPREFIX/../../../tar/Taiwan 4.35.3.rar" $WINEPREFIX/../INSTALL 2>/dev/null 1>/dev/null 18 | 19 | if [ ! -f "$WINEPREFIX/../INSTALL/Taiwan 4.35.3.rar" ] 20 | then 21 | printf "Taiwan theater file not found in BMS435/INSTALL.\nFrom the theaters section of www.falcon-bms.com,\nDownload the latest BMS 4.35.3 Taiwan theater file:\n\nTaiwan 4.35.3.rar\n\nPlace this file in the BMS435/INSTALL directory,\n\nthen run this script again.\n\n" 22 | exit 0 23 | fi 24 | 25 | echo "unpacking rar file. This may take several mintes ..." 26 | cd "$WINEPREFIX/../INSTALL" 27 | mkdir taiwanInstall 28 | mv "Taiwan 4.35.3.rar" taiwanInstall 29 | cd "$WINEPREFIX/../INSTALL/taiwanInstall" 30 | 31 | unrar e "Taiwan 4.35.3.rar" 2>/dev/null 1>/dev/null 32 | wine "Taiwan 4.35.3.exe" 2>/dev/null 1>/dev/null 33 | clear 34 | printf "\nTaiwan theater installed successfully.\n" 35 | exit 0 36 | 37 | -------------------------------------------------------------------------------- /files/SAT/BMS435/installTheater_Vietnam.sh: -------------------------------------------------------------------------------- 1 | clear 2 | 3 | export WINEPREFIX=$PWD/WP 4 | 5 | if [ ! -f "$WINEPREFIX/drive_c/Falcon BMS 4.35/Launcher.exe" ] 6 | then 7 | printf "You must install Falcon BMS 4.35.3 before installing\nadd-on theaters. Run ./BMS435.sh first, then run this script again.\n\n" 8 | exit 0 9 | fi 10 | 11 | if [ -d "$WINEPREFIX/drive_c/Falcon BMS 4.35/Data/Add-On Vietnam" ] 12 | then 13 | printf "Theater already installed.\n" 14 | exit 0 15 | fi 16 | 17 | mv "$WINEPREFIX/../../../tar/Add-On Vietnam 4.35.U1.2.zip" $WINEPREFIX/../INSTALL 2>/dev/null 1>/dev/null 18 | 19 | if [ ! -f "$WINEPREFIX/../INSTALL/Add-On Vietnam 4.35.U1.2.zip" ] 20 | then 21 | printf "Vietnam theater file not found in BMS435/INSTALL.\nFrom the theaters section of www.falcon-bms.com,\nDownload the latest BMS 4.35.3 Vietnam theater file:\n\nAdd-On Vietnam 4.35.U1.2.zip\n\nPlace this file in the BMS435/INSTALL directory,\n\nthen run this script again.\n\n" 22 | exit 0 23 | fi 24 | 25 | echo "unpacking zip file. This may take several mintes ..." 26 | cd "$WINEPREFIX/../INSTALL" 27 | mkdir vietnamInstall 28 | mv "Add-On Vietnam 4.35.U1.2.zip" vietnamInstall 29 | cd "$WINEPREFIX/../INSTALL/vietnamInstall" 30 | 31 | unzip "Add-On Vietnam 4.35.U1.2.zip" 2>/dev/null 1>/dev/null 32 | wine "Add-On Vietnam 4.35.U1.2 .exe" 2>/dev/null 1>/dev/null 33 | clear 34 | printf "\nVietnam theater installed successfully.\n" 35 | exit 0 36 | 37 | -------------------------------------------------------------------------------- /files/SAT/BMS435/mc.sh: -------------------------------------------------------------------------------- 1 | clear 2 | 3 | export WINEPREFIX=$PWD/WP 4 | 5 | if [ -f "$WINEPREFIX/../INSTALL/mc/Mission Commander.exe" ] 6 | then 7 | wine "$WINEPREFIX/../INSTALL/mc/Mission Commander.exe" 2>/dev/null 1>/dev/null 8 | clear 9 | exit 0 10 | fi 11 | 12 | mv "$WINEPREFIX/../../../tar/Mission_Commander_0.5.20.685.7z" $WINEPREFIX/../INSTALL 2>/dev/null 1>/dev/null 13 | 14 | if [ ! -f "$WINEPREFIX/../INSTALL/Mission_Commander_0.5.20.685.7z" ] 15 | then 16 | printf "Mission_Commander_0.5.20.685.7z file not found in BMS435/INSTALL.\nFrom https://www.weapondeliveryplanner.nl/download/index.html,\nDownload this file:\n\nMission_Commander_0.5.20.685.7z\n\nPlace this file in the BMS435/INSTALL directory,\n\nthen run this script again.\n\n" 17 | exit 0 18 | fi 19 | 20 | clear 21 | 22 | printf "Mission Commander require .NET. If you have not issued the command\n\nsudo winetricks dotnet48\n\npress CONTROL C and do it now, then run this script again.\n\nOtherwise, press a key to continue.\n\n" 23 | read replyString 24 | 25 | clear 26 | 27 | cd "$WINEPREFIX/../INSTALL" 28 | mkdir mc 29 | mv Mission_Commander_0.5.20.685.7z mc 30 | cd "$WINEPREFIX/../INSTALL/mc" 31 | p7zip -d Mission_Commander_0.5.20.685.7z 32 | 33 | clear 34 | printf "\nMission CommanderWeapon (MC) installed successfully. Run this script again to start MC\n" 35 | exit 0 36 | 37 | -------------------------------------------------------------------------------- /files/SAT/BMS435/replay.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # linux packages to install before running: 4 | # 5 | # install the Tacview recording viewer and the Weapon Delivery Planner pre-mission briefing utilities. 6 | # 27 Dec 2020 7 | 8 | if [ ! -f /usr/bin/wine ]; then 9 | echo " " 10 | echo "ERROR: wine not found. Install wine 5 or later. If using the recommended Manjaro 20.2 linux distribution," 11 | echo "the command is:" 12 | echo "sudo pamac install wine" 13 | echo "for more information, see https://wiki.winehq.org/Download" 14 | echo "Note: wine is the MS Windows emulation layer for linux. It runs MS Windows programs under linux." 15 | echo " " 16 | exit 1 17 | fi 18 | 19 | if wine --version | grep "wine-3"; then 20 | echo " " 21 | echo "ERROR: wine version 3 found, but wine version 5 or later is required for esports-for-engineers_v34." 22 | echo "Uninstall wine, then download wine 5 using the instructions at https://wiki.winehq.org/Download" 23 | echo " " 24 | exit 1 25 | fi 26 | 27 | if wine --version | grep "wine-4"; then 28 | echo " " 29 | echo "ERROR: wine version 4 found, but wine version 5 or later is required for esports-for-engineers_v34." 30 | echo "Uninstall wine, then download wine 5 using the instructions at https://wiki.winehq.org/Download" 31 | echo " " 32 | exit 1 33 | fi 34 | 35 | 36 | if [ ! -f Tacview184Setup.exe ]; then 37 | echo " " 38 | echo "ERROR: Tacview184Setup.exe not found in BMS434 directory." 39 | exit 1 40 | fi 41 | 42 | export WINEPREFIX=$PWD/WP 43 | echo " "; echo "Tacview Recordings are in My Computer/drive_c/Falcon BMS 4.35/User/Acmi"; echo " " 44 | 45 | if [ -f "$WINEPREFIX/drive_c/Program Files (x86)/Tacview/Tacview64.exe" ]; then 46 | cd "$WINEPREFIX/drive_c/Program Files (x86)/Tacview" 47 | wine Tacview64.exe 2>/dev/null 1>/dev/null 48 | exit 0 49 | fi 50 | 51 | cd $WINEPREFIX/../INSTALL 52 | wine Tacview184Setup.exe 2>/dev/null 1>/dev/null 53 | 54 | -------------------------------------------------------------------------------- /files/SAT/BMS435/runIfTheaterMissing.sh: -------------------------------------------------------------------------------- 1 | export WINEPREFIX=$PWD/WP 2 | clear 3 | printf "If all theaters are installed, but the list of theaters\n in the BMS Theater tab is incorrect, press a key to continue.\nOtherwise, press CONTROL C\n\n" 4 | 5 | 6 | read replyString 7 | 8 | cp "$WINEPREFIX/../INSTALL/theater.lst" "$WINEPREFIX/drive_c/Falcon BMS 4.35/Data/TerrData/TheaterDefinition" 9 | -------------------------------------------------------------------------------- /files/SAT/BMS435/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export WINEPREFIX="$PWD/WP" 4 | winecfg 2>/dev/null 1>/dev/null 5 | exit 0 6 | -------------------------------------------------------------------------------- /files/SAT/BMS435/tacview.sh: -------------------------------------------------------------------------------- 1 | clear 2 | 3 | export WINEPREFIX=$PWD/WP 4 | 5 | if [ -f "$WINEPREFIX/drive_c//Program Files (x86)/Tacview/Tacview64.exe" ] 6 | then 7 | wine "$WINEPREFIX/drive_c//Program Files (x86)/Tacview/Tacview64.exe" 2>/dev/null 1>/dev/null 8 | clear 9 | exit 0 10 | fi 11 | 12 | mv "$WINEPREFIX/../../../tar/Tacview187Setup.exe" $WINEPREFIX/../INSTALL 2>/dev/null 1>/dev/null 13 | 14 | if [ ! -f "$WINEPREFIX/../INSTALL/Tacview187Setup.exe" ] 15 | then 16 | printf "Tacview187Setup.exe file not found in "$WINEPREFIX"/../INSTALL.\nFrom www.tacview.net,\nDownload this file:\n\nTacview187Setup.exe\n\nPlace this file in the "$WINEPREFIX"/../INSTALL directory,\n\nthen run this script again.\n\n" 17 | exit 0 18 | fi 19 | 20 | cd "$WINEPREFIX/../INSTALL" 21 | wine "Tacview187Setup.exe" 2>/dev/null 1>/dev/null 22 | clear 23 | printf "\ntacview installed successfully.\n" 24 | exit 0 25 | 26 | -------------------------------------------------------------------------------- /files/SAT/BMS435/uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "" 4 | echo "If an installation is not working correctly," 5 | echo "it can be helpful to delete the installation" 6 | echo "and re-install." 7 | echo "To reinstall, issue these commands:" 8 | echo "sudo mount -o loop falcon4Cd.iso myMount" 9 | echo "cd myMount" 10 | echo "wine Setup.exe" 11 | echo "cd .." 12 | echo "export WINEPREFIX=\$PWD\WP" 13 | echo "winetricks dxvk" 14 | echo "winetricks dotnet40" 15 | echo "" 16 | echo "Press Enter to uninstall or C to cancel." 17 | read replyString 18 | rm -rf WP 19 | mkdir WP 20 | -------------------------------------------------------------------------------- /files/SAT/BMS435/wdp.sh: -------------------------------------------------------------------------------- 1 | clear 2 | 3 | export WINEPREFIX=$PWD/WP 4 | 5 | if [ -f "$WINEPREFIX/../INSTALL/wdp/WeaponDeliveryPlanner.exe" ] 6 | then 7 | wine "$WINEPREFIX/../INSTALL/wdp/WeaponDeliveryPlanner.exe" 2>/dev/null 1>/dev/null 8 | clear 9 | exit 0 10 | fi 11 | 12 | mv "$WINEPREFIX/../../../tar/Weapon_Delivery_Planner_3.7.19.208.7z" $WINEPREFIX/../INSTALL 2>/dev/null 1>/dev/null 13 | 14 | if [ ! -f "$WINEPREFIX/../INSTALL/Weapon_Delivery_Planner_3.7.19.208.7z" ] 15 | then 16 | printf "Weapon_Delivery_Planner_3.7.19.208.7z file not found in BMS435/INSTALL.\nFrom https://www.weapondeliveryplanner.nl/download/index.html,\nDownload this file:\n\nWeapon_Delivery_Planner_3.7.19.208.7z\n\nPlace this file in the BMS435/INSTALL directory,\n\nthen run this script again.\n\n" 17 | exit 0 18 | fi 19 | 20 | clear 21 | 22 | printf "WDP require .NET. If you have not issued the command\n\nsudo winetricks dotnet48\n\npress CONTROL C and do it now, then run this script again.\n\nOtherwise, press a key to continue.\n\n" 23 | read replyString 24 | 25 | printf "Installing WDP. Your callsign is \"Viper\".\nChanging the theater (at top left in WDP) causes WDP to hang.\nTo change theater, edit the Theater= line in INSTALL/wdp/Setup.ini.\n\nValid inputs are:\n1: Balkans theater\n6: Israel theater\n7: Korea theater\n9: Mideast128 theater\n\nPress a key to continue.\n\n" 26 | read replyString 27 | clear 28 | 29 | cd "$WINEPREFIX/../INSTALL" 30 | mkdir wdp 31 | mv Weapon_Delivery_Planner_3.7.19.208.7z wdp 32 | cd "$WINEPREFIX/../INSTALL/wdp" 33 | p7zip -d Weapon_Delivery_Planner_3.7.19.208.7z 34 | cp "$WINEPREFIX/../INSTALL/wdpSetup.ini" Setup.ini 35 | clear 36 | printf "\nWeapon Delivery Planner (WDP) installed successfully. Run this script again to start WDP\n" 37 | exit 0 38 | 39 | 40 | -------------------------------------------------------------------------------- /files/SAT/FalconAF.sh: -------------------------------------------------------------------------------- 1 | # Script Outline: 2 | # 3 | # This script checks if FalconAF is installed. If not, it looks for the mounted FalconAF iso for installation. 4 | # If the iso is found, it proceeds with the installation. If not, it prompts the user to mount the iso. 5 | # After installation, or if FalconAF is already installed, it launches FalconAF. 6 | 7 | #!/bin/bash 8 | 9 | # Define variables for directory paths 10 | export ISO_MNT_DIR="$PWD/isoMnt" 11 | export INSTALL_DIR="$PWD/INSTALL" 12 | export WINEPREFIX="$PWD/WP" 13 | export WINEARCH=win32 14 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 15 | 16 | 17 | export FALCON_EXE_PATH="$WINEPREFIX/drive_c/Program Files/Lead Pursuit/Battlefield Operations/FalconAF.exe" 18 | 19 | # Check if FalconAF is installed 20 | if [ ! -f "$FALCON_EXE_PATH" ]; then 21 | # Check if FalconAF iso is mounted 22 | if [ -f "$ISO_MNT_DIR/Setup.exe" ]; then 23 | clear 24 | echo "" 25 | echo "Installing using mounted FalconAF iso ..." 26 | echo "" 27 | echo "If asked whether to install wine-mono package, select Cancel." 28 | echo "When prompted for Setup Type, select Install" 29 | echo "Before entering 3D view, check that SETUP/GRAPHICS/VIDEO MODE is set to Direct3D HAL" 30 | echo "" 31 | 32 | # Install FalconAF 33 | wine "$ISO_MNT_DIR/Setup.exe" 2>/dev/null 1>/dev/null 34 | cp "$INSTALL_DIR/FalconAF/display.dsp" "$WINEPREFIX/drive_c/Program Files/Lead Pursuit/Battlefield Operations/config" 35 | cp "$INSTALL_DIR/FalconAF/Viper."* "$WINEPREFIX/drive_c/Program Files/Lead Pursuit/Battlefield Operations/config" 36 | cp "$INSTALL_DIR/FalconAF/global.cfg" "$WINEPREFIX/drive_c/Program Files/Lead Pursuit/Battlefield Operations" 37 | cp "$INSTALL_DIR/FalconAF/BFOpslog.txt" "$WINEPREFIX/drive_c/Program Files/Lead Pursuit/Battlefield Operations" 38 | else 39 | echo "" 40 | echo "FalconAF is not installed, and the FalconAF iso is not mounted at $ISO_MNT_DIR for installation." 41 | echo "" 42 | echo "To install FalconAF, follow these 3 steps:" 43 | echo "1. download the iso from, e.g., https://www.myabandonware.com/game/falcon-4-0-allied-force-e53" 44 | echo "2. mount the iso to the $ISO_MNT_DIR directory via" 45 | echo " sudo mount -o loop FalconAF.iso $ISO_MNT_DIR" 46 | echo "3. run this script again" 47 | echo "" 48 | exit 0 49 | fi 50 | fi 51 | 52 | # Launch FalconAF 53 | wine "$FALCON_EXE_PATH" 2>/dev/null 1>/dev/null 54 | 55 | -------------------------------------------------------------------------------- /files/SAT/GettingStartedGuide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sim-museum/esports-for-engineers/ad05854b7b539ba1e37bccaccca73b906864904f/files/SAT/GettingStartedGuide.pdf -------------------------------------------------------------------------------- /files/SAT/copyRecentFilesToAfterGameReport.sh: -------------------------------------------------------------------------------- 1 | # copy .vhs replay files and briefing/debriefing file created in the last two hours to afterGameReport 2 | find ./WP/drive_c/FreeFalcon6/acmibin -name "*.vhs" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 3 | find ./WP/drive_c/FreeFalcon6 -name "*.txt" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 4 | find ./WP/drive_c/FreeFalcon6 -name "*.frc" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 5 | find ./WP/drive_c/FreeFalcon6 -name "*.cam" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 6 | find ./WP/drive_c/FreeFalcon6 -name "*.his" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 7 | -------------------------------------------------------------------------------- /files/SAT/flightgear/training_F16.sh: -------------------------------------------------------------------------------- 1 | 2 | # Script Outline: 3 | # 4 | # This script checks for the existence of the FlightGear simulator and its add-on aircraft. 5 | # If FlightGear is not installed, it prompts the user to run the installation script. 6 | # If the add-on aircraft are not installed, it provides instructions for installation. 7 | # Then, it informs the user about how to use the simulator and suggests studying cockpit instruments. 8 | # Finally, it starts the FlightGear simulator with predefined settings. 9 | 10 | #!/bin/bash 11 | 12 | # Define variables for readability 13 | export FGFS_EXECUTABLE="/usr/games/fgfs" 14 | export FGFS_AIRCRAFT_DIR="$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" 15 | export INSTALL_SCRIPT="$HOME/ese/THU/flightgear/installFlightgear.sh" 16 | 17 | # Check if FlightGear simulator is installed 18 | if [ ! -f "$FGFS_EXECUTABLE" ]; then 19 | echo "FlightGear open source flight simulator is not installed." 20 | echo "Run $INSTALL_SCRIPT for installation steps, then run this script again." 21 | exit 1 22 | fi 23 | 24 | # Check if FlightGear add-on aircraft are installed 25 | if [ ! -d "$FGFS_AIRCRAFT_DIR" ]; then 26 | clear 27 | echo "It appears that the FlightGear add-on aircraft are not installed." 28 | printf "\nIf you did not install the add-on aircraft yet,\n" 29 | printf "1. type CONTROL C\n2. follow the instructions in $PWD/$INSTALL_SCRIPT\n3. run this script again.\n\n" 30 | printf "Otherwise, press any key to continue.\n\n" 31 | read -n 1 -s -r replyString 32 | echo "Then run this script again." 33 | exit 1 34 | fi 35 | 36 | # Inform user about how to use the simulator 37 | echo " " 38 | echo "For landing help, select View/Toggle Glide Slope Tunnel" 39 | echo " " 40 | echo "Study the cockpit instruments and practice takeoff and landing." 41 | echo " " 42 | echo "For help on this aircraft, see:" 43 | echo "Help/Aircraft Help" 44 | echo "Help/Aircraft Checklists" 45 | echo "Help/Tutorials" 46 | echo "F-16CJ Block 52" 47 | echo " " 48 | 49 | # Start FlightGear simulator with specified settings 50 | fgfs --start-date-sys=2020:06:01:12:00:00 --aircraft=f16-block-52 2>/dev/null 1>/dev/null 51 | 52 | -------------------------------------------------------------------------------- /files/SAT/flightgear/training_MiG21.sh: -------------------------------------------------------------------------------- 1 | # Outline of what the script does: 2 | # This script checks if FlightGear simulator and its add-on aircraft 3 | # are installed. It then sets up the environment for practicing 4 | # takeoff and landing in a Soviet MiG-21 aircraft. The user is 5 | # provided with instructions on cockpit instrument study and given 6 | # assistance for landing maneuvers. Finally, the script launches the 7 | # FlightGear simulator with the specified aircraft and time settings. 8 | 9 | #!/bin/bash 10 | 11 | # This script facilitates learning cockpit instruments and practicing takeoff and landing in a Soviet MiG-21. 12 | 13 | # Check if FlightGear simulator is installed 14 | # 15 | # Define variables for readability 16 | export FGFS_EXECUTABLE="/usr/games/fgfs" 17 | export FGFS_AIRCRAFT_DIR="$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" 18 | export INSTALL_SCRIPT="$HOME/ese/THU/flightgear/installFlightgear.sh" 19 | 20 | # Check if FlightGear simulator is installed 21 | if [ ! -f "$FGFS_EXECUTABLE" ]; then 22 | echo "FlightGear open source flight simulator is not installed." 23 | echo "Run $INSTALL_SCRIPT for installation steps, then run this script again." 24 | exit 1 25 | fi 26 | 27 | #if ! command -v fgfs &>/dev/null; then 28 | # echo "FlightGear open source flight simulator is not installed." 29 | # echo "Run ../../optionalFlightgearInstall.sh for installation steps, then run this script again." 30 | # exit 1 31 | #fi 32 | 33 | # Check if FlightGear add-on aircraft are installed 34 | if [ ! -d "$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" ]; then 35 | clear 36 | echo "It appears that the FlightGear add-on aircraft are not installed." 37 | printf "\nIf you have not installed the add-on aircraft yet,\n1. Type CTRL+C\n2. Follow the instructions in $PWD/installFlightgear.sh\n3. Run this script again.\n\nOtherwise, press any key to continue.\n\n" 38 | read -r replyString 39 | echo "Then run this script again." 40 | exit 1 41 | fi 42 | 43 | # Set variables for readability 44 | export fgfs_path="/usr/games/fgfs" 45 | export fgfs_aircraft_dir="$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" 46 | 47 | # Display instructions 48 | echo "\nFor landing help, select View/Toggle Glide Slope Tunnel\n" 49 | echo "Study the cockpit instruments and practice takeoff and landing." 50 | 51 | echo "\nFor help on this aircraft, see:" 52 | echo "Help/Aircraft Help" 53 | echo "MiG-21bis" 54 | 55 | # Start FlightGear simulator 56 | fgfs --start-date-sys=2020:06:01:12:00:00 --aircraft=MiG-21bis 2>/dev/null 1>/dev/null 57 | 58 | -------------------------------------------------------------------------------- /files/SAT/freeFalcon.sh: -------------------------------------------------------------------------------- 1 | # Script Outline: 2 | # 1. Check if FreeFalcon6 is installed. 3 | # 2. If installed, launch Free Falcon. 4 | # 3. If not installed, provide instructions for Wine configuration and proceed with installation steps. 5 | # 4. Install Free Falcon 6 and required components. 6 | # 5. Perform necessary configuration changes. 7 | # 6. Run Free Falcon. 8 | 9 | #!/bin/bash 10 | 11 | # Set variables for directory paths 12 | export INSTALL_DIR="$PWD/INSTALL" 13 | export WINEPREFIX_DIR="$PWD/WP" 14 | 15 | 16 | # Export Wine prefix 17 | export WINEPREFIX="$WINEPREFIX_DIR" 18 | export WINEARCH=win32 19 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 20 | 21 | # Check if FreeFalcon6 is installed 22 | if [ -d "$WINEPREFIX/drive_c/FreeFalcon6" ]; then 23 | # Free Falcon is installed 24 | cd "$WINEPREFIX/drive_c/FreeFalcon6" 25 | # Launch Free Falcon 26 | wine FFViper.exe -window 2>/dev/null 1>/dev/null 27 | exit 0 28 | else 29 | # Free Falcon not installed yet 30 | 31 | # Provide instructions for setting up Wine configuration 32 | echo "If you run into graphics glitches later, run ./setWineDisplayResolution.sh and" 33 | echo "In Wine Configuration, in the Graphics" 34 | echo "tab, select Emulate A Virtual Desktop and set Desktop Size to" 35 | echo "your screen resolution." 36 | 37 | # Install Free Falcon 6 38 | echo " " 39 | echo " " 40 | echo "Step 1 of 4: Installing Free Falcon 6" 41 | echo "When you reach the final install screen, Completing the FreeFalcon 6.0 Installation," 42 | echo "deselect the option Launch Free Falcon 6 Config Editor" 43 | echo " " 44 | cd "$INSTALL_DIR/FF6d" 45 | wine FreeFalcon6.0_Installer.exe 2>/dev/null 1>/dev/null 46 | echo " " 47 | echo " " 48 | echo "Step 2 of 4: Installing Cockpit art" 49 | echo " " 50 | echo " " 51 | cd "$WINEPREFIX_DIR/../INSTALL/FF6_FreeFalcon5_Cockpit_Pack_www.g4g.it/FreeFalcon5_Cockpit_Pack" 52 | wine 'FreeFalcon5 Cockpit Pack v1.5.exe' 2>/dev/null 1>/dev/null 53 | echo " " 54 | echo " " 55 | echo "Step 3 or 4: Installing Israel Theater" 56 | echo " " 57 | echo " " 58 | cd "$WINEPREFIX_DIR/../INSTALL/FF6_ITOv4c_www.g4g.it/ITO V4c" 59 | wine 'ITO2 V4c.exe' 2>/dev/null 1>/dev/null 60 | echo " " 61 | echo " " 62 | echo "Step 4 or 4: Installing Balkans Theater" 63 | echo " " 64 | echo " " 65 | cd "$WINEPREFIX_DIR/../INSTALL/FF6_Balkans3_www.g4g.it/BalkansFF6-3/" 66 | wine 'Balkans 2.exe' 2>/dev/null 1>/dev/null 67 | 68 | # Remove outdated documentation 69 | cd "$WINEPREFIX/drive_c/FreeFalcon6/_the_MANUAL" 70 | rm "FF6 COMPANION_v.5.5.pdf" 71 | 72 | # Move movie directories 73 | cd "$WINEPREFIX/drive_c/FreeFalcon6" 74 | mv movies movies_DoNotPlayInGame 75 | 76 | cd "$WINEPREFIX/drive_c/FreeFalcon6/Theaters/Israel" 77 | mv movies movies_DoNotPlayInGame 78 | 79 | # Change configuration defaults 80 | cp "$WINEPREFIX/../INSTALL/mods/ffviper.cfg" "$WINEPREFIX/drive_c/FreeFalcon6" 81 | cp "$WINEPREFIX/drive_c/FreeFalcon6/F4Patch/FFViper/pit/Breathing/BreathingOff/EnviroControlSys.wav" "$WINEPREFIX/drive_c/FreeFalcon6/sounds" 82 | cp "$WINEPREFIX/drive_c/FreeFalcon6/F4Patch/FFViper/pit/Breathing/BreathingOff/EnviroControlSys.wav" "$WINEPREFIX/drive_c/FreeFalcon6/F4Patch/Persist/Breathing" 83 | 84 | # Add saved campaigns to the Israeli classic theater 85 | rsync -a "$WINEPREFIX/../INSTALL/mods/israeliClassicSavedCampaigns/" "$WINEPREFIX/drive_c/FreeFalcon6/Theaters/Israel_Classic/campaign/" 86 | 87 | # Run Free Falcon 88 | cd "$WINEPREFIX/drive_c/FreeFalcon6" 89 | wine FFViper.exe -window 2>/dev/null 1>/dev/null 90 | exit 0 91 | fi 92 | exit 0 93 | 94 | -------------------------------------------------------------------------------- /files/SAT/getBriefingDebriefing.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | $PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 4 | if [ $? -ne 0 ]; then 5 | exit 1 6 | fi 7 | 8 | export WINEPREFIX="$PWD/WP" 9 | export WINEARCH=win32 10 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 11 | 12 | 13 | #copy briefing file to SAT directory 14 | 15 | echo " " 16 | 17 | if [ -f "$WINEPREFIX/drive_c/FreeFalcon6/Briefing.txt" ] 18 | then 19 | echo "Copying mission briefing file Briefing.txt to SAT directory" 20 | cp "$WINEPREFIX/drive_c/FreeFalcon6/Briefing.txt" $WINEPREFIX/.. 21 | else 22 | echo "No mission briefing file found." 23 | echo "In Free Falcon select BRIEFING, then PRINT" 24 | fi 25 | 26 | echo " " 27 | 28 | if [ -f "$WINEPREFIX/drive_c/FreeFalcon6/debrief.txt" ] 29 | then 30 | echo "Copying mission debrief file debrief.txt to SAT directory" 31 | cp "$WINEPREFIX/drive_c/FreeFalcon6/debrief.txt" $WINEPREFIX/.. 32 | else 33 | echo "No mission debriefing file found." 34 | echo "Debrief is only available after at least one mission has been completed." 35 | fi 36 | 37 | echo " " 38 | 39 | -------------------------------------------------------------------------------- /files/SAT/plotAircraftFlightPerformanceDiagrams.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | $PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 4 | if [ $? -ne 0 ]; then 5 | exit 1 6 | fi 7 | 8 | export WINEPREFIX="$PWD/WP" 9 | if [ ! -d $WINEPREFIX/drive_c/FreeFalcon6 ] 10 | then 11 | # free falcon not installed yet 12 | echo ""; echo "Run freeFalcon.sh, then run this script again."; echo "" 13 | fi 14 | 15 | if [ ! -f $WINEPREFIX/../INSTALL/alreadyRanDoghouseFlag.txt ] 16 | then 17 | echo ""; echo " installing mfc42 windows component needed by f4doghouse"; echo "" 18 | winetricks mfc42 19 | touch $WINEPREFIX/../INSTALL/alreadyRanDoghouseFlag.txt 20 | fi 21 | clear 22 | echo "To view graphs of flight performance, open an aircraft .dat file in the following directory:" 23 | echo "$WINEPREFIX/drive_c/FreeFalcon6/Zips/sim/ACDATA"; echo "" 24 | wine INSTALL/f4doghouse.exe 2>/dev/null 1>/dev/null 25 | exit 0 26 | 27 | -------------------------------------------------------------------------------- /files/SAT/rampStartTrainer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export WINEPREFIX="$PWD/WP" 4 | export WINEARCH=win32 5 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 6 | 7 | 8 | if [ -d "$WINEPREFIX/drive_c/FreeFalcon6/Docs/SP3" ] 9 | then 10 | cd $WINEPREFIX/drive_c/FreeFalcon6/Docs/SP3 11 | wine sp3_ramp_start_trainer.exe 2>/dev/null 1>/dev/null 12 | exit 0 13 | else 14 | echo "run ./FreeFalcon.sh first" 15 | echo "the trainer isn't installed until you've run FreeFalcon.sh at least once." 16 | exit 1 17 | fi 18 | 19 | -------------------------------------------------------------------------------- /files/SAT/replay.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export WINEPREFIX="$PWD/WP" 4 | if [ -d "$WINEPREFIX/drive_c/Program Files (x86)/Tacview" ] 5 | then 6 | # Tacview is installed in Free Falcon wine bottle 7 | cd "$WINEPREFIX/drive_c/Program Files (x86)/Tacview" 8 | wine Tacview 2>/dev/null 1>/dev/null 9 | else 10 | # Tacview not installed yet 11 | cd "$WINEPREFIX/../INSTALL" 12 | wine Tacview176Setup.exe 2>/dev/null 1>/dev/null 13 | fi 14 | exit 0 15 | 16 | -------------------------------------------------------------------------------- /files/SAT/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export WINEPREFIX="$PWD/WP" 3 | export WINEARCH=win32 4 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 5 | 6 | winecfg 2>/dev/null 1>/dev/null 7 | exit 0 8 | -------------------------------------------------------------------------------- /files/SAT/uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "" 4 | echo "If an installation is not working correctly," 5 | echo "it can be helpful to delete the installation" 6 | echo "and re-install." 7 | echo "Press Enter to uninstall or C to cancel." 8 | read replyString 9 | rm -rf WP 10 | mkdir WP 11 | -------------------------------------------------------------------------------- /files/SUN/INSTALL/PokerTH-1.1.2/pokerth.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | appname=`basename $0 | sed s,\.sh$,,` 3 | dirname=`dirname $0` 4 | if [ "${dirname:0:1}" != "/" ]; then 5 | dirname=$PWD/$dirname 6 | fi 7 | LD_LIBRARY_PATH=$dirname/libs 8 | export LD_LIBRARY_PATH 9 | export QT_QPA_FONTDIR=$dirname/data/fonts 10 | $dirname/$appname $* 11 | -------------------------------------------------------------------------------- /files/SUN/INSTALL/install_ps_eval.py: -------------------------------------------------------------------------------- 1 | import os 2 | import subprocess 3 | import sys 4 | 5 | def run_command(command, cwd=None): 6 | """Run a shell command and exit if it fails.""" 7 | try: 8 | subprocess.run(command, shell=True, check=True, cwd=cwd) 9 | except subprocess.CalledProcessError as e: 10 | print(f"Error: Command '{command}' failed with exit code {e.returncode}") 11 | sys.exit(1) 12 | 13 | def main(): 14 | # Step 1: Install dependencies 15 | print("Installing dependencies...") 16 | run_command("sudo apt update && sudo apt install -y git cmake libboost-all-dev") 17 | 18 | # Step 2: Clone PokerStove repository 19 | print("Cloning PokerStove repository...") 20 | if not os.path.exists("pokerstove"): 21 | run_command("git clone https://github.com/andrewprock/pokerstove.git") 22 | 23 | # Step 3: Build PokerStove 24 | print("Building PokerStove...") 25 | build_dir = "pokerstove/build" 26 | os.makedirs(build_dir, exist_ok=True) 27 | run_command("cmake -DCMAKE_BUILD_TYPE=Release ..", cwd=build_dir) 28 | run_command("cmake --build . --target all -j$(nproc)", cwd=build_dir) 29 | 30 | # Step 4: Create symbolic link to ps-eval in the parent directory 31 | print("Creating symbolic link to ps-eval...") 32 | current_dir = os.getcwd() 33 | parent_dir = os.path.abspath(os.path.join(current_dir, os.pardir)) 34 | ps_eval_path = os.path.join(current_dir, build_dir, "bin", "ps-eval") 35 | symlink_path = os.path.join(parent_dir, "ps-eval") 36 | 37 | if not os.path.isfile(ps_eval_path): 38 | print(f"Error: ps-eval binary not found at {ps_eval_path}") 39 | sys.exit(1) 40 | 41 | if os.path.islink(symlink_path) or os.path.exists(symlink_path): 42 | os.remove(symlink_path) # Remove existing file or symlink 43 | 44 | os.symlink(ps_eval_path, symlink_path) 45 | print(f"Symbolic link created at {symlink_path}, pointing to {ps_eval_path}") 46 | 47 | if __name__ == "__main__": 48 | main() 49 | 50 | -------------------------------------------------------------------------------- /files/SUN/calculatingScore.txt: -------------------------------------------------------------------------------- 1 | SUN Scoring 2 | eSports for Engineers 24041LTS 3 | 4 | Several types of poker are available. 5 | 6 | You can choose to 7 | 8 | OBJECTIVE #1: LEARN FROM AI FEEDBACK 9 | OBJECTIVE #2: USER DEFINED (can be regular or aspirational) 10 | User-defined OKR could include, e.g. winning a certain amount of money in more than one type of poker game 11 | 12 | --------------------------------------------------------------- 13 | OKR #1,1 14 | 15 | score .1 point for watching the videos and skimming the texts 16 | under DOC/references.txt 17 | 18 | --------------------------------------------------------------- 19 | OKR #1,2 20 | 21 | score .2 point for completing all in-game tutorials in 22 | the Battle for the Bracelets game 23 | 24 | --------------------------------------------------------------- 25 | OKR #1,3 26 | 27 | Range Analysis: 28 | 29 | Input different hand ranges into PokerStove and analyze their 30 | equity against each other. This will help you understand the 31 | concept of range advantage and how different ranges interact in 32 | each variant. Experiment with different opponent ranges in 33 | different poker variants to see how it affects your equity and 34 | decision-making. 35 | 36 | score: 0.1 37 | 38 | --------------------------------------------------------------- 39 | OKR #1,4 40 | 41 | Hand History Review: 42 | 43 | Import hand histories from your poker game software into 44 | PokerStove to review and analyze your play. Identify spots where 45 | you could have made better decisions and learn from them. Analyze 46 | hands where you faced tough decisions or encountered unusual 47 | situations. Use PokerStove to understand the equity of your 48 | decisions and whether they were profitable in the long run. 49 | 50 | score: 0.3 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /files/SUN/copyRecentFilesToAfterGameReport.sh: -------------------------------------------------------------------------------- 1 | 2 | print("copy screenshots in ~/Pictures and other game output to ./afterGameReport manually.") 3 | 4 | 5 | -------------------------------------------------------------------------------- /files/SUN/generalPokerEvaluator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | clear 3 | # Function to check if ps-eval is working 4 | check_ps_eval() { 5 | if [[ -x "./ps-eval" ]]; then 6 | # Capture the output of ps-eval 7 | output=$(./ps-eval 2>&1) 8 | # Check if the output contains the expected string 9 | if [[ "$output" == *"ps-eval, a poker hand evaluator"* ]]; then 10 | echo "ps-eval is present and working." 11 | return 0 12 | else 13 | echo "ps-eval exists but is not working as expected." 14 | return 1 15 | fi 16 | else 17 | echo "ps-eval is not present or not executable." 18 | return 1 19 | fi 20 | } 21 | 22 | # Main script logic 23 | if ! check_ps_eval; then 24 | # If ps-eval exists but is not working, delete it 25 | if [[ -e "./ps-eval" ]]; then 26 | echo "Deleting existing ps-eval..." 27 | rm -f "./ps-eval" 28 | fi 29 | 30 | # Navigate to the INSTALL directory 31 | INSTALL_DIR="./INSTALL" 32 | if [[ -d "$INSTALL_DIR" ]]; then 33 | echo "Navigating to INSTALL directory..." 34 | cd "$INSTALL_DIR" || { echo "Failed to navigate to INSTALL directory."; exit 1; } 35 | else 36 | echo "INSTALL directory does not exist. Exiting." 37 | exit 1 38 | fi 39 | 40 | # Run the Python script to create a symbolic link to ps-eval in the current directory's parent directory 41 | PYTHON_SCRIPT="install_ps_eval.py" 42 | if [[ -f "$PYTHON_SCRIPT" ]]; then 43 | echo "Running Python script to set up ps-eval..." 44 | python3 "$PYTHON_SCRIPT" || { echo "Python script failed. Exiting."; exit 1; } 45 | else 46 | echo "Python script $PYTHON_SCRIPT not found in INSTALL directory. Exiting." 47 | exit 1; 48 | fi 49 | 50 | # Return to the original directory after setup 51 | cd - || { echo "Failed to return to the original directory."; exit 1; } 52 | else 53 | echo "No action needed. ps-eval is already set up correctly." 54 | fi 55 | 56 | echo "" 57 | echo "" 58 | echo "ps-eval: text mode poker equity calculator, works with Texas Hold em, Omaha, Stud, Draw\n" 59 | echo " Allowed options:" 60 | echo " -? [ --help ] produce help message" 61 | echo " -g [ --game ] arg (=h) game to use for evaluation" 62 | echo " -b [ --board ] arg community cards for he/o/o8" 63 | echo " -h [ --hand ] arg a hand for evaluation" 64 | echo " -q [ --quiet ] produce no output" 65 | echo "" 66 | echo " For the --game option, one of the follwing games may be" 67 | echo " specified." 68 | echo " h hold'em" 69 | echo " o omaha/8" 70 | echo " O omaha high" 71 | echo " r razz" 72 | echo " s stud" 73 | echo " e stud/8" 74 | echo " q stud high/low no qualifier" 75 | echo " d draw high" 76 | echo " l lowball (A-5)" 77 | echo " k Kansas City lowball (2-7)" 78 | echo " t triple draw lowball (2-7)" 79 | echo " T triple draw lowball (A-5)" 80 | echo " b badugi" 81 | echo " 3 three-card poker" 82 | echo "" 83 | echo " examples:" 84 | echo " ./ps-eval acas" 85 | echo " ./ps-eval AcAs Kh4d --board 5c8s9h" 86 | echo " ./ps-eval AcAs Kh4d --board 5c8s9h" 87 | echo " ./ps-eval --game l 7c5c4c3c2c" 88 | echo " ./ps-eval --game k 7c5c4c3c2c" 89 | echo " ./ps-eval --game kansas-city-lowball 7c5c4c3c2c" 90 | echo "" 91 | echo "./ps-eval can take a couple minutes to produce output" 92 | 93 | 94 | -------------------------------------------------------------------------------- /files/SUN/hoylePoker.sh: -------------------------------------------------------------------------------- 1 | 2 | # Script outline: 3 | # 4 | # This script automates the installation and execution of Hoyle Poker 1997. 5 | # If the Poker directory exists, it checks for the presence of 'autoplay.exe' and launches the game. 6 | # If 'autoplay.exe' is not found, it provides instructions for mounting the game ISO. 7 | # If the game ISO is mounted, it configures Wine and initiates the installation. 8 | # If 'autoplay.exe' is still not found, it unpacks the game files from the ISO. 9 | # Before exiting, it provides instructions for mounting the ISO if needed. 10 | 11 | #!/bin/bash 12 | 13 | # Set Wine prefix 14 | export WINEPREFIX="$PWD/WP" 15 | export WINEARCH=win32 16 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 17 | 18 | 19 | # Directory paths 20 | INSTALL_DIR="$WINEPREFIX/../INSTALL" 21 | POKER_DIR="$WINEPREFIX/drive_c/SIERRA/Poker" 22 | ISO_MOUNT="$INSTALL_DIR/isoMnt" 23 | 24 | # Check if Poker directory exists 25 | if [ -d "$POKER_DIR" ]; then 26 | # Check if autoplay.exe exists 27 | if [ -f "$INSTALL_DIR/isoMnt/autoplay.exe" ]; then 28 | # Run Poker executable 29 | cd "$POKER_DIR" 30 | wine POKER.EXE >/dev/null 2>&1 31 | clear 32 | exit 0 33 | else 34 | # Print instructions for mounting ISO 35 | printf "Cut and paste the commands below at a terminal prompt:\n" 36 | cd "$WINEPREFIX/../" 37 | echo "export WINEPREFIX=\$PWD/WP" 38 | echo "sudo mount -o loop $INSTALL_DIR/hoyle.iso01.iso $ISO_MOUNT" 39 | printf "\nThen run this script again.\n" 40 | exit 0 41 | fi 42 | fi 43 | 44 | # Move Hoyle Poker zip file if exists 45 | mv "$WINEPREFIX/../../tar/Hoyle-Poker_Win_EN_ISO-Version.zip" "$INSTALL_DIR" >/dev/null 2>&1 46 | 47 | # Check if Hoyle Poker zip file exists 48 | if [ ! -f "$INSTALL_DIR/Hoyle-Poker_Win_EN_ISO-Version.zip" ]; then 49 | clear 50 | echo "Hoyle Poker 1997 ISO version install file not found in the directory SUN/INSTALL" 51 | echo "" 52 | echo "Download the file from: https://www.myabandonware.com/game/hoyle-poker-dk4#download" 53 | echo "Place this file in the SUN/INSTALL directory." 54 | echo "" 55 | echo "Then run this script again." 56 | echo "" 57 | exit 0 58 | else 59 | # Check if autoplay.exe exists 60 | if [ -f "$INSTALL_DIR/isoMnt/autoplay.exe" ]; then 61 | # Mount ISO and configure Wine 62 | cd "$ISO_MOUNT" 63 | clear 64 | printf "In the Wine configuration dialog, in the Applications tab select Windows Version: Windows XP\nSet your monitor resolution to 800x600.\n\nPress a key to continue ...\n" 65 | winecfg >/dev/null 2>&1 66 | read -r replyString 67 | printf "Installing Hoyle Poker 1997\n\nSelect Install\nDo not select Register or Test System. Select install even though system doesn't meet specifications. Select save to hard drive. Finally, select exit installer.\nPress a key to begin installation ...\n" 68 | read -r replyString 69 | wine "$INSTALL_DIR/isoMnt/setup.exe" >/dev/null 2>&1 70 | clear 71 | printf "Run this script again to play Hoyle Poker.\n" 72 | exit 0 73 | else 74 | # Unpack files if ISO not mounted 75 | if [ ! -f "$INSTALL_DIR/Hoyle-Poker_Win_EN_ISO-Version.zip" ]; then 76 | printf "INSTALL/Hoyle-Poker_Win_EN_ISO-Version.zip missing\n\n" 77 | exit 0 78 | fi 79 | clear 80 | echo "Unpacking files" 81 | cd "$INSTALL_DIR" 82 | unzip Hoyle-Poker_Win_EN_ISO-Version.zip 83 | cd "Hoyle Poker ISO" 84 | bchunk cd.BIN cd.cue hoyle.iso 85 | mv hoyle.iso01.iso "$INSTALL_DIR" 86 | printf "Cut and paste the commands below at a terminal prompt.\nDo not install mono, if prompted to do so:\n" 87 | cd "$WINEPREFIX/../" 88 | echo "export WINEPREFIX=\$PWD/WP" 89 | echo "sudo mount -o loop $INSTALL_DIR/hoyle.iso01.iso $ISO_MOUNT" 90 | printf "\nThen run this script again.\n" 91 | fi 92 | fi 93 | 94 | -------------------------------------------------------------------------------- /files/SUN/pokerStove.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Set Wine prefix directory 4 | export WINEPREFIX="$PWD/WP" 5 | export WINEARCH=win32 6 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 7 | 8 | 9 | # Check if PokerStove.exe exists 10 | if [ -f "$WINEPREFIX/drive_c/Program Files/PokerStove/PokerStove.exe" ]; then 11 | cd "$WINEPREFIX/drive_c/Program Files/PokerStove/" 12 | wine PokerStove.exe 2>/dev/null 13 | exit 14 | else 15 | # Change directory to PokerStove installation directory 16 | cd "./INSTALL/" 17 | 18 | # Print installation instructions 19 | clear; 20 | echo "In the configuration dialog, choose Windows XP as the MS Windows version." 21 | echo "Press Enter to continue ..." 22 | 23 | read replyString 24 | 25 | winecfg 2>/dev/null 1>/dev/null 26 | 27 | # Run PokerStoveSetup124.exe using Wine 28 | wine PokerStoveSetup124.exe 2>/dev/null 1>/dev/null 29 | 30 | # Print success message 31 | clear 32 | echo "Hold Em calculator installed, run this script again." 33 | exit 34 | fi 35 | -------------------------------------------------------------------------------- /files/SUN/pokerth.sh: -------------------------------------------------------------------------------- 1 | # Outline of the script: 2 | # 3 | # This script sets up the environment variables necessary for running PokerTH 4 | # and then executes the PokerTH executable. It ensures that the LD_LIBRARY_PATH 5 | # is set to the installation directory's libs folder and QT_QPA_FONTDIR is set 6 | # to the installation directory's fonts folder. Finally, it runs the PokerTH 7 | # executable while suppressing both stdout and stderr. 8 | 9 | #!/bin/bash 10 | 11 | # Define the directory path for PokerTH installation 12 | install_dir="$PWD/INSTALL/PokerTH-1.1.2" 13 | 14 | # Set LD_LIBRARY_PATH to the installation directory's libs folder 15 | LD_LIBRARY_PATH="$install_dir/libs" 16 | export LD_LIBRARY_PATH 17 | 18 | # Set QT_QPA_FONTDIR to the installation directory's fonts folder 19 | export QT_QPA_FONTDIR="$install_dir/data/fonts" 20 | 21 | # Run PokerTH executable, suppressing both stdout and stderr 22 | "$install_dir/pokerth" 2>/dev/null 1>/dev/null 23 | 24 | -------------------------------------------------------------------------------- /files/SUN/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export WINEPREFIX="$PWD/WP" 4 | export WINEARCH=win32 5 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 6 | 7 | winecfg 2>/dev/null 1>/dev/null 8 | exit 0 9 | -------------------------------------------------------------------------------- /files/SUN/uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "" 4 | echo "If an installation is not working correctly," 5 | echo "it can be helpful to delete the installation" 6 | echo "and re-install." 7 | echo "Press Enter to uninstall or C to cancel." 8 | read replyString 9 | rm -rf WP 10 | mkdir WP 11 | -------------------------------------------------------------------------------- /files/THU/BattleOfBritain/.delayedMonitorReset_helper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | while IFS= read -r line; do 3 | xrandr --output $line --auto 4 | done 5 | 6 | -------------------------------------------------------------------------------- /files/THU/BattleOfBritain/DEBUG/debugScriptForCampaign.sh: -------------------------------------------------------------------------------- 1 | # if you follow the installation and configuration instructions 2 | # in introduction.txt, you are unlikely to have graphics 3 | # problems with Battle of Britain; read introduction.txt first! 4 | # January 2021 5 | 6 | export WINEPREFIX=$PWD/../WP 7 | clear 8 | echo "Debug Script for Battle of Britain Campaign" 9 | echo "Use this script to test Battle of Britain campaign." 10 | echo "Campaign may become unresponsive, depending on graphics" 11 | echo "settings. This script will cause BoB to exit after 60" 12 | echo "seconds. It is useful for testing different graphics" 13 | echo "settings." 14 | echo "use" 15 | echo "xrandr -q" 16 | echo "to identify your display name, for example HDMI-0" 17 | echo "to restore your graphics settings after 60 seconds" 18 | echo "add, e.g." 19 | echo "xrandr --output HDMI-0 --mode 1280x1024" 20 | echo "at the end of this script for best results" 21 | echo "leaving all the graphics options unchecked can " 22 | echo "produce the best results on the 2D campaign screen" 23 | echo "but it is also most likely to hang or reset your display." 24 | echo "all boxes checked, or all but manage screen, seems" 25 | echo "to produce good results" 26 | winecfg 27 | cd "$WINEPREFIX/drive_c/Program Files/Rowan Software/Battle Of Britain" 28 | wine bob.exe 2>/dev/null 1>/dev/null & 29 | # wait 60 seconds 30 | sleep 60 31 | # kill the wine server 32 | wineserver -k 33 | # reset the display to its default resolution 34 | # replace "HDMI-0" in the line below with the 35 | # name of your display as shown by 36 | # xrandr -q 37 | # xrandr --output HDMI-0 --mode 1280x1024 38 | xrandr -s 0 39 | -------------------------------------------------------------------------------- /files/THU/BattleOfBritain/INSTALL/lowres.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # sets all monitors to 1024x768 3 | 4 | if [ $# -ne 0 ]; then 5 | echo " "; echo "Incorrect input."; echo " " 6 | echo "This command takes no arguments. It sets all monitors to low (1024x768) resolution." 7 | echo " " 8 | exit 1 9 | fi 10 | 11 | xrandr -q | grep connected | grep -v disconnected | cut -d ' ' -f 1 | $WINEPREFIX/../INSTALL/lowresHelper.sh 12 | 13 | -------------------------------------------------------------------------------- /files/THU/BattleOfBritain/INSTALL/lowresHelper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | while IFS= read -r line; do 3 | xrandr --output $line --mode 1024x768 4 | done 5 | 6 | -------------------------------------------------------------------------------- /files/THU/BattleOfBritain/delayedMonitorReset.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # reset the monitors to max resolution after a specified delay 3 | # which must be an integer number of minutes 4 | # 5 | # this recovers from an error condition in 6 | # which one of the THU games locks the 7 | # displays 8 | # 9 | # if this happens, another thing to 10 | # try is pressing F1 11 | # which brings up the login screen in Ubuntu 12 | 13 | if [ $# -ne 1 ]; then 14 | echo " "; echo "Incorrect input."; echo " " 15 | echo "This shell script requires one argument, which must be an integer." 16 | echo "The argument is the number of minutes to wait before" 17 | echo "resetting the display monitor (or monitors) to max resolution." 18 | echo " " 19 | echo "Run this script if you anticipate that a sim may lock up the display(s)." 20 | echo " " 21 | exit 1 22 | fi 23 | 24 | delaySeconds=$(( $1*60)) 25 | #echo "multiplication of $1 and 60 yields $delaySeconds" 26 | sleep $delaySeconds 27 | xrandr -q | grep connected | grep -v disconnected | cut -d ' ' -f 1 | ./.delayedMonitorReset_helper.sh 28 | echo " "; echo "delayedMonitorReset: resetting monitors after $1 minute(s)."; echo " " 29 | 30 | -------------------------------------------------------------------------------- /files/THU/BattleOfBritain/runDesktop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "This script turns on the stable windowed screen mode for Battle of Britain. For full screen," 4 | echo "two monitors are required so the splash screen doesn't block the main display." 5 | echo "To run full screen mode, ensure 2 monitors are plugged in and run the script ./runFullScreen.sh" 6 | 7 | # Set Wine prefix and change to game directory 8 | export WINEPREFIX="$PWD/WP" 9 | cd "$WINEPREFIX/drive_c/Program Files (x86)/Rowan Software/Battle Of Britain" 10 | 11 | # Update configuration file to enable full screen mode 12 | if [ -f "bdg.txt" ]; then 13 | # Use sed to replace the string 14 | sed -i 's/FORCE_WINDOWED_MODE=OFF/FORCE_WINDOWED_MODE=ON/g' bdg.txt 15 | echo "Full screen mode enabled." 16 | echo "Note: If the game is unstable in full screen, use ./runWindowed.sh to return to windowed mode" 17 | else 18 | echo "Error: config file bdg.txt not found." 19 | echo "Cannot enable full screen mode" 20 | fi 21 | -------------------------------------------------------------------------------- /files/THU/BattleOfBritain/runFullScreen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "This script enables full screen mode for Battle of Britain. For full screen," 4 | echo "two monitors are required so the splash screen doesn't block the main display." 5 | echo "If full screen mode is unstable, revert to windowed mode using ./runWindowed.sh" 6 | 7 | # Check for two monitors 8 | numMonitors=$(xrandr -q | grep connected | grep -v disconnected | wc -l) 9 | if [ "$numMonitors" -ne 2 ]; then 10 | echo "Two monitors are needed for full screen display" 11 | echo "If the game is unstable in full screen, use ./runWindowed.sh" 12 | echo "Exiting" 13 | exit 1 14 | fi 15 | 16 | # Set Wine prefix and change to game directory 17 | export WINEPREFIX="$PWD/WP" 18 | cd "$WINEPREFIX/drive_c/Program Files (x86)/Rowan Software/Battle Of Britain" 19 | 20 | # Update configuration file to enable full screen mode 21 | if [ -f "bdg.txt" ]; then 22 | # Use sed to replace the string 23 | sed -i 's/FORCE_WINDOWED_MODE=ON/FORCE_WINDOWED_MODE=OFF/g' bdg.txt 24 | echo "Full screen mode enabled." 25 | echo "Note: If the game is unstable in full screen, use ./runWindowed.sh to return to windowed mode" 26 | else 27 | echo "Error: config file bdg.txt not found." 28 | echo "Cannot enable full screen mode" 29 | fi 30 | -------------------------------------------------------------------------------- /files/THU/BattleOfBritain/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export WINEPREFIX="$PWD/WP" 3 | export WINEARCH=win32 4 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 5 | winecfg 2>/dev/null 1>/dev/null 6 | exit 0 7 | -------------------------------------------------------------------------------- /files/THU/BattleOfBritain/uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "" 4 | echo "If an installation is not working correctly," 5 | echo "it can be helpful to delete the installation" 6 | echo "and re-install." 7 | echo "Press Enter to uninstall or C to cancel." 8 | read replyString 9 | rm -rf WP 10 | mkdir WP 11 | -------------------------------------------------------------------------------- /files/THU/FS9/fs9.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Set Wine prefix 4 | export WINEPREFIX="$PWD/WP" 5 | export WINEARCH=win32 6 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 7 | 8 | 9 | # Check if Flight Simulator executable exists 10 | if [ -f "$WINEPREFIX/drive_c/Program Files/Microsoft Games/Flight Simulator 9/fs9.exe" ]; then 11 | clear 12 | 13 | # Run Flight Simulator 14 | wine "$WINEPREFIX/drive_c/Program Files/Microsoft Games/Flight Simulator 9/fs9.exe" 2>/dev/null 1>/dev/null 15 | exit 0 16 | fi 17 | 18 | # Define commonly used directory path 19 | export INSTALL_DIR="$WINEPREFIX/../INSTALL" 20 | 21 | # Move installation files 22 | mv "$WINEPREFIX/../../../tar/Microsoft-Flight-Simulator-2004-A-Century-of-Flight_Win_EN_OEM-version-Updated-to-91.zip" "$INSTALL_DIR" 2>/dev/null 1>/dev/null 23 | 24 | # Check if installation files exist 25 | if [ ! -f "$INSTALL_DIR/Microsoft-Flight-Simulator-2004-A-Century-of-Flight_Win_EN_OEM-version-Updated-to-91.zip" ]; then 26 | clear 27 | printf "Microsoft Flight Simulator 2004: A Century of Flight\ninstall files not found in the directory THU/FS9/INSTALL\n" 28 | echo "" 29 | echo "From this link:"; echo "" 30 | echo "https://www.myabandonware.com/game/microsoft-flight-simulator-2004-a-century-of-flight-g3u#download" 31 | echo "" 32 | echo "download the following file:" 33 | echo "Microsoft-Flight-Simulator-2004-A-Century-of-Flight_Win_EN_OEM-version-Updated-to-91.zip" 34 | echo "" 35 | echo "Place this file in the THU/FS9/INSTALL directory." 36 | echo "" 37 | echo "Then run this script again." 38 | echo "" 39 | exit 0 40 | fi 41 | 42 | # Check if setup executable exists 43 | if [ ! -f "$INSTALL_DIR/isoMnt/Setup.Exe" ]; then 44 | clear 45 | 46 | printf "In the Wine Configuration Dialog that follows:\n1. In the application tab, to the right of \"Windows Version\" select Windows XP.\n2. In the graphics tab, deselect 'Allow the window manager to decorate the windows'\n3. Select virtual Desktop and enter your monitor resolution.\n4.Then select OK.\n\nPress a key to continue.\n\n" 47 | read replyString 48 | 49 | winecfg 2>/dev/null 1>/dev/null 50 | 51 | echo "Microsoft Flight Simulator 2004 (Flight Simulator 9) zipped iso file found in THU/FS9/INSTALL" 52 | cd "$INSTALL_DIR" 53 | clear 54 | printf "\nunpacking iso ...\n" 55 | unzip "Microsoft-Flight-Simulator-2004-A-Century-of-Flight_Win_EN_OEM-version-Updated-to-91.zip" 2>/dev/null 1>/dev/null 56 | printf "To install Flight Simulator 9, run the following command in a terminal:\n\nsudo mount -o loop \"$INSTALL_DIR/Microsoft Flight Simulator 2004/FS_OEM.mdf\" \"$INSTALL_DIR/isoMnt\"\n\nThen run this script again.\n" 57 | exit 0 58 | fi 59 | 60 | # If setup executable exists, start installation 61 | if [ -f "$INSTALL_DIR/isoMnt/Setup.Exe" ]; then 62 | # Iso mounted, not installed 63 | cd "$INSTALL_DIR/isoMnt/" 64 | clear 65 | printf "Flight Simulator 9 installation instructions:\n\n1. If asked wither to install Mono, do not install it.\n2. Install. \n3. After installing, deselect fly.\nSelect Exit by clicking on the X at upper right.\n\nPress a key to begin installation.\n\n" 66 | 67 | 68 | read replyString 69 | wine "Setup.exe" 2>/dev/null 1>/dev/null 70 | 71 | printf "\n\nInstallation completed. Run this script again to start fs9. (Ignore missing font warnings). \n" 72 | exit 0 73 | fi 74 | 75 | -------------------------------------------------------------------------------- /files/THU/FS9/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export WINEPREFIX="$PWD/WP" 3 | export WINEARCH=win32 4 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 5 | 6 | winecfg 2>/dev/null 1>/dev/null 7 | exit 0 8 | -------------------------------------------------------------------------------- /files/THU/MigAlley/.delayedMonitorReset_helper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | while IFS= read -r line; do 3 | xrandr --output $line --auto 4 | done 5 | 6 | -------------------------------------------------------------------------------- /files/THU/MigAlley/INSTALL/lowres.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # sets all monitors to 1024x768 3 | 4 | if [ $# -ne 0 ]; then 5 | echo " "; echo "Incorrect input."; echo " " 6 | echo "This command takes no arguments. It sets all monitors to low (1024x768) resolution." 7 | echo " " 8 | exit 1 9 | fi 10 | 11 | xrandr -q | grep connected | grep -v disconnected | cut -d ' ' -f 1 | $WINEPREFIX/../INSTALL/lowresHelper.sh 12 | 13 | -------------------------------------------------------------------------------- /files/THU/MigAlley/INSTALL/lowresHelper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | while IFS= read -r line; do 3 | xrandr --output $line --mode 1024x768 4 | done 5 | 6 | -------------------------------------------------------------------------------- /files/THU/MigAlley/delayedMonitorReset.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # reset the monitors to max resolution after a specified delay 3 | # which must be an integer number of minutes 4 | # 5 | # this recovers from an error condition in 6 | # which one of the THU games locks the 7 | # displays 8 | # 9 | # if this happens, another thing to 10 | # try is pressing F1 11 | # which brings up the login screen in Ubuntu 12 | 13 | if [ $# -ne 1 ]; then 14 | echo " "; echo "Incorrect input."; echo " " 15 | echo "This shell script requires one argument, which must be an integer." 16 | echo "The argument is the number of minutes to wait before" 17 | echo "resetting the display monitor (or monitors) to max resolution." 18 | echo " " 19 | echo "Run this script if you anticipate that a sim may lock up the display(s)." 20 | echo " " 21 | exit 1 22 | fi 23 | 24 | delaySeconds=$(( $1*60)) 25 | #echo "multiplication of $1 and 60 yields $delaySeconds" 26 | sleep $delaySeconds 27 | xrandr -q | grep connected | grep -v disconnected | cut -d ' ' -f 1 | ./.delayedMonitorReset_helper.sh 28 | echo " "; echo "delayedMonitorReset: resetting monitors after $1 minute(s)."; echo " " 29 | 30 | -------------------------------------------------------------------------------- /files/THU/MigAlley/migAlley.sh: -------------------------------------------------------------------------------- 1 | # Checks if Mig Alley setup exists in the Wine prefix. If found, launches Mig Alley. 2 | # Checks the number of connected monitors and prompts the user if not 2. 3 | # Checks if winetricks is installed. If not, displays an error message and exits. 4 | # Checks if Mig Alley setup files exist. If not, provides instructions for mounting the iso and exits. 5 | # Guides the user through Wine configuration for installation. 6 | # Launches Mig Alley and performs post-installation tasks like copying necessary files. 7 | # Finally, launches Mig Alley. 8 | 9 | #!/bin/bash 10 | 11 | # Store commonly used directory paths in variables for readability 12 | export INSTALL_DIR="$PWD/INSTALL" 13 | export WINEPREFIX="$PWD/WP" 14 | export WINEARCH=win32 15 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 16 | 17 | 18 | export MA_ISO="$INSTALL_DIR/MA_iso" 19 | 20 | # Check if Mig Alley setup exists in the Wine prefix 21 | if [ -f "$WINEPREFIX/drive_c/rowan/mig/Mig.exe" ]; then 22 | # Launch Mig Alley 23 | cd "$WINEPREFIX/drive_c/rowan/mig" 24 | wine Mig.exe &>/dev/null 25 | exit 0 26 | fi 27 | 28 | # Check the number of connected monitors no longer needed, thanks to Mig Alley DLL files and wine improvements 29 | #numMonitors=$(xrandr -q | grep connected | grep -v disconnected | wc -l) 30 | #if [ "$numMonitors" -ne 2 ]; then 31 | # echo -e "\nTo avoid graphics glitches, a dual monitor setup is recommended for Mig Alley." 32 | # echo -e "\n$numMonitors monitors were detected." 33 | # echo -e "\nTo stop this script and set up dual monitors, press C." 34 | # echo -e "To continue with your current monitor setup, press Enter\n" 35 | # read -r replyString 36 | #fi 37 | 38 | # Check if winetricks is installed 39 | if [ ! -f "/usr/bin/winetricks" ]; then 40 | echo "\nERROR: winetricks not found. This program is needed to install a wine library " 41 | echo "during Mig Alley installation. If using Ubuntu 20.04 LTS install winetricks via:" 42 | echo "sudo apt install -y winetricks\n" 43 | exit 1 44 | fi 45 | 46 | # Check if Mig Alley setup files exist 47 | if [ ! -f "$MA_ISO/setup.EXE" ]; then 48 | clear 49 | echo "Before you can install Mig Alley, you must mount the Mig Alley iso." 50 | echo "\nMount the Mig Alley CD-ROM iso using this command:" 51 | echo "\nsudo mount -o loop $INSTALL_DIR/'Mig Alley V1.1.iso' $MA_ISO\n" 52 | echo "Then run this script again." 53 | exit 1 54 | fi 55 | 56 | # Provide instructions for Wine configuration 57 | clear 58 | echo "In the Wine configuration dialog box, which appears next, select the 'Graphics' tab." 59 | echo "Select Windows XP as the windows version." 60 | echo "In the Graphics tab, unselect 'Allow the window manager to decorate the windows'" 61 | echo "Then select OK to continue the installation.\n" 62 | echo "Press enter to display the Wine configuration dialog box." 63 | read -r replyString 64 | winecfg &>/dev/null 65 | winetricks vcrun6 &>/dev/null 66 | wine "$MA_ISO/setup.EXE" &>/dev/null 67 | clear 68 | echo "Select 'CANCEL' in the DirectX(R) Setup dialog box, then press ENTER to continue." 69 | read -r replyString 70 | clear 71 | echo "When Mig Alley starts, select PREFERENCES and set graphics resolution to the highest" 72 | echo "resolution listed, which is probably 1152x864." 73 | echo "Set all other graphics options to maximum values." 74 | 75 | # Launch Mig Alley and copy necessary files 76 | wine "$INSTALL_DIR/Mig-Alley_Patch_Win_EN_Patch-123/MIG123.EXE" &>/dev/null 77 | wine "$INSTALL_DIR/bdg_migalley_0.85f/BDG_MiGAlley_0.85F.exe" &>/dev/null 78 | cp "$INSTALL_DIR/bdg.txt" "$WINEPREFIX/drive_c/rowan/mig" 79 | cp -r "$MA_ISO/smacker" "$WINEPREFIX/drive_c/rowan/mig" 80 | cp "$INSTALL_DIR/roots.dir" "$WINEPREFIX/drive_c/rowan/mig" 81 | cp "$INSTALL_DIR/SaveGame/"*.* "$WINEPREFIX/drive_c/rowan/mig/SaveGame" 82 | cp "$INSTALL_DIR/Videos/"*.* "$WINEPREFIX/drive_c/rowan/mig/Videos" 83 | cp "$INSTALL_DIR/keys.xml" "$WINEPREFIX/drive_c/rowan/mig/KEYBOARD" 84 | 85 | rsync -a "$INSTALL_DIR/Mig Alley DLL/" "$WINEPREFIX/drive_c/rowan/mig/" 86 | rm "$WINEPREFIX/drive_c/rowan/mig/mfc42.dll" &>/dev/null 87 | cd "$WINEPREFIX/drive_c/rowan/mig" 88 | 89 | # Launch Mig Alley 90 | wine Mig.exe &>/dev/null 91 | 92 | 93 | -------------------------------------------------------------------------------- /files/THU/MigAlley/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | export WINEPREFIX="$PWD/WP" 5 | export WINEARCH=win32 6 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 7 | 8 | winecfg 2>/dev/null 1>/dev/null 9 | exit 0 10 | -------------------------------------------------------------------------------- /files/THU/MigAlley/uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "" 4 | echo "If an installation is not working correctly," 5 | echo "it can be helpful to delete the installation" 6 | echo "and re-install." 7 | echo "Press Enter to uninstall or C to cancel." 8 | read replyString 9 | rm -rf WP 10 | mkdir WP 11 | -------------------------------------------------------------------------------- /files/THU/SDOE/WWII_SDOE.sh: -------------------------------------------------------------------------------- 1 | export WINEPREFIX=$PWD/WP 2 | 3 | if [ -f "$WINEPREFIX/drive_c/Program Files/Fighter Squadron/Sdemons.exe" ] 4 | then 5 | cd "$WINEPREFIX//drive_c/Program Files/Fighter Squadron" 6 | wine Sdemons.exe 2>/dev/null 1>/dev/null 7 | exit 0 8 | fi 9 | 10 | printf "\n\nWWII Fighter Squadron not installed. Run "$WINEPREFIX"/../install_SDOE.sh first.\n." 11 | 12 | -------------------------------------------------------------------------------- /files/THU/SDOE/WWI_SDOE.sh: -------------------------------------------------------------------------------- 1 | export WINEPREFIX=$PWD/WP 2 | 3 | if [ -f "$WINEPREFIX/drive_c/Program Files/FS-WWI/Sdemons.exe" ] 4 | then 5 | cd "$WINEPREFIX/drive_c/Program Files/FS-WWI" 6 | wine Sdemons.exe 2>/dev/null 1>/dev/null 7 | exit 0 8 | fi 9 | 10 | printf "\n\nWWI Fighter Squadron not installed. Run "$WINEPREFIX"/../install_SDOE.sh first.\n." 11 | 12 | -------------------------------------------------------------------------------- /files/THU/SDOE/install_SDOE.sh: -------------------------------------------------------------------------------- 1 | # Script Outline: 2 | # 1. Check if SDOE is already installed. 3 | # 2. Move required files to INSTALL directory. 4 | # 3. Check if installation files exist. 5 | # 4. Provide instructions for Wine configuration and installation. 6 | # 5. Begin installation process. 7 | # 6. Script ends. 8 | 9 | #!/bin/bash 10 | 11 | # Set WINEPREFIX 12 | export WINEPREFIX="$PWD/WP" 13 | export WINEARCH=win32 14 | wine winecfg -v win98 2>/dev/null 1>/dev/null 15 | 16 | # Define variables for readability 17 | export INSTALL_DIR="$WINEPREFIX/../INSTALL" 18 | 19 | # Check if SDOE is already installed 20 | if [ -f "$WINEPREFIX/drive_c/Program Files/Fighter Squadron/Sdemons.exe" ] && \ 21 | [ -f "$WINEPREFIX/drive_c/Program Files/FS-WWI/Sdemons.exe" ]; then 22 | clear 23 | printf "SDOE already installed. Run ./WWI_SDOE.sh for the World War I aircraft or ./WWII_SDOE.sh for the World War II aircraft.\n\n SDOE is a Windows 98 flight simulator known for its flight and damage models.\n\n" 24 | exit 0 25 | elif [ -f "$WINEPREFIX/drive_c/Program Files/FS-WWI/Sdemons.exe" ]; then 26 | printf "SDOE WWII planes already installed. Run ./installSDOE.sh and install the WWI aircraft next.\n\n" 27 | exit 0 28 | fi 29 | 30 | # Move required files to INSTALL directory 31 | mv "$WINEPREFIX/../../../tar/Fighter_Squadron_SDOE_DVD.iso" "$INSTALL_DIR" 2>/dev/null 1>/dev/null 32 | mv "$WINEPREFIX/../../../tar/fspatch150.exe" "$INSTALL_DIR" 2>/dev/null 1>/dev/null 33 | 34 | # Check if installation files exist 35 | if [ ! -f "$INSTALL_DIR/Fighter_Squadron_SDOE_DVD.iso" ]; then 36 | clear 37 | printf "Fighter Squadron: Screaming Demons Over Europe (SDOE) install files not found in the directory $INSTALL_DIR.\n\n" 38 | printf "Download the files from: https://www.myabandonware.com/game/fighter-squadron-the-screamin-demons-over-europe-evp#download\n" 39 | printf "Place these files in the THU/FighterSquadron/INSTALL directory, then run this script again.\n\n" 40 | exit 0 41 | elif [ ! -f "$INSTALL_DIR/isoMnt/FILES/SDOEDVD.exe" ]; then 42 | clear 43 | printf "In the Wine Configuration Dialog that follows:\n1. In the application tab, select WINDOWS 98.\n2. In the graphics tab, deselect 'Allow the window manager to decorate the windows'.\n3. Select virtual Desktop with resolution of AT LEAST 1024x768, otherwise the install dialog box will not fit on the screen.\n4. Then select OK to continue the installation.\n\nPress a key to continue.\n\n" 44 | read -r replyString 45 | WINEARCH=win32 winecfg 2>/dev/null 1>/dev/null 46 | printf "\nTo install Fighter Squadron, run the following command in a terminal:\n\nsudo mount -o loop "$WINEPREFIX/../INSTALL/Fighter_Squadron_SDOE_DVD.iso" "$WINEPREFIX/../INSTALL/isoMnt"\n\nThen run this script again.\n" 47 | exit 0 48 | fi 49 | 50 | # Unpack files and begin installation 51 | if [ -f "$INSTALL_DIR/isoMnt/FILES/SDOEDVD.exe" ]; then 52 | cd "$INSTALL_DIR/isoMnt/FILES" 53 | clear 54 | printf "Fighter Squadron installation instructions:\n\n1. If asked whether to install Mono, do not install it.\n2. Install the WWII content.\n3. After installing, deselect fly. Select Exit.\n4. Repeat with the WWI content.\n\nPress a key to begin installation.\n\n" 55 | read -r replyString 56 | wine "SDOEDVD.exe" 2>/dev/null 1>/dev/null 57 | cd "$INSTALL_DIR" 58 | wine fspatch150.exe 2>/dev/null 1>/dev/null 59 | printf "\n\nInstallation completed. Run ./WWI_SDOE.sh or ./WWII_SDOE.sh\n" 60 | exit 0 61 | fi 62 | 63 | -------------------------------------------------------------------------------- /files/THU/SDOE/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export WINEPREFIX="$PWD/WP" 3 | export WINEARCH=win32 4 | wine winecfg -v win98 2>/dev/null 1>/dev/null 5 | 6 | winecfg 2>/dev/null 1>/dev/null 7 | exit 0 8 | -------------------------------------------------------------------------------- /files/THU/copyRecentFilesToAfterGameReport.sh: -------------------------------------------------------------------------------- 1 | # copy replay .cam files created in the last 2 hours to afterGameReport 2 | find ./MigAlley/WP/drive_c/rowan/mig/Videos -name "*.cam" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 3 | find "./BattleOfBritain/WP/drive_c/Program Files (x86)/Rowan Software/Battle Of Britain/VIDEOS" -name "*.cam" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 4 | # Mig Alley campaign 5 | find . -name "*.sav" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 6 | # Battle of Britain Luftwafee campaign 7 | find . -name "*.bsL" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 8 | # Battle of Britain RAF campaign 9 | find . -name "*.bsR" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 10 | -------------------------------------------------------------------------------- /files/THU/flightgear/basicFlightTraining.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the aircraft to the Cessna (which is the default when first starting flightgear) 4 | # set time to noon on June 1, 2020 at the user's location 5 | # start the web daemon to enable Cessna/Show Panel in Browser 6 | 7 | # fly a Cessna 172P using the open source flightgear program 8 | 9 | # Checks if FlightGear is installed by verifying the existence of the executable file. 10 | # Provides instructions for using FlightGear. 11 | # Launches FlightGear with specified parameters. 12 | 13 | # Store frequently used directory paths for better readability 14 | export flightgear_path="/usr/games/fgfs" 15 | 16 | # Check if FlightGear is installed 17 | if [ ! -f "$flightgear_path" ]; then 18 | echo "FlightGear open source flight simulator is not installed." 19 | echo "Run ../../optionalFlightgearInstall.sh for installation steps," 20 | echo "then run this script again." 21 | exit 1 22 | fi 23 | 24 | # Provide instructions for FlightGear 25 | echo " " 26 | echo "For landing help select View/Toggle Glide Slope Tunnel" 27 | echo " " 28 | echo "For help on this aircraft, see:" 29 | echo "Help/Aircraft Help" 30 | echo "Help/Aircraft Checklists" 31 | echo "Help/Tutorials" 32 | echo "Cessna C172P" 33 | echo " " 34 | echo "To fly at an airport of your choice select Location/Select Airport" 35 | echo "To automatically download scenery for that airport select" 36 | echo "File/Scenery Download/Enable automatic scenery download" 37 | echo " " 38 | echo "To fly at any latitude and longitude, Select Location/Position Aircraft In Air/Position" 39 | echo "For Latitude, negative means South" 40 | echo "For Longitude, negative means West" 41 | echo " " 42 | 43 | # Launch FlightGear 44 | fgfs --start-date-sys=2020:06:01:12:00:00 --httpd=8080 --aircraft=c172p 2>/dev/null 1>/dev/null 45 | 46 | -------------------------------------------------------------------------------- /files/THU/flightgear/installFlightgear.sh: -------------------------------------------------------------------------------- 1 | echo -e "To install the flightgear aircraft,use these commands\n(see introduction.txt):\nsudo apt install -y flightgear\nfgfs --launcher\n" 2 | 3 | echo "#select "Aircraft" on the left menu" 4 | 5 | echo "#select "Browse" at top center" 6 | 7 | echo "#Select "Add default hanger" at top right" 8 | 9 | echo "#(if flightgear crashes, simply restart it via "fgfs --launcher", then navigate back " 10 | echo "#to where you were by selecting Aircraft, then Browse, then Add Default Hanger)" 11 | 12 | echo "#You will now see a grid of more than 500 add-on aircraft. Using" 13 | echo "#the search box at top right, find and install the following" 14 | echo "#seven aircraft:" 15 | 16 | echo "# 1. Supermarine Spitfire MkVb" 17 | echo "# 2. Messerschmitt BF-109 G14" 18 | echo "# 3. North American Aviation P-51D-25-NA" 19 | echo "# 4. MiG-15bis" 20 | echo "# 5. F-86F Sabre" 21 | echo "# 6. General Dynamics F-16CJ Block 52" 22 | echo "# 7. Mikoyan-Gurevich MiG-21bis JSBSim" 23 | 24 | -------------------------------------------------------------------------------- /files/THU/flightgear/training_F86.sh: -------------------------------------------------------------------------------- 1 | # Script Outline: 2 | # 3 | # 1. Check if FlightGear is installed. 4 | # 2. Check if FlightGear add-on aircraft are installed. 5 | # 3. Set variables for readability. 6 | # 4. Set the aircraft to F-86F and set time to noon on June 1, 2020 at the user's location. 7 | # 5. Provide instructions and guidance for using the script. 8 | # 6. Start FlightGear with specified options. 9 | # 7. Display a message indicating the completion of the script with relevant information. 10 | 11 | #!/bin/bash 12 | 13 | # Learn cockpit instruments, practice takeoff and landing in a US F-86F Sabre 14 | 15 | # Check if FlightGear is installed 16 | if [ ! -f /usr/games/fgfs ]; then 17 | echo " " 18 | echo "The FlightGear open source flight simulator is not installed. To install," 19 | echo "run ../../optionalFlightgearInstall.sh and follow the instructions," 20 | echo "then run this script again." 21 | exit 1 22 | fi 23 | 24 | # Check if FlightGear add-on aircraft are installed 25 | export addon_aircraft_dir="$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" 26 | if [ ! -d "$addon_aircraft_dir" ]; then 27 | clear 28 | echo "It appears that the FlightGear add-on aircraft are not installed." 29 | printf "\nIf you have not installed the add-on aircraft yet,\n1. type CONTROL C\n2. follow the instructions in %s/flightgear/installFlightgear.sh\n3. run this script again.\n\nOtherwise, press any key to continue.\n\n" "$PWD" 30 | read -r replyString 31 | echo "Then run this script again." 32 | exit 1 33 | fi 34 | 35 | # Set variables for readability 36 | export flight_script="$PWD/training_F86_startInAir.sh" 37 | 38 | # Set the aircraft to F-86F and set time to noon on June 1, 2020 at the user's location 39 | echo " "; echo "For landing help select View/Toggle Glide Slope Tunnel"; echo " "; 40 | echo "Study the cockpit instruments and practice takeoff and landing." 41 | echo " "; echo "For help on this aircraft, see:" 42 | echo "Help/Aircraft Help" 43 | echo "Sabre"; echo " " 44 | 45 | # Start FlightGear with specified options 46 | fgfs --start-date-sys=2020:06:01:12:00:00 --aircraft=F-86F 2>/dev/null 1>/dev/null 47 | 48 | clear 49 | printf "F-86F optional script\n\nStart with the F-86F in the air:\n%s\n\n" "$flight_script" 50 | 51 | -------------------------------------------------------------------------------- /files/THU/flightgear/training_F86_startInAir.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # learn cockpit instruments, practice takeoff and landing in a US F-86F Sabre 4 | 5 | if [ ! -f /usr/games/fgfs ]; then 6 | echo " " 7 | echo "The flightgear open source flight simulator is not installed." 8 | echo "For installation instructions run ../../optionalFlightgearInstall.sh." 9 | echo "then run this script again." 10 | exit 1 11 | fi 12 | 13 | 14 | if [ ! -d "$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" ]; then 15 | clear 16 | echo "It appears that the flightgear add-on aircraft are not installed." 17 | printf "\nIf you did not install the add-on aircraft yet,\n1. type CONTROL C\n2. follow the instructions in "$PWD"/installFlightgear.sh\n3. run this script again.\n\notherwise, press a key to continue.\n\n" 18 | read replyString 19 | echo "then run this script again." 20 | exit 1 21 | fi 22 | 23 | 24 | 25 | # set the aircraft to F-86F 26 | # set time to noon on June 1, 2020 at the user's location 27 | 28 | echo " "; echo "For landing help select View/Toggle Glide Slope Tunnel"; echo " "; 29 | echo "study the cockpit instruments and practice take off and landing." 30 | 31 | fgfs --start-date-sys=2020:06:01:12:00:00 --aircraft=F-86F --fg-aircraft=$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.trunk/Aircraft --in-air --altitude=10000 --vc=200 --enable-freeze 2>/dev/null 1>/dev/null 32 | 33 | -------------------------------------------------------------------------------- /files/THU/flightgear/training_MiG15.sh: -------------------------------------------------------------------------------- 1 | # Script Outline: 2 | # 3 | # 1. Check if FlightGear is installed, exit if not. 4 | # 2. Check if FlightGear add-on aircraft are installed, exit if not. 5 | # 3. Set variables for FlightGear executable and add-on aircraft directory. 6 | # 4. Launch FlightGear with MiG 15 aircraft and set the time. 7 | # 5. Provide instructions for using FlightGear and practicing with the MiG 15. 8 | # 6. Provide information on where to find help for the MiG 15 aircraft. 9 | # 7. Run FlightGear in the background. 10 | 11 | #!/bin/bash 12 | 13 | # This script launches the FlightGear open source flight simulator with a Soviet MiG 15 aircraft for practice. 14 | 15 | # Check if FlightGear is installed 16 | if [ ! -f /usr/games/fgfs ]; then 17 | echo "The FlightGear open source flight simulator is not installed." 18 | echo "Run ../../optionalFlightgearInstall.sh for installation instructions, then run this script again." 19 | exit 1 20 | fi 21 | 22 | # Check if the flightgear add-on aircraft are installed 23 | if [ ! -d "$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" ]; then 24 | clear 25 | echo "It appears that the FlightGear add-on aircraft are not installed." 26 | printf "\nIf you did not install the add-on aircraft yet,\n1. type CONTROL C\n2. follow the instructions in "$PWD"/installFlightger.sh\n3. run this script again.\n\nOtherwise, press any key to continue.\n\n" 27 | read replyString 28 | echo "Then run this script again." 29 | exit 1 30 | fi 31 | 32 | # Set variables for improved readability 33 | export flightgear_exec="/usr/games/fgfs" 34 | export fgaddon_dir="$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" 35 | 36 | # Launch FlightGear with MiG 15 aircraft and set time to noon on June 1, 2020 at the user's location 37 | echo " " 38 | echo "For landing help select View/Toggle Glide Slope Tunnel" 39 | echo " " 40 | echo "Study the cockpit instruments and practice takeoff and landing." 41 | echo " " 42 | echo "For help on this aircraft, see:" 43 | echo "Help/Aircraft Help" 44 | echo "MiG-15bis" 45 | echo " " 46 | 47 | $flightgear_exec --start-date-sys=2020:06:01:12:00:00 --aircraft=MiG-15bis 2>/dev/null 1>/dev/null 48 | 49 | -------------------------------------------------------------------------------- /files/THU/flightgear/training_P-51D.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script launches the FlightGear flight simulator with a German ME 109G aircraft for learning cockpit instruments, 4 | # and practicing takeoff and landing. 5 | 6 | # Check if FlightGear is installed 7 | if [ ! -f /usr/games/fgfs ]; then 8 | echo " " 9 | echo "The FlightGear open-source flight simulator is not installed." 10 | echo "Run ../../optionalFlightgearInstall.sh for installation steps," 11 | echo "then run this script again." 12 | exit 1 13 | fi 14 | 15 | # Check if FlightGear add-on aircraft are installed 16 | export FG_AIRCRAFT_DIR="$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" 17 | if [ ! -d "$FG_AIRCRAFT_DIR" ]; then 18 | clear 19 | echo "It appears that the FlightGear add-on aircraft are not installed." 20 | printf "\nIf you did not install the add-on aircraft yet,\n1. type CONTROL C\n2. follow the instructions in "$PWD"/installFlightgear.sh\n3. run this script again.\n\notherwise, press a key to continue.\n\n" 21 | read replyString 22 | echo "then run this script again." 23 | exit 1 24 | fi 25 | 26 | # Launch FlightGear with p51d aircraft 27 | # Set time to noon on June 1, 2020 at the user's location 28 | echo " "; echo "For landing help select View/Toggle Glide Slope Tunnel"; echo " "; 29 | echo "Study the cockpit instruments and practice takeoff and landing." 30 | echo " "; echo "For help on this aircraft, see:" 31 | echo "Help/Aircraft Help" 32 | echo "Help/Tutorials" 33 | echo "p51d"; echo " " 34 | 35 | fgfs --start-date-sys=2020:06:01:12:00:00 --aircraft=p51d-jsbsim 2>/dev/null 1>/dev/null 36 | 37 | # Provide optional script instructions 38 | clear 39 | printf "p51d optional script\n\nStart with the p51d in the air:\n%s/training_p51d_startInAir.sh\n\n" "$PWD" 40 | 41 | 42 | -------------------------------------------------------------------------------- /files/THU/flightgear/training_me109.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script launches the FlightGear flight simulator with a German ME 109G aircraft for learning cockpit instruments, 4 | # and practicing takeoff and landing. 5 | 6 | # Check if FlightGear is installed 7 | if [ ! -f /usr/games/fgfs ]; then 8 | echo " " 9 | echo "The FlightGear open-source flight simulator is not installed." 10 | echo "Run ../../optionalFlightgearInstall.sh for installation steps," 11 | echo "then run this script again." 12 | exit 1 13 | fi 14 | 15 | # Check if FlightGear add-on aircraft are installed 16 | export FG_AIRCRAFT_DIR="$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" 17 | if [ ! -d "$FG_AIRCRAFT_DIR" ]; then 18 | clear 19 | echo "It appears that the FlightGear add-on aircraft are not installed." 20 | printf "\nIf you did not install the add-on aircraft yet,\n1. type CONTROL C\n2. follow the instructions in "$PWD"/installFlightgear.sh\n3. run this script again.\n\notherwise, press a key to continue.\n\n" 21 | read replyString 22 | echo "then run this script again." 23 | exit 1 24 | fi 25 | 26 | # Launch FlightGear with ME109G aircraft 27 | # Set time to noon on June 1, 2020 at the user's location 28 | echo " "; echo "For landing help select View/Toggle Glide Slope Tunnel"; echo " "; 29 | echo "Study the cockpit instruments and practice takeoff and landing." 30 | echo " "; echo "For help on this aircraft, see:" 31 | echo "Help/Aircraft Help" 32 | echo "Help/Tutorials" 33 | echo "Bf-109"; echo " " 34 | echo "Note that in Battle of Britain you will be flying an earlier version of" 35 | echo "this aircraft." 36 | 37 | fgfs --start-date-sys=2020:06:01:12:00:00 --aircraft=bf109g 2>/dev/null 1>/dev/null 38 | 39 | # Provide optional script instructions 40 | clear 41 | printf "me109 optional script\n\nStart with the me109 in the air:\n%s/training_me109_startInAir.sh\n\n" "$PWD" 42 | 43 | 44 | -------------------------------------------------------------------------------- /files/THU/flightgear/training_me109_startInAir.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # learn cockpit instruments, practice takeoff and landing in a German ME 109G 4 | 5 | if [ ! -f /usr/games/fgfs ]; then 6 | echo " " 7 | echo "The flightgear open source flight simulator is not installed." 8 | echo "Run ../../optionalFlightgearInstall.sh for installation steps," 9 | echo "then run this script again." 10 | exit 1 11 | fi 12 | 13 | 14 | if [ ! -d "$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" ]; then 15 | clear 16 | echo "It appears that the flightgear add-on aircraft are not installed." 17 | printf "\nIf you did not install the add-on aircraft yet,\n1. type CONTROL C\n2. follow the instructions in "$PWD"/installFlightgear.sh\n3. run this script again.\n\notherwise, press a key to continue.\n\n" 18 | read replyString 19 | echo "then run this script again." 20 | exit 1 21 | fi 22 | 23 | 24 | # set the aircraft to bf106g 25 | # set time to noon on June 1, 2020 at the user's location 26 | 27 | echo " "; echo "For landing help select View/Toggle Glide Slope Tunnel"; echo " "; 28 | echo "study the cockpit instruments and practice take off and landing." 29 | echo "Note that in Battle of Britain you will be flying an earlier version of" 30 | echo "this aircraft." 31 | echo " " 32 | echo "To unpause the simulation, press p" 33 | echo " " 34 | 35 | fgfs --start-date-sys=2020:06:01:12:00:00 --aircraft=bf109g --fg-aircraft=$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.trunk/Aircraft --in-air --altitude=10000 --vc=200 --enable-freeze 2>/dev/null 1>/dev/null 36 | 37 | -------------------------------------------------------------------------------- /files/THU/flightgear/training_p51d_startInAir.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # learn cockpit instruments, practice takeoff and landing in a German ME 109G 4 | 5 | if [ ! -f /usr/games/fgfs ]; then 6 | echo " " 7 | echo "The flightgear open source flight simulator is not installed." 8 | echo "Run ../../optionalFlightgearInstall.sh for installation steps," 9 | echo "then run this script again." 10 | exit 1 11 | fi 12 | 13 | 14 | if [ ! -d "$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" ]; then 15 | clear 16 | echo "It appears that the flightgear add-on aircraft are not installed." 17 | printf "\nIf you did not install the add-on aircraft yet,\n1. type CONTROL C\n2. follow the instructions in "$PWD"/installFlightgear.sh\n3. run this script again.\n\notherwise, press a key to continue.\n\n" 18 | read replyString 19 | echo "then run this script again." 20 | exit 1 21 | fi 22 | 23 | 24 | # set the aircraft to bf106g 25 | # set time to noon on June 1, 2020 at the user's location 26 | 27 | echo " "; echo "For landing help select View/Toggle Glide Slope Tunnel"; echo " "; 28 | echo "study the cockpit instruments and practice take off and landing." 29 | echo " " 30 | echo "To unpause the simulation, press p" 31 | echo " " 32 | 33 | fgfs --start-date-sys=2020:06:01:12:00:00 --aircraft=p51d-jsbsim --fg-aircraft=$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.trunk/Aircraft --in-air --altitude=10000 --vc=200 --enable-freeze 2>/dev/null 1>/dev/null 34 | 35 | -------------------------------------------------------------------------------- /files/THU/flightgear/training_spitfire.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Outline of the script: 4 | # 5 | # This script checks if FlightGear simulator and its add-on aircraft are installed. 6 | # If not installed, it provides instructions for installation and exits. 7 | # It then sets the aircraft to Spitfire and starts the FlightGear simulator for practice. 8 | # 9 | # Script dependencies: 10 | # - FlightGear simulator (fgfs) 11 | # - Add-on aircraft directory (org.flightgear.fgaddon.stable_2020) 12 | # 13 | # Steps: 14 | # 1. Check if FlightGear simulator is installed. 15 | # 2. Check if FlightGear add-on aircraft are installed. 16 | # 3. Set the aircraft to Spitfire and time to noon on June 1, 2020. 17 | # 4. Start the FlightGear simulator. 18 | 19 | # Define variables for readability 20 | export FGFS_EXEC="/usr/games/fgfs" 21 | export FGFS_AIRCRAFT_DIR="$HOME/.fgfs/Aircraft/org.flightgear.fgaddon.stable_2020" 22 | export INSTALL_SCRIPT="./installFlightgear.sh" 23 | 24 | # Check if FlightGear simulator is installed 25 | if [ ! -f "$FGFS_EXEC" ]; then 26 | echo " " 27 | echo "The FlightGear open source flight simulator is not installed." 28 | echo "Run $INSTALL_SCRIPT for installation steps," 29 | echo "then run this script again." 30 | exit 1 31 | fi 32 | 33 | # Check if FlightGear add-on aircraft are installed 34 | if [ ! -d "$FGFS_AIRCRAFT_DIR" ]; then 35 | clear 36 | echo "It appears that the FlightGear add-on aircraft are not installed." 37 | printf "\nIf you did not install the add-on aircraft yet,\n1. type CONTROL C\n2. follow the instructions in $PWD/$INSTALL_SCRIPT\n3. run this script again.\n\nOtherwise, press any key to continue.\n\n" 38 | read replyString 39 | echo "Then run this script again." 40 | exit 1 41 | fi 42 | 43 | # Set the aircraft to Spitfire and time to noon on June 1, 2020 at the user's location 44 | echo " " 45 | echo "For landing help select View/Toggle Glide Slope Tunnel" 46 | echo " " 47 | echo "Study the cockpit instruments and practice takeoff and landing." 48 | echo " " 49 | echo "For help on this aircraft, see:" 50 | echo "Help/Aircraft Help" 51 | echo "Help/Tutorials" 52 | echo "Spitfire" 53 | echo " " 54 | 55 | # Start FlightGear simulator 56 | fgfs --start-date-sys=2020:06:01:12:00:00 --aircraft=spitfireIIa 2>/dev/null 1>/dev/null 57 | 58 | -------------------------------------------------------------------------------- /files/THU/uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "" 4 | echo "If an installation is not working correctly," 5 | echo "it can be helpful to delete the installation" 6 | echo "and re-install." 7 | replyString=input("Press Enter to uninstall or C to cancel.") 8 | rm -rf WP 9 | mkdir WP 10 | -------------------------------------------------------------------------------- /files/TUE/.delayedMonitorReset_helper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | while IFS= read -r line; do 3 | xrandr --output $line --auto 4 | done 5 | 6 | -------------------------------------------------------------------------------- /files/TUE/GPLPatchLog.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sim-museum/esports-for-engineers/ad05854b7b539ba1e37bccaccca73b906864904f/files/TUE/GPLPatchLog.txt -------------------------------------------------------------------------------- /files/TUE/INSTALL/originalDriverIniFiles/randomizeDrivers.py: -------------------------------------------------------------------------------- 1 | """ 2 | 3 | By default, GPL puts you in a race with the first 5 drivers in the appropriate .ini file. You always 4 | race against these 5 drivers, who are the fastest. randomizeDrivers.py resorts the driver list, 5 | puting the best 5 drivers last, and randomizing the other 14, such that you race different 6 | opponents each time, and only face the top 5 drivers if you select to race against more than 14 computer 7 | opponents. 8 | 9 | Code overview: 10 | 11 | Command Line Argument Check: It checks whether a file name was provided as a command line argument when running the script. If no file name is provided, it prints a usage message and exits. 12 | 13 | File Existence Check: It checks if the provided file exists in the current directory. If the file does not exist, it prints a message indicating that the file was not found and exits. 14 | 15 | List Generation and Manipulation: 16 | It generates a list of numbers from 1 to 19. 17 | It reverses the order of the list. 18 | It separates the first 5 numbers from the rest of the list. 19 | It shuffles the rest of the list randomly. 20 | 21 | Command Construction: 22 | It constructs a command string to read the contents of the file specified in the command line argument and modify the driver names. 23 | It uses the sed command to replace occurrences of driver_X with driver_Y, where X is a sequential number and Y is an uppercase letter from 'A' to 'S'. 24 | 25 | Command Execution: It executes the constructed command using os.system() to display the modified contents of the file. 26 | """ 27 | import sys 28 | import random 29 | import os 30 | 31 | def main(): 32 | # Check that a file name was provided as a command line argument 33 | if len(sys.argv) < 2: 34 | print("Usage: python3 randomizeDrivers.py ") 35 | sys.exit(1) 36 | 37 | # Extract the file name from command line arguments 38 | fname = sys.argv[1] 39 | 40 | # Check if the file exists in the current directory 41 | if not os.path.isfile(fname): 42 | print(f"{fname}: file not found.") 43 | sys.exit(1) 44 | 45 | # Generate a list of numbers from 1 to 19 46 | myL = list(range(1, 20)) 47 | 48 | # Reverse the order of the list 49 | myL.reverse() 50 | 51 | # Take the first 5 numbers in reversed list; the top 5 drivers are assigned slots 15-19 52 | firstL = myL[:5] 53 | 54 | # Put the rest of the numbers in a different list 55 | restL = myL[5:] 56 | 57 | # Randomize the order of the remaining numbers 58 | random.shuffle(restL) 59 | 60 | # Put the randomized slower drivers first, and the top 5 drivers last 61 | resultL = firstL + restL 62 | 63 | # Construct the command to read the contents of the file and modify the driver names 64 | myCmd = f"cat {fname} " 65 | 66 | # Define a string containing uppercase letters 67 | myString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 68 | 69 | # Iterate over the result list to modify driver names using sed command 70 | for i in range(1, len(resultL) + 1): 71 | myCmd += f"| sed 's/driver_{i} /driver_{myString[resultL[i - 1] - 1]} /' " 72 | 73 | # Iterate over the result list again to reverse the modification 74 | for i in range(1, len(resultL) + 1): 75 | myCmd += f"| sed 's/driver_{myString[i - 1]} /driver_{i} /' " 76 | 77 | # Execute the constructed command to display the modified contents of the file 78 | os.system(myCmd) 79 | 80 | if __name__ == "__main__": 81 | main() 82 | 83 | -------------------------------------------------------------------------------- /files/TUE/INSTALL/tmdrv-master/tmdrv.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # Copyright 2016, 2017 Andrew Conrad 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | 18 | """Tool to initialize Thrustmaster racing wheels.""" 19 | 20 | import argparse 21 | import time 22 | import tmdrv_devices 23 | import usb1 24 | from importlib import import_module 25 | from os import path 26 | from subprocess import check_call, CalledProcessError 27 | 28 | device_list = ['thrustmaster_t500rs', 'thrustmaster_tmx', 'thrustmaster_tx', 'thrustmaster_tsxw'] 29 | _context = usb1.USBContext() 30 | 31 | def initialize(device_name='thrustmaster_tx'): 32 | try: 33 | device = import_module('tmdrv_devices.' + device_name) 34 | except ModuleNotFoundError: 35 | print('Device name "' + device_name + '" is invalid.') 36 | raise 37 | 38 | try: 39 | device 40 | except UnboundLocalError: 41 | print('Device name "' + device_name + '" is invalid.') 42 | raise 43 | 44 | # Send all control packets for initialization 45 | for m in device.control: 46 | try: 47 | _control_init( 48 | device.idVendor, device.idProduct[m['step'] - 1], 49 | m['request_type'], 50 | m['request'], 51 | m['value'], 52 | m['index'], 53 | m['data'], 54 | ) 55 | except usb1.USBErrorNotFound: 56 | print('Error getting handle for device {:0=4x}:{:0=4x} ({} Step {}).'.format(device.idVendor, device.idProduct[m['step']-1], device.name, m['step'])) 57 | raise 58 | except usb1.USBErrorNoDevice: 59 | # Caught when device switches modes 60 | pass 61 | except usb1.USBErrorPipe: 62 | # Possibly caught when device switches modes on older libusb 63 | pass 64 | except usb1.USBErrorIO: 65 | # Possibly caught when device switches modes on newer 66 | # libusb. This still has to be investigated, there might 67 | # be another issue going on here. 68 | pass 69 | 70 | # Wait for device to switch 71 | connected = False 72 | while not connected: 73 | handle = _context.openByVendorIDAndProductID( 74 | device.idVendor, device.idProduct[m['step']], 75 | ) 76 | if handle is not None: 77 | connected = True 78 | 79 | # Load configuration to remove deadzones 80 | if device.jscal is not None: 81 | dev_path = '/dev/input/by-id/' + device.dev_by_id 82 | # Sometimes the device symlink is not ready in time, so we wait 83 | n = 9 84 | while not path.islink(dev_path): 85 | if n > 0: 86 | time.sleep(.5) 87 | n -= 1 88 | else: 89 | print('Device "{}" not found, skipping device calibration'.format(dev_path)) 90 | raise FileNotFoundError 91 | _jscal(device.jscal, dev_path) 92 | 93 | def _jscal(configuration, device_file): 94 | try: 95 | check_call(['jscal', '-s', configuration, device_file]) 96 | except FileNotFoundError: 97 | print('jscal not found, skipping device calibration.') 98 | except CalledProcessError as err: 99 | print('jscal non-zero exit code {}, device may not be calibrated'.format(str(err)[-1])) 100 | 101 | def _control_init(idVendor, idProduct, request_type, request, value, index, data): 102 | handle = _context.openByVendorIDAndProductID( 103 | idVendor, idProduct, 104 | ) 105 | if handle is None: 106 | raise usb1.USBErrorNotFound('Device not found or wrong permissions') 107 | handle.setAutoDetachKernelDriver(True) 108 | handle.claimInterface(0) 109 | 110 | # Send control packet that will switch modes 111 | handle.controlWrite( 112 | request_type, 113 | request, 114 | value, 115 | index, 116 | data, 117 | ) 118 | 119 | if __name__ == '__main__': 120 | parser = argparse.ArgumentParser(description=__doc__) 121 | parser.add_argument('-d', '--device', default='thrustmaster_tx', 122 | help='Specify device to use') 123 | parser.add_argument('-D', '--supported-devices', action='store_true', 124 | help='List all supported devices') 125 | args = parser.parse_args() 126 | 127 | if args.supported_devices: 128 | for d in device_list: 129 | print(d) 130 | else: 131 | initialize(args.device) 132 | -------------------------------------------------------------------------------- /files/TUE/INSTALL/tmdrv-master/tmdrv_devices/thrustmaster_t500rs.py: -------------------------------------------------------------------------------- 1 | name = 'Thrustmaster T500RS' 2 | idVendor = 0x044f 3 | idProduct = [0xb65d, 0xb65e] 4 | control = [ 5 | {'step':1, 'request_type':0x41, 'request':83, 'value':0x0002, 'index':0x0000, 'data':b''}, 6 | ] 7 | jscal = '6,1,0,16439,16439,32879,32879,1,0,511,511,1054724,1052655,1,0,512,512,1052655,1052655,1,0,510,510,1052655,1050595,1,0,0,0,536854528,536854528,1,0,0,0,536854528,536854528' 8 | dev_by_id = 'usb-Thrustmaster_TRS_Racing_wheel-joystick' 9 | -------------------------------------------------------------------------------- /files/TUE/INSTALL/tmdrv-master/tmdrv_devices/thrustmaster_tmx.py: -------------------------------------------------------------------------------- 1 | name = 'Thrustmaster TMX' 2 | idVendor = 0x044f 3 | idProduct = [0xb67e, 0xb65d, 0xb67f] 4 | control = [ 5 | {'step':1, 'request_type':0x41, 'request':83, 'value':0x0001, 'index':0x0000, 'data':b''}, 6 | {'step':2, 'request_type':0x41, 'request':83, 'value':0x0007, 'index':0x0000, 'data':b''}, 7 | ] 8 | jscal = '6,1,0,32505,32505,16574,2049063,1,0,519,519,1036399,1067305,1,0,512,512,1050596,1054724,1,0,511,511,1050596,1048544,1,0,0,0,536854528,536854528,1,0,0,0,536854528,536854528' 9 | dev_by_id = 'usb-Thrustmaster_Thrustmaster_TMX_Racing_Wheel-joystick' 10 | -------------------------------------------------------------------------------- /files/TUE/INSTALL/tmdrv-master/tmdrv_devices/thrustmaster_tsxw.py: -------------------------------------------------------------------------------- 1 | name = 'Thrustmaster TS XW' 2 | idVendor = 0x044f 3 | idProduct = [0xb691, 0xb692] 4 | control = [ 5 | {'step':1, 'request_type':0x41, 'request':83, 'value':0x000a, 'index':0x0000, 'data':b''}, 6 | ] 7 | jscal = '6,1,0,32448,32448,16384,16384,1,0,511,511,1054724,1052655,1,0,511,511,1052655,1052655,1,0,511,511,1052655,1050595,1,0,0,0,536854528,536854528,1,0,0,0,536854528,536854528' 8 | dev_by_id = 'usb-Thrustmaster_Thrustmaster_TS-XW_Racer-joystick' 9 | -------------------------------------------------------------------------------- /files/TUE/INSTALL/tmdrv-master/tmdrv_devices/thrustmaster_tx.py: -------------------------------------------------------------------------------- 1 | name = 'Thrustmaster TX' 2 | idVendor = 0x044f 3 | idProduct = [0xb664, 0xb65d, 0xb669] 4 | control = [ 5 | {'step':1, 'request_type':0x41, 'request':83, 'value':0x0001, 'index':0x0000, 'data':b''}, 6 | {'step':2, 'request_type':0x41, 'request':83, 'value':0x0004, 'index':0x0000, 'data':b''}, 7 | ] 8 | jscal = '6,1,255,32767,32767,21844,21844,1,3,511,511,1394469,1394469,1,3,511,511,1394469,1394469,1,3,511,511,1394469,1394469,1,0,0,0,536870912,536870912,1,0,0,0,536870912,536870912' 9 | dev_by_id = 'usb-Thrustmaster_Thrustmaster_TX_Racing_Wheel-joystick' 10 | -------------------------------------------------------------------------------- /files/TUE/NR2003/additionalCarsAndTracks.sh: -------------------------------------------------------------------------------- 1 | # Script Outline: 2 | # 3 | # 1. Set Wine prefix 4 | # 2. Check if NR2003 is installed 5 | # 3. Move required files to INSTALL directory 6 | # 4. Inform user about optional downloads 7 | # 5. Extract additional cars and tracks 8 | # 6. Copy tracks to NR2003 directory 9 | # 7. Add Grand National 1963 cars 10 | # 8. Install optional components if available 11 | 12 | 13 | #!/bin/bash 14 | 15 | # Set Wine prefix 16 | export WINEPREFIX="$PWD/WP" 17 | 18 | # Check if NR2003 is installed 19 | if [ ! -d "$WINEPREFIX/drive_c/Papyrus/NASCAR Racing 2003 Season" ]; then 20 | clear 21 | printf "NR2003 not installed. Run:\n\n./NR2003.sh\n\nfirst to install it.\n\nThen run this script again if you want to install optional\n1960's cars and tracks.\n" 22 | exit 0 23 | fi 24 | 25 | # Move required files to INSTALL directory 26 | clear 27 | mv "$WINEPREFIX/../../../tar/n2003_nurburgring_1970_v1.0.exe" "$WINEPREFIX/../INSTALL" 2>/dev/null 1>/dev/null 28 | mv "$WINEPREFIX/../../../tar/AD67_v1.0.exe" "$WINEPREFIX/../INSTALL" 2>/dev/null 1>/dev/null 29 | 30 | # Inform user about optional downloads 31 | echo "Adding 1960's cars and tracks to NR2003." 32 | printf "\n\nOptional: Download the 1970 Nurburgring at this link\n\nhttps://www.theuspits.com/files/n2003/tracks/n2003_nurburgring_1970_v1.0.exe\n\nand place it in the NR2003/INSTALL directory.\nDownload the 67 sports cars mod at this link:\n\nhttps://www.theuspits.com/files/n2003/mods/AD67_v1.0.exe\n\nand also add it to the NR2003/INSTALL directory.\nPress CONTROL C now, add the Nurburgring and sports cars,\nand run this script again to include them in the car/track upgrade\n\nPress CONTROL C, or any other key to continue.\n\n" 33 | read replyString 34 | 35 | # Extract additional cars and tracks 36 | cd "$WINEPREFIX/../INSTALL" 37 | tar xzf NR2003_additionalCarsAndTracks.tar.gz 2>/dev/null 1>/dev/null 38 | cd NR2003_additionalCarsAndTracks 39 | 40 | # Copy tracks to NR2003 directory 41 | printf "\nTracks:\nBrands Hatch\nBridgehamption\nDundrod\nMonaco\nRouen\nWatkins Glen 1964\nZandervoort\n" 42 | rsync -a tracks/ "$WINEPREFIX/drive_c/Papyrus/NASCAR Racing 2003 Season/tracks/" 2>/dev/null 1>/dev/null 43 | 44 | # Add Grand National 1963 cars 45 | printf "\nAdding Grand National 1963 cars\n" 46 | cp -r gn63 "$WINEPREFIX/drive_c/Papyrus/NASCAR Racing 2003 Season/series/" 47 | 48 | # Install optional components if available 49 | cd "$WINEPREFIX/../INSTALL" 50 | if [ -f n2003_nurburgring_1970_v1.0.exe ]; then 51 | echo "Adding Nurburgring track" 52 | wine n2003_nurburgring_1970_v1.0.exe 2>/dev/null 1>/dev/null 53 | fi 54 | if [ -f AD67_v1.0.exe ]; then 55 | printf "Adding 1967 sports cars\n" 56 | wine AD67_v1.0.exe 2>/dev/null 1>/dev/null 57 | fi 58 | 59 | -------------------------------------------------------------------------------- /files/TUE/NR2003/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export WINEPREFIX="$PWD/WP" 4 | export WINEARCH=win32 5 | wine winecfg -v winxp # 2>/dev/null 1>/dev/null 6 | winecfg 2>/dev/null 1>/dev/null 7 | exit 0 8 | -------------------------------------------------------------------------------- /files/TUE/NR2003/trackEditor.sh: -------------------------------------------------------------------------------- 1 | $PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 2 | if [ $? -ne 0 ]; then 3 | exit 1 4 | fi 5 | 6 | export WINEPREFIX=$PWD/WP 7 | 8 | if [ ! -d "$WINEPREFIX/drive_c/Papyrus/NASCAR Racing 2003 Season" ] 9 | then 10 | clear 11 | echo -e "Run ./NR2003.sh first, then run this script again.\n\n" 12 | exit 0 13 | fi 14 | 15 | if [ ! -f /usr/bin/winetricks ] 16 | then 17 | clear 18 | echo -e "Install winetricks via\\nsudo install -y winetricks\n\nThen run this script again.\n\n" 19 | exit 0 20 | fi 21 | 22 | #install needed Visual Basic 6 runtime 23 | winetricks vb6run 2>/dev/null 1>/dev/null 24 | 25 | wine "$WINEPREFIX/../INSTALL/editorForNR2003/NR2003 Editor.exe" 2>/dev/null 1>/dev/null 26 | 27 | -------------------------------------------------------------------------------- /files/TUE/backup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ $# -ne 2 ]; then 3 | echo "Usage: $0 source_dir comment" 1>&2 4 | exit 1 5 | fi 6 | 7 | newname=$1.$2_`date +%Y-%m-%d.%H%M.bak`; 8 | mv $1 $newname; 9 | echo "Backing up $1 to $newname ..."; 10 | cp -pr $newname $1; 11 | echo "Done." 12 | 13 | -------------------------------------------------------------------------------- /files/TUE/copyRecentFilesToAfterGameReport.sh: -------------------------------------------------------------------------------- 1 | # copies .rpy replay and .txt setup files files created in the last 2 hours to afterGameReport 2 | # note: any setups exported from the setup manager, and any screenshots in ~/Pictures 3 | # must be manually copied to the afterGameReport directory. 4 | find ./WP/drive_c/Sierra/GPL/replay -name "*.rpy" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 5 | find "./WP/drive_c/GPLSecrets/GPL Setup Manager" -name "*.txt" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 6 | exit 0 7 | 8 | -------------------------------------------------------------------------------- /files/TUE/delayedMonitorReset.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # reset the monitors to max resolution after a specified delay 3 | # which must be an integer number of minutes 4 | # 5 | # this recovers from an error condition in 6 | # which one of the THU games locks the 7 | # displays 8 | # 9 | # if this happens, another thing to 10 | # try is pressing F1 11 | # which brings up the login screen in Ubuntu 12 | 13 | if [ $# -ne 1 ]; then 14 | echo " "; echo "Incorrect input."; echo " " 15 | echo "This shell script requires one argument, which must be an integer." 16 | echo "The argument is the number of minutes to wait before" 17 | echo "resetting the display monitor (or monitors) to max resolution." 18 | echo " " 19 | echo "Run this script if you anticipate that a sim may lock up the display(s)." 20 | echo " " 21 | exit 1 22 | fi 23 | 24 | delaySeconds=$(( $1*60)) 25 | #echo "multiplication of $1 and 60 yields $delaySeconds" 26 | sleep $delaySeconds 27 | xrandr -q | grep connected | grep -v disconnected | cut -d ' ' -f 1 | ./.delayedMonitorReset_helper.sh 28 | echo " "; echo "delayedMonitorReset: resetting monitors after $1 minute(s)."; echo " " 29 | 30 | -------------------------------------------------------------------------------- /files/TUE/editRaceLineup.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | # this linux script file is from https://github.com/sim-museum/esports-for-engineers 3 | # this script requires wine. On Ubuntu 20.04 or 20.10, install wine via: 4 | # sudo apt install -y wine 5 | # 6 | # 21 Mar 2021 7 | 8 | $PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 9 | if [ $? -ne 0 ]; then 10 | exit 1 11 | fi 12 | 13 | export WINEPREFIX=$PWD/WP 14 | 15 | 16 | clear; echo "Edit completed practice results to, e.g., change your position" 17 | echo "on the starting grid, change types of cars, change the number" 18 | echo "of laps in the race, etc." 19 | echo "" 20 | echo "Note: this editor works only for 67, 67x and 65 carsets."; echo "" 21 | echo "The saved practice sessions available to edit are:"; echo "" 22 | cd $WINEPREFIX 23 | numSavedSessions=$(eval "find . -print | grep svg$ | wc -l") 24 | if [ $numSavedSessions -eq 0 ]; then 25 | echo "No saved practice sessions found. Before you" 26 | echo "can edit a race starting grid, you must have" 27 | echo "at least one saved practice session using" 28 | echo "either the 67, 67x or 65 carset. Save " 29 | echo "such a practice session and then run this " 30 | echo "script again." 31 | exit 1 32 | fi 33 | echo "Saved practice sessions:" 34 | echo "---------------------------------------------------" 35 | find . -print | grep "svg$" 36 | echo "---------------------------------------------------" 37 | echo "" 38 | echo "Press Enter to run the practice session editor" 39 | read userReply 40 | cd $WINEPREFIX/drive_c/SVG_EDIT 41 | wine SVG-Editor.exe 2>/dev/null 1>/dev/null 42 | exit 0 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /files/TUE/gammaControl.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | $PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 4 | if [ $? -ne 0 ]; then 5 | exit 1 6 | fi 7 | 8 | export WINEPREFIX="$PWD/WP" 9 | if [ ! -d "$WINEPREFIX/drive_c/Program Files (x86)/DesktopNerds/Gamma Control" ] 10 | then 11 | echo ""; echo "Installing Gamma Control. Select add to desktop so you can" 12 | echo "Click to run it, then click to run rFactor from the desktop."; echo "" 13 | wine "$WINEPREFIX/../INSTALL/GammaControlv4setup.exe" 2>/dev/null 1>/dev/null 14 | fi 15 | 16 | wine "$WINEPREFIX/drive_c/Program Files (x86)/DesktopNerds/Gamma Control/GammaControlv4setup.exe" 17 | 18 | exit 0 19 | 20 | -------------------------------------------------------------------------------- /files/TUE/getSetupPrintouts.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | $PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 4 | if [ $? -ne 0 ]; then 5 | exit 1 6 | fi 7 | 8 | 9 | export WINEPREFIX="$PWD/WP" 10 | 11 | #copy briefing file to SAT directory 12 | 13 | echo " " 14 | echo "copying setups output from Setup Manager via File/export text file to TUE directory" 15 | echo "" 16 | cp $WINEPREFIX/drive_c/GPLSecrets/GPL\ Setup\ Manager/*.txt . 17 | echo " " 18 | 19 | -------------------------------------------------------------------------------- /files/TUE/match_AI_to_frame_rate/gpl_ai_60fpsaiv1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # run this script to patch the AI if the "60fpsaiv1" 60 frames per second (fps) option is chosen on the lower right window in GEM+ 4 | export WINEPREFIX="$PWD/../WP" 5 | cp "$WINEPREFIX/drive_c/Sierra/GPL/gpl_ai_60fps.ini" "$WINEPREFIX/drive_c/Sierra/GPL/gpl_ai.ini" 6 | 7 | -------------------------------------------------------------------------------- /files/TUE/match_AI_to_frame_rate/gpl_ai_60fpsv2newmod.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # run this script to patch the AI if the "60fpsv2newmod" 60 frames per second (fps) option is chosen on the lower right window in GEM+ 4 | export WINEPREFIX="$PWD/../WP" 5 | cp "$WINEPREFIX/drive_c/Sierra/GPL/gpl_ai_60fps_v2newmod.ini" "$WINEPREFIX/drive_c/Sierra/GPL/gpl_ai.ini" 6 | 7 | -------------------------------------------------------------------------------- /files/TUE/match_AI_to_frame_rate/gpl_ai_default.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # run this script to adjust the AI back to its 36 fps default behavior 4 | # you need to do this when switching from 60 fps to back to the defaul 36 fps frame rate 5 | 6 | export WINEPREFIX="$PWD/../WP" 7 | cp "$WINEPREFIX/drive_c/Sierra/GPL/bak/gpl_ai.ini" "$WINEPREFIX/drive_c/Sierra/GPL" 8 | 9 | -------------------------------------------------------------------------------- /files/TUE/rFactor/addTelemetryLoggerToRfactor.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #$PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 4 | #if [ $? -ne 0 ]; then 5 | # exit 1 6 | #fi 7 | 8 | export WINEPREFIX="$PWD/WP" 9 | if [ ! -d "$WINEPREFIX/drive_c/Program Files (x86)/rFactor/Plugins/rFactor Data Acquisition Plugin" ] 10 | then 11 | echo ""; echo "Installing telemetry logger. During installation, deselect check for updates." 12 | echo "Otherwise, accept defaults." 13 | echo "To start logging time series telemetry data to a csv file," 14 | echo "type m when in the rFactor 3D view." 15 | echo "Each time you cross the start/finish line, type m twice to create a new csv file for each lap." 16 | echo "To view telemetry data, exit rFactor and examine the csv files in the directory" 17 | echo "$WINEPREFIX/drive_c/Program Files (x86)/rFactor/UserData/LOG/MoTeC" 18 | echo "" 19 | wine "$WINEPREFIX/../INSTALL/rFactorDAQPluginSetup_1.3.2.exe" 2>/dev/null 1>/dev/null 20 | # switch log file format to .csv (the default is MoTec) 21 | cp "$WINEPREFIX/../INSTALL/DataAcquisitionPlugin.ini" "$WINEPREFIX/drive_c/Program Files (x86)/rFactor" 22 | else 23 | echo " "; echo "The rFactor telemetry logger is already installed."; echo "" 24 | fi 25 | exit 0 26 | 27 | -------------------------------------------------------------------------------- /files/TUE/rFactor/graphicsConfig_rFactor.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #$PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 4 | #if [ $? -ne 0 ]; then 5 | # exit 1 6 | #fi 7 | 8 | export WINEPREFIX="$PWD/WP" 9 | if [ ! -d "$WINEPREFIX/drive_c/Program Files (x86)/rFactor" ] 10 | then 11 | echo ""; echo "rFactor not installed. Run rFactor.sh first, then run" 12 | echo "this script again." 13 | fi 14 | 15 | cd "$WINEPREFIX/drive_c/Program Files (x86)/rFactor" 16 | 17 | wine "rF Config.exe" 18 | 19 | exit 0 20 | 21 | -------------------------------------------------------------------------------- /files/TUE/rFactor/offlineAIimprovement_rFactor.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | export WINEPREFIX=$PWD/WP 4 | if [ ! -d $WINEPREFIX/../INSTALL ] 5 | then 6 | clear 7 | echo "$WINEPREFIX/../INSTALL not found. Download the directory before proceeding."; echo "" 8 | echo "See the file 'additionalGames.txt' for information about where to download the" 9 | echo "INSTALL add-on package. Unpack this file into the INSTALL directory." 10 | echo "Then run this script again." 11 | exit 0 12 | fi 13 | 14 | if [ ! -f "$WINEPREFIX/drive_c/Program Files (x86)/rFactor/rFactor.exe" ] 15 | then # open installation if clause 16 | clear 17 | echo "Run rFactor.sh to install rFactor, then run this script again." 18 | exit 0 19 | fi 20 | 21 | clear 22 | echo "Installing JR's rFactor AI improvement plugin v. 1.21" 23 | echo "This prevents the AI from forcing you off the road or crashing into your car as if you weren't there." 24 | echo "For best results, let the AI practice on a track for the complete practice session before racing." 25 | echo "Set AI at 100% strength, 0% aggressiveness." 26 | echo "This plugin is for offline racing against the AI only. If racing online, remove this plugin via"; echo "" 27 | echo "rm -rf $WINEPREFIX/drive_c/Program Files (x86)/rFactor/Plugins/rFJRPlugin" 28 | echo "rm $WINEPREFIX/drive_c/Program Files (x86)/rFactor/Plugins/rFJRPlugin.dll"; echo "" 29 | echo "After plugin installation, it may be harder to select buttons in rFactor. Select near the top of the button." 30 | echo "Make sure rFactor is set to run in a window via graphicsConfig_rFactor.sh" 31 | echo "" 32 | 33 | echo "Installing java runtime environment ..." 34 | wine $WINEPREFIX/../INSTALL/jre-8u291-windows-i586.exe /s 2>/dev/null 1>/dev/null 35 | echo "Installing AI improvement plugin v. 1.21" 36 | rsync -a "$WINEPREFIX/../INSTALL/Plugins/" "$WINEPREFIX/drive_c/Program Files (x86)/rFactor/Plugins/" 37 | echo "" 38 | -------------------------------------------------------------------------------- /files/TUE/rFactor/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export WINEPREFIX="$PWD/WP" 4 | export WINEARCH=win32 5 | wine winecfg -v winxp # 2>/dev/null 1>/dev/null 6 | winecfg 2>/dev/null 1>/dev/null 7 | exit 0 8 | -------------------------------------------------------------------------------- /files/TUE/randomizeDrivers.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # randomize drivers such that you're racing against different drivers each race 3 | # (assuming you choose 10 or fewer computer opponents) 4 | 5 | # if you race against all the computer opponents, of course you'll be 6 | # racing against the same opponents every time 7 | 8 | # the fastest 5 drivers are last in the list, so if you choose 14 or fewer 9 | # computer drivers you will never race against the fastest ones. 10 | 11 | export WINEPREFIX=$PWD/WP 12 | 13 | cd $WINEPREFIX/drive_c/Sierra/GPL/originalDriverIniFiles 14 | 15 | python3 randomizeDrivers.py driv55.ini > ../driv55.ini 16 | python3 randomizeDrivers.py driv65.ini > ../driv65.ini 17 | python3 randomizeDrivers.py driv66.ini > ../driv66.ini 18 | python3 randomizeDrivers.py drivSC.ini > ../drivSC.ini 19 | python3 randomizeDrivers.py drvc67.ini > ../drvc67.ini 20 | python3 randomizeDrivers.py drvc69.ini > ../drvc69.ini 21 | python3 randomizeDrivers.py drvc67.ini > ../drvc67.ini 22 | python3 randomizeDrivers.py drivF2.ini > ../drivF2.ini 23 | -------------------------------------------------------------------------------- /files/TUE/replay.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Set the Wine prefix to the current directory's 'WP' folder 4 | export WINEPREFIX="$PWD/WP" 5 | 6 | # Check if the Sierra directory exists in the Wine prefix 7 | if [ -d "$WINEPREFIX/drive_c/Sierra" ]; then 8 | # Navigate to the GPL Replay Analyser directory and run the executable 9 | cd "$WINEPREFIX/drive_c/Program Files/GPL Replay Analyser" || exit 1 10 | wine GPLReplayAnalyser.exe 2>/dev/null 1>/dev/null 11 | exit 0 12 | else 13 | # Display a message if GPL Replay Analyzer is not installed 14 | echo "" 15 | echo "GPL Replay Analyzer not installed." 16 | echo "To install it, from launcher.py choose TUE, then Historical Grand Prix Sim Racing" 17 | echo "Or cd to the TUE directory and run the script ./gpl.sh" 18 | echo "" 19 | exit 0 20 | fi 21 | 22 | # End of script 23 | 24 | -------------------------------------------------------------------------------- /files/TUE/runThisIfGPLTextUnreadable.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # if some of the text on the GPL screens is fuzzy and impossible 3 | # to read, your graphics drivers are probably not optimized. 4 | # at a command prompt, type 5 | # lsmod | grep nouveau 6 | # if this command returns output, you are using a slow, generic 7 | # graphics driver that may be causing the problem 8 | # load proprietary 3rd party drivers appropriate for your graphics 9 | # card. 10 | # if you have an nvidia card, typing 11 | # lsmod | grep nvidia 12 | # at the terminal prompt should produce output 13 | # if not, install the nvidia drivers for your card 14 | # 15 | # If that didn't work, run this script. It will 16 | # probably fix the text at the cost of lower frame rate 17 | # the TUE game will be playable, though. 18 | # Without the right graphics drivers other sim games (such at THU) 19 | # will probably not be playable. 20 | # after runing gplrast, all GPL text should be readable 21 | # This text corruption problem also happens when the 22 | # Manjaro 20.2 linux distro is used. Running this 23 | # script will solve the problem in the Manjaro case without 24 | # frame rate penalty. 25 | 26 | $PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 27 | if [ $? -ne 0 ]; then 28 | exit 1 29 | fi 30 | 31 | export WINEPREFIX="$PWD/WP" 32 | cd INSTALL 33 | wine gplrast_v2.5.exe 2>/dev/null 1>/dev/null 34 | exit 0 35 | -------------------------------------------------------------------------------- /files/TUE/setRaceLaps.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | """ 3 | This program, setRaceLaps.py, is designed to revise the configuration 4 | files (.ini files) for a set of races in Grand Prix Legends 5 | (GPL). Specifically, it allows the user to adjust the number of laps 6 | for each race by modifying the 'numberOfLaps' parameter in the 7 | respective .ini files. 8 | 9 | The user is prompted to input an integer between 0 and 20. Based on 10 | this input, the program adjusts the number of laps for each race 11 | accordingly. If the input is 0, the program resets the number of laps 12 | to the original default value specified in the .ini files. If the 13 | input is a positive integer, it calculates a new value for the number 14 | of laps based on the input and updates the .ini files accordingly. 15 | 16 | The program iterates through all .ini files located in the specified 17 | directory and identifies lines containing the 'numberOfLaps' 18 | parameter. It then adjusts these lines based on the user input and 19 | writes the revised content back to the files. 20 | 21 | """ 22 | 23 | import os 24 | 25 | def revise_ini_files(input_integer): 26 | # Validate input 27 | if not (0 <= input_integer <= 20): 28 | print("Input integer must be between 0 and 20") 29 | return 30 | 31 | # Directory containing the .ini files 32 | directory = "./WP/drive_c/Sierra/GPL/seasons/" 33 | # File extension for .ini files 34 | suffix = ".ini" 35 | 36 | # Iterate through files in the directory 37 | for filename in os.listdir(directory): 38 | if filename.endswith(suffix): 39 | filepath = os.path.join(directory, filename) 40 | lines = [] 41 | 42 | # Read lines from the file with explicit encoding specification 43 | with open(filepath, "r", encoding="latin-1") as file: 44 | for line in file: 45 | # Check if line starts with "numberOfLaps=" 46 | if line.strip().startswith("numberOfLaps="): 47 | original_integer = int(line.split("=")[1].split(";")[0].strip()) 48 | if input_integer > 0: 49 | # Case 1: input_integer > 0 50 | revised_integer = int((input_integer + 0.15) / 0.15) 51 | lines.append(f"numberOfLaps={revised_integer} ; default {original_integer}\n") 52 | else: 53 | # Case 2: input_integer == 0 54 | default_integer = original_integer 55 | if "; default" in line: 56 | default_integer = int(line.split("; default")[1].strip()) 57 | lines.append(f"numberOfLaps={default_integer} ; default {default_integer}\n") 58 | else: 59 | lines.append(line) 60 | 61 | # Write revised lines back to the file 62 | with open(filepath, "w", encoding="latin-1") as file: 63 | file.writelines(lines) 64 | 65 | print("All GPL season .ini files revised successfully.") 66 | 67 | # Clear the terminal screen 68 | os.system('clear') 69 | print("setRaceLaps.py\n") 70 | print("Set the number of laps for all GPL races. Enter 0 to") 71 | print("set race lengths to the original default. Enter a") 72 | print("positive number to set the length of the novice race\n") 73 | 74 | # Prompt user for input 75 | input_integer = int(input("Enter an integer between 0 and 20: ")) 76 | # Call the function to revise .ini files based on user input 77 | revise_ini_files(input_integer) 78 | -------------------------------------------------------------------------------- /files/TUE/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export WINEPREFIX="$PWD/WP" 4 | export WINEARCH=win32 5 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 6 | winecfg 2>/dev/null 1>/dev/null 7 | exit 0 8 | -------------------------------------------------------------------------------- /files/TUE/setup-manager.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Set the Wine prefix to the current directory's 'WP' folder 4 | export WINEPREFIX="$PWD/WP" 5 | 6 | # Check if the Sierra directory exists in the Wine prefix 7 | if [ -d "$WINEPREFIX/drive_c/Sierra" ]; then 8 | # Navigate to the GPL Setup Manager directory and run the executable 9 | cd "$WINEPREFIX/drive_c/Program Files/GPLSecrets/GPL Setup Manager" || exit 1 10 | wine 'GPL Setup Manager.exe' 2>/dev/null 1>/dev/null 11 | exit 0 12 | else 13 | # Display a message if GPL Setup Manager is not installed 14 | echo "" 15 | echo "GPL Setup Manager not installed." 16 | echo "To install it, from launcher.py choose TUE, then Historical Grand Prix Sim Racing" 17 | echo "Or cd to the TUE directory and run the script ./gpl.sh" 18 | echo "" 19 | exit 0 20 | fi 21 | 22 | # End of script 23 | 24 | -------------------------------------------------------------------------------- /files/TUE/slowDownGplAiCars.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | """ 4 | This script, 'slowDownGplAiCars.py', is designed to reduce the speed of AI-controlled cars in a racing game. 5 | It accomplishes this by modifying configuration files ('.ini' files) located in the './tracks' directory. 6 | The user inputs a percentage value indicating the desired reduction in AI car speed, with 100 indicating 7 | the default speed and 0 meaning the AI cars do not move at all. 8 | 9 | The script consists of two main functions: 10 | 11 | 1. `replace_dlong_speed_adj_coeff(input_number, file_path)`: 12 | This function replaces the 'dlong_speed_adj_coeff' value in the specified '.ini' file with a new value 13 | calculated based on the input percentage. If the line contains a default value, it retains the original 14 | default value in a comment for reference. 15 | 16 | 2. `process_ini_files(input_number)`: 17 | This function iterates through all '.ini' files in the './tracks' directory (including subdirectories), 18 | applying the speed adjustment to each file by calling `replace_dlong_speed_adj_coeff()`. 19 | 20 | The script execution starts in the '__main__' block where the user is prompted to input a percentage value. 21 | If the input is valid (between 0 and 100), the `process_ini_files()` function is invoked to adjust the AI 22 | car speeds in all configuration files. Otherwise, an error message is displayed. 23 | 24 | """ 25 | 26 | import os 27 | import re 28 | 29 | def replace_dlong_speed_adj_coeff(input_number, file_path): 30 | """ 31 | Replace the 'dlong_speed_adj_coeff' value in the specified '.ini' file with a new value calculated 32 | based on the input percentage. If the line contains a default value, it retains the original default 33 | value in a comment for reference. 34 | 35 | Args: 36 | input_number (float): The percentage value indicating the desired reduction in AI car speed. 37 | file_path (str): The path to the '.ini' file to be processed. 38 | """ 39 | with open(file_path, 'r', encoding='utf-8', errors='ignore') as file: 40 | lines = file.readlines() 41 | 42 | with open(file_path, 'w', encoding='utf-8') as file: 43 | for line in lines: 44 | match = re.match(r'(dlong_speed_adj_coeff\s*=\s*)([-+]?\d*\.\d+|\d+)(\s*;\s*default:\s*)?([-+]?\d*\.\d+|\d+)?', line) 45 | if match: 46 | original_number = float(match.group(2)) 47 | if match.group(4): # If the line contains '; default: ' 48 | original_default_number = float(match.group(4)) 49 | new_number = original_default_number * input_number / 100 50 | file.write(f'{match.group(1)}{new_number:.6f} ; default: {original_default_number}\n') 51 | else: 52 | new_number = original_number * input_number / 100 53 | file.write(f'{match.group(1)}{new_number:.6f} ; default: {original_number}\n') 54 | else: 55 | file.write(line) 56 | 57 | def process_ini_files(input_number): 58 | """ 59 | Iterate through all '.ini' files in the './WP/drive_c/Sierra/GPL/tracks' directory (including subdirectories), 60 | applying the speed adjustment to each file. 61 | 62 | Args: 63 | input_number (float): The percentage value indicating the desired reduction in AI car speed. 64 | """ 65 | tracks_dir = "./WP/drive_c/Sierra/GPL/tracks" 66 | if not os.path.exists(tracks_dir): 67 | print("Error: Run gpl.sh first to install GPL") 68 | return 69 | 70 | for dirpath, _, filenames in os.walk(tracks_dir): 71 | for filename in filenames: 72 | 73 | if filename.endswith('.ini') and os.path.isfile(os.path.join(dirpath, filename)): 74 | # print(f"Processing file: {os.path.join(dirpath, filename)}") 75 | replace_dlong_speed_adj_coeff(input_number, os.path.join(dirpath, filename)) 76 | 77 | if __name__ == "__main__": 78 | os.system('clear') 79 | print("slowDownGplAiCars.py:\n") 80 | print("Reduce the speed of the AI cars, for all mods and tracks.") 81 | print("Input percentage reduction in the AI speed coefficient, where") 82 | print("100 means default speed and 0 means AI cars don't move at all.\n") 83 | input_number = float(input("Enter a number between 0 and 100: ")) 84 | if 0 <= input_number <= 100: 85 | process_ini_files(input_number) 86 | print("\nAI car speeds adjusted successfully for all mods and tracks.") 87 | else: 88 | print("Input percentage of default AI car speed (number must be between 0 and 100):") 89 | -------------------------------------------------------------------------------- /files/TUE/speedDreams.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Set the Wine prefix to a directory named 'WP' in the current working directory 4 | export WINEPREFIX="$PWD/WP" 5 | #export WINEARCH=win32 6 | #wine winecfg -v winxp 2>/dev/null 1>/dev/null 7 | 8 | # Move the Speed Dreams AppImage to the Wine prefix's 'INSTALL' directory 9 | mv "$WINEPREFIX/../../tar/Speed-Dreams-2.2.3-x86_64.AppImage" "$WINEPREFIX/../INSTALL" 2>/dev/null 1>/dev/null 10 | 11 | # Check if the Speed Dreams AppImage exists in the 'INSTALL' directory 12 | if [ -f "$WINEPREFIX/../INSTALL/Speed-Dreams-2.2.3-x86_64.AppImage" ]; then 13 | # make sure this linux binary is executable 14 | sudo chmod +x "$WINEPREFIX/../INSTALL/Speed-Dreams-2.2.3-x86_64.AppImage" 15 | # Move the AppImage to the Wine prefix directory 16 | mv "$WINEPREFIX/../INSTALL/Speed-Dreams-2.2.3-x86_64.AppImage" "$WINEPREFIX" 17 | fi 18 | 19 | # Check if the Speed Dreams AppImage exists in the Wine prefix directory 20 | if [ -f "$WINEPREFIX/Speed-Dreams-2.2.3-x86_64.AppImage" ]; then 21 | # Clear the screen and provide instructions for launching Speed Dreams 22 | clear 23 | echo "Speed Dreams open source sim racing"; echo "" 24 | echo "To race a 67 Grand Prix car at Monza, Choose:" 25 | echo "Race" 26 | echo "Practics" 27 | echo "Configure" 28 | echo "Now select Grand Prix Circuits on the top line, and Forza on the second line" 29 | echo "Next" 30 | echo "Garage" 31 | echo "For Category on top left select 1967 Grand Prix" 32 | echo "Apply, Next, Next, Start" 33 | echo "" 34 | # Launch Speed Dreams 35 | $WINEPREFIX/Speed-Dreams-2.2.3-x86_64.AppImage 2>/dev/null 1>/dev/null 36 | else 37 | # Display a message if the Speed Dreams AppImage is not found 38 | clear 39 | printf "\n\nSpeed-Dreams-2.2.3-b1-x86_64.AppImag not found.\n\nDownload it from https://sourceforge.net/projects/speed-dreams/files/latest/download\n\nand place it in the "$WINEPREFIX"/../INSTALL directory\n\n" 40 | echo ""; echo "Then run this script again." 41 | echo "" 42 | fi 43 | 44 | # End of script 45 | 46 | -------------------------------------------------------------------------------- /files/TUE/twoMonitorTelemetry.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | # this linux script file is from https://github.com/sim-museum/esports-for-engineers 3 | # this script requires wine. On Ubuntu 20.04 or 20.10, install wine via: 4 | # sudo apt install -y wine 5 | # 6 | # 21 Mar 2021 7 | 8 | $PWD/INSTALL/checkWineVersion.sh 2>/dev/null 1>/dev/null 9 | if [ $? -ne 0 ]; then 10 | exit 1 11 | fi 12 | 13 | export WINEPREFIX=$PWD/WP 14 | 15 | numMonitors=$(eval "xrandr -q | grep connected | grep -v disconnected | wc -l") 16 | 17 | if [ $numMonitors -ne 2 ]; then 18 | echo " " 19 | echo "You do not seem to have a dual monitor setup. Two monitors are needed for the telemetry utility," 20 | echo "which runs on your second monitor (ideally set to 1024x768 resolution) after you" 21 | echo "start GPL on your primary monitor." 22 | echo "press CTRL C to exit and set up dual monitors, or press Enter" 23 | echo "if you have a dual monitor setup which this script could not detect." 24 | read replyString 25 | fi 26 | 27 | clear; 28 | echo "The GPLModec real-time telemetry program runs as a second process" 29 | echo "displaying on your second monitor while you are racing in GPL." 30 | printf "Since a virtual desktop uses only one monitor, TURN OFF\nvirtual desktop before running GPLMotec.\nIf virtual desktop is on, type CONTROL C, then ./setWineDisplayResolution.sh, \nthen deselect virtual desktop in the graphics tab.\nThen run this script again.\n\nPress CONTROL C if virtual desktop is on, otherwise\npress any key to continue\n\n" 31 | read replyString 32 | echo "GPLMotec will start in 3 minutes." 33 | echo "You must be racing in the GPL 3D view when GPLMotec starts." 34 | echo "" 35 | echo "After 3 minutes, GPLMotec will appear" 36 | echo "on your second monitor and GPL will freeze." 37 | echo "" 38 | echo "Use ALT TAB, SHIFT ALT TAB and ALT F6 to restore keyboard focus" 39 | echo "to the GPL window. GPL will start again and your keyboard and" 40 | echo "joystick will work again. This works best with the" 41 | echo "wine-6.3 (Staging) or later version of wine." 42 | echo "" 43 | echo "Run ./gpl.sh in different terminal window, starting now." 44 | 45 | sleep 180; wine $WINEPREFIX/drive_c/GPLMotecAdd/GPLMotec.exe 2>/dev/null 1>/dev/null 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /files/TUE/uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "" 4 | echo "If an installation is not working correctly," 5 | echo "it can be helpful to delete the installation" 6 | echo "and re-install." 7 | echo "Press Enter to uninstall or C to cancel." 8 | read replyString 9 | rm -rf WP 10 | mkdir WP 11 | -------------------------------------------------------------------------------- /files/WED/INSTALL/BanksiaGui/BanksiaGui.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # This is default bat run script of The CQtDeployer project. 4 | # This file contains key word that will replaced after deploy project. 5 | # 6 | # #################################################################### 7 | # 8 | # LIB_PATH - are releative path to libraryes of a deployed distribution. 9 | # QML_PATH - are releative path to qml libraryes of a deployed distribution. 10 | # PLUGIN_PATH - are releative path to qt plugins of a deployed distribution. 11 | # BIN_PATH - are releative path to targets of a deployed distribution. 12 | 13 | # SYSTEM_LIB_PATH - are releative path to system libraryes of a deployed distribution. 14 | # BASE_NAME - are base name of the executable that will be launched after run this script. 15 | # CUSTOM_SCRIPT_BLOCK - This is code from the customScript option 16 | # RUN_COMMAND - This is command for run application. Requred BASE_DIR variable. 17 | # 18 | # #################################################################### 19 | 20 | BASE_DIR=$(dirname "$(readlink -f "$0")") 21 | export LD_LIBRARY_PATH="$BASE_DIR"/lib/:"$BASE_DIR":$LD_LIBRARY_PATH 22 | export QML_IMPORT_PATH="$BASE_DIR"/qml/:$QML_IMPORT_PATH 23 | export QML2_IMPORT_PATH="$BASE_DIR"/qml/:$QML2_IMPORT_PATH 24 | export QT_PLUGIN_PATH="$BASE_DIR"/plugins/:$QT_PLUGIN_PATH 25 | export QTWEBENGINEPROCESS_PATH="$BASE_DIR"/bin//QtWebEngineProcess 26 | export QTDIR="$BASE_DIR" 27 | export CQT_PKG_ROOT="$BASE_DIR" 28 | export CQT_RUN_FILE="$BASE_DIR/BanksiaGui.sh" 29 | 30 | export QT_QPA_PLATFORM_PLUGIN_PATH="$BASE_DIR"/plugins//platforms:$QT_QPA_PLATFORM_PLUGIN_PATH 31 | 32 | 33 | 34 | "$BASE_DIR/bin/BanksiaGui" "$@" 35 | -------------------------------------------------------------------------------- /files/WED/banksiaGui.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | clear 3 | echo "See optionalLinuxNativeInstall.txt for configuration instructions." 4 | export WINEPREFIX=$PWD/WP 5 | export WINEARCH=win32 6 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 7 | 8 | ./INSTALL/BanksiaGui/BanksiaGui.sh 2>/dev/null 1>/dev/null 9 | 10 | -------------------------------------------------------------------------------- /files/WED/chessmaster/chessmaster.sh: -------------------------------------------------------------------------------- 1 | # Script Outline: 2 | # 1. Sets Wine prefix to the "WP" folder in the current directory. 3 | # 2. Checks if Chessmaster executable exists and runs it if found, displaying optional scripts. 4 | # 3. Moves installation files to the "INSTALL" directory. 5 | # 4. Checks if Chessmaster installation files are present; if not, prompts the user to download them. 6 | # 5. If ISO file is not found, unpacks Chessmaster ISO file and provides instructions for mounting. 7 | # 6. If setup.exe is found in the mounted ISO directory, provides installation instructions, runs setup.exe using Wine, applies patch, and displays completion message. 8 | # 7. End of script. 9 | #!/bin/bash 10 | 11 | # Set the Wine prefix to the current directory's "WP" folder 12 | export WINEPREFIX="$PWD/WP" 13 | export WINEARCH=win32 14 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 15 | 16 | # Check if Chessmaster executable exists 17 | if [ -f "$WINEPREFIX/drive_c/Program Files/Ubisoft/Chessmaster Grandmaster Edition/Chessmaster.exe" ]; then 18 | # Navigate to Chessmaster directory 19 | cd "$WINEPREFIX/drive_c/Program Files/Ubisoft/Chessmaster Grandmaster Edition" 20 | # Run Chessmaster 21 | wine Chessmaster.exe >/dev/null 2>&1 22 | # Clear the terminal 23 | clear 24 | # Display optional scripts 25 | printf "Chessmaster optional scripts\n\nConvert chessmaster output pgn into standard format:\nfixAnnotationsInChessmasterOutputPgnFile.sh\n\n" 26 | exit 0 27 | fi 28 | 29 | # Move installation files to INSTALL directory 30 | mv "$WINEPREFIX/../../../tar/Chessmaster-Grandmaster-Edition_Win_EN-FR.zip" "$WINEPREFIX/../INSTALL" >/dev/null 2>&1 31 | mv "$WINEPREFIX/../../../tar/Chessmaster-Grandmaster-Edition_Patch_Win_EN-FR_patch-v102.exe" "$WINEPREFIX/../INSTALL" >/dev/null 2>&1 32 | 33 | # Check if Chessmaster installation files are present 34 | if [ ! -f "$WINEPREFIX/../INSTALL/Chessmaster-Grandmaster-Edition_Win_EN-FR.zip" ]; then 35 | # Display instructions for obtaining installation files 36 | clear 37 | echo "Chessmaster install files not found in the directory $WINEPREFIX/../INSTALL/" 38 | echo "" 39 | echo "Download the following 2 files from the link below:" 40 | echo "1. Chessmaster-Grandmaster-Edition_Win_EN-FR.zip" 41 | echo "2. Chessmaster-Grandmaster-Edition_Patch_Win_EN-FR_patch-v102.exe" 42 | echo "" 43 | echo "Place these files in the $WINEPREFIX/../INSTALL/ directory." 44 | echo "" 45 | echo "Then run this script again." 46 | echo "" 47 | exit 0 48 | else 49 | if [ ! -f "$WINEPREFIX/../INSTALL/itw-cge.iso" ]; then 50 | # Unpack Chessmaster ISO file 51 | echo "Unpacking Chessmaster ISO file in $WINEPREFIX/../INSTALL/chessmaster" 52 | cd "$WINEPREFIX/../INSTALL/" 53 | unzip Chessmaster-Grandmaster-Edition_Win_EN-FR.zip >/dev/null 2>&1 54 | clear 55 | # Display instructions for mounting ISO 56 | printf "To install Chessmaster, run the following command in a terminal,\nthen run this script again.\n\nsudo mount -o loop "$WINEPREFIX"/../INSTALL/itw-cge.iso "$WINEPREFIX"/../INSTALL/isoMnt\n" 57 | exit 0 58 | fi 59 | if [ -f "$WINEPREFIX/../INSTALL/isoMnt/Chessmaster Grandmaster Edition En/setup.exe" ]; then 60 | # Navigate to ISO mounted directory 61 | cd "$WINEPREFIX/../INSTALL/isoMnt/Chessmaster Grandmaster Edition En" 62 | clear 63 | # Display installation instructions 64 | printf "Chessmaster installation instructions:\n\n1. If asked whether to install Mono, do not install it.\n2. Do not install the Adobe PDF reader (clear the checkbox next to Adobe).\n3. After Chessmaster is installed and the update dialog appears, exit from Chessmaster.\n\nPress any key to begin installation.\n\n" 65 | read replyString 66 | # Run setup.exe using Wine 67 | wine setup.exe >/dev/null 2>&1 68 | cd "$WINEPREFIX/../INSTALL/" 69 | # Apply patch 70 | wine Chessmaster-Grandmaster-Edition_Patch_Win_EN-FR_patch-v102.exe >/dev/null 2>&1 71 | printf "\nInstallation completed. Run this script again to start Chessmaster.\n" 72 | exit 0 73 | fi 74 | fi 75 | 76 | # End of script 77 | 78 | -------------------------------------------------------------------------------- /files/WED/chessmaster/fixAnnotationsInChessmasterOutputPgnFile.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # by default, Chessmaster annotations in pgn files use 4 | # unreadable hex character codes in place of K, Q, B etc. 5 | # this simple script translates hex characters into 6 | # standard pgn notation. 7 | 8 | if [ $# -ne 2 ]; then 9 | echo "Usage: $0 inputPgnFname outputPgnFname" 1>&2 10 | exit 1 11 | fi 12 | 13 | export WINEPREFIX=$PWD/WP 14 | 15 | rsync -a "$WINEPREFIX/drive_c/Program Files (x86)/Ubisoft/Chessmaster Grandmaster Edition/Data/Users/" $WINEPREFIX/../savedGames/ 2>/dev/null 1>/dev/null 16 | 17 | # replace hex characters with text chess symbols 18 | 19 | sed 's/\x8b/K/g' $1 | sed 's/\x89/Q/g' | sed 's/\x86/B/g' | sed 's/\x87/N/g' | sed 's/\x88/R/g' > tmp.txt 20 | 21 | tr -cd '[:print:]' < tmp.txt > $2 22 | 23 | clear 24 | echo -e "Chessmaster saved games copied to $WINEPREFIX/../chessmasterSavedGames.\n\n$1 converted to standard pgn format. Now to add stockfish annotations:\n1. run ./scid.sh,\n2. read in $2\n3. add scid (stockfish) annotations\n4. Edit/Copy Game to Clipboard\n5. paste into a new pgn file.\n\n" 25 | 26 | -------------------------------------------------------------------------------- /files/WED/chessmaster/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export WINEPREFIX="$PWD/WP" 3 | export WINEARCH=win32 4 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 5 | 6 | winecfg 2>/dev/null 1>/dev/null 7 | exit 0 8 | -------------------------------------------------------------------------------- /files/WED/copyRecentFilesToAfterGameReport.sh: -------------------------------------------------------------------------------- 1 | # copy .pgn files created in the last 2 hours to afterGameReport 2 | find . -name "*.pgn" -type f -mmin -120 -not -path "./afterGameReport/*" -exec cp {} ./afterGameReport \; 3 | -------------------------------------------------------------------------------- /files/WED/grandmasterOpeningMove.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import sys, random, os 4 | 5 | def isConvertableToFloat(value): 6 | try: 7 | float(value) 8 | return True 9 | except: 10 | return False 11 | 12 | 13 | if len(sys.argv) < 2: 14 | res=os.system("clear") 15 | print("Use this script to select random opening moves so you get a variety of games") 16 | print("and do not have to memorize openings:") 17 | print("\nRun ./scid.sh, then select File/Open and open the grandmaster games database.") 18 | print("Then display the scid tree window.") 19 | print("This will show a list of moves played from this position by grandmasters, with") 20 | print("a percentage next to each move indicating the probability of that move") 21 | print("in the grandmaster database. To select a move at random, run this ") 22 | print("script with the probabilities as command line arguments.") 23 | print("\nExample:") 24 | print("If in the starting position, the scid tree window move probabilities for") 25 | print("White's first move are") 26 | print("1: e4 44.7%") 27 | print("2: d4 37.3%") 28 | print("3: c4 8.6%") 29 | print("4: Nf3 8.5%\n") 30 | print("To choose between these moves, issue this command:") 31 | print("grandmasterOpeningMove 44.7 37.3 8.6 8.5\n") 32 | print("\nContinue to select grandmaster moves randomly in this way until a position") 33 | print("arises which is not in the database. Now it's your turn to choose your subsequent moves!") 34 | sys.exit(0) 35 | 36 | # nArgs = len(sys.argv)-1 37 | #print (len(sys.argv)) 38 | randPercent=random.randint(0,100) 39 | #print("rand percent is ", str(randPercent)) 40 | 41 | numCount=0 42 | runningTotal=0 43 | 44 | for i in range(1, len(sys.argv)): 45 | inputString=sys.argv[i] 46 | if not isConvertableToFloat(inputString): 47 | print("Error: "+inputString+"is not a number. For help, run script with no arguments.") 48 | sys.exit(1) 49 | inputNum=float(inputString) 50 | if not 0.0 <= inputNum <= 100.0: 51 | print("Error: "+inputString+" is not a percentage between 0 and 100. For help, run script with no arguments") 52 | sys.exit(1) 53 | numCount+=1 54 | runningTotal+=inputNum 55 | if runningTotal>randPercent: 56 | print("Choose scid tree window move number "+str(numCount)) 57 | sys.exit(0) 58 | 59 | print("Choose scid tree window move number "+str(len(sys.argv)-1)) 60 | -------------------------------------------------------------------------------- /files/WED/installTips.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sim-museum/esports-for-engineers/ad05854b7b539ba1e37bccaccca73b906864904f/files/WED/installTips.pdf -------------------------------------------------------------------------------- /files/WED/internetChess.sh: -------------------------------------------------------------------------------- 1 | clear 2 | echo "at the terminal prompt type:" 3 | echo "scid" 4 | echo "xboard" 5 | echo "or" 6 | echo "eboard" 7 | echo "to try out three different internet chess clients." 8 | -------------------------------------------------------------------------------- /files/WED/nibbler.sh: -------------------------------------------------------------------------------- 1 | # Provide instructions for using the LCZero chess engine with Nibbler front end. 2 | # Check if electron is installed, if not, provide installation instructions. 3 | # Check if lc0 is installed and provide instructions for its setup. 4 | 5 | #!/bin/bash 6 | clear 7 | 8 | # Provide instructions for using the LCZero chess engine with Nibbler front end 9 | echo "The first time you run the default Leela Chess Zero (lc0) front end, named nibbler," 10 | echo "you must specify the path to the lc0 chess engine." 11 | export WINEPREFIX="$PWD/WP" 12 | export WINEARCH=win32 13 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 14 | 15 | # Check if lc0 is installed and provide instructions for its setup 16 | cd "$WINEPREFIX/../INSTALL/" 17 | if ./lc0_cpu --help 2>/dev/null 1>/dev/null; then 18 | echo "from the menu select Engine/Choose Engine" 19 | echo 'select (path)/WED/INSTALL/lc0_cpu' 20 | echo "next select the weights file WED/INSTALL/tinygyal-8.pb.gz" 21 | echo 'once you have selected lc0_cpu once, nibbler stores its location in ~/.config/Nibbler' 22 | echo 'so you do not have to enter this path again.' 23 | echo 'Optional: If you have a modern Nvidia GPU, you can run a faster version of lc0.' 24 | echo 'Optional: To do this in Ubuntu 24.04 LTS, first issue the command' 25 | echo 'Optional: sudo apt install -y nvidia-opencl-dev' 26 | echo 'Optional: then in the nibbler Engine/Choose Engine menu select' 27 | echo 'Optional: (path/WED/INSTALL/lc0_linux_graphicsAcceleration/lc0_opencl' 28 | echo 'If in doubt, start with the default lc0_cpu option as described above.' 29 | cd "$WINEPREFIX/../INSTALL/nibbler-2.4.6-linux" 30 | 31 | # due to updated security policies in Ubuntu 24.04, needed for electron-based applications 32 | sudo chown root chrome-sandbox 33 | sudo chmod 4755 chrome-sandbox 34 | ./nibbler --no-sandbox 35 | fi 36 | 37 | -------------------------------------------------------------------------------- /files/WED/optionalLinuxNativeInstall.txt: -------------------------------------------------------------------------------- 1 | For sharper graphics, speed and configurability you might 2 | want to install the linux native versions of scid 3 | and nibbler 4 | To install in Ubuntu 20.04 LTS: 5 | 6 | sudo apt install -y libopenblas-dev scid stockfish phalanx 7 | 8 | now run ./nibbler.sh 9 | 10 | this is now running the linux binary, which has better graphics quality 11 | you must specify the linux engine binary for nibbler. Select Engine/Choose engine 12 | and navigate to WED/INSTALL/lc0_cpu 13 | 14 | Optional: For graphics acceleration of the Leela Chess Zero engine in Ubuntu 20.04 LTS, install needed machine learning graphics library via 15 | sudo apt install -y nvidia-opencl-dev 16 | Then, in nibbler, select Engine/Choose engine 17 | and navigate to WED/INSTALL/lc0_linux_graphicsAcceleration/lc0_opencl 18 | 19 | Note: Generally the larger the weight file, the stronger the play. To make lc0 a better chess player, choose a larger weight file in Nibbler. There are several weight files to choose from in the directory (path)/WED/INSTALL/otherWeights 20 | 21 | Now run ./scid.sh 22 | In tools/Analysis engine #1 type "lc0_cpu", click on "..." and 23 | navigate to (path)/WED/INSTALL/lc0_cpu 24 | Also install the stockfish engine. In tools/Analysis engine #2 25 | type "stockfish" for engine name and command. 26 | Also load the database of master chess games 27 | Choose File/Open and navigate to WED/INSTALL/25000grandMasterGames.si4 28 | 29 | 30 | the linux version of Nibbler saves its configuration information in: 31 | $HOME/.config/Nibbler 32 | The path to leela chess zero is in this file: 33 | $HOME/.config/Nibbler/config.json 34 | 35 | the linux version of SCID saves its configuration in the directory 36 | $HOME/.scid4.7 37 | 38 | Optional: BanksiaGui is an alternative to nibbler which graphically displays move values on the board like Sabaki and q5go (see FRI). To configure and run BanksiaGui, type 39 | ./BanksiaGui.sh 40 | The follow these steps to configure (also see the BanksiaGui screenshots in installTips.pdf): 41 | 1. From the menu select File/Settings/Engines 42 | 2. Click "+" to add a new engine and navigate to the engine file, e.g. lc0_cpu 43 | 3. Click "OK" and then click on the engine name to see engine options 44 | 4. Scroll down to the last option in the list, "WeightsFile". 45 | 5. The value for WeightsFile is set to "", which may automatically find a weights file in the same directory as the engine you specified. In case that doesn't work, double click on "" and replace it with the full path and file name for your weights file. Alternatively, edit the WeightsFile field directly in $HOME/.config/BanksiaGUI/banksiaengines.json 46 | 6. To display engine stats during games, select the engine options "LogLiveStats", "UCI_ShowWDL" and "VerboseMoveStats" 47 | 48 | To reset configuration, delete the configuration directories via: 49 | rm -rf $HOME/.config/Nibbler 50 | rm -rf $HOME/.scid4.7 51 | rm -rf $HOME/.config/BanksiaGui 52 | -------------------------------------------------------------------------------- /files/WED/scid.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script is used to run Scid with optional setup instructions for lc0 chess engine. 4 | 5 | # Notify the user about setting up the lc0 chess engine. 6 | echo "The first time you run Scid you should specify the path to the lc0 chess engine." 7 | echo "From the menu select Tools/Analysis Engine.../New and specify the name and path for the lc0 executable." 8 | echo "The Linux version of lc0 is INSTALL/lc0_cpu." 9 | echo "The Windows version of lc0 is INSTALL/lc0_win/lc0.exe." 10 | echo "" 11 | 12 | # Set up WINEPREFIX for Wine environment and navigate to the INSTALL directory. 13 | export WINEPREFIX="$PWD/WP" 14 | export WINEARCH=win32 15 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 16 | 17 | cd "$WINEPREFIX/../INSTALL" 18 | 19 | # Clear the terminal and attempt to run Scid. 20 | clear 21 | scid 2>/dev/null 1>/dev/null || wine "$WINEPREFIX/drive_c/Scid-4.7.0/bin/scid.exe" 2>/dev/null 1>/dev/null 22 | 23 | # Clear the terminal after Scid execution. 24 | clear 25 | 26 | # Inform the user about optional scripts for Scid. 27 | echo -e "Scid optional scripts:\n\nRandomly choose opening book move (to practice different positions):\ngrandmasterOpeningMove.sh\n\n" 28 | 29 | # End of script. 30 | 31 | 32 | -------------------------------------------------------------------------------- /files/WED/setWineDisplayResolution.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export WINEPREFIX="$PWD/WP" 3 | export WINEARCH=win32 4 | wine winecfg -v winxp 2>/dev/null 1>/dev/null 5 | winecfg 6 | exit 0 7 | -------------------------------------------------------------------------------- /files/WED/uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "" 4 | echo "If an installation is not working correctly," 5 | echo "it can be helpful to delete the installation" 6 | echo "and re-install." 7 | echo "Press Enter to uninstall or C to cancel." 8 | read replyString 9 | rm -rf WP 10 | mkdir WP 11 | -------------------------------------------------------------------------------- /files/basicWalkthrough.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sim-museum/esports-for-engineers/ad05854b7b539ba1e37bccaccca73b906864904f/files/basicWalkthrough.pdf -------------------------------------------------------------------------------- /files/delayedMonitorReset.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # reset the monitors to max resolution after a specified delay 3 | # which must be an integer number of minutes 4 | # 5 | # this recovers from an error condition in 6 | # which one of the THU games locks the 7 | # displays 8 | # 9 | # if this happens, another thing to 10 | # try is pressing F1 11 | # which brings up the login screen in Ubuntu 12 | 13 | if [ $# -ne 1 ]; then 14 | echo " "; echo "Incorrect input."; echo " " 15 | echo "This shell script requires one argument, which must be an integer." 16 | echo "The argument is the number of minutes to wait before" 17 | echo "resetting the display monitor (or monitors) to max resolution." 18 | echo " " 19 | echo "Run this script if you anticipate that a sim may lock up the display(s)." 20 | echo " " 21 | exit 1 22 | fi 23 | 24 | delaySeconds=$(( $1*60)) 25 | #echo "multiplication of $1 and 60 yields $delaySeconds" 26 | sleep $delaySeconds 27 | xrandr -q | grep connected | grep -v disconnected | cut -d ' ' -f 1 | ./.delayedMonitorReset_helper.sh 28 | echo " "; echo "delayedMonitorReset: resetting monitors after $1 minute(s)."; echo " " 29 | 30 | -------------------------------------------------------------------------------- /files/esports-for-engineers-brochure.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sim-museum/esports-for-engineers/ad05854b7b539ba1e37bccaccca73b906864904f/files/esports-for-engineers-brochure.pdf -------------------------------------------------------------------------------- /files/filesForLauncher/launcherScores.csv: -------------------------------------------------------------------------------- 1 | timeStamp,day,score 2 | 2024-04-08 00:36:03.876365,0,0.5 3 | -------------------------------------------------------------------------------- /files/filesForLauncher/launcherScripts.csv: -------------------------------------------------------------------------------- 1 | MON,TUE,WED,THU,FRI,SAT,SUN 2 | jack.sh,gpl.sh,nibbler.sh,BattleOfBritain/battleOfBritain.sh,KaTrain/KaTrain.sh,freeFalcon.sh,hoylePoker.sh 3 | bcalc.sh,replay.sh,scid.sh,flightgear/basicFlightTraining.sh,q5go.sh,rampStartTrainer.sh,pokerth.sh 4 | bridgeBaron.sh,setup-manager.sh,banksiaGui.sh,flightgear/training_spitfire.sh,sabaki.sh,replay.sh,bracelets.sh 5 | qplus.sh,speedDreams.sh,chessmaster/chessmaster.sh,flightgear/training_me109.sh,igowin.sh,FalconAF.sh,pokerStove.sh 6 | bb12/bb12.sh,NR2003/NR2003.sh,,flightgear/training_p51d_startInAir.sh,goreviewpartner.sh,BMS435/BMS435.sh,generalPokerEvaluator.sh 7 | wBridge5.sh,rFactor/rFactor.sh,,MigAlley/migAlley.sh,,flightgear/training_F16.sh, 8 | memoryTraining.sh,,,flightgear/training_F86.sh,,flightgear/training_MiG21.sh, 9 | mathQuiz.py,,,flightgear/training_MiG15.sh,,CFL.sh, 10 | ,,,FS9/fs9.sh,,, 11 | ,,,SDOE/WWI_SDOE.sh,,, 12 | ,,,SDOE/WWII_SDOE.sh,,, 13 | -------------------------------------------------------------------------------- /files/filesForLauncher/launcherTitles.csv: -------------------------------------------------------------------------------- 1 | MON: Contract Bridge,TUE: Historical Sim Racing,WED: Deep Learning Chess,THU: Historical Flight/War Sim,FRI: Deep Learning Weiqi,SAT: Flight/War Sim (Advanced),SUN: Poker 2 | Demo with professor mode,Classic 1960’s grand prix,Deep learning,Battle of Britain,AI tutor,Electronic battlefield,Beginning draw and stud 3 | Bridge analyzer,View replay,Analysis,Basic flight training,Board with training,Checklist training,Stud 4 | Demo with bidding flowchart,Mechanic tuning,Statistics,RAF training,Heat map board,Replay,Casino poker 5 | Limited release with good feedback,Simple cars and telemetry,"training, tutorials",Axis training,Easy game with ranking,Electronic battlefield (limited scope),Hold em analyzer 6 | Full release with flowchart,70’s and later Stock Cars,How to calculate Score,US training,Analysis,Electronic battlefield (very advanced),General purpose analyzer 7 | Full release with dashboard,"50’s-70’s Touring, GT and F1",Enter new score,Korean war,How to calculate Score,US training,How to calculate Score 8 | Memory training,How to calculate Score,,UN training,Enter new score,Soviet training,Enter new score 9 | Mental math Training,Enter new score,,Red training,,Nonviolent alternative: CFL, 10 | How to calculate Score,,,Classic civilian aircraft,,How to calculate Score, 11 | Enter new score,,,WWI dogfighting,,Enter new score, 12 | ,,,WWII dogfighting,,, 13 | ,,,How to calculate Score,,, 14 | ,,,Enter new score,,, 15 | -------------------------------------------------------------------------------- /files/findMissingExport.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | find . -type f -name "*.sh" -exec grep -l '^[[:space:]]*[A-Za-z_][A-Za-z0-9_]*=' {} \; | while read -r file; do 4 | echo "=== $file ===" 5 | grep -n '^[[:space:]]*[A-Za-z_][A-Za-z0-9_]*=' "$file" | grep -v '^[[:space:]]*export' 6 | done 7 | 8 | -------------------------------------------------------------------------------- /files/find_binary.py: -------------------------------------------------------------------------------- 1 | import os 2 | import mimetypes 3 | from collections import Counter 4 | 5 | # Directory to scan 6 | directory = '.' 7 | 8 | # Counter for binary file suffixes 9 | binary_suffixes = Counter() 10 | 11 | # Walk through the directory tree 12 | for root, _, files in os.walk(directory): 13 | for file in files: 14 | file_path = os.path.join(root, file) 15 | try: 16 | # Try to open the file in text mode 17 | with open(file_path, 'r', encoding='utf-8') as f: 18 | f.read() 19 | except (UnicodeDecodeError, IOError): 20 | # If it fails, consider it binary and record the suffix 21 | suffix = os.path.splitext(file)[1] 22 | if suffix: 23 | binary_suffixes[suffix] += 1 24 | 25 | # Write binary suffixes to .gitignore 26 | with open('.gitignore', 'a') as gitignore: 27 | for suffix in binary_suffixes: 28 | gitignore.write(f'*{suffix}\n') 29 | 30 | -------------------------------------------------------------------------------- /files/fourElementsOfMentalFunctioning.txt: -------------------------------------------------------------------------------- 1 | EXECUTIVE FUNCTION is composed of three mental abilities: working memory, inhibition, and flexibility. The kinds of activities for which you need executive function include planning ahead, holding multiple ideas in your head at once, resisting temptations, and coming up with creative solutions to problems. 2 | 3 | 1. focus and goal-direction: How good were you at being focused and goal directed 4 | 2. serial processing: How good were you at planning and taking steps one after another (i.e., planning and executing subgoals for a larger goal)? This includes processing tasks sequentially, being able to break down goals into tasks, plan tasks in a particular order, execute on goals and tasks in planned order). 5 | 3. channeling attention: How good were you at controlling and sustaining your attention (ignoring distractions, focusing for long periods when the task must be done but is not particularly interesting or when you are tired, noticing when the situation has changed and adjusting what you are doing as needed) 6 | 4. solving unfamiliar problems: How good were you at solving problems you’ve never seen before 7 | 5. organization: How good were you at keeping yourself neat and organized 8 | 6. flexibility: How good were you at being mentally flexible (able to change the course of your thoughts or actions based on a change in the situation) 9 | 10 | EMOTIONAL SELF-REGULATION is being able to monitor, evaluate, and modify your emotions. There are four steps to effectively manage an emotionally charged situation: (1) realize you are in an emotionally charged situation, (2) choose what to pay attention to within the situation, (3) choose how you interpret the situation, and (4) choose your response to the situation. 11 | 12 | 1. I noticed how I was feeling, including when I was upset. 13 | 2. I could tell what my feelings were. 14 | 3. I could change how I was feeling if I wanted to. 15 | 4. I could soothe myself when I was upset. 16 | 5. I could control my impulses by starting or stopping actions or words that were triggered automatically by strong feelings when I was upset. 17 | 6. I could choose to think about something else when I was upset 18 | 19 | MEMORY comes in short-term and long-term varieties. Episodic memory is about the stories of your life, the episodes, whereas semantic memory is about concepts and facts, and procedural memory is about how to do things. Learning happens in two stages—encoding and storage—and recalling what you’ve learned involves retrieval. 20 | 21 | CREATIVITY is the ability to come up with new, useful ideas and creations. In order to get high-quality creativity, it helps to focus on quantity—generating more and more products. Also, it helps to have a skill or an area of expertise to tap into—or multiple areas, so that you can find unusual connections between them. Being in a positive mood may aid creativity, but emotional intensity—regardless of whether it’s positive or negative—may play an even deeper role. 22 | 23 | The quantity of my creative work was high; I was prolific. 24 | My creative work was novel and/or useful. 25 | I regularly achieved “flow” (a state of being fully immersed in an activity, having an energized focus, and enjoying the process—not just the outcome—of the activity). 26 | I was good at lateral thinking (solving problems through an indirect approach, often by seeing things from a different perspective). 27 | I was good at divergent thinking (generating creative ideas by coming up with many possible solutions). 28 | In my creative activity, I used hard skills (learned abilities and enhanced through practice). 29 | 30 | Excepts from Ricker, "Smarter Tomorrow" (2021) 31 | -------------------------------------------------------------------------------- /files/headtrackingAndForceFeedback.txt: -------------------------------------------------------------------------------- 1 | Hardware devices for force feedback (FF) and head tracking make the sims more challenging, 2 | realistic and immersive. Getting these devices working on linux can be difficult, but 3 | there are exceptions. The Microsoft Sidewinder FF joystick and Logitech FF wheels work 4 | out of the box; no configuration is needed. 5 | 6 | The Microsoft Sidewinder force feedback joystick works with several sims in this package; no 7 | configuration is needed. It works well with THU/Training/FS9. It provides 8 | force feedback for other sims as well, including THU/Training/SDOE, THU/MigAlley, 9 | THU/BattleOfBritain, TUE/rFactor and TUE/NR2003. 10 | 11 | FF wheels from vendors other than Logitech may be supported in Ubuntu 22.04LTS, or 12 | they may not. A driver for the Thrustmaster TX wheel is in TUE/INSTALL/tmdrv-master. 13 | (This driver does not provide FF). For more information about linux FF wheel support, 14 | see, e.g., 15 | 16 | https://linuxreviews.org/Linux_Steering_Wheel_Manager_Oversteer_v0.6.0_Brings_support_For_6_Additional_Wheels 17 | 18 | The opentrack software provides headtracking for linux, when used with a webcam 19 | and LED lights that attach to a headset. A popular webcam/LED device is 20 | delanclip: 21 | https://delanengineering.com/ 22 | To configure delanclip to work with THU/Training/flightgear, type in a terminal: 23 | 24 | #install needed packages 25 | time sudo apt install -y git cmake git qttools5-dev qtbase5-private-dev libprocps-dev libopencv-dev g++ subversion wine-development vim okular flightgear libeigen3-dev gcc-multilib g++-multilib wine32-development wine32-development-preloader wine32-development-tools cmake-curses-gui plocate 26 | 27 | #build opentrack from source 28 | mkdir delanclip 29 | # opentrack URL: https://github.com/opentrack/opentrack/releases/tag/opentrack-2022.1.1 30 | cp TUE/INSTALL/opentrack-opentrack-2022.1.1.zip delanclip 31 | unzip opentrack-opentrack-2022.1.1.zip 32 | cd delanclip/opentrack-opentrack-2022.1.1 33 | mkdir build 34 | cd build 35 | cmake .. 36 | 37 | # run the text menu configuration program ccmake 38 | # set the eigen3 path to /usr/include/eigen3 39 | # set windows sdk to ON 40 | # choose continue 41 | # choose generate 42 | ccmake . 43 | 44 | # now compile and build 45 | make 46 | make install 47 | 48 | cd install/bin 49 | 50 | ./opentrack 51 | 52 | # in the opentrack gui, click the tool icon in the input section, then choose 53 | # Camera/Camera Settngs/Device to be your PS3 webcam, not an internal webcam 54 | # if using headtracking with flightgear, choose "Flightgear" under Output 55 | # if using another sim which runs under wine, chose "Wine" under Output 56 | # then select the tool icon to the right and enter the path to the sims' 57 | # wine prefix 58 | # select "Start" and verify that the webcam is tracking the LED's 59 | # and that raw tracker data and game data numbers change as the 60 | # LED fixture is moved around. 61 | 62 | # copy the delanclip profile to the opentrack config directory 63 | cp ~/esports-for-engineers/TUE/INSTALL/delanclip/DELANCLiP-Opentrack-Basic.ini ~/.config/opentrack-2.3 64 | 65 | #if you use 66 | # sudo ./opentrack 67 | # to avoid setting permissions 68 | # the config directory will be /root/.config/opentrack-2.3 69 | 70 | # if running delanclip with a sim that uses wine, call wine as follows 71 | # WINEESYNC=1 wine 72 | 73 | #if running delanclip with the flightgear sim, type these commands: 74 | 75 | #download the flightgear Headtracker add-on 76 | sudo apt install -y subversion 77 | svn checkout https://svn.code.sf.net/p/flightgear/fgaddon/trunk/Addons/Headtracker 78 | #or copy this directory from TUE/INSTALL/delanclip 79 | 80 | # run flightgear 81 | fgfs --addon=/home/main/Headtracker --generic=socket,in,25,127.0.0.1,5542,udp,opentrack 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /files/installFlightgear.sh: -------------------------------------------------------------------------------- 1 | clear 2 | echo "# To install the open source flightgear flight simulator used in THUR and SAT," 3 | echo "# use these commands (see introduction.txt):" 4 | echo "" 5 | echo "sudo apt install -y flightgear" 6 | echo " " 7 | echo "#now start flightgear via" 8 | 9 | echo "fgfs --launcher" 10 | 11 | echo "#select "Aircraft" on the left menu" 12 | 13 | echo "#select "Browse" at top center" 14 | 15 | echo "#Select "Add default hanger" at top right" 16 | 17 | echo "#(if flightgear crashes, simply restart it via "fgfs --launcher", then navigate back " 18 | echo "#to where you were by selecting Aircraft, then Browse)" 19 | 20 | echo "#You will now see a grid of more than 500 add-on aircraft. Using" 21 | echo "#the search box at top right, find and install the following" 22 | echo "#six aircraft:" 23 | 24 | echo "# 1. Supermarine Spitfire IIa" 25 | echo "# 2. Messerschmitt BF-109 G14" 26 | echo "# 3. North American Aviation P-51D-25-NA" 27 | echo "# 4. MiG-15bis" 28 | echo "# 5. F-86F Sabre" 29 | echo "# 6. General Dynamics F-16CJ Block 52" 30 | echo "# 7. Mikoyan-Gurevich MiG-21bis JSBSim" 31 | 32 | -------------------------------------------------------------------------------- /files/installationTips.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sim-museum/esports-for-engineers/ad05854b7b539ba1e37bccaccca73b906864904f/files/installationTips.pdf -------------------------------------------------------------------------------- /files/links_to_source_code.txt: -------------------------------------------------------------------------------- 1 | Source code links: 2 | Rowan's Battle of Britain (flight sim): https://github.com/gondur/BOB_Src 3 | Rowan's Mig Alley (flight sim): https://github.com/gondur/mig_src 4 | Free Falcon (flight sim): https://github.com/FreeFalcon/freefalcon-central 5 | flightgear (flight sim): https://www.flightgear.org/download/source-code/ 6 | speed dreams (sim racing): https://sourceforge.net/projects/speed-dreams/files/ 7 | pokerTH (poker game): https://github.com/pokerth/pokerth 8 | -------------------------------------------------------------------------------- /files/lutris_backup.py: -------------------------------------------------------------------------------- 1 | import os 2 | import shutil 3 | 4 | def backup_lutris(backup_dir): 5 | # Define paths to backup 6 | config_dir = os.path.expanduser("~/.config/lutris") 7 | share_dir = os.path.expanduser("~/.local/share/lutris") 8 | 9 | # Ensure backup directory exists 10 | os.makedirs(backup_dir, exist_ok=True) 11 | 12 | # Backup ~/.config/lutris 13 | config_backup = os.path.join(backup_dir, "config") 14 | if os.path.exists(config_dir): 15 | shutil.copytree(config_dir, config_backup, dirs_exist_ok=True) 16 | print(f"Backed up {config_dir} to {config_backup}") 17 | else: 18 | print(f"{config_dir} does not exist. Skipping...") 19 | 20 | # Backup ~/.local/share/lutris 21 | share_backup = os.path.join(backup_dir, "share") 22 | if os.path.exists(share_dir): 23 | shutil.copytree(share_dir, share_backup, dirs_exist_ok=True) 24 | print(f"Backed up {share_dir} to {share_backup}") 25 | else: 26 | print(f"{share_dir} does not exist. Skipping...") 27 | 28 | if __name__ == "__main__": 29 | # Specify the backup directory in the current working directory 30 | current_dir = os.getcwd() 31 | backup_directory = os.path.join(current_dir, "lutris_backup") 32 | 33 | backup_lutris(backup_directory) 34 | 35 | -------------------------------------------------------------------------------- /files/lutris_restore.py: -------------------------------------------------------------------------------- 1 | import os 2 | import shutil 3 | 4 | def restore_lutris(backup_dir): 5 | # Define paths to restore 6 | config_dir = os.path.expanduser("~/.config/lutris") 7 | share_dir = os.path.expanduser("~/.local/share/lutris") 8 | 9 | # Restore ~/.config/lutris 10 | config_backup = os.path.join(backup_dir, "config") 11 | if os.path.exists(config_backup): 12 | shutil.copytree(config_backup, config_dir, dirs_exist_ok=True) 13 | print(f"Restored {config_backup} to {config_dir}") 14 | else: 15 | print(f"{config_backup} does not exist. Skipping...") 16 | 17 | # Restore ~/.local/share/lutris 18 | share_backup = os.path.join(backup_dir, "share") 19 | if os.path.exists(share_backup): 20 | shutil.copytree(share_backup, share_dir, dirs_exist_ok=True) 21 | print(f"Restored {share_backup} to {share_dir}") 22 | else: 23 | print(f"{share_backup} does not exist. Skipping...") 24 | 25 | if __name__ == "__main__": 26 | # Specify the backup directory in the current working directory 27 | current_dir = os.getcwd() 28 | backup_directory = os.path.join(current_dir, "lutris_backup") 29 | 30 | restore_lutris(backup_directory) 31 | 32 | -------------------------------------------------------------------------------- /files/mathquiz.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | VENV_PATH="./ese_env" 4 | 5 | # Check if virtual environment exists 6 | if [ ! -d "$VENV_PATH" ]; then 7 | echo "Creating ese python virtual environment..." 8 | python3 -m venv "$VENV_PATH" 9 | fi 10 | 11 | # Check if already activated 12 | if [[ "$VIRTUAL_ENV" != "" ]]; then 13 | echo "ese pythom virtual environment already activated: $VIRTUAL_ENV" 14 | else 15 | echo "Activating virtual environment..." 16 | source "$VENV_PATH/bin/activate" 17 | fi 18 | 19 | if ! python3 -c "import sympy" 2>/dev/null; then 20 | echo "Installing sympy..." 21 | pip install sympy 22 | else 23 | echo "sympy is already installed" 24 | fi 25 | 26 | if ! python3 -c "import numpy" 2>/dev/null; then 27 | echo "Installing numpy..." 28 | pip install numpy 29 | else 30 | echo "numpy is already installed" 31 | fi 32 | 33 | if ! python3 -c "import matplotlib" 2>/dev/null; then 34 | echo "Installing matplotlib ..." 35 | pip install matplotlib 36 | else 37 | echo "matplotlib is already installed" 38 | fi 39 | 40 | 41 | python3 quiz.py 42 | -------------------------------------------------------------------------------- /files/prepareForGithub.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | def is_allowed_file(filename, dirpath): 4 | allowed_suffixes = {'.py', '.sh'} 5 | # Check if the file is in the root or a child directory of the root 6 | is_in_root_or_child = dirpath == '.' or os.path.dirname(dirpath) == '.' 7 | if is_in_root_or_child: 8 | allowed_suffixes.update({'.txt', '.TXT', '.pdf'}) 9 | return any(filename.endswith(suffix) for suffix in allowed_suffixes) 10 | 11 | def cleanup_files_and_dirs(): 12 | # Walk directory tree bottom-up to handle nested directories properly 13 | for dirpath, dirnames, filenames in os.walk('.', topdown=False): 14 | # Remove unwanted files 15 | for filename in filenames: 16 | filepath = os.path.join(dirpath, filename) 17 | if not is_allowed_file(filename, dirpath): 18 | try: 19 | print(f"Deleting file: {filepath}") 20 | os.remove(filepath) 21 | except OSError as e: 22 | print(f"Error deleting {filepath}: {e}") 23 | 24 | # Try to remove empty directories 25 | try: 26 | # Check if directory is empty after file deletion 27 | if not os.listdir(dirpath) and dirpath != '.': 28 | print(f"Deleting empty directory: {dirpath}") 29 | os.rmdir(dirpath) 30 | except OSError as e: 31 | print(f"Error deleting directory {dirpath}: {e}") 32 | 33 | if __name__ == "__main__": 34 | cleanup_files_and_dirs() 35 | 36 | -------------------------------------------------------------------------------- /files/runningOnWindows.txt: -------------------------------------------------------------------------------- 1 | Notes on running these games in MS Windows: 2 | 3 | In windows, under Properties, choose compatibility and set the windows 4 | version as set in the esports for engineers script for the game. In 5 | most cases, the game runs with wine set to Windows XP. 6 | 7 | Most of the games will run on Windows 10 with compatibity set this way, including qplus bridge and other bridge programs, GPL, rFactor, NASCAR Racing 2003, Chessmaster, MS Flight Simulator, Free Falcon and falcon bms 4.35. 8 | 9 | Mig Alley runs on Windows 10 also, under XP compatibility if you follow these steps: 10 | 1. unzip MigAlley/INSTALL/DDrawCompat-v0.5.1 11 | 2. copy the unzipped file, ddraw.dll to the rowan/mig directory 12 | 13 | Rowan's Battle of Britain runs on Windows 7, but apparently not on Windows 10 14 | 15 | Of course every game that runs in XP compatibility mode will run well on MS Windows XP. 16 | 17 | -------------------------------------------------------------------------------- /files/sortbysize.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check if directory argument is provided 4 | if [ $# -eq 0 ]; then 5 | DIR="." 6 | else 7 | DIR="$1" 8 | fi 9 | 10 | # Find all files and sort by size 11 | find "$DIR" -type f -exec ls -lh {} + | \ 12 | sort -rh -k5 | \ 13 | awk '{print $5 "\t" $9}' 14 | 15 | -------------------------------------------------------------------------------- /files/syllabusFor_eSportsForEngineers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sim-museum/esports-for-engineers/ad05854b7b539ba1e37bccaccca73b906864904f/files/syllabusFor_eSportsForEngineers.pdf -------------------------------------------------------------------------------- /files/tipsForLauncher.txt: -------------------------------------------------------------------------------- 1 | Tips for using ./launcher.py to install and run the games 2 | 3 | 1. Use wine 6 (installed via ./wine_default.sh) to install and run games if possible. Only use wine 7 (installed via ./wine_experimental.sh) if prompted to do so. Wine 7 is needed for installation of Qplus Bridge, Omar Sharif Bridge, memoryTraining, Battle of Britain, FS9, and BMS435. Switch back to wine 6 after installing these games. This is a recommendation, not a requirement. Wine 6 appears to provide more stability than Wine 7, but most games will run fine with Wine 7. 4 | 5 | 2. The install scripts will tell you which version of Microsoft Windows to emulate for each game. Pay close attention to this! If you specify the wrong version of MS Windows, the game will probably not work. 6 | 7 | 3. If a game requires HTML support, wine 7 should prompt you to install wine gecko. Install it. If not prompted to install wine gecko, you can download and install it manually: https://askubuntu.com/questions/1236811/how-to-install-html-gecko-support-in-wine#1236824 8 | 9 | 4. If a game doesn't install correctly, restart the install via: 10 | a. cd to game directory 11 | # delete the wineprefix directory, WP, which is where executables 12 | # and their dependences are stored 13 | b. rm -rf WP 14 | c. mkdir WP 15 | d. remove any files added to the INSTALL directory during the installation 16 | process. You can find a list of such files in ese/QA/installFilesToRemove.txt 17 | 18 | 5. You can save time during the installation process by placing all downloaded files in ese/tar. During installation any relevant files in that directory will be automatically moved to the game's INSTALL directory. Otherwise, you have to manually place each downloaded file into the correct install directory. 19 | 20 | 6. After installation is complete, you can reduce the size of the ese directory by removing install files that are no longer needed: 21 | 1. copy ese/QA/removeInstallFiles.sh to the ese directory and run it. 22 | 2. unmount any isoMnt files used to install .iso images. 23 | This will reduce ese directory size by roughly 40%. 24 | 25 | 7. Make sure enough disk space is available before installing eSports for Engineers. A full install of eSports for Engineers, installing all 40 games, takes up about 250 GB of disk space. Removing unneeded install files after installation is complete reduces ese directory size to 155 GB, or 77 GB if rFactor and BMS4.35 is not installed. (Installing BMS4.35 with all add-on content requires 102.4 GB of disk space, reduced to 76.2 GB after install files are removed). The corresponding disk sizes for rFactor are 44 GB and 16.9 GB. 26 | 27 | 8. Last but not least - each sim has different strengths. Use ./launcher.py to switch quickly between sims, using each for what it does best. Use THU/SDOE to practice stalling behavior, THU/Battle of Britain for a multi-layered systems simulation of a famous historical air war, flightgear and FS9 for two different instrument navigation and landing experiences. Don't get focused on any one sim - it's not the tool that matters, it's the experience being simulated. If it's not clear how to perform an action in one particular sim, switch to one of the alternative sims for insights and revisit the first sim later. Several sims are better than one - you never really understand something until you understand it in more than one way. 28 | 29 | -------------------------------------------------------------------------------- /secureInstallationInstructions.txt: -------------------------------------------------------------------------------- 1 | # You can install and run the games on a computer that does not have internet access. 2 | # (It is necessary to install many packages from the default Ubuntu repositories before running the games 3 | # so be prepared to do this from an Ubuntu cdrom, from Ubuntu .deb files, or through some other means) 4 | 5 | # If security is a concern, follow these steps: 6 | 7 | 1. Designate an old PC for use only with eSports for Engineers. (A gaming PC is overkill for these old game - a 5 year old, min-range PC works fine. An nvidia graphics card is helpful.) A complete install of all the games takes roughly 250 GB of disk space, so the partition should be larger than that, say 400 GB. 8 | 9 | 2. Install Ubuntu 24.04 LTS on this PC. (You could also create a new Ubuntu 24.04 LTS partition in a dual boot configuration, where you boot either Ubuntu or MS Windows, or Ubuntu or a different linux partition.) 10 | 11 | 3. Copy the esports-for-engineers tar file onto your Ubuntu 24.04 partition; unpack it with tar xzf. 12 | 13 | 4. follow the steps in introduction.txt (within the tar file and in the scripts directory on the github site), paying particular attention to the instructions about downloading and installing proprietary graphics drivers. 14 | 15 | 5. execute "./runThisScriptFirst.sh" (this will print out a sudo command for you to copy/paste into a terminal window) for downloading packages from the internet, unless you point to an ubuntu cdrom in /etc/apt/sources.list): 16 | 17 | (also in the githib site scripts directory, and in the tar file) to install the needed packages 18 | 19 | 6. Visit the esports for engineers forum for additional resources, using the link provided on the project github page 20 | 21 | 7. Follow the instructions in installationTips.pdf. Run launcher.py to configure and play the games. 22 | 23 | At this point you can disconnect from the internet permanently 24 | 25 | 26 | 27 | --------------------------------------------------------------------------------