+------------------------------------------+ | PQBOOST PHOST3 Build Queue modification | | version 2.0.4 | +------------------------------------------+ (http://phost.de/~vagabond/addons/#pqboost) (c) 1998-2002 Stefan Glasauer (PDK version by Heiko Schlenker) 0. NOTE If you switch from QBOOST to PQBOOST, then you cannot use your old configuration files. The syntax of the command line is different and the first line of pqboost.cfg has to start with "% PQBOOST". 1. WHAT IS PQBOOST? PQBOOST is a small freeware host add-on for the VGA Planets host program PHOST Version 3 and higher. It is a PDK version of QBOOST. QBOOST's TeamGameMode has been replaced by an AllianceGameMode. This add-on is meant to be executed in the AUXHOST phases of host processing. PQBOOST is a program for MS-DOS and UN*X which modifies the PHOST configuration file PCONFIG.SRC in order to give weak players better chances to build ships after the 500 ship limit is reached. The current implementation of the PHOST3 build queue favors strong players who already have a large number of ships. Weak players cannot build ships if the stronger players have accumulated a high player activity level (PAL) and get turn activity level points (TAL) each turn. The PCONFIG parameter PALPlayerRate configures how much accumulated player activity (PAL) and current player activity (TAL) will affect the build queue priority of old and new ship build orders. Therefore, PQBOOST aims to modify this parameter each turn in order to adjust the effect of TAL and PAL so that weak players get a higher boost for the same activity than strong players. Consider a race with 200 ships successfully destroying an enemy starbase and a weak race with 10 ships doing the same. Evidently, the weak race took a much higher risk. But both races get the same TAL, their new build orders will therefore get the same build queue priority. With PQBOOST, the weak race will get a much higher priority than the strong race. Take another case: the strong race fights 20 battles per turn, the weak race cannot do the same, therefore the build orders for the strong race will always get a higher priority. Thus, the weak race won't build any ships anymore once the ship limit is reached. Get the PHOST docs for more information about the PHOST build queue. 2. QUICK START If you have no other utilities running in AUXHOST2 (no AUXHOST2.INI file present), then your PQBOOST setup becomes easy: To run PQBOOST, copy all files into the host game data directory, then change the following 2 lines in PCONFIG.SRC: ShipBuilding_1 = Normal to ShipBuilding_1 = Execute pqboost1.ini and ShipBuilding_2 = Normal to ShipBuilding_2 = Execute pqboost2.ini For security purposes, PQBOOST is configured to hide the extent of the changes from players. This can be changed (see below PROGRAM OPERATION). To increase the effect of PQBOOST, modify RelativePower in PQBOOST.CFG up to 5. See below (PQBOOST.CFG) for more info. If the game is a game with "CPEnableAllies = Yes", consider to set the CFG parameter AllianceGameMode to 1 (see below PQBOOST.CFG). If your PHOST setup already contains an AUXHOST2 phase, or other add-ons running in the PHOST3 fine grain phases, then follow the instructions in DETAILED PROGRAM OPERATION below. 3. FILELIST: PQBOOST comes with the following files: PQBOOST.EXE the executable (MS-DOS only) PQBOOST.C the source code PQBOOST.TXT this file PQBOOST.CFG default configuration file for PQBOOST PQBOOST1.INI PHOST3 PCONTROL file PQBOOST2.INI PHOST3 PCONTROL file AUXHOST2.INI file for the AUXHOST2 phase PQBOOST.EXE can reside anywhere on your harddisk, PQBOOST.CFG, PQBOOST1.INI, PQBOOST2.INI and AUXHOST2.INI must reside in the host game directory. 4. DETAILED PROGRAM OPERATION PQBOOST takes up to four commandline parameters, the first determines the phase (-p1, -p2, -p3), the second an optional error log file, the third the host game directory and the fourth the VGAP root directory: pqboost [options] <GameDirectory> [<RootDirectory>] options: -h OR -H -- prints help summary and exits -v -- prints program version and exits -e file -- use `file' as an error log file -p phase -- PQBOOST phase Example: pqboost -p1 c:\vgapl\game1 PQBOOST runs in three phases: -p1 before the PHOST3 fine grain hosting phase ShipBuilding_1 -p2 before the PHOST3 fine grain hosting phase ShipBuilding_2 -p3 in the AUXHOST2 phase For a detailed description of what PQBOOST does in those phases see below under PQBOOST phases. Instructions for setting up your PCONFIG.SRC file for running PQBOOST: Copy the files PQBOOST1.INI and PQBOOST2.INI to your PHOST game directory and modify PCONFIG.SRC in the section called %PCONTROL. Replace the line ShipBuilding_1 = Normal with the new line ShipBuilding_1 = Execute pqboost1.ini and replace the line ShipBuilding_2 = Normal with the new line ShipBuilding_2 = Execute pqboost2.ini Copy the file AUXHOST2.INI to your host game directory, too. If you already have an AUXHOST2.INI file, copy the line from the PQBOOST AUXHOST2.INI file to your AUXHOST2.INI file. If you run PHOST from a different directory than the game data directory, you must modify the three INI files to contain the current path to PQBOOST.EXE and to the game data directory. Example: Assume that PHOST.EXE and PQBOOST.EXE reside in C:\PHOST and the game directory is C:\PHOST\GAME1. Then each call to PQBOOST in the three INI files must be as follows: C:\PHOST\PQBOOST -p# C:\PHOST\GAME1 where -p# denotes the respective PQBOOST phase. Now PQBOOST is ready to run. PQBOOST uses the following files from your game directory: SHIP.HST (the host file containing all ships) HULLSPEC.DAT (the hull specification file) PCONFIG.SRC (the PHOST configuration file) PQBOOST.CFG (the configuration file, if present) AUXDATA.HST (the PHOST file containing the alliance info) Since PQBOOST is linked with the PDK library these files are required too: beamspec.dat torpspec.dat race.nm engspec.dat truehull.dat xyplan.dat planet.nm nextturn.hst pdata.hst bdata.hst mines.hst gen.hst hullfunc.txt All files have to be in the same directory, otherwise PQBOOST will quit with an error message. PQBOOST modifies only the line containing the parameter PALPlayerRate in the PCONFIG.SRC file. PQBOOST will generate a backup of the old PCONFIG.SRC file called PCONFIG.OLD. PQBOOST will skip all empty lines containing no text. PQBOOST will create a ASCII text log file in the game directory called PQBOOST.LOG. Study this file to see whether PQBOOST ran successfully. PQBOOST will additionally create a temporary file called PQBOOST.TMP which will be deleted during phase 3 and a temporary file named PCONFIG.QBO which will be erased automatically in each phase. 6. PQBOOST.CFG The first line should be "% PQBOOST". Lines beginning with the character # will be regarded as comments, like in the PHOST file PCONFIG.SRC. The CFG file contains up to eight parameters (see also FORMULAS below). - EnableSecurity (1 or 0, default 1) determines whether the players can see the modifications made by PQBOOST to PCONFIG.SRC (see SECURITY ISSUES below). - BeamsRequired (default 5, minimum 0) determines how many beams a ships must have to count for the computation of battlemass. - Baysrequired (default 3, minimum 0) determines how many torpedo tubes or fighter bays a ship must have to count for the computation of battlemass. - RelativePower (default 2, minimum 1, recommended range 2 to 5) determines how the battlemasses of each race will be weighted for the computation of the PALPlayerRate parameter. The value can be any real number, such as 2.3. RelativePower allows the host to modify the effect of PQBOOST on the stronger races. The higher the setting, the more pronounced will be the difference between the stronger and weaker races (with the weaker getting even more of an advantage). - EnableESBandFCB (0 or 1, default 0) if 1, the hull mass is boosted according to the pconfig.src parameters EngineShieldBonusRate and AllowFedCombatBonus. - AllianceGameMode (0 or 1, default 0) if 1, alliances have an influence on the allies' PALPlayerRate -- it will decrease. * ShipFactor (range 0.0 to 1.0, recommended value 0.4) determines how a ship level alliance will be weighted for the computation of the PALPlayerRate parameter. * PlanetFactor (range 0.0 to 1.0, recommended value 0.2) determines how a planet level alliance will be weighted for the computation of the PALPlayerRate parameter. * MinefieldFactor (range 0.0 to 1.0, recommended value 0.3) determines how a minefield level alliance will be weighted for the computation of the PALPlayerRate parameter. * CombatFactor (range 0.0 to 1.0, recommended value 0.4) determines how a combat level alliance will be weighted for the computation of the PALPlayerRate parameter. * VisionFactor (range 0.0 to 1.0, recommended value 0.2) determines how a vision level alliance will be weighted for the computation of the PALPlayerRate parameter. - ShowRanking (0, 1, 2 or 3, default 0) if 1, an individual message about the ranking list position will be sent to each player. If 2, a public ranking list according to the battlemass will be generated. If 3, the battlemass of each player will be shown too. * ShowTotalBattlemass (0 or 1, default 0) if 1, each player will be informed about the total battlemass. * RankinglistInterval (min. 1, max. 255, default 1) determines wether a ranking list will be shown each turn. Examples of the effect of RelativePower on PALPlayerRate: A RelativePower of 1 means that a player owning 30% of the battlemass of all races will have a PALPlayerRate of 70. For higher values of RelativePower, the PALPlayerRate will change depending on the relative strength of other players. In our example, let us assume for simplicity that only 4 players are playing. Two cases are considered, one in the battlemasses are distributed as 50% 30% 10% 10% and one in which they are 30% 25% 25% 20%. The tables below gives the resulting PALPlayerRate for different values of RelativePower: Mass | 50% 30% 10% 10% Mass | 30% 25% 25% 20% -------|----------------- -------|----------------- RelP 1 | 50 70 90 90 RelP 1 | 70 75 75 80 RelP 2 | 31 75 97 97 RelP 2 | 65 75 75 84 RelP 3 | 19 82 99 99 RelP 3 | 59 76 76 88 ... | ... | RelP 10| 1 99 100 100 RelP 10| 25 88 88 99 As one can see, the higher the RelativePower parameter, the more pronounced is the difference between the PALPlayerRate of the strongest and weakest player. Furthermore, the player owning 30% of the battlemass will not have the same value for a RelativePower larger than unity in both cases, rather his PALPlayerRate now depends on his relative strength. Very high settings, such as 10, will make it almost impossible for strong players to build new ships (as in case 1) or will make the difference between players with almost equal battlemass (see case 2) inadquately large. 7. FORMULAS PQBOOST calculates the sum of squares of the masses of all battleships of all races. Battleships are ships with more than BaysRequired fighter bays or torpedo tubes and/or more than BeamsRequired beamweapons. The PALPlayerRate is then computed by the following formula: PALPlayerRate[i]=round(100*(1-mass[i]^RelativePower/sumofmass)) where mass[i] is the sum of battleship masses for race i and sumofmass is the sum of all mass[i]^RelativePower. For explanation of RelativePower see section 5 above. If AllianceGameMode is 1, PQBOOST will "punish" alliances: PALPlayerRate[i]=round(100*(1-(mass[i]^RelativePower+k[j]*mass[j]^RelativePower+...)/sumofmass)) k[j]=min(1,sumof(K)) +a K=0 (alliance accepted) +c or ~c K=CombatFactor/C (combat level enabled) +m or ~m K=MinefieldFactor/C (minefield level enabled) +p or ~p K=PlanetFactor/C (planet level enabled) +s or ~s K=ShipFactor/C (ship level enabled) +v or ~v K=VisionFactor/C (vision level enabled) C=sumof(AllianceFactors)/1.5 if sumof(AllianceFactors) > 1.5 C=1.0 if sumof(AllianceFactors) <= 1.5 sumof(AllianceFactors):=CombatFactor+MinefieldFactor+PlanetFactor+ShipFactor+VisionFactor 8. SECURITY ISSUES A player can, if he knows the PQBOOST parameters, compute the battlemasses of all other players from his own battlemass and the current PALPlayerRate given in the PCONFIG.SRC file. Especially in games without scores this is not desired. To prevent this, you should enable the EnableSecurity parameter in the PQBOOST.CFG file by setting it to 1. By doing this, the player will receive an unmodified PCONFIG.SRC file and will not be able to deduce the strength of other players. 9. KNOWN PROBLEMS Other possible add-ons which modifiy the PALPlayerRate setting cannot run together with PQBOOST. There is, however, no problem using other add-ons modifying the file PCONFIG.SRC. 10. THE POOH EXCEPTION The Pooh Exception (courtesy Joshua Io) is a way to run PQBOOST only in AUXHOST1. Simply add a line to AUXHOST1.INI which calls PQBOOST, that's all. However, running PQBOOST in AUXHOST1 is not recommended for the following reasons: - the outcome of battles etc. will no longer influence the PALPlayerRate - players can see the PALPlayerRate regardless of the EnableSecurity setting Therefore, don't use the Pooh Exception! 10. REVISION HISTORY Version 2.0.4 - Fixed a bug: The FedCrewBonus (FCB) was not properly considered. Version 2.0.3 - EnableESBandFCB implemented. Suggested by Daniel Bruedigam. Version 2.0.2 - Added replacement snprintf() function. Version 2.0.0 - Switched to automake/autoconf. Version 1.15 - Fixed a bug reported by Piotr Winiarczyk. PQBoost spoiled pconfig.src if sumofmasses was zero. Version 1.14 - ranking list implemented Version 1.12 - AllianceGameMode implemented Version 1.6 - first release version 11. PQBOOST PHASES As mentioned above, PQBOOST should be run in three phases, two of them just before ship building, the third before PCONFIG.SRC is sent to the players. PQBOOST performs the following operations in each phase: Phase 1 just before ShipBuilding_1: PQBOOST makes a backup of the original PCONFIG.SRC file to PCONFIG.OLD, remembers the original PALPlayerRate setting in the file PQBOOST.TMP, and modifies PCONFIG.SRC according to the current player strength. Phase 2 just before ShipBuilding_2: PQBOOST modifies the PCONFIG.SRC again according to the current player strength. Phase 3 in AUXHOST2: If EnableSecurity is not 0, PQBOOST modifies PCONFIG.SRC so that the original line containing the PALPLayerRate appears again. Therefore PHOST will send the unmodified file to the players. The file PQBOOST.TMP is deleted. In each phase a temporary file called PCONFIG.QBO is created and erased again. 12. ACKNOWLEDGEMENTS From the original QBOOST docs: Many thanks to Joshua Io for the idea to this add-on and for suggestions, to Andrew Sterian for important comments and hints, to Joshua Io and his players for testing the program in a real game, and Oliver Korn for suggestions. I, Heiko Schlenker, would like to thank Stefan Glausauer for giving me the source code of QBOOST and for his patient support, Matthias Degenhardt for testing and his valuable suggestions and Mathew Rathgeb for testing PQBOOST in a real game. 13. DISCLAIMER pqboost -- An add-on to boost the PHOST3 build queue (PDK version of QBOOST) Copyright (C) 1998-2002 Stefan Glasauer Author: Stefan Glasauer <S.Glasauer@lrz.uni-muenchen.de> PDK version by Heiko Schlenker <hschlen@gmx.de> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. PQBOOST was written in ANSI-C. The original QBOOST was written in Borland-Pascal. PQBOOST is linked with PDK software library. VGA Planets is a trademark of Tim Wisseman. PHOST and PDK is copyrighted by Andrew Sterian, Thomas Voigt, Steffen Pietsch and Stefan Reuther. If you find any bugs or if you want to make any suggestions, please contact me. Please report ANY problems. Stefan Glasauer E-Mail s.glasauer@lrz.uni-muenchen.de Maintainer of the PDK version: Heiko Schlenker <hschlen@gmx.de>
Last Modified: 1-Jun-2002 <URL:http://phost.de/~vagabond/addons/pqboost/pqboost.html> <URL:mailto:the_vagabund@gmx.de> |