⚠ Work in Progress
This project is still under active development. Features may change, and you may encounter unexpected issues. Please report any bugs or feedback via GitHub Issues.
ArcadeScore is a self-hosted high-score tracking solution designed for arcade enthusiasts. It enables users to track, display, and manage high scores for their personal or shared arcade setups. The project emphasizes flexibility, user customization, and community engagement.
- High Score Tracking: Seamlessly log and display high scores for multiple games.
- Multiple Scoreboards: Create multiple Scoreboard displays, and access all from a single device.
- Customizable Scoreboard: Adjust colors, background images, and styles for your arcade scoreboard.
- Auto-Scrolling Scoreboard: Beautiful, auto-scrolling layout showcasing games and scores.
- Preset Styles & Custom CSS: Select from 4 preset styles, or create your own with full CSS customization.
- Self-Hosted Solution: Maintain complete control over your data and setup.
- hi2txt Support: Arcade Mame Highscores
- Game Score Page: Select a game card to zoom in and see additional details
- Multiple VPin Studio connections: Allow multiple VPin Studio connections to a single scoreboard
- Custom Fonts: Custom Font installer via Style Menu
- Manual Score Input: Feature to enable the ability to manually input scores
- Password Protected Boards: Set a password on a board to protect your settings from changes
- VPin Studio Remote: Control your pinball tables remotely
- Public Tournaments: Participate in global or regional arcade tournaments.
- Friend Score Syncing: Compare high scores with friends in real time.
Before running ArcadeScore, ensure your system meets the following requirements:
- Docker: Install Docker
- Docker Compose (included with newer versions of Docker)
- Python 3.8+ (Ensure it's installed and added to your system PATH)
- pip (Included with Python, but can be updated:
python -m ensurepip --default-pip) - 7-Zip (Required for exports)
- Windows: Automatically installed via
setup.batif missing - Linux/macOS: Installed via
setup.sh(usesaptoryum)
- Windows: Automatically installed via
- Linux/macOS users may need
sudofor dependency installations. - Ensure port 8080 is available if running directly via Python.
-
Clone the Repository:
git clone https://github.com/mikedmor/ArcadeScore.git cd ArcadeScore -
Create and update .env file Create a .env file following the .env.sample for assistance. Your file should look something like this. If running via docker, ensure your server ip is static on the network, and then include that ip in the SERVER_HOST_IP.
# BOTH DOCKER OR STANDALONE ARCADESCORE_HTTP_PORT=8080 # WEBHOOK SETUP SERVER_HOST_IP=192.168.x.x # Ensure this is static # REQUIRED FOR DOCKER ## NGINX SERVER SERVER_NAME="localhost" SSL_PEM=selfsigned.pem SSL_KEY=selfsigned.key ## DOCKER MOUNTS DOCKER_HTTP_PORT=80 DOCKER_HTTPS_PORT=443
-
Run the software:
a. Set Up Docker (Recommended): Ensure Docker is installed and running on your machine. Build and run the container:
docker-compose up --build -d
To stop the software
docker-compose down
b. Run via Python: If you prefer running ArcadeScore outside of Docker, follow the setup for your system:
🖥 Windows: Run the following in Command Prompt (cmd):
setup.bat
🐧 Linux/macOS: Run the following in Terminal:
./setup.sh
-
Install Certificates (Optional): If you want to remove the browser warnings when utilizing https urls then you will want to install the certificates so that your computer reconizes them as a "Trusted Root Certification Authority". Follow these steps to do that.
- In the certs folder find the
selfsigned.crt - right click on this file and select "Install Certificate" (Windows)
- select "Local Machine" then click Next, allow UAC
- select "Place all certificates in the following store", then press the browse button
- Select "Trusted Root Certification Authorities", then press Ok
- Press Next, then Finish to install the certificate
- Done, you should now be able to access https://localhost and see the application without a warning
Note: These steps utilize the included self-signed certificates. If you want more security then it is recommended that you generate your own using OpenSSL
openssl req -x509 -newkey rsa:4096 -keyout selfsigned.key -out selfsigned.crt -days 365 -nodes -subj "/CN=localhost" && \ openssl x509 -outform der -in selfsigned.crt -out selfsigned.der && \ cat selfsigned.key selfsigned.crt > selfsigned.pem
Alternatively if you remove these certificats, the system will autogenerate new ones for you (Docker Only), but you will want to pull these from the container and install them on all machines that will access the application
Note: VPin Studio Server API only communicates via HTTP, however the system has a built in proxy pass to handle this when needed
- In the certs folder find the
-
Access the Application:
- Open your browser and navigate to
http://localhost. You should see the landing page. - Click the scoreboard to access the default scoreboard, or create a new one
- Default Setup: The default settings create a sample scoreboard. Customize settings via the admin menu on the scoreboard!
We welcome contributions from the community! If you’d like to help:
- Fork the repository on GitHub.
- Create a new branch for your feature or bug fix.
- Submit a pull request (PR) with detailed information about your changes.
- Engage in discussions and improvements in the Issues section.
Your contributions make ArcadeScore better for everyone!
ArcadeScore is a free, open-source project designed to provide a self-hosted high-score tracking solution for virtual pinball and arcade setups. If you enjoy using ArcadeScore and would like to support its continued development, consider buying me a coffee!
Your support helps keep this project alive and improving. Thank you!
The vision for ArcadeScore is to:
- Provide a robust, open-source solution for arcade score tracking.
- Foster a community-driven approach where users contribute and improve the platform.
- Offer flexible deployment options suitable for hobbyists and professional arcade setups.
- Core features
- VPin Studio Integration (via iScored)
- Table Subscriptions
- Pulling High Scores
- Submitting New Scores
- VPin Studio 'API' Integration
- Create Scoreboard with integration
- Auto Register for updates (via Webhooks)
- Option: Create new player when one does not exists
- Import Games
- Import Game Media
- Capture image from mp4 frame
- Auto rotate playfield for background
- Compress images to improve load
- Option to adjust compression settings
- Option to fallback to vpin studio media if available
- Import/Update Players
- Import Scores
- Game Management
- Game List
- Hide Games
- Edit Games
- Delete Games
- Add Games
- Load Details from VPS
- Score Display Options
- Custom CSS
- Preset CSS Templates
- Copy CSS Between Games
- Player Management
- Player List
- Hide Player
- Edit Player
- Delete Player
- Add Player
- Map multiple initials to a single player
- Style Management
- Copy Style to All Games
- Custom CSS Styles
- Preset CSS Styles
- 4 Included Styles
- Default
- Neon Glow
- Retro Arcade
- Cyberpunk
- 4 Included Styles
- Integrations Menu
- VPin Studio Integraion
- Add/Edit/Delete Multiple VPin Studio Server Connections
- Edit VPin Studio Server URL
- Edit Webhook Subscriptions
- Resync Media
- Resync Scores
- Add/resync Players
- Add/resync Games
- VPin Studio Integraion
- Admin Settings
- Room Name Customization
- Date Format Selection
- Disable Fullscreen Trigger
- Idle Scroll Toggle & Speed
- Long Names Enabled
- Clear Scores Button
- Clear Games Button
- Sockets for Realtime updates
- Create Scoreboard VPin Studio Import Progress Socket
- Score Update Socket
- Scoreboard change socket
- Game Adjustments/Changes
- Game Style Adjustments/Changes
- Global Style Adjustments/Changes
- Player Adjustments/Changes
- VPin Studio Integration (via iScored)
- Deployment Options
- Windows Deployment
- Linux Deployment
- Mac Deployment (Might work using setup.sh 🤷 Let me know)
- Dockerized Deployment
- Multiple Scoreboards
- Improved Landing Page
- Mobile Support
- Import/Export database and media
- Performance Improvements
- Improved compression of media (VP Spreadsheet & VPin Studio)
- Vertical score scrolling does not work on mobile
- Drag game reordering is slow when dragging down the list
- Games Menu drag and drop loses shadow placement after first change (refresh fixes it)
- New Player alias default changes when adding new aliases
- Most setting adjustments do not actually work currently
- Deleting players requires a refresh to propigate correctly
- Changing players default alias requires page refresh to propigate
- Selected Style Preset is not remembered when new games are added via webhooks
- Deleting a scoreboard does not inform vpin-studio to remove its webhook
ArcadeScore is released under the MIT License.
For support or inquiries, please visit the GitHub repository's Issues section.





