Jump to content

VPX Achievement Watcher

    Create an account or sign in to download this
download_no_perm
14544 Views
959 Downloads
5 From 5 reviews
57.72 MB File Size
Solters Created by

12 Screenshots

About This File

🎯 VPX Achievement Watcher

A companion app for Visual Pinball X (VPX) that adds modern achievements, live overlays, and challenges by reading VPinMAME NVRAM data.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Features

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🏠 Dashboard

Your control center at a glance:

 

• System Status: Is the watcher running? Is VPX active?


• Session Summary: Two cards side by side:
    ◦ Last Run: Last table played, score, achievements unlocked, and date
    ◦ Run Status: Live status indicators (green/yellow/red) for Table, Session, Cloud, and Leaderboard connection


📬 Notifications: Clickable feed with alerts for leaderboard ranks, beaten achievement records, missing VPS-IDs, and available updates. Unread count shown on tab badge. Clear All button to dismiss


📋 Setup Status: Checklist that verifies your setup is complete — Player Name set, Cloud Sync enabled, VPS-IDs assigned, Maps loaded, Overlays configured, and Widget Controls bound. Red/yellow/green indicators with direct links to fix missing items. Shows " All set!" when everything passes


• Quick Actions: Restart Engine, Minimize to Tray, Quit

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

👤 Player

Your personal player profile and summary:

 

• Player Level: Current level and XP progress bar based on unlocked achievements


• Prestige System: Reach Prestige 1–5 by unlocking 2000 achievements per star (☆ → ★)


• Level Table: All levels from Rookie to VPX Elite with their achievement thresholds


🏅 Badges: 37 collectible badges earned through gameplay milestones — unlock achievements, complete challenges, reach levels, accumulate playtime, and more


• Display Badge: Choose which badge icon appears next to your name on cloud leaderboards

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📈 Progress

Track your achievement progress per table:

 

• Select Table: Dropdown with all played tables (ROM-based and custom/non-ROM tables)


• Global Achievements: Cross-table achievements like total playtime, tables played, manufacturer milestones — with progress bars (e.g. 12/25)


• Per-Table Achievements: Each achievement listed with status ( unlocked / 🔒 locked)


ℹ️ Info Links: Click the info icon on any achievement to see its unlock condition, VPS table info, and unlock timestamp


• Rarity Tiers: Common, Uncommon, Rare, Epic, Legendary — color-coded based on how many cloud players have unlocked each one. Rarity legend shown below progress bar


• Custom Table Progress: AWEditor-created achievements are tracked separately with their own progress view

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📊 Records & Stats

Records every round played, session duration, and scores in the background:

 

🌍 Global NVRAM Dumps: Full raw NVRAM data overview per table — all fields and values in a multi-column table


👤 Player Session Deltas: What changed during your session — actions, score differences, playtime, and field-by-field changes 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

☁️ Cloud

Global cloud leaderboard for achievement progress:

 

• Category: Achievement Progress leaderboard per table


• Search: Enter a table or ROM name with autocomplete (resolves table titles to ROM keys)


• Fetch: Load the leaderboard — ranked list with progress bars, medals (🏆🥈🥉), player badges, date, and ℹ️ VPS info links


• VPS Info Dialog: Click ℹ️ on any leaderboard entry to see linked VPS table details and achievement breakdown

 

💡 Tip: You can find your personal 4-digit player ID in the "System" tab. Make a note of it! If you ever install Watcher on a new PC, you can use it to restore your cloud progress.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

⚔️ Score Duels

Challenge other players to direct score duels on the same table!

 

The Score Duels tab is organized into 4 sub-tabs:

 

🎯 My Duels


📬 Incoming Invitations: Inbox for duel challenges from other players — accept or decline with one click


🔕 Do Not Disturb: Toggle to stop receiving new duel invitations


⚔️ Start New Duel: Pick an opponent and table, then send a challenge


🔀 Auto-Match: Join the matchmaking queue — automatically matched with a player who shares at least one table (by VPS-ID). Search times out after 5 minutes


🟢 Active Duels: Overview of all running duels with status, time remaining, and cancel option


📜 Duel History: Past duel results with opponent, table, scores, and date

 

🌍 Global Feed
Live feed of all active and recently completed duels across all players.

 

🏆 Leaderboard
Top 50 players ranked by duel wins. Shows Rank, Player Name, Wins, Losses, and Win Rate (%). Players need at least 3 completed duels to qualify. Your own row is highlighted with a ★. Medals for top 3: 🥇🥈🥉.

 

🏆 Tournament
4-player single-elimination knockout tournaments:


• Join Queue: Enter the tournament matchmaking queue (30 min timeout)


• Auto-Matching: When 4 players sharing at least one table are queued, a tournament is automatically created


• Bracket: 2 Semifinals → 1 Final, all played on the same randomly selected table


• 2 hours per match — each duel has a 2-hour time limit


• Notifications: In-app alerts for tournament start, elimination, final reached, and final result


• History: Completed tournaments are saved locally with your placement (🏆 Winner, #2, #3-4)

 

💬 Tournament Chat: Live chat for tournament participants — real-time messages

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🎨 Appearance

Customize the look and feel of the entire application, organized into 5 sub-tabs:

 

🖼 Overlay


• Global Styling: Font family, base font size, and overlay scale slider (30–300%)


• Widget Placement & Orientation: Place and save screen positions for each overlay independently. Each widget has Portrait Mode (90°), Rotate CCW, Place, and Test buttons:


    ◦ Main Stats Overlay (with auto-close option)
    ◦ Achievement Toasts
    ◦ System Notifications
    ◦ Status Overlay (cloud/leaderboard feedback, can be disabled)
    ◦ ⚔️ Duel Notifications


🔄 Switch All → Portrait/Landscape: Toggle all overlay orientations at once


📄 Overlay Pages: Enable/disable individual overlay pages — Page 1 (Highlights & Score) is always active; Page 2 (Achievement Progress), Page 3 (Cloud Leaderboard), Page 4 (VPC Leaderboard), Page 5 (Score Duels) can be toggled


• Custom Background: Place an overlay_bg.jpg/png next to the executable for a custom overlay background

 

🎨 Theme


• Active Theme: Select and apply a color theme from the dropdown


• Color Preview: Live preview of Primary, Accent, Border, and BG colors


• Overlay Preview / Test: Test Main Stats Overlay and Achievement Toast with the current theme


• Available Themes: Full list of all themes with icon, name, and description

 

🔊 Sound


• Enable/Disable: Master toggle for sound effects


• Volume: Slider (0–100%)


• Sound Pack: Choose from multiple packs (Zaptron, Vex Machina, Retro, etc.)


• Events Table: Per-event enable/disable toggle and preview button for each sound event

 

Effects


• GPU-accelerated visual effects with automatic CPU fallback

 

🐾 Mascots


🏆 Trophie (GUI Mascot): Lives in the bottom-left corner of the main window


🎱 Steely (Desktop Overlay Mascot): A metallic chrome pinball that lives on your desktop as an always-on-top overlay. Reacts to game events


• Skins: Multiple visual skins for both mascots


• Personality: Unique speech bubbles, reactions, memory, and a "bickering" system between them


• Portrait Mode: Steely supports 90° rotation for cabinet screens

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📺 VPC Weekly Challenge

View Discord's Weekly Challenge directly on the overlay (view only).

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🕹️ Controls

Configure hotkeys and input bindings for the overlay and challenges:

 

• Supports keyboard keys and joystick buttons


• Bindings for overlay toggle, duel accept (left), duel decline (right), and system tray show/hide


💡 Flipper buttons or MagnaSave buttons work best

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🗺️ Available Maps

Browse all supported tables and their NVRAM map status:

 

NVRAM Map = achievement tracking supported


No NVRAM Map = not supported yet


🟠 Local = .vpx file found in your tables folder


• Filter by local tables with NVRAM maps, search by name or ROM


• Assign VPS-IDs to link tables to the Virtual Pinball Spreadsheet database


• View table author extracted from .vpx file metadata

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🎯 AWEditor — Custom Achievement Editor

Create custom achievements for tables that don't use VPinMAME ROMs (Non-ROM / Original tables):

 

📋 Tables: Scan your tables directory for tables without NVRAM maps


✏️ Codes: Analyze table scripts, detect events, and create custom achievement rules


• Export: Generates VBScript + JSON files — the table writes trigger files that the watcher detects instantly


• Full Script Export: Zero manual work — AWEditor inserts all FireAchievement calls automatically

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

⚙️ System

The System tab has 2 sub-tabs:

 

⚙️ General


👤 Player Profile: Set your display name and 4-character player ID. Identity fields are locked while Cloud Sync is active


☁️ Cloud Sync & Backup:

 

Enable/disable Cloud Sync (validates player name and ID against cloud for uniqueness). Auto-Backup toggle, manual Backup to Cloud, and Restore from Cloud (restores achievements, VPS mapping, and CAT progress)


🐛 Feedback & Bug Reports: Report bugs or suggestions directly from the app


🔑 Admin Login: Log in as chat moderator for Tournament Chat moderation (admin only)

 

🔧 Maintenance


📁 Directory Setup: Configure BASE, NVRAM, and Tables directories


• Repair Data Folders: Fix broken or missing data directories


• Force Cache NVRAM Maps: Re-download and cache all NVRAM map files


🔄 Update Databases: Force re-download of index.json, romnames.json, vpsdb.json, and VPXTool


⬆️ Watcher Update: Check GitHub for newer releases — downloads and installs the Setup automatically with release notes preview

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🛡️ Fair Play & Anti-Cheat

To keep the leaderboards fair, local saves and scores are protected by hash signatures.
Matches and tournaments use a feature called NVRAM tracking. Restarting from Ball 1, pressing F3, or restarting the VPX Player will result in disqualification.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Data Sources

The Achievement Watcher uses the following open-source projects and data sources:

Thanks to this people:

• NVRAM Maps by tomlogic — https://github.com/tomlogic/pinmame-nvram-maps
• vpxtool by francisdb — https://github.com/francisdb/vpxtool
• VPC Data by emb417 — https://github.com/emb417/vpc-data
• VPS Database by VPS Team — https://github.com/VirtualPinballSpreadsheet/vps-db
• Visual Pinball & PinMAME — https://github.com/vpinball

What's New in Version 2.9   See changelog

Released

CHANGELOG v2.9

 

### ☁️ Cloud Upload for Custom Achievement Tables (CAT)

 

Shovel Knight by Wizball are the first original table to feature achievements. Shovel Knight have now been added to the cloud database

- Cloud path separated from ROM tables (`progress_cat`)
- All anti-cheat rules still apply (player ID, player name, watcher version)

- Duplicate uploads prevented by dedup window

 

### 🎭 Trophie & Steely — Animated Mascot Duo

- New trophy-shaped companion character **Trophie** lives in the GUI with context-aware speech bubbles
- **Steely** — the Overlay mascot is a shiny metallic pinball with a handlebar mustache
- Added a new sub-tab for mascots with Settings

 

### 🧠 Mascot — Adaptive Personality

 

- Both mascots share a persistent memory (`trophie_memory.json`) and adapt to your playstyle
- **Comment frequency adjusts** — dismiss bubbles quickly and they'll talk less
- **Context-aware reactions** — time of day, favourite tables, session length, achievement streaks, heat levels, challenge results
- **Tip rotation** — every tip is shown once before any repeats
- **Zank system** — when both mascots are active, they bicker with 30 synchronized dialogue exchanges (with cooldowns to prevent spam)

 

### Effects System (new Appearance sub-tab)

 

- New **Effects** sub-tab with per-animation toggles for 30+ overlay effects
- Grouped by overlay type: Main Overlay, Achievement Toast, Flip Counter, Challenge Select, Heat Barometer, Timer Countdown
- All `fx_*` settings apply live — no overlay restart needed
- Intensity sliders for effects that benefit from them (removed from effects that don't)
- "Preview All" button to demo all active effects at once
- Low Performance Mode master switch disables all effects + bulk buttons respect it

 

### 🖼️ Post-Processing Effects

 

- New post-processing pipeline for overlays: Bloom, Motion Blur, Chromatic Aberration, Vignette, Film Grain, Scanlines
- Settings section in UI with per-effect toggles
- Reads config live every tick — changes take effect immediately
- Auto-stops timer when no effects are enabled (zero CPU overhead)

 

### 🎮 OpenGL Rendering

 

- All 30 effect classes rewritten with native OpenGL `_draw_gl()` paths (GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_TRIANGLE_FAN)
- QPainter fallback on OpenGL failure
- Shader infrastructure added (`_compile_shader`, `_link_program`)

 

### 🛡️ Atomic Config Save

 

- `config.json` is now written atomically via temp-file + `os.fsync()` + `os.replace()` — a hard kill during Windows shutdown can no longer corrupt or empty the config
- Automatic backup fallback: if `config.json` is missing or corrupt on startup, the app loads from `config.json.bak`
- Fixes the issue where user paths and overlay positions were erased after the first PC boot of the day

 

### 🔧 Fixes since v2.8.9

 

- **Progress Tab** — CAT tables are now centered like ROM tables. Added rarity calculation and display for CAT Tables
- **Overlay** — Page 1 has been adapted for CAT tables
- **AWEditor** — New 🔃 Refresh button for the Custom column without a full rescan
- **Overlay** — Added tip label for overlay background setting in Appearance tab
- **APP_DIR** — Correct path resolution, improved error handling on config load. The path is stored more reliably during initial installation or updates

User Feedback

Create an account or sign in to leave a review

You need to be a member in order to leave a review

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

thechadisgr8

   2 of 2 members found this review helpful 2 / 2 members

OK so FINALLY got to try this out, does this not pop up with achievements like a game would? If not that would be AMAZING! maybe I just over thought it lol really cool tho to see your stats in real time. 

Response from the author:

That's the goal, and it's my goal too. I'm already working on an overlay and pop-ups. It'll just take a little while 😉

JRVirtual34

  

Hello team,

First of all, thank you for this tool, which is really well designed. It’s clear that it is still in the early stage of development, and for now there aren’t many duels or players yet — we’re still a fairly small group using it.

I was thinking it would be really great to also add Future Pinball tables. If it were possible to implement a system using fpRAM to scan and record scores, that could be really interesting to fully integrate Future Pinball into the platform.

This is just a suggestion to see if something like this could be considered in the future.

Anyway, take care and good luck with the upcoming updates!

deadmanworking

· Edited by deadmanworking

  

Wow. So much happened here between the initial release I tried and the current update, this feels like a polished piece of software already, thanks for working on this! 

UltraMagnus

  

wow, AWSOME Update!! I love all the auto matching and how it now scans every table I have it's great thank you

AquaticPlayToy

  

This software is a lot of fun.  Been playing around with it for the past few days and it's really cool to see the stats.  Highly recommend!

×
  • Create New...