- Joined
- Oct 12, 2015
- Messages
- 3,758
- Thread Author
- #1
This week brings some very substantial performance upgrades, particularly around the QueryBuilder framework, but also to a lesser extent throughout the rest of the API. I hope everyone will join me in thanking @Cloud as this has not been a small undertaking and he's worked tirelessly to get these upgrades delivered properly (detailed below).
We've also implemented some fixes in various key parts of the API which have been causing issues, including banking interaction, world hopping and interface closers.
Let's get started...
Client
BotLogger
Hybrid
QueryBuilder
RS3
SpriteItem
ControlPanelTab
We've also implemented some fixes in various key parts of the API which have been causing issues, including banking interaction, world hopping and interface closers.
Let's get started...
Client
BotLogger
- Complete overhaul of the BotLogger.
- Most significantly, we have introduced a total of 6 logging levels: OFF, SEVERE, WARN, INFO, DEBUG, FINE.
- To adjust your logging level and to see descriptions of each of the levels, visit the Preferences tab in the client.
- Added Environment.getLogger() for slightly easier access.
- Calling Environment.getLogger() where a bot's logger cannot be found will return a shared log file.
- Deprecated #log(Object), #err(Object) and #verbose(Object). Replacements for each will be found in the documentation next time it is regenerated.
- Deprecated BotLogger.Message#getType().
- Added BotLogger.Message#getLevel().
- Added #println(BotLogger.Level, Object), #severe(Object), #info(Object), #fine(Object).
- Updated various aspects of the API to use the new logging features.
- As a reminder to Bot Authors, all pushes which don't make proper use of this will be declined.
- Removed support for the -verbose program argument.
- This will now be handled directly by the BotLogger Level selected within the client.
- For this reason, Environment.isVerbose() has been deprecated.
- Tray notifications sent from the client/game-event handlers are now distinguished from those sent by Bot Authors in their bots.
- Users can decide whether they want to receive client and/or bot notifications (or neither!) via the Preferences page in the client.
- We have now white-listed the default Java Agent used by IntelliJ 2017.
Hybrid
QueryBuilder
- All QueryBuilders now take full advantage of the Java 8 parallel streams, meaning arguments are filtered at the same time in parallel rather than sequentially, causing a significant performance increase.
- This means that all bots will correctly scale across all CPU cores.
- This is a major overhaul and was probably a bigger task than Cloud thought it would be at first (judging by the number of commit messages I've been seeing come in for at least the past week!).
- Cloud will be continuing to work on this over the coming weeks and then we will be able to see the full extent of the performance upgrades made from start to finish.
- We've been working on specific scenarios where menu interaction was particularly weak, such as in banking and with other storage-related SpriteItems.
- At the moment this covers: Bank#withdraw() and #deposit() and BeastOfBurden#store() and #withdraw()
- Cloud identified that this was caused by several unnecessary calls being made to determine whether or not the Menu contained the desired action.
- More changes will be made to this in the coming updates which should further improvements to a potential fix that has plagued Bank interaction for some time.
- Cloud has implemented a potential fix for the infamous onStart() bug!
- This bug meant that occasionally onStart() would throw an exception, crashing the bot instantly.
- Fixed an issue where Camera.turnTo() or .concurrentlyTurnTo() would turn the "wrong" direction.
- Added a PlayerSense key to determine a characters bias towards turning the camera left/right.
- Fix provided by @Guru.
- Optimized the query used to find the next Coordinate when calling CoordinatePath#step().
- Minor optimizations to the bounding model projection queries.
- Massively improved the performance of the ChatboxListener's EventDispatcher.
- When entering values divisible by a factor of 1000, EnterAmountDialog now has the chance (based on PlayerSense) to convert this into decimal format.
- eg. 1000 -> 1k
- eg. 5,200,000 -> 5200k
- eg. 10,000,000 -> 10m
RS3
SpriteItem
- Fixed a bug where SpriteItem interaction would not work whilst the player was in combat, meaning it could not eat food etc.
- Added the Management Windows, Options Menu, Ribbon Setup and Acorn Clan Cup Interface Closers.
- Optimized various existing closers.
ControlPanelTab
- Added ControlPanelTab.WORLD_HOP.
- ControlPanelTab.LOGOUT.isOpen() and .open() now account for whether or not ControlPanelTab.WORLD_HOP.isOpen().
- Fixed a bug where WorldHop was unable to open the WorldHop interface.
- Optimized InterfaceComponent queries.
- Fixed a bug where Bank.deposit(SpriteItem, int) where the int == 0 would cause RuneMate to manually type "0" when the amount dialog was shown.
- Fixed the Poll Both interface closer by updating the InterfaceContainer index in the QueryBuilder.
Last edited: