Forum Replies Created
-
AuthorPosts
-
I would assume is that at some point the actual text in any given menu that is displayed to the player would be detectable by Miqo in some form right?
It’s not detectable. And this is the main problem.
If it was, we would have already implemented this function a long time ago.I’m suggesting that at some point the text, such as ‘Limsa Lominsa’ in the teleport menu, exists somewhere in the data that Miqo takes from the game.
The text data stored in the Teleport window looks like this:
hingashikuganekugane100othardthe ruby seatamamizu333the ruby seaonokoro357yanxianamai445yanxia...
You are correct, it is detectable in some form. But this form is useless for any kind of decision making.
Besides the fact that this data doesn’t have any line breaks, it also has no indication of whether a certain piece of text is selectable. For example, “Hingashi” and “Othard” are group names which should be removed from the list of selectable options beforehand. And for the rest of text, there is no information of where that data is located on the screen. In order to select “The Ruby Sea”, do we have to move cursor at line #2, #6, or #9?How is Miqo able to identify ‘Limsa Lominsa’, or even better, something like ‘The Crystarium’ which is pages and pages down the menu, if Miqo isn’t simply ‘searching’ for the term within the teleportation menu?
By reading the internal data structures.
Here is the structure that Miqobot reads when accessing the Teleport window.6F 00 00 00 64 00 00 00 74 02 00 00 00 00 00 00 01 65 58 02 69 00 00 00 4D 01 00 00 65 02 00 00
This is an example of a data stream mentioned earlier. It’s not even located in the Teleport window, this data is stored in a dynamic memory container which is populated by another part of the game client.
By grouping and decoding the stream chunks correctly, Miqobot is capable of identifying a numerical aetheryte ID and a numerical zone ID, which are then converted to the correct line index to select. And when you type “teleport(Limsa Lominsa)” in Scenario Engine, Miqobot uses a hardcoded database of all possible teleport locations which link the text data to numerical IDs.On top of that, please remember that Miqobot must be functional in all 4 game languages.
So when you type “teleport(リムサ・ロミンサ:下甲板層)”, she uses the same database to convert a Japanese name into the same numerical ID and select “Limsa Lominsa” in any language. This conversion does not work for all features, of course, but we are doing our best to make it work where possible.If you are still not convinced, here is a simple example.
Imagine we collect a few samples of Rarefied Gyr Abanian Mineral Water and deliver them to a collectable appraiser.
When we open the Collectables Exchange window, the game shows us this:The item we wish to deliver is level 61. But it doesn’t even appear on the screen to begin with.
In order to access it, we have to scroll the list down, click on “Lv. 61-70” group, then scroll down again, and only then we will see it.But if you activate deliverCollectables() from a scenario, you may notice that Miqobot does not check every possible group every time the window is opened. She knows exactly what items we have and what groups must be clicked in order to access them.
- When there are no items to deliver, Miqobot simply closes the window.
- When there are items not visible on the screen, she goes directly to required groups and selects the necessary lines.
Without reading the internal data structures, such behavior would be impossible. Miqobot would have to painfully scroll through every line and analyze every single word and number on the screen in order to identify if there is anything to deliver at all. So instead of staring at empty window for a few seconds, she would be stuck for 3-5 minutes verifying each possible option without doing anything useful.
And please believe us that the data structure for Collectables Exchange window is so complex that it took our developers several days to reverse engineer it and then several days more to implement UI navigation algorithms.
Considering that deliverCollectables() contains 3 different features each of which has underwent over 10 iterations of improvements and bugfixes, you are in fact tapping into 2 months of development every time you use this function.
All for a short sequence of steps to click the correct buttons.I only have a loose understanding of programming but I’m curious what’s stopping you from creating an internal index of dialogue options
The non-linearity of internal data structures.
What you see on the game screen is only a visual representation of the actual data. It is generated by the graphics algorithm via multiple processing stages. Even if it looks like a simple list of options on the screen, it may in fact be an associative container based on red-black tree implementation. It may not even have a container but be a procedurally generated data stream that doesn’t have any structures behind it.
Miqobot is not capable of reading the text directly from the screen, if this is what your question is about.
This would require Optical Character Recognition algorithms, but this technology is extremely slow and would not be able to perform in a dynamic environment such as the video game.
Therefore accessing and analyzing internal data structures directly in the game memory is the only way to implement gameplay automation.RE: my download, switching browser fixed the issue 🙂 I am not sure what the problem was with my normal browser.
All right, thank you for reporting that you’ve managed to find a workaround.
And quick question since Eulmore collectables were mentioned, does deliverCollectibles() work with the turn-in vendors outside of Firmament (since it’s a different interface)?
Yes, as it is stated in the documentation, deliverCollectables() includes several algorithms and supports the following UI layouts:
– Rowena’s House of Splendors
– Ishgard Restoration
– Diadem Resource InspectionHello, I am trying to download the new version, but the file is 0KB and cannot run. I turned off my antivirus and am still having the problem. Has anyone else encountered this?
We would like to know the answer as well.
We have investigated this issue, but unfortunately we couldn’t reproduce it or identify the reasons that could be causing it. If you discover any additional information, please let us know.miqo slays the resplendent expert recipes as is
so thats neat, saves you guys some work
Thank you so much for the quick update regarding the GCD queueing! It’s good on most classes, but on min-SkS MCH, it really messed up the drills.
Thank you for your feedback very much.
Seems like i’m having issues when i want to deliver collectables like in Eulmore.
I tried many times since the 5.5 and the bot just stop delivering collectables at some point.PS : i’m not full of scripts, everything is fine.
Thank you for reporting. We will try to reproduce your issue in our labs and see what we can do.
Would you be able to give us some more information?- How often do you encounter this problem?
- Have you managed to notice what happens in the game at this moment?
- If you activate deliverCollectables() twice in a row, does the issue occur the second time?
Sometimes Miqo wastes Barrage on Burst Shot, and I’m assuming it’s because of my ping numbers (320+ ms, RIP), just wanted to make sure it’s a ping problem and not something tied to the queing algorithm.
Thank you for reporting.
We will investigate the rotation behavior under high latency conditions.To answer your question, Refulgent Arrow has the maximum priority under the effect of Barrage, but if the icon does not activate in time due to network delay, Miqobot will not stop the rotation and wait for it to happen.
GCD queueing algorithm causes weaponskills to be triggered approximately 100 ms in advance, but it does not change the logic of the rotation. If this argument does not convince you, please feel free to disable it in Assist Mode settings.Yes, this feature is already planned as a part of Scenario Engine updates: Upcoming Features
However, there is no framework that is capable of interacting with arbitrary game windows. Each of the functions you mentioned (deliverGCGear(), deliverCollectables(), teleport(), recipe()) incorporates a separate algorithm which is compatible only with one specific game window. These algorithms will not work for anything else.
In addition to that, the function deliverCollectables() includes 3 different algorithms in order to support 3 different UI layouts:
– Rowena’s House of Splendors
– Ishgard Restoration
– Diadem Resource Inspection
If it looks simple from the outside, it doesn’t mean there is a simple piece of code behind it.Each game window is completely different, they have distinct memory structures and UI layouts, and each of them requires a custom sequence of keybinds. A simple generic algorithm for this problem does not exist.
Even if we implement this feature in the form of a single function, we will have to research all possible game windows separately and implement different algorithms for each of them. The amount of work will be the same as implementing multiple functions.So yes, your feature request is accepted.
But please don’t expect it to be a generic function that will support everything, because it’s not possible.Yes, the issue with Samurai rotation has already been addressed.
Please refer to the main status thread for details:
Shadowbringers – Miqobot StatusYes, full details will be available in the patch notes for Miqobot v1.3.43.
They are currently being prepared and will be posted in the main status thread at a later date:
Shadowbringers – Miqobot StatusWe have managed to reproduce your issue with the Samurai rotation. Our previous assumption about it being caused by a missing keybind is incorrect.
This is a critical bug in the rotation algorithm. Unfortunately, it can not be fixed without a new version release. But we are already working on a solution and planning to address it soon.
We apologize for inconvenience.Our Tech Support can analyze your keybinds and hotbar configuration in order to identify the problem.
Please contact us directly and we will do our best to help you:
https://miqobot.com/#supportYes, Samurai rotation has a special ability that can cause this behavior.
When Kaeshi: Goken or Kaeshi: Setsugekka proc becomes available, it becomes the maximum priority action to activate next. If Miqobot can not trigger it due to a missing keybind or any other reason, it will cause the rotation to stop.Tested the expert crafting on two of the recipes (that’s all I had yellow scrips for) and it worked perfectly. Didn’t crash, and I think it went out of its way to make use of Centered’s status correctly (but couldn’t tell to be honest.) Both of the recipes I had it craft went perfectly. One with 46 steps and 100% Quality, the other with 42 steps and only 5307 Quality (had really bad RNG)… But the solver worked!
Thank you for your feedback very much.
This is probably not what you wanted to hear since it was probably not a simple feature to implement, but could you give us an option to disable the GCD queueing for combat assist to go back to what it was before?
I imagine that not many classes will be affected by this change in a negative way, so an ability to toggle it would be amazing!
All right, we will implement a new option to disable the GCD queueing in the next update.
Thank you for your request.I’ve been playing MCH with combat assist for quite a while and noticed a few problems. One is the reassemble + drill drift, because when drill comes off cooldown and reassemble is up, miqo delays it until the next GCD to pop reassemble first.
I have noticed on MCH I am now no longer able to reassemble drill as it queues and instead wastes reassemble on another skill such as “Heated Split Shot” and I have also noticed that she sees drill on CD when looking for pre-queueing so it gets drifted.
We have tried to implement special conditions for Reassemble and Drill in order to avoid such cases. But perhaps we haven’t tried hard enough.
Regardless, we agree with your suggestion. An option to disable the new algorithm would be useful indeed.
Thank you for your feedback.There has been no changes to Assist Mode hotkey algorithm.
Would you please give us more information about your issue?- What hotkey have you assigned to Assist Mode?
- When you activate Assist Mode, do you see the green “A+” notification in the upper right corner?
- What happens to this notification when you press the hotkey?
- Would you be able to show a screenshot of your Miqobot settings?
A reminder about antiviruses.
Since this is a new version of Miqobot, it may be flagged by your antivirus as False Positive because its signatute is not yet known. As it is stated in our FAQ section, Miqobot is not a virus but antiviruses are usually trained to sic at anything that tries to interact with other programs. Miqobot will make no attempt to fight your antivirus.
Please remember to whitelist your Miqobot application after download. Thank you!
-
AuthorPosts