-
Notifications
You must be signed in to change notification settings - Fork 840
item_statistics_en
This document will show how to use dev_tools/item_statistics.py
In alas GUI,
-
set
enable_drop_screenshot
toyes
, if enabled, alas will add a 1s sleep before screenshot, to avoid capture the flash. There's a flash light when item shows up. -
set
drop_screenshot_folder
to be the folder you want to save. It is recommended to save it in SSD. -
Run Alas few hours or few days, and you will get a folder structure like:
(Screenshots are named after millisecond timestamp.)
<your_folder>
campaign_7_2
get_items
158323xxxxxxx.png
158323xxxxxxx.png
158323xxxxxxx.png
get_mission
get_ship
mystery
status
campaign_10_4_HARD
get_items
get_mission
get_ship
status
d3
get_items
get_mission
get_ship
status
-
Prepare another virtual environment, accoring to
requirements.txt
. But use the GPU version ofmxnet
.I am using GTX1080Ti, and I installed
mxnet-cu101==1.6.0
,CUDA10.1
,cuDNN
. Googlemxnet gpu install
, and see how to do in details. You may intall other version of CUDA, and mxnet for that CUDA, because you are using another graphic card. -
Goto module/ocr/al_ocr.py line 21, replace
context='cpu',
to be:
context='gpu',
Now cnocr will run on GPU.
You can skip this procedure anyway, and use the same environment as alas, but the OCR will run really slow.
Before any actual statistics, you need to extract templates first.
- Change your server in line 8:
server.server = 'cn' # Edit your server here.
- Set your
FOLDER
andCSV_FILE
at the bottom of the file.
"""
Args:
FOLDER: Alas drop screenshot folder.
Examples: '<your_drop_screenshot_folder>/campaign_7_2'
CSV_FILE: Csv file to save.
Examples: 'c72.csv'
"""
FOLDER = ''
CSV_FILE = ''
drop = DropStatistics(FOLDER)
- Uncomment the this and run.
# drop.extract_template()
You will get some new templates named in number under folder item_template
. Here's an example log:
1%| | 107/12668 [00:05<10:24, 20.10it/s]2020-06-03 10:39:42.609 | INFO | New item template: 50
1%| | 158/12668 [00:07<10:42, 19.47it/s]2020-06-03 10:39:45.098 | INFO | New item template: 51
2%|▏ | 207/12668 [00:10<10:33, 19.66it/s]2020-06-03 10:39:47.772 | INFO | New item template: 52
2%|▏ | 215/12668 [00:10<11:20, 18.29it/s]2020-06-03 10:39:48.304 | INFO | New item template: 53
100%|██████████| 12668/12668 [10:33<00:00, 19.99it/s]
-
Rename new templates with Camel-Case, such as
PlateGeneralT3
. Suffix in name will be ignore.For example,
Javelin
andJavelin_2
are different templates, but have same output name 'Javelin'.
Why extract templates before every stats, why not provide ready-made templates
- There are too many items in game, can't collect them all.
- If it find new templates during actual run, may give unexpected result.
- If some of your accounts used All-Skin, ship icons will be different.
- Too many templates will make it slow.
- Comment the code in first run.
drop.extract_template()
- uncomment this, and run.
import csv
with open(CSV_FILE, 'a', newline='') as csv_file:
writer = csv.writer(csv_file)
for d in drop.generate_data():
writer.writerows(d)
Here's an example log:
2020-06-03 12:23:55.355 | INFO | [ENEMY_GENRE 0.007s] 中型侦查舰队
2020-06-03 12:23:55.363 | INFO | [Amount_ocr 0.009s] [1, 1, 22]
100%|█████████▉| 14916/14919 [20:32<00:00, 13.20it/s]2020-06-03 12:23:55.442 | INFO | [ENEMY_GENRE 0.007s] 大型航空舰队
2020-06-03 12:23:55.455 | INFO | [Amount_ocr 0.013s] [1, 1, 1, 17]
2020-06-03 12:23:55.539 | INFO | [ENEMY_GENRE 0.007s] 敌方旗舰
2020-06-03 12:23:55.549 | INFO | [Amount_ocr 0.010s] [1, 2, 1, 63]
100%|█████████▉| 14918/14919 [20:33<00:00, 12.35it/s]2020-06-03 12:23:55.623 | INFO | [ENEMY_GENRE 0.007s] 精英舰队
2020-06-03 12:23:55.633 | INFO | [Amount_ocr 0.010s] [1, 1, 1, 17]
100%|██████████| 14919/14919 [20:33<00:00, 12.10it/s]
Now you have a csv file, formated to be:
<get_item_timestamp>, <battle_status_timestamp>, <enemy_name>, <item_name>, <item_amount>
like this:
1590271317900,1590271315841,中型主力舰队,主炮部件T3,1
1590271317900,1590271315841,中型主力舰队,物资,23
1590271359374,1590271357251,小型侦查舰队,通用部件T1,1
1590271359374,1590271357251,小型侦查舰队,鱼雷部件T2,1
1590271359374,1590271357251,小型侦查舰队,物资,13
1590271415308,1590271413207,敌方旗舰,彗星,1
1590271415308,1590271413207,敌方旗舰,通用部件T3,1
1590271415308,1590271413207,敌方旗舰,科技箱T1,1
1590271415308,1590271413207,敌方旗舰,物资,42
1590271415308,1590271413207,敌方旗舰,_比萨研发物资,1
1590271415308,1590271413207,敌方旗舰,_鸢尾之印,1
You can open it in Excel or load it into database.
These code is running on single thread, you can try adding multiprocess to speed up. I didn't do that because it's still acceptable (25it/s without ocr, 15it/s with ocr)
Getting Started
- Installation [EN]
- Installation [CN]
- Installation With Docker [EN]
- Emulator Support [CN]
- FAQ [EN/CN]
- FAQ [JP]
- Troubleshooting [EN]
- Another Installation guide
- Research Filter String [EN]
- Research Filter String [CN]
- Reward Shop Filter String [EN/CN]
- Onepush Configuration [EN]
- Onepush Configuration [CN]
Development
- Perspective [CN]
- Perspective [EN]
- Debug perspective [CN]
- Debug perspective [EN]
- Item Statistics [EN]
- 1. Start
- 2.1. Debugging
- 2.2. Multi-server support
- 3.1. Utils
- 3.2. Decorators
- 3.3. Log
- 3.4. Exception
- 4.1. Detection objects
- 4.2. UI control
- 4.3. OCR
- 4.4. State loop
- 5.1. Local Map
- 5.2. Create globe Map
- 5.3. Globe Map
- 6.1. GUI Option
MISC