PROJECT 02 / Systems / Tools / Explored

Game Asset Profiler

A desktop profiler that analyzes game assets, estimates VRAM usage, and surfaces actionable optimization problems.

Python PyQt6 SQLite Multithreading

Problem

How do you turn thousands of game assets into useful engineering information? Asset folders hide their own problems: unoptimized textures, non-power-of-two dimensions, duplicated sequences, silent VRAM bloat. By the time anyone notices, the budget is already blown.

Approach

Build a dedicated profiler that scans asset directories, computes byte-level memory metrics per file, applies heuristics to flag common problems, and presents everything as severity-ranked insights — not raw data dumps.

Architecture

  • Scanner core — QThread-based multithreaded file-system walker that keeps the UI responsive while processing large trees
  • Analysis layer — byte-level VRAM estimation, DDS handling, power-of-two detection, texture sequence detection (frame.0001.png patterns)
  • Insight engine — heuristic rules produce severity-ranked findings: asset bloat, unoptimized textures, VRAM budget risks
  • Persistence — SQLite database so scans are comparable over time instead of one-off reports
  • Interface — PyQt6 desktop app with regex search, folder aggregation, and export functionality

Engineering Decisions

  • Multithreading from the start: a profiler that freezes on big folders is a profiler nobody runs.
  • SQLite over flat files: scan history turns the tool from a snapshot into a trend tracker.
  • Severity-ranked insights over raw metrics: the goal is decisions, not dashboards.

Result

A working desktop tool that answers “where is my memory going?” in minutes — with per-file insights, historical comparison, and exportable reports.

What I Learned

  • File-system I/O dominates runtime; threading strategy matters more than algorithmic micro-optimization.
  • Heuristics need escape hatches: every rule needs a way to be wrong gracefully.