What is best way to identify NPC's ship type?

Tried to parse NPC’s ship icon, but there is no helpful information, no icon name or something like that.
Decided to use ship size for doing that. But that is not very flexible and does not provide enough information. Is it any other way to identify ship type from Overview?
Thanks for any help!

When developing bots or frameworks to read from a game client, we usually derive this functionality for identifying objects from training data samples. So first step is for someone to get a sample with the part of the user interface that allows you to identify the ship type. Sometimes it helps to think of it as a table with two columns: One column contains the input and the other the expected output. The input in the case of EVE Online could be a memory reading or a screenshot. The output in your case would be the NPC ship type.
So what you are looking for is this table of training data samples.
You don’t have to open a game client to get the measurements, as you can export them from a session recording. There is a guide on how to do that at bots/observing-and-inspecting-a-bot.md at main · Viir/bots · GitHub

Yeah, I am pretty good familiar with memory reading and Sandeling :slight_smile:
My question is still the same.

How to identify NPC’s ship type?

I did not find related information for that in memory. Except ship size column in overview, but that doesn’t work well enough. Because size can tell me that the NPC is a frigate, but I want to identify is it a dictor, bomber assault or something else.

Yeah, knowledge of memory reading or Sanderling is not necessarily helpful in that case. What would help is experience playing the game and using the game client. You need a player’s experience.

Do you think a player would be able to find it on the screen? That is more interesting to know.

Then these values make the output column of your table:

training data sample class
??? dictor
??? dictor
??? dictor
??? bomber assault
??? something else
??? something else
??? something else

As illustrated in the table, you can have multiple samples per class. You rarely have just one sample per class. What’s missing from the thread so far is the observations from the game client. We use screenshots, videos, and memory readings to encode the samples. The play session recording described in the linked guide is a simple way to support these different formats of observations.

Lets categorize things, because we don’t understand each other.

  1. Ship type icons: https://external-preview.redd.it/f_JGZe7tqUDeATdVAPkQbt95t2dXe_w-hcpPgkd92a4.png?auto=webp&s=3ca3917c4fd48a7951ac242cea9cc6749bc40d5a
    Lets call it Ship Icon Type
  2. Dictor, Bomber, Assault Frigate … let’s call it Ship Detailed Type

So, my question is. How to identify Ship Icon Type. There is no information about icon name in memory, or something else which may help to do that.

Secondary question in my second message was related to Ship Detailed Type - answer received, thanks for that. Anyway the original question is still there.

In this case, you can use the image data from a screenshot for the classification. Let the bot take a screenshot and then compare the contents with the reference from the image you linked to determine the class.

Screenshot making takes time, there is no other solution for that?
Had you already solve similar problem? I mean where is not enough data in the UI structure. Especially for icons.

At some icons in different part of EVE UI I seen names of that icons, such as Textures/folder/arrow.png.
Looks like the data exists, why it is not available for other icons is that a difference between them? Just curios. Possibly it is a way to improve Sanderling somehow for taking the icon file name.

Yes, taking a screenshot takes time. But most applications take screenshots anyway, so they reuse the existing screenshot instead of taking a new one. Maybe there is another solution. But I look at the bigger picture, complete applications like bots. Identifying the ship icon type is only a tiny part in comparison. There are bigger gains in other areas.

It’s just that most people don’t care that much about memory reading. Most developers are more interested in other areas, so this is a relatively unexplored area. So don’t let that stop you from finding that info via memory reading :+1: