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.