This thread is for feedback on the new and upcoming GUI. Starting with Beta #81 (coming soon), a new GUI will be tested based on feedback and re-evaluation of the initial version. This is also the first thread of many for community discussion about various aspects of the project. Please note that these threads are topic specific, and do not take away from work being done on the bot. E.g., we know the AI needs work, but time invested in threads like these or the changes made does not mean the AI still isn't being worked on, etc...
About
First, I'll explain why things were setup the way they were, and then some of the changes that will be tested in the next version to start moving us towards a more user friendly happy median. Please try to read it first before offering suggestions or other commentary on the GUI, because it's important to understand how we got to where we currently are.
The initial GUI design was based on the need for more organization and easier development/maintenance. The old Exilebuddy GUI was never setup in the same way the old Hearthbuddy GUI was. Instead of having everything on the main GUI, we had a button users pressed to open the actual settings GUI. Each bot implementation had it's own GUI. Users had to close this window before being able to access anything in the main GUI, since we didn't want users to have a bunch of GUI windows open, and have to keep track of them and the changes they were trying to make.
However, as more things needed to be added to this popup, there began issues with organization and user interactions. A TabControl helps solve those issues by giving more pages in a single control so things can be organized better. Here's a picture of the last major GUI design we used at the start of this year, before EB underwent numerous rewrites. We labeled the settings buttons since users were confused what they were before. In addition, we added a new settings window (shown) that held a lot of common bot settings, but they were not specific to the current bot you selected. Finally, we added more tabs for other useful stuff to help organize the GUI better.
This design mostly worked, but I wasn't happy with it. For one, users now had 3 different GUIs to go though to change various things in the bot, and each of those GUIs had a different design and layout since they simply opened a new window (which once again, had to be closed before you can resume interacting with the main bot program). The actual main settings window used tabs to organize things, which added even more GUI depth users had to travel though to change something. At the time, this was an improvement to what we had before, but it still wasn't without it's own issues.
After time and many EB rewrites, I arrived at the current design it currently uses, which was subsequently used as-is for HsB. Starting out, the buttons to launch various settings GUIs are gone. Instead, all settings are now integrated into a TabControl in one central location (Settings) that is accessible while the bot is running for instant runtime changes since the GUI is setup using WPF Binding now. I know that's a bit technical for most, but what it means is that you can change settings, and they are instantly updated, as opposed to previous designs where you manually have to update and save the settings each change.
Next, various features to help users out were added to the Log display. The current path of the log file is in an easy to see place, and there are buttons to copy the path to the clipboard for easier forum attaching, a button to zip the log so users don't have to manually, and finally a means to clear the current visual display of the log, which is very nice to have. Additional information is provided though the Configuration, Global, and Main tabs, as opposed to not existing at all. One of the common requests we had in EB was for people to know which key they were using, so it was added to the GUI. Then, options like GUI size and position were added for quality of life improvements.
The biggest takeaway is that the current vision is to have something that provides a seamless experience that doesn't require the user to have to open up a bunch of different windows to change things.
Changes
Now for the obvious issues users have brought up with the current design:
1. You can only start/stop the bot from the Main tab. This can be addressed in one of two ways:
a.) That section can be moved to the bottom portion of the screen, above the log tab: screenshot (not so good imo).
b.) That section can be moved to the top portion of the screen, above the tab control itself: screenshot (much better imo).
The next Beta version will try (B).
2. Tab navigation doesn't seem intuitive. I.e., when starting up the bot, the user must click on the Settings tab, and then click on the settings for the bot/routine they want to configure, then click back to the Main tab, and then click Start. This can be addressed by providing a Config button that quick jumps the TabControl to the desired Settings tab. Screenshot. This now allows users to launch HsB, click one button to go to the settings for the bot, click another button to go to the settings for the routine, then click Start to begin. I do not believe the process can be streamlined or made any more simple than that!
The next Beta will contain this functionality.
3. Settings are hard to understand. This is due to the fact the initial design simply uses the same name as the actual settings file uses to store the data. I.e., "AutoConcedeAfterRankedConstructedWin" is actually the name of the settings it refers to: DefaultBotSettings.Instance.AutoConcedeAfterRankedConstructedWin. This is useless for 99% of the people who use the bots, and a new naming convention will be used soon. In addition, we do want to support proper localization, but the GUI needs to be updated to do this correctly, and some other settings breaking changes need to be made (e.g., MAGE is not the English name, but rather the value of the enum used to designate the mage class in code).
The next beta will make an effort to change the labels for settings, but localization support is not possible yet.
4. A lot of settings for each game type. This is unavoidable, because different game types need different settings. I opted to go for an unique option for each type. To make this process easier, hopefully, the way those settings are displayed will change. A TabControl is now going to be used. Each game mode (Arena, Constructed, Friendly, Practice) will have their own tab. When you switch the Game Mode, the settings tab will auto-change to the new mode. The vice versa will not happen; if you change the current tab's settings, the Game Mode will not change. In addition, to help clarify the difference between Custom/Basic deck settings and fields, the label now attempts to indicate which value applies for that setting.
In the future, if it's possible to add things like Naxx or any other adventures, adding support though them will be easier with this setup in terms of the configuration, so that's why things are trying to be as organized as possible, even at the expense if seeming overboard now.
The next beta will try this approach.
5. No more stats/run time on the main display. This was done in preparation for community driven development (even though we're not ready for it just yet). The idea behind this was simple: global wins / losses is just one small type of 'stat' that users want. By keeping it on the main gui, we're forcing users to use our stat tracking system, and anyone else who wants to make a more "customized" version now has to do so without access to the main gui controls. Hearthbuddy is no longer going to just be "one" bot that does things one specific way, but rather something that supports community development, as our other bots do.
To come up with a solution that still allows the desired setup, but also provides users with the ability to have text set on the main gui, a new status bar has been added. It contains two labels, one for the left side and one for the right side. These can be set by plugins to control what gets shown on the main gui. The Stats plugin has been updated to demonstrate how this can be done though code, and here is a screenshot of a test of it (I don't set the left label yet).
6. This isn't a reported issue yet, but it's something that will be changing. Plugins are going to be handled in the GUI differently in terms of when the can be enabled/disabled. Currently, you must stop the bot first.
I think those cover the biggest reported issues with the GUI for now. I do know the theme could use some improvement, and the new design needs contrast between all 3 sections to make them stand out better, but the actual visuals can be adjusted later as long as the functionality provided seems solid. The biggest thing is to not judge it solely on looks. At first glance, it does look more complicated, but hopefully once users start to try it, it feels much more intuitive. Change is never easy, but I think if people understand the reason why we're heading in a different direction for the GUI, they might give it more of a chance since the goal isn't to over-complicate things, but rather make sure we give users the features and ability to configure them as they need without having to modify files.
Lastly, DefaultRoutine has not been changed yet, but will be updated to expose SF settings in the near future. A lot more work and testing is required to do that correctly first, as it involved, removing existing SF files.
New Preview
Album - Additional simplifications have been made based on feedback. Non-essential tabs are now hidden by default, and can be enabled though the Main settings tab.
About
First, I'll explain why things were setup the way they were, and then some of the changes that will be tested in the next version to start moving us towards a more user friendly happy median. Please try to read it first before offering suggestions or other commentary on the GUI, because it's important to understand how we got to where we currently are.
The initial GUI design was based on the need for more organization and easier development/maintenance. The old Exilebuddy GUI was never setup in the same way the old Hearthbuddy GUI was. Instead of having everything on the main GUI, we had a button users pressed to open the actual settings GUI. Each bot implementation had it's own GUI. Users had to close this window before being able to access anything in the main GUI, since we didn't want users to have a bunch of GUI windows open, and have to keep track of them and the changes they were trying to make.
However, as more things needed to be added to this popup, there began issues with organization and user interactions. A TabControl helps solve those issues by giving more pages in a single control so things can be organized better. Here's a picture of the last major GUI design we used at the start of this year, before EB underwent numerous rewrites. We labeled the settings buttons since users were confused what they were before. In addition, we added a new settings window (shown) that held a lot of common bot settings, but they were not specific to the current bot you selected. Finally, we added more tabs for other useful stuff to help organize the GUI better.
This design mostly worked, but I wasn't happy with it. For one, users now had 3 different GUIs to go though to change various things in the bot, and each of those GUIs had a different design and layout since they simply opened a new window (which once again, had to be closed before you can resume interacting with the main bot program). The actual main settings window used tabs to organize things, which added even more GUI depth users had to travel though to change something. At the time, this was an improvement to what we had before, but it still wasn't without it's own issues.
After time and many EB rewrites, I arrived at the current design it currently uses, which was subsequently used as-is for HsB. Starting out, the buttons to launch various settings GUIs are gone. Instead, all settings are now integrated into a TabControl in one central location (Settings) that is accessible while the bot is running for instant runtime changes since the GUI is setup using WPF Binding now. I know that's a bit technical for most, but what it means is that you can change settings, and they are instantly updated, as opposed to previous designs where you manually have to update and save the settings each change.
Next, various features to help users out were added to the Log display. The current path of the log file is in an easy to see place, and there are buttons to copy the path to the clipboard for easier forum attaching, a button to zip the log so users don't have to manually, and finally a means to clear the current visual display of the log, which is very nice to have. Additional information is provided though the Configuration, Global, and Main tabs, as opposed to not existing at all. One of the common requests we had in EB was for people to know which key they were using, so it was added to the GUI. Then, options like GUI size and position were added for quality of life improvements.
The biggest takeaway is that the current vision is to have something that provides a seamless experience that doesn't require the user to have to open up a bunch of different windows to change things.
Changes
Now for the obvious issues users have brought up with the current design:
1. You can only start/stop the bot from the Main tab. This can be addressed in one of two ways:
a.) That section can be moved to the bottom portion of the screen, above the log tab: screenshot (not so good imo).
b.) That section can be moved to the top portion of the screen, above the tab control itself: screenshot (much better imo).
The next Beta version will try (B).
2. Tab navigation doesn't seem intuitive. I.e., when starting up the bot, the user must click on the Settings tab, and then click on the settings for the bot/routine they want to configure, then click back to the Main tab, and then click Start. This can be addressed by providing a Config button that quick jumps the TabControl to the desired Settings tab. Screenshot. This now allows users to launch HsB, click one button to go to the settings for the bot, click another button to go to the settings for the routine, then click Start to begin. I do not believe the process can be streamlined or made any more simple than that!
The next Beta will contain this functionality.
3. Settings are hard to understand. This is due to the fact the initial design simply uses the same name as the actual settings file uses to store the data. I.e., "AutoConcedeAfterRankedConstructedWin" is actually the name of the settings it refers to: DefaultBotSettings.Instance.AutoConcedeAfterRankedConstructedWin. This is useless for 99% of the people who use the bots, and a new naming convention will be used soon. In addition, we do want to support proper localization, but the GUI needs to be updated to do this correctly, and some other settings breaking changes need to be made (e.g., MAGE is not the English name, but rather the value of the enum used to designate the mage class in code).
The next beta will make an effort to change the labels for settings, but localization support is not possible yet.
4. A lot of settings for each game type. This is unavoidable, because different game types need different settings. I opted to go for an unique option for each type. To make this process easier, hopefully, the way those settings are displayed will change. A TabControl is now going to be used. Each game mode (Arena, Constructed, Friendly, Practice) will have their own tab. When you switch the Game Mode, the settings tab will auto-change to the new mode. The vice versa will not happen; if you change the current tab's settings, the Game Mode will not change. In addition, to help clarify the difference between Custom/Basic deck settings and fields, the label now attempts to indicate which value applies for that setting.
In the future, if it's possible to add things like Naxx or any other adventures, adding support though them will be easier with this setup in terms of the configuration, so that's why things are trying to be as organized as possible, even at the expense if seeming overboard now.
The next beta will try this approach.
5. No more stats/run time on the main display. This was done in preparation for community driven development (even though we're not ready for it just yet). The idea behind this was simple: global wins / losses is just one small type of 'stat' that users want. By keeping it on the main gui, we're forcing users to use our stat tracking system, and anyone else who wants to make a more "customized" version now has to do so without access to the main gui controls. Hearthbuddy is no longer going to just be "one" bot that does things one specific way, but rather something that supports community development, as our other bots do.
To come up with a solution that still allows the desired setup, but also provides users with the ability to have text set on the main gui, a new status bar has been added. It contains two labels, one for the left side and one for the right side. These can be set by plugins to control what gets shown on the main gui. The Stats plugin has been updated to demonstrate how this can be done though code, and here is a screenshot of a test of it (I don't set the left label yet).
6. This isn't a reported issue yet, but it's something that will be changing. Plugins are going to be handled in the GUI differently in terms of when the can be enabled/disabled. Currently, you must stop the bot first.
I think those cover the biggest reported issues with the GUI for now. I do know the theme could use some improvement, and the new design needs contrast between all 3 sections to make them stand out better, but the actual visuals can be adjusted later as long as the functionality provided seems solid. The biggest thing is to not judge it solely on looks. At first glance, it does look more complicated, but hopefully once users start to try it, it feels much more intuitive. Change is never easy, but I think if people understand the reason why we're heading in a different direction for the GUI, they might give it more of a chance since the goal isn't to over-complicate things, but rather make sure we give users the features and ability to configure them as they need without having to modify files.
Lastly, DefaultRoutine has not been changed yet, but will be updated to expose SF settings in the near future. A lot more work and testing is required to do that correctly first, as it involved, removing existing SF files.
New Preview
Album - Additional simplifications have been made based on feedback. Non-essential tabs are now hidden by default, and can be enabled though the Main settings tab.
Last edited: