Introduction
GameHelper is an overlay created from scratch for league start scenario. It's not created to replace existing overlays (e.g. PoEHelper). Basically, every league it takes few hours to few days to fully update PoEHelper and that's not good for anyone. Developers who are working on updating the overlay misses the league start economy advantage. Users, who are waiting for the overlay, have a wait until someone fixes the overlay. At-least, that's what I have felt in the past, it may be different for different people.
Rules
Here are some rules
- GameHelper will always have limited number of features/plugins because it's very time consuming to create/maintain features.
- Enhancing existing features/plugins will be top priority (e.g. there is a new flask in the game, please add that etc)
- Fixing bugs/Usability Issues will be top priority unless it requires more offsets in that case see first rule.
How to report a bug/issue
Bug Report Rules
Without these things in your bug report, I am going to ignore it.
- The exact version you are using (mentioned on top of GameHelper setting window)
- If it's a crash share Error.log file content. Please put it in [ CODE ] [ / CODE ] (without spaces), don't be an *******.
- If it's not a crash, share screenshot/video of what you are experiencing.
- What POE client you are using?
- Are you using keyboard/mouse or console controller
- Steps I can use to reproduce the issue on my side?
History
How long it took to update on league start (league start = when player can enter The Twilight Strand)
League 3.15: Updated within 1 hour of league start.
League 3.16: Updated within 5 hours of league start.
League 3.17: Updated within 30 mins of league start.
League 3.18: Updated within 15 mins of league start.
League 3.19: Updated within 1 mins of league start.
League 3.20: Skipped this league
League 3.21: Updated within 30-40 mins of league start (added a lot of new offsets and static analysis tool wasn't ready/updated)
League 3.22: Updated within 15 mins of the league start.
League 3.23: Updated within 1 hour 30 mins of the league start.
League 3.24: Skipping the league start, busy with RL stuff.
League 3.25: Updated within 10 mins of league start.
Some cool things about GameHelper
List
- GameHelper uses VSYNC, so it basically execute on the FPS your monitor can support (e.g. 60FPS, 120FPS, 144FPS etc.)
- There is no unnecessary cache is GameHelper, so all the data read from the game is fully-up-to-date.
- GameHelper memory reading is around 30+% faster than other overlays memory ready (all credit goes to the library I am using).
- GameHelper doesn't use SharpDX and every library it uses is fully up to date. It uses latest version of .net.
- All the offsets/nested-offsets/constants/conditions is moved to one GameOffset.dll
- 99% of it is updated using static-analysis-tool so it can be updated before league is officially started.
- Whole software that reaches your computer is complied directly in GitHub pipeline (i.e. Actions).
- Support custom fonts, sizes and languages that can be loaded & changed at runtime (e.g. Chinese, Russain etc etc).
GameHelper dependencies/Requirements
Libraries
In all of these libraries I have contributed so I can make GameHelper on top of them. You can easily google them or search them in GitHub. I would recommend using these libraries if you want to create your own overlay (for POE or any other game) from scratch.
- ClickableTransparentOverlay (no need to install/download)
- Coroutine (no need to install/download)
- ProcessMemoryUtilities.Net (no need to install/download)
- .NET 8 (can be installed from here)
List of Plugins and their features
Game Helper plugins
Before I talk about plugins and features in GameHelper. I do wanna mention that one plugin in GameHelper is not equal to one plugin in PoEHelper. To really understand what a plugin does in GameHelper you have to look at the features that the plugin provides. For example one radar plugin in GameHelper covers PoEHelper minimapicons, delve, heist, radar plugins.
Core
The purpose of Core is to configure and debug GameHelper. Basically, any configuration you do in this Core setting tab will impact all other plugins. For example, when you set key-press delay over here, it will impact all the plugins that wants to press a key. Following are the list of features this plugin provides.
- Configure GameHelper to mark some monsters path as point of interests monsters (which can later be configured in Radar/Healthbar plugin to show them differently)
- Allows configuring GameHelper settings that applies to all plugins (e.g. key press cooldown/timeout, changing fonts, disabling game entity processing in town/hideout and etc).
- Show performance (fps/ram/time-to-load-one-frame) related stats
- Allows exploring POE Game UI Elements. NOTE: It's just for fun purposes, it has no real use case in game helper.
- Visualize all the data read from the POE game. This allows you to do things like find new preloads, find conditions to trigger flask, debug issues etc etc.
- Allows testing of auto-quit feature
Preload Alert
This is the most basic/simple plugin in GameHelper. It's purpose is to is to show what's in the map/area/zone as soon as you enter the map/area/zone. Following are the list of features this plugin provides.
NOTE: POE have mechanisms in place against this plugin so there are many time when this plugin is just lying to you
- Allows you to add/modify/remove preloads from the Overlay menu
- Allows you to move the preload-alert window anywhere on the map and lock it.
- Allows you to hide preload alert window under different scenarios.
Radar Plugin
The purpose of this plugin to display everything in a current map/area/zone on the Large and Mini map. It displays them intelligently such that you can easily figure out what they are and where they are just by looking at the large/mini map. Doesn't matter if they are in the network bubble or not. So basically if you miss a monster or group of monsters you can easily see where they are. Basically, radar plugin draws anything you can think of in the game. if it doesn't draw it, post a message in this thread and and I will look into it. OR if the icon isn't accurate, do the same.
- Maphack without modifying game data/memory/code -> Draws the game map on the overlay.
- One of the first plugin to introduce pixel perfect map in overlays with modren day POE.
- Allows users to change icon or icon size of any monster/chest/player/npc/etc it's drawing on the map.
- Draws all the monster and chests icons on the large/mini map.
- Draws all league specific (e.g. delirium, legions, heist, delve etc etc) Icons to help people with that league content.
- Allows you to display other players name on the map.
- Draws important tiles (point of interests) of the Area/Zone. This allows you to draw waypoints, next/side area transitions, lab-trials, quest item locations etc etc.
- Allows the user to configure what tile is important to them.
- Allows the user to display custom text for the important tile/transition (e.g. "SideQuest~Skip~No SkillPoint")
- Allows user to set culling window to limit the drawing on the screen.
- Radar works with in-game-map zoom/movements & any game resolution.
AutoHotKeyTrigger Plugin
The purpose of this plugin is to automatically drink any flask or trigger any skills in the game. It also allows you to autoquit on low life/ES.
- Allows user to drink any flask or use any skill based on certain events/conditions.
- Can have infinite number of conditions to trigger a specific flask/skills.
- Can have infiinite number of Rules for different flask/skill. NOTE: also support enabling/disabling a specific rule.
- Allows user to create multiple profiles for different characters.
- Debug mode to tell the user why flask/skill isn't working OR are we spamming flask/skill?
HealthBars Plugin
The purpose of this plugin is to show health bars on the game entities.
- Enable/Disable healthbars based on monster type
- Change healthbars colors based on monster type
- Shows culling strike/Gradation mark on the health bar
HOW-TO
Helping Guides
There are some configurations that the user is expected to do before they can use this program at its full potential. This is due to 2 reasons: (1) Game helper is using limited number of offsets, it can't auto configure a lot of things. (2) To ensure it resolves everyone needs/wants. My advice is that you get this program before the start of the league and configure it to how you want to use it, so that during league start you don't have to worry about the configurations. This is possible because upgrading game helper (with the recommended upgrade process shown in the F.A.Q section) will not wipe/modify your current configuration. Also, always backup your configurations just in case there is a bug or something.
Core Configuration
When you get this software, the first thing you need to do (before even starting it) is to also get the misc files provided in this post (i.e. preloads.txt and important_tgt_files.txt) and put them in the proper folder (folder name provided along side the download link). Next thing you need to do is to start this software and configure the Key Timeout Value as shown in the window below. As a rule of thumb, set this value to 2 * your average POE game latency.
NOTES: The reason I am not reading the latency from the game and asking user to configure it is to reduce 1 offset (each offset matter). Files like important_tgt_files.txt and preloads.txt are not provided in the base program because I do not want the upgrade to override them.
Preload Alert Configuration
There are only 2 things to do over here.
- Figure out the preload alert window size, location and background colour that best works for you.
- Find and add preloads that are important to you. (skip this if you have copied the preloads.txt from this post)
For the first you have to uncheck all the checkboxes in the setting window as shown in the image below. This will allow you to edit the Preload Window and its background. Once you are satisfied with the configuration, just double click the Preload Window to lock it. To add or modify the preload use the Add New Preload and All Important Preloads section of the setting window (respectively) as shown below.
Radar Configuration
For the 99% of the users Radar comes pre-configured as long as you copy the important_tgt_files.txt (provided below) in the Radar plugin folder and update the Large Map Fix value for your POE game resolution. The default value works for 1080p, 1440p and 4k resolutions. Folks with wide screen (e.g. 3440x1440 screen (21:9)) can use 0.137. If something doesn't work, just play with the value and find the one that works for you. For more details, feel free to hover over the Large Map Fix value.
For the rest of the 1% users, most of the Radar configurations are self explanatory but please see the F.A.Q section before asking question.
Auto HotKey Trigger
By default AutoHotkeyTrigger comes with the LeagueStartNewPlayer configuration (a.k.a profile) only. If user selects this profile (as shown in the image below), this plugin can trigger life and mana flasks automatically. To trigger other hot keys at certain conditions user would have to create new profiles (or modify existing one). Also, by default the AutoQuit is disabled on this plugin. User is expected to enable that feature if they want to use it.
Now, to make a new profiles that works for your player flasks and skills, you would have to setup some rules, conditions and keys. A key is basically the hotkey button (e.g. for drinking flask or triggering a skill) that you want this plugin to press. A condition is something that this plugin ensures is true before pressing the key. There are different type of conditions targeting different aspect of the game. Multiple conditions and a single key join together to form a rule. For this plugin to press a key associated with a rule, all the conditions in that rule must be true.
So, in other words, a profile has a group of rules working together to press more than one hotkeys. Only one profile can be active in this plugin at any given time. However, you can create as many profiles as you want (e.g. 1 for each player or 1 for league start and 1 for end game etc). Also, you can have as many rules as you want in a given profile (e.g. few for flasks, few for skills, few for alignments etc). You can also have as many conditions as you want for any given rule (e.g. drink my flask when life is low AND flask is not empty AND that flask isn't currently active etc). So basically, in programming terminology, all conditions in a given rule AND with each other and all rules in a given profile OR with each other.
In order to help users in writing dynamic condition code, please look at other condition types e.g. Vital, Animation, etc etc and check how they are converting a condition to dynamic condition type. You can then use this knowledge to write your own complex dynamic condition. Following are additional information to help you a bit more.
- In a dynamic condition AND operator symbol is &&.
- In a dynamic condition OR operator symbol is ||.
- To juggle between drinking of 2 flask (e.g. Flask1 and Flask2) -> you can write Flasks.Flask1.Charges >= Flasks.Flask2.Charges in Flask1 Rule and Flasks.Flask2.Charges > Flasks.Flask1.Charges in Flask2 Rule
- More tutorial on Dynamic condition/Nearby monster condition is here.
F.A.Qs
FAQs
0) GameHelper is crashing what should I do?
Please share the Error.log file which is generated upon crash on this form. Error.log file is located in the Root (where GameHelper.exe is located) folder.
1) How can I find a new preload?
In order to find a new preloaded file path, first you need to understand when are the preloaded files path updated in the GameHelper tool. In other overlays e.g. ExileApi/PoeHUD preloads are updated right after you see the loading screen. This is not the case when it comes to GameHelper. In this tool preloads are only updated after the loading screen if that loading screen doesn't take you to town, hideout or last-map/area/zone. So what this means is that you can complete the whole map, go to town/hideout and then come back to your map and the preloads in the gamehelper wouldn't change. This also mean that if you get a loading screen and that loading screen doesn't take you to town, hideout or last map (e.g. Zana new map, vaal side area) the game helper will update/change the preload.
So with that being said, the best time to find a preload is not when you enter the map, it's when you find the thing you are looking for on the map (e.g. when you see harvest encounter). Also, going to town or hideout is perfectly fine in this process. So at that point in time, all you need to do is open the "Data Visualization" window and go to "Loaded Files" heading as shown below.
Next step is to search what you are looking for as shown below.
Now, click on the item (it will automatically copy that item) and add it (paste it) into the preload alert.
Repeat this process again and again (e.g. in a map where there is no harvest encounter to validate that your file is not loaded there or in a second map where there is harvest encounter to validate that your file is being loaded over there) until you find a good file that is only loaded once that thing is on the map. NOTE: from my experience, if a path has the word "Terrain" it's normally a good preload to add. Also, make sure path starts with "Metadata", otherwise it's a bad path to add.
2) How can I find the Status Effect ID/Name to use in status effect condition?
Open "Data Visualization" from the Core plugin setting menu and go to Buff item as shown below. Now do whatever you want to do in order to gain that buff/debuff. NOTE: You can just click the buff item to copy the buff name/id (no need to manually record the name/id).
3) How can I find the animation type to use in my animation condition?
Open "Data Visualization" from the Core plugin setting menu and go to animation item as shown below. Now do whatever you want to do in order to know the animation id of that action.
4) I am getting the following Exception when starting the overlay, how can I fix it?
5) From time to time my overlay is hanging for few seconds, how can I fix it?Code:09.09.2021 10:48 Program exited with message: System.NullReferenceException: Object reference not set to an instance of an object. at Vortice.Direct3D11.D3D11.RawD3D11CreateDeviceNoContext(IntPtr adapterPtr, DriverType driverType, DeviceCreationFlags flags, FeatureLevel[] featureLevels, ID3D11Device& device, FeatureLevel& featureLevel) at Vortice.Direct3D11.D3D11.D3D11CreateDevice(IntPtr adapterPtr, DriverType driverType, DeviceCreationFlags flags, FeatureLevel[] featureLevels, ID3D11Device& device) at Veldrid.D3D11.D3D11GraphicsDevice..ctor(D3D11DeviceOptions options, Nullable`1 swapchainDesc) at Veldrid.D3D11.D3D11GraphicsDevice..ctor(GraphicsDeviceOptions options, D3D11DeviceOptions d3D11DeviceOptions, Nullable`1 swapchainDesc) at Veldrid.GraphicsDevice.CreateD3D11(GraphicsDeviceOptions options, SwapchainDescription swapchainDescription) at Veldrid.StartupUtilities.VeldridStartup.CreateDefaultD3D11GraphicsDevice(GraphicsDeviceOptions options, Sdl2Window window) at Veldrid.StartupUtilities.VeldridStartup.CreateGraphicsDevice(Sdl2Window window, GraphicsDeviceOptions options, GraphicsBackend preferredBackend) at ClickableTransparentOverlay.Overlay.<Start>b__10_0() at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__139_1(Object state) at System.Threading.QueueUserWorkItemCallbackDefaultContext.Execute() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() ------------------------------
6) I am getting black screen when I start the overlay, how can I fix it?
All of these issues basically mean that
1: There is something wrong with your Graphic Card driver so re-install/update it please.
2: GameHelper overlay isn't using the correct graphic card when creating the overlay. To fix this, add the Overlay folder in the Nvidia Control panel as shown below.
and force Nvidia to use correct graphic card by changing primary graphic card and OpenGL renderer to Nvidia card as shown below.
Also, try disabling Instant Replay in Nvida Experience
if this doesn't fix the issue, format your windows and install a new one.
7) How do I show Icons in Delve rather than path names or vice versa?
Go to the Setting Window -> Radar plugin -> Icon Setting -> Delve Icons. Click on the chests icon whos path name you want to convert to an icon or vice versa, and select first icon from the list of icons to show Delve Chest Path Names. Select any other icon from the list to show that icon. This is only valid for Delve Chests.
8 ) Why don't I see any quest/waypoints/transitions stuff?
You must put the "All Important Tiles" (attached at the end of this post) in the Radar folder and then restart the overlay.
9) How do I update GameHelper such that my configs/preloads are safe?
New versions of GameHelper zip file doesn't come with any configuration file or txt file. So basically all you need to do is as following:
1: Open the zip file
2: Copy all files/folders in that zip file
3: Paste it on top of existing GameHelper folder
NOTE: StatusEffectGroup.json and FlaskNameToBuff.json files will be updated during GameHelper upgrade process but I don't expect anyone to modify those files. If you do modify those files, let me know, I will update them on my side as well.
10) Is there a way to remove an icon from large/mini map?
Set the icon size to 0 from 30.
11) How do I auto detonate mine (e.g. smoke mine)?
Use the following Rule in AutoHotKeyTrigger plugin.
12) I am getting can not find dll error as shown below, what should I do?
Please install Microsoft Visual C ++ Redistributable libraries.Code:------------------------------ 24.10.2021 17:07 Program exited with message: System.DllNotFoundException: Unable to load DLL 'cimgui' or one of its dependencies: Не найден указанный модуль. (0x8007007E) at ImGuiNET.ImGuiNative.igCreateContext(ImFontAtlas* shared_font_atlas) at ImGuiNET.ImGui.CreateContext() at ClickableTransparentOverlay.ImGuiController..ctor(GraphicsDevice gd, Int32 width, Int32 height) at ClickableTransparentOverlay.Overlay.<Start>b__11_0() at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__139_1(Object state) at System.Threading.QueueUserWorkItemCallbackDefaultContext.Execute() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() ------------------------------
13) My settings won't save as I restart Game Helper. How can I fix it?
Try move/rename folder from desktop/to another local disk folder.
14) I want to use flasks before their buff expires. How can I do that?
Using flasks before their buff expires is an advance level feature. So you have to remove of the Flask Effect condition from your rule
and replace it with the Status Effect condition. In that condition you can use Duration or Duration Percent feature. To figure out the
buff id, feel free to use DV as mentioned in F.A.Q 2.
15) I am using other POE Client, can you make this tool work on that?
Other POE Client = Steam, Garena, Korean Kakao, EPIC Game.
PM me the following things every time GameHelper break (i.e. you have to do this at league start) and I will send you a custom GameHelper version for your client. Please note that I do not use these client so I can not guarantee that GameHelper will work on these clients. If it works, good for you, if it doesn't, it is what it is, live with that.
1) "PathOfExile.exe" file
2) process name on the task manager (e.g. in standard version it's "PathOfExile.exe")
3) POE window title when poe runs in windowed mode (e.g. in standard version it's "Path of Exile")
NOTE For Tencent Users: Due to the anti-cheat software in Tencent client, GameHelper doesn't support tencent client.
16) I am getting following exception what should I do?
Looks like your windows is fked up, it's not picking up the SDL2 lib provided in the GH zip file. Please download the SDL2 lib from here: runtimes.zipCode:System.TypeInitializationException: The type initializer for 'Veldrid.Sdl2.Sdl2Native' threw an exception. ---> System.IO.FileNotFoundException: Could not find or load the native library from any name: [ SDL2.dll ] at NativeLibraryLoader.LibraryLoader.LoadNativeLibrary(String[] names, PathResolver pathResolver) at NativeLibraryLoader.NativeLibrary..ctor(String[] names, LibraryLoader loader, PathResolver pathResolver) at NativeLibraryLoader.NativeLibrary..ctor(String[] names) at Veldrid.Sdl2.Sdl2Native.LoadSdl2() at Veldrid.Sdl2.Sdl2Native..cctor() --- End of inner exception stack trace --- at Veldrid.Sdl2.Sdl2Native.SDL_SetHint(String name, String value) at Veldrid.Sdl2.Sdl2Window..ctor(String title, Int32 x, Int32 y, Int32 width, Int32 height, SDL_WindowFlags flags, Boolean threadedProcessing) at ClickableTransparentOverlay.Overlay.<Start>b__20_0() at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__140_1(Object state) at System.Threading.QueueUserWorkItemCallbackDefaultContext.Execute() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
and put it in GH root folder/GH runtime folder/basically all folders you can think of.
17) Can GameHelper send keyboard/mouse input to the POE game process while POE isn't focused (or is minimized)?
Technically this can be implemented in GameHelper but I won't do it because this enhancement can get your account banned. This enchanment is usually good for botters who doesn't care about getting their account banned since they can open 10 more and they haven't invested money on their botting accounts. For more info read page 120 of this thread.
19) Healthbars (or overlay) is stuttering.
1: Enable the Low latency mode in your graphic card settings (as shown below).
2: go to overlay setting -> Core -> Miscellaneous Config -> turn off vsync
3: go to overlay setting -> Healthbars -> Common Configuration -> check Interpolate poistion
4: Configure overlay to run at constant 60 FPS (as shown in the image below).
20) Do not drink flasks when boss is non-targetable
Many times when fighting bosses when the boss is first spawning at the start of the fight or invulnerable it will consume the flasks since technically there is a nearby monster. This is the case since in POE there are 1000 of bosses/unique monsters. There are also 1000 of ways POE can make a monster invulnerable. What is invulnerable on 1 boss/monster doesn't mean it's invulnerable on another boss/monster. Due to this its very unrealistic to expect GameHelper to handle all the conditions. GH have a button (default F9 but u can change it), it stops all flasks/autoquit/everything. Use that button when you feel like flasks will be wasted. If you have a better approach of solving this problem feel free to PM me.
21) How can I add more/custom icons to radar?
step-1: Create a sprite in png format and put it in the radar plugin folder
step-2: Modify the radar plugin -> config file and put the new png file path in the "FilePathName" of your choice
step-3: Modify the "IconSize" value to what your new png icons sizes (in pixel) are.
Flask and Skill Trigger Questions
AutoHotKey (AHK) Questions
Credits
Credits
- Sychotix/Stridemann - for creating the static analysis tool
- pushdx - for guidance and keeping me on track
- Qvin -- for ExileApi I am basically using 2 ideas that he implemented in ExileApi
- abratema - for finding all the important tgt files of all the POE campaign.
- TehCheat - He has done a lot of things for this community, can't write in 1 line.
- SuhzWarmane - for creating script that convert exile-api preload alerts to GameHelper preload alerts
- arturino009 - Improve the software by giving me feedback
- KVon - Improve the software by giving me feedback
- ulow - creating healthbar plugin
- cheatingeagle - for implementing many features.
- Developers of all the open source libraries I am using.
Released Version
>>> GameHelper-Release-v6.0.28.zip
VirusTotal Reports (all-green/clear):
VirusTotal
VirusTotal
VirusTotal
DON'T FORGET TO RUN THE GAME WITH USER WHO HAS LIMITED ACCESS (instructions)
Other Files
Preload Alert File: preloads.txt (put this file in GameHelper -> plugin -> preloadalert folder) (last updated: Dec 10, 2023)
Important POI File: important_tgt_files.txt (put this file in GameHelper -> plugin -> Radar folder) (last updated: Dec 10, 2023)