Ok, this is going to be a huge post, but since there is no activity lately here, i think it's anyway a good think for the community.
As i said i didn't stopped working on my client, and now I'll explain what will be available soon with the new version of my client.
This post is going to be a little tour using some image i uploaded on imgur here:
http://imgur.com/a/bB8F4That album already contains most of the things I'm going to post here but this post will cover them more deeply.
This post is very informative even about the game mechanics, so this could be interesting to read even if you don't (yet
) use my client!
Here we go!
First of all let me say that most of the new features implemented are based on my game experience and my "craziness", so if anyone has other things that think could be useful to be added feel free to let me know.
One of the things that bot creators or custom clients had since day 0 was the ability to see, before normal players, where a hunter is going.
This shouldn't shock anyone, it's not about cheating, the reason is technical: given the nature of blockchain transactions and the need to verify the correctness of the moves performed by the clients, the nodes (a node is any client that's receiving/broadcasting transactions over the game network) need to know what a hunter wants to do in order to validate his transaction.
Without going too much into technical (and boring for most of you) aspect of how a the game works, let's just say that any client need to be able to read clearly what a player want to do, in order to say "yes, you can, i accept it because it satisfy the game rules". Without this checks, a client could move his hunters passing through mountains, or teleporting himself, etc... so this is a technical aspect that can't be avoided, or at least not without fuzzy and complicated logics and game mechanics that would be better to not introduce, or the game would be too much awkward to be played.
Anyway this causes a problem because until now, smart bot programmers or modified game clients could take the opportunity to read a preview of the opponents' moves, decoding transactions received from other nodes and not yet included in the last block generated.
One of the main reason i started coding my client was to leverage the difference between the BOT power in order to let human players compete with the same arsenal of custom clients/bot.
So the feature I'm going to show you (that was already available, even if not at this level, in previous versions of my client throught console commands) is a big step in that direction, togheter with the concept of Behaviours I've implemented in the client, and now anyone can KNOW and SEE easily, without using the console like in my previous version, where your enemies will go or if they just triggered the "destroy" action to kill you!
Pending Moves - The Hourglass icon is the key!
pending status
That spinning (when enabled) icon, shows you which pending moves mode you are using. Clicking on it, you can chose your mode.
Enabling the pending moves (orange icon) allow you to monitor your targes hunter pending moves.
Note: because of performance reason, the clients shows only your current Targets pending moves, so if you are interested in following someone's move, you have just to add that hunter in your target window.
Pending Moves: Disabled
If you ever need to hide all pending moves, this is the mode you have to choose.
This could be useful if you have many targets and wants to take a look on the map without all that black lines
Pending Moves: Enabled
The "Enable" option is the basic pending feature that consider that the pending move will be added to the blockchain on the next generated block.
Unlucky often this is not the case and the move will be accepted a block later, this is why there is the Enanched pending mode, see next.
Pending Moves: Enhanced
The "Enhanced" pending moves mode, consider that a just sent transaction takes 2 blocks to be added to the blockchain, so the probable enemy path have to consider, as the starting coordinate, not the current hunter coordinate but the next. So, to have a better idea where and when a hunter is going, this feature should be the preferred choice.
The only reason to pick the basic mode is when you see that your moves take only 1 block to be accepted.
This isn't very common but could happen, so it's up to you to choose the best mode in a specific situation
Automatic Behaviours and Actions - Let me fall asleep!
Behaviour Actions configurations
I've introduced the concept of behaviours actions, but to explain that let me take a step back... what's a Behaviour?
As i said i wanted to reduce at minumum the advantage that bots have over humans, so while it's not possible to exclude bots from the game, why not implementing a framework that allow anyone to create his own bot using my client and then maybe share/sold/rent it on a market? This is the core idea i had and i'm planning to implement, including the market thing. This is a big challenge but I've already done a lot thoward that direction because my framework is pretty stable now, and I've created some behaviour using it (and more will follow) and if the game will be successfull, I'll dive into sharing the SDK with anyone to code and put on market their creations.
Anyway at the moment what a player can do is to use one of my implemented behaviours, and this image shows an example about how you can expose Behaviour Actions throught a Generic Behaviour (a generic behaviour is a behaviour that's not bound to a single hunter, but coordinate actions from an higher level, think of it as a god behaviour, he can create hunters, transfer them, expose generic/troop/target actions, etc...
In this image you can see how actually the "Commander" behaviour configuration looks: actually any of the shown options is a Behaviour Action, that could be triggered, depending on the context (your hunter, an enemy hunter, or generically) by a button in the Behaviour Actions window (furter explainations below)
Behaviour Actions window
This is how the Behaviour Actions window looks.
It has 3 tabs (excluding the last "?" tab that just shows a little window description)
- Generic tab is where you can trigger generic actions (not linked to a specific hunter) like the "Show Enemy List" or "Show Bank List" actions.
- Troop Tab contains the list of actions that can be triggered when you have an active hunter in your "My Troop" window. those actions are more powerful than others because they can add to your hunters some automatic behaviours and configure easily other complex Behaviours (see the Collector behaviour)
- Target tab contains a list of actions that can be triggered when you have an active target (Target window). An example is the "Estimate Loot" action
let me show you some behaviours actions examples:
Bank list (available in the Generic tab)
This is a sample result of the "Show Bank list" action, here you can see a sortable grid with informations about current spawned banks, with current remaining life and coordinate.
Clicking on a bank will center the map on that coordinate
Enemy hunters (available in the Generic tab)
This is a sample result of the "Show Enemy List" action, here you can see a sortable grid with info about current enemies on map.
The last column (Recycle) shows if the hunter is going over a bank (probably to recover himself).
Clicking on a hunter will center the map on its position
Estimate Loot (Troop hunter)
This is a sample of the "Estimate Loot" action used in the Troop panel of the Behaviour Actions.
You can see in gray the queued path (not yet commited) of one of my hunters and in the right upper corner you can see the result of the action that says that going there i can collect about 39.6 HUC.
When the hunter has already an active path, this feature can be useful to see the estimated difference between actual and queued/pending path estimated income.
The computation doesn't take into consideration other hunters that are collecting on the same area
Estimate Loot (Target hunter)
This is a sample of the "Estimate Loot" action used in the Target panel of the Behaviour Actions.
This is similar to the "Troop" version but it can't show you queued paths of enemies, but in future i could show the estimated pending path value.
Actually you can see how many coins your target is going to collect going on his actual path (30.25 in the sample image)
The computation doesn't take into consideration other hunters that are collecting on the same area
Collector automatic behaviour !!! (Troop hunter) 1/3 - Intro
This actions can easily configure an improved version of the previous "Simple Collector" behaviours i released on previous versions.
This is an example about how using an action you can bound an automatic behaviour to one of your hunters, without the need of configure the behaviour like before (it's very easy!!)
The Collector Behaviour is useful to collect money while you are afk or you can't keep staring at the monitor constantly.
It's highly configurable and it's compatible with other (planned for the future) behaviours that can try to keep you safe from enemies, or be aggressive, and so on.
Collector automatic behaviour !!! (Troop hunter) 2/3 - When Coins End
In this image you can see the available choices available for the collector configuration "When Coins end" parameter.
This is useful to choose what to do when there are no more coins on the area you are harvesting (area = Target Area coordinate expanded by Sight Range parameter).
- If you choose "Keep Looting" your hunter will stay on that area until he has collected the amount specified in the "Max Loot" parameter, then will return to the bank
- If you choose "Remove Behaviour", when coins end the collector behaviour will be removed from the hunter, so the next (eventual) configured behaviour can run, or your hunter will stand still there undefinitely waiting for your inputs.
Advanced tip: you can chain several Collector behaviour togheter because only one of them can run at a time on a specific hunter, so adding multiple cascade collector with the action "Remove Behaviour" is useful to harvest multiple areas- If you choose "Go To Bank" well... when the coins end your hunter will find the nearest bank (or stand still waiting for a bank to spawn near him).
In any case, to find a bank the Max Bank Distance parameter is used, so you can chose if you want to go only to banks near you, or take a long journey, anyway if a new bank spawn near you when you are already going to a bank, the nearest one is chosen (so it's optimized to go as fast as you can to the nearest bank)
Collector automatic behaviour !!! (Troop hunter) 3/3 - When Arrived at Bank
In this image you can see the available choices available for the collector configuration "When Coins end" parameter.
When the behaviour decide that you need to go to a bank, the alghoritm to find a suitable bank is the same: find an available bank that can be reached at most in "Max Bank Distance" blocks.
But what to do next, depend on the choice you make here:
- ReturnToTargetArea: when you deposit your coins to the bank, then you'll go back to your Collector target area to keep doing the harvester
- Recycle: when you chose to Recycle, then you stand on the bank for 3 blocks in order to be removed from the game and have your hunter cost refunded.
Note that if you chose this option, then the alghoritm to pick up a bank take into account the need of having to wait 3 blocks on the bank, so if you chose e.g. 60 as maximum bank distance, than only banks at 57 blocks (60-3) are taking into account. Of course only bank that have at least that amount as remaining life are consideredclosing notes about Behaviour Actions:Active behaviours
To see the active behaviours running on a hunter you can right click on your hunter in the My Troop window to see a contextual menu that shows at the end a sorted (by priority) list of active Behaviours, each one with its own visualizing style to recap the main parameters you've chosen.
In this example you can easily see that my mmtest hunter has an active Collector behaviour, with a target area set at coordinate 281;94 and is harvesting an area of 5x5 cells around that coordinate, with a maximum loot of 100Huc and that when no coins are available at that area the hunter will go to the bank and whenever he goes to a bank (because of 100 huc reached or because no more coins available) then he will recycle!
Configure Behaviours
Like in the previous versions of the client, you can setup some of your behaviours with preconfigured parameters and pick them from the list of available configurations, clicking the "Configure Behaviours" contextual menu on a hunter in the "My Troop" window.
However I consider this an obsolete way to apply behaviours on hunters (but still useful for some kind of behaviours), anyway this window is still useful because now you can drag and drop your active behaviours chosing their priority (they are sorted in priority order).
Priority is important because it can impact on operations: the wrong order can lead to unpredicted results.
There isn't a generic order valid for any mix of behaviours, it all depends on behaviours that are chained togheter, so refer to specific behaviour documentation to understand the consequences
Ok, now i can't keep writing a book
i didn't have time to write all additions available or explain all implemented behaviours and actions, but I want to record some video sessions that shows how to use this information in practice, playing on testnet and on production blockchain.
While i was writing this huge (pant! pant!) post, i observed two players battling each other, i don't know who they were but here, as a bonus shots
, the fight images i took, that shows even the pending path and alerts exposed by the client
the fight can be found here:
http://imgur.com/a/g5LU5hunters involved were kontol vs vert3
it ended in no one killed, and both wasted 40 huc each then decided to leave the fight. some shots show the different path shown by the pending moves algorithm, and when the hourglass were green (so Enhanced mode on) it was the right one!
Ok now time to have a bit of rest
Let me know your thoguts and ideas!