A personal project from 2016, built as a student to answer a simple question: in a game with a
player-driven free market and infinite resource supply, can you see mispricings before other players do?
It grew into a small pipeline:
A dozen accounts collect the screenshots
Game accounts (Bread, Buff, Buy, Drop, Keep, Steak, Meat, Sell…) took turns searching the bazaar and
saving a 77×11-pixel crop of each item’s best price, named Item_year_month_day_hour.jpg.
The night logs read “ora raccolgo i prezzi”: now I collect the prices.
A pixel reader turns crops into numbers
No OCR library. Threshold the crop, slice it into 9 fixed digit cells, and identify each digit
through a hand-built decision tree that reads at most 9 pixels per cell. Wrong-by-design for any other
font, exact for this one.
Every reading is appended to a ledger
One CSV per item: year, month, day, hour, price. Over ~4½ months this grew to
33,292 readings across 193 items, from 80-gold herbs to 24-million-gold gear.
Statistics, then verdicts
Per item and night: an outlier-trimmed “robust” mean, 5/15/20-day windows, weekday and monthly means, deciles;
then a rule chain turns the latest price into Compra / Vendi (buy / sell) with flags for which
evidence fired, plus charts drawn per item.
Three shopping lists come out
Strong signals routed to instaBuy.txt and instaSell.txt, weak ones to
normal.txt, the morning reading. Buy the lows, relist at the mean, keep the spread.
What it taught me
With effectively infinite resource supply, prices anchor to
habit rather than scarcity, which makes deviations unusually honest signals. Reading the market beat playing it:
buy the panicked evening listing, relist at the boring daily mean. And when a general-purpose tool fails on a
10-year-old game font, four coordinates and an if/else chain can be the more rigorous engineering choice.
Nobody asked for this project; that’s rather the point.