Soulbanshee's EverQuest Settings Parser

Discussion in 'The Veterans' Lounge' started by Soulbanshee, Feb 1, 2024.

  1. Soulbanshee Augur

    I've created a parser to write values to the eqclient and memory ini files for DX tuning. Parser is easier and faster than manually editing all the installations on your system and provides a mechanism for those that are not comfortable or knowledgeable to make the changes on their own.

    Please do not rehost, redistribute, relink, modify and only for personal usage. Script, materials, inputs, or generated files may not be used in any method soliciting or generating any compensation. See the User Guide for the software agreement, usage and instructions. The parser writes values to ini files, no warranty or guarantee is provided. Recommend to keep a backup of your eqclient to restore if necessary. All writes have been succesfully tested as of the client settings 2/1/2024.

    User Guide

    What doesn't the parser do:
    • Does not access EverQuest account information or character associations
    • Does not modify EverQuest client, game files or game experience
      • The parser does write values to the ini files which is currently user permitted and not considered modifying game files
    • Does not access or modify EverQuest memory data
    • Does not access or modify EverQuest network transmissions
    • Does not send anything to an outside source or access anything from an outside source
    • Does not retain anything about your system other than saving the selected folder paths in the settings file that allow the script to run without prompting each time
    Parser Download
    Not compatible with Soulbanshee's Parsers vNext package. Unblock file in properties after downloading and unzip to its own directory. Requires PowerShell 5 optional update installed on Windows 7, 8, and 8.1 (http://aka.ms/wmf5download).
    Execute "_Run Initialize Settings Parser.cmd" to search installed programs and features registry for your EQ clients. No progress will be displayed. Execution is finished when settings.ini appears.
    Execute "_Run Settings Parser.cmd" to launch the parser. Interface will be greyed out as dxdiag is queried for hardware info.
    Minimum requirement SP1 will be queried whether it's installed or not.
    • On Windows 7, will display Yes or No.
      • I have no Windows 7 system to verify query accuracy.
    • On Windows 8 through 10, will display Yes.
    Minimum requirement platform update for DX will be queried whether it's installed or not.
    • On Windows 7 through 8, will display Yes or No.
    • On Windows 8.1 through 10, will display Yes.
    Minimum requirement hardware DX feature level will be queried whether its supported or not for each GPU.
    • On Windows 7, minimum requirement hardware DX feature level 11_0 will display Yes.
    • On Windows 8 through 10, minimum requirement hardware DX feature level 11_0 will display Maybe as it may not fully support the client graphics engine. Optimal requirement hardware DX feature level 11_1 will display Yes.
    Select which EverQuest installation to write to from the drop down. Do not have any running clients when you write to the installation as the changes will be wiped out after you exit.
    The eqdevice.txt file is added when you run Game Configuration and select which GPU EQ should load on. This file is not required to launch the client and a corrupted file may cause launch errors or in game issues. Recommendation is to ensure eqdevice.txt is removed from each installation unless required to force EQ to set a specific GPU to load on. If required, remove existing eqdevice.txt and run Game Configuration again to refresh the file when encountering issues.
    Eqclient settings are the ones not accessible in game that may be pertinent to DX tuning.
    Advanced memory settings are the tunable settings for memory optimizations and reclamation. Saving advanced settings will copy existing memory ini file and write the modified values to memory mode 2, and set eqclient to use the new memory ini file and graphics memory mode to 2 (most memory). Deleting advanced settings will delete the new memory ini file, and set eqclient to use the default memory ini file. Parser will display whether new memory ini file is set in eqclient or not.
    • Saving will always copy the new memory ini file from the default to account for changes from launcher patching
      • To not change the default value in the copy, blank out the text field
    • Text fields will validate and sanitize whether the input has acceptable values and only write if validation is passed
      • Integers must start with only numbers and will drop any trailing characters
      • Floats must start with only numbers, contain a period, a single digit, and the letter f and will drop any trailing characters
    • Deleting will refresh the display with the default memory settings
    • Tuning settings can be found in various threads on these forums
    TextureLoadsPerFrame--The number of deferred textures the renderer will load from disk each frame.
    AnimationLoadsPerFrame--The number of deferred animations the renderer will load from disk each frame.
    BitmapsPerFrame--The number of textures that will be analyzed for reclamation each frame.
    DownsamplesPerFrame--The maximum number of textures that can be down-sampled each frame.
    DownsampleDistance1--If a texture is further than this distance (in feet) from the camera, it will have one MIP level removed when down-sampled.
    DownsampleDistance2--If a texture is further than this distance (in feet) from the camera, it will have two MIP levels removed when down-sampled.
    UpsamplesPerFrame--The maximum number of textures that can be re-loaded per frame if they have gotten closer than UpsamplesDistance.
    UpsamplesDistance--The distance at which a texture will be upsampled to a higher quality.
    TimeoutNearDistance--If a texture is further than this distance (in feet) from the camera and not being rendered, it will use a linearly interpolated timeout between TimeoutNearTime (milliseconds) and TimeoutFarTime (milliseconds).
    TimeoutNearTime--Timeout (milliseconds) since last render for closer textures.
    TimeoutFarDistance--If a texture is further than this distance (in feet) fromthe camera and not being rendered, it will use timeout of TimeoutFarTime (milliseconds) before being unloaded.
    TimeoutFarTime--Timeout (milliseconds) since last render for far away textures.
    MaxTextureQuality--The maximum quality that textures in the game will be loaded at (0 is highest, 2 is lowest).
    MinTextureQuality--The minimum quality that textures in the game will be loaded at (0 is highest, 2 is lowest).
    TextureDistance1--The distance beyond which textures will be loaded at the medium texture quality.
    TextureDistance2--The distance beyond which textures will be loaded at the low texture quality.
    MaxHighQualityTextureMem--The maximum amount of memory that can be used by the game on high quality textures.
    DownsampleTextureMem--The minimum texture memory that must be loaded for the game to begin downsampling textures that have reached downsampling distances.
    Fanra, Twelvestrings, Rijacki and 3 others like this.
  2. Metanis Bad Company

    Nice work!
    Nennius likes this.
  3. Nennius Curmudgeon

    Well done!
  4. Dyna2 New Member

    Will EQ eventually fix itself?
    I do not feel I could do even this.
    I have a great computer all that is needed and windows 10 will it update our game to match the changes?
  5. Soulbanshee Augur

    It provides, in my opinion, a better interface to change the values the Game Configuration provides (and also won't change your game resolution in the process like the configurator will). It also has 2 values to change that only exist in the ini. These values will not be tuned by EQ in the future, but can provide performance improvements to users in the meantime.
    • Texture Quality
    • Mip Mapping
    • Texture Caching
    • Dynamic Lighting
    • Texture Compression
    • Use Lit Batches
    • All Luclin PC Models Off
    The advanced memory settings are what are likely to be changed in an update. You can use the parser to make the recommended changes now until that update comes, and then use the delete settings to remove it and revert to the default settings after that patch. You could alternatively use save settings again to apply your own modifications to the update changes.
    Since we (users) have to make a copy of the default settings file to modify the memory settings, EQ will not patch the modified file and the parser does not monitor for any changes coming from patches to apply to the modified file by itself. Everything has to be initiated by the user.
    The advanced memory settings are the list at the end of the top post.
    Cairbrae lists some preliminary recommendations here:
    https://forums.daybreakgames.com/eq...he-game-unplayable.295587/page-8#post-4280171
    There are various posts by players with their recommendations that worked for their system.

    Also worth noting, this is only for tuning EQ ini settings, this touches no settings of your operating system, drivers, etc.
    Dyna2 and Metanis like this.
  6. MiataDriver Augur

    The parser does not seem to be able to find my EQ folder. Any chance you could allow us to just enter the folder or navigate to it?
  7. Soulbanshee Augur

    That can happen if you did not install Launcher under your local user because its a per-user installer. The "Load EverQuest directories" is a button that launches a folder browser you can select a single EQ install. If you want to list multiple folders, before you launch the tool you can manually edit settings.ini and comma separate the folders:

    Code:
    [SettingsParser]
    EverQuestDirectories=C:\EverQuest1,C:\EverQuest2,C:\EverQuest3
    
  8. Angahran Augur

    Quick question, maybe I'm simply missing something?
    There are 3 different memory configurations in the .ini file, a 'low' and 'middle' and a 'high',. but I only see one shown in the parser.
  9. Soulbanshee Augur

    The suggestion from the devs was to change the settings for the most memory setting (high), so that's all I implemented. I was also trying to not make the interface a nightmare with 54 different boxes to input.
    Angahran likes this.
  10. Dirtyleg New Member

    Nice work!
    Using the word Parser in the title kind of threw me off a bit though:)
  11. Angahran Augur

    So this updates the 'high' values :)

    Thank you.
  12. Cairbrae Developer

    These two options are obsolete and not used in the EQ game client.
    Twelvestrings likes this.
  13. Soulbanshee Augur

    Feature update, same links. I've fixed up the user guide to be more friendly in the instructions.

    User Guide

    Parser Download

    Settings Parser 1.1
    New feature added:
    • Hardware DX features now display in a data grid with the driver version and date for each card (this comes from the dxdiag info).
    • Will display which card is selected in eqdevice.txt and if the card is DX feature level compatible as opposed to file present or not. To fix the file you can either delete it or save the card name in eqdevice.txt as displayed in the settings parser.
    • Added a log file reset function. Reset log file will rename any existing log files for EQ to start a new one, it will not delete or clear the log file or move it to a new directory.
    • Removed obsolete Texture Caching and Texture Compression (forgot about making an update after these were identified as unused).
    • Added Always On Top (Overlap Windows Taskbar in game). This may be causing issues with alt-tab on certain systems if enabled.
  14. Soulbanshee Augur

    Feature update, same links.

    User Guide

    Parser Download

    Settings Parser 1.2
    New feature added:
    • Added ClientCore reset function. Restricting a client to a CPU core instead of allowing Windows to manage CPUs can reduce performance and increase lag.
    • Added Use New UI Engine for convenience as it requires restarting the client to take effect anyway and for visibility.
    • Added Max Frames Per Second. Range value between 10 and 150 (unlimited). Recommendation is to leave at 150 and also higher than Max BG FPS, but if experiencing reduced performance boxing set to 60.
    • Added Max Background FPS. Range value between 9 and 150 (unlimited). Default value 9 will impact the /follow command and fall rate when boxing, recommendation is to set to 59 and also lower than Max FPS, but if experiencing reduced performance boxing set to 32.
      • Recommendation is to leave Max FPS at 150 or match display refresh rate (ex. 60) and raise Max BG FPS to display refresh rate - 1 (ex. 59).
    Cairbrae likes this.
  15. Cairbrae Developer

    The recommendations of 60 or 59 or 32 stem from having target rates that match display refresh rates. LCD typically refresh at 60Hz for that guidance example. These numbers can be more general and are not magic numbers per se.

    For example, if you have a 72Hz refresh display, and you want to limit FPS to that rate for multi-boxing, then MaxFPS=72 and MaxBGFPS=71 makes good sense. If, on the other hand, your display refresh is 48Hz on a laptop, then MaxFPS=48 and MaxBGFPS=47 makes sense instead.
    Vumad, minimind, Roxas MM and 4 others like this.
  16. Vumad Cape Wearer

    Why set the background FPS 1 lower than the FPS instead of the same?
  17. Lodestar The Undefeated


    I'd like a technical answer to this question as well.

    I don't see a reason for setting background fps arbitrarily 1 fps lower. It could result in undesirable artifacts in that of screen tearing or something else avoidable on a player's secondary monitors (i.e., tearing, de-sync, imperfections due to 59fps on a 60hz monitor, missed opportunity in utilizing full refresh rate available).
  18. Lodestar The Undefeated


    Could you provide technical reasoning in Everquest for setting background FPS to exactly 1 fps lower than foreground MaxFPS?

    Example: Given player has two 165hz IPS panels. Why should foreground MaxFPS be set to 165 for character A, and background FPS set to 164 for character B?
  19. Cairbrae Developer

    No reason, just a mental note really. They can be the same value because Windows process scheduling doesn't have that much resolution (apx 15ms typically, and potentially longer for background processes). When you ALT+TAB back and forth, you want those two values to be close enough to target the same effective FPS within the margins of the scheduler.
    Nennius, Vumad and Lodestar like this.
  20. Soulbanshee Augur

    Feature update, same links.

    User Guide

    Parser Download

    Settings Parser 1.3
    New feature added:
    • Added Fix Files function to fix any read only files in your EQ directory.
    • Added Log Interval. Log interval is the delay in seconds that messages are written out to the file, default value is 1. A value of 0 will write immediately to the file without any delay, and could adversely impact performance on certain systems.
    Fanra and Nennius like this.