Welcome! This repository hosts a native controls patcher for the PC version of Subway Surfers. It injects keyboard input handling, restores missions, ensures null-safe daily words, and patches run sequences directly into the game's assembly using Mono.Cecil.
Note
Vibe Coding in Progress ☕✨
This is a project built and maintained purely in vibe-coding mode! I'm currently hanging out, fixing bugs as they pop up, and polishing the gameplay experience on PC.
If you find issues or have ideas to make the patch even better, suggestions and contributions are absolutely welcome! Feel free to open an Issue, submit a Pull Request, or drop a suggestion.
- ⌨️ Native Keyboard Controls: Play Subway Surfers on PC seamlessly with standard keyboard inputs.
- 🔧 Core Fixes:
- Decouples the tilt/Y-value checks to optimize PC inputs.
- Patches
MissionsandUIMissionHelperto run smoothly without crash states. - Standardizes fallback daily words in
DailyWord.Start(). - Redirects death sequences and resets run states safely.
- 🔓 Character Unlock Utility: Save-data injection support to unlock all characters, coins, hoverboards, upgrades, and headstarts.
- 🐧 Linux AppImage & Native Packaging: Scripts to package the game as a single portable
.AppImageapplication for Linux desktops.
Use these keys to navigate through the game:
| Action | Key / Input |
|---|---|
| Jump | ⬆️ Up Arrow / W |
| Roll | ⬇️ Down Arrow / S |
| Move Left | ⬅️ Left Arrow / A |
| Move Right | ➡️ Right Arrow / D |
| Launch Hoverboard | ⎵ Spacebar |
| Quit Game | ⎋ Escape (ESC) |
- Run the Patcher: Execute
Patcher.exeto modify the game assembly files (if you are compiling from source). - Launch Subway Surfers: Double-click
Subway Surfers.exeto play the patched version with native keyboard controls. - Exit Hook: When done playing, make sure to exit the controls helper icon from your system tray or press
Ctrl + Shift + E.
This is a patched Windows version of Subway Surfers. To run it on Linux, you must have Wine installed, including 32-bit library support (since the game is a 32-bit Windows application).
Select the commands for your Linux distribution to set up Wine and its 32-bit dependencies:
-
Ubuntu / Debian / Linux Mint:
sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine wine32
-
Fedora:
sudo dnf install wine wine.i686
-
Arch Linux:
- Open
/etc/pacman.confin a text editor with root privileges. - Uncomment the
[multilib]section:[multilib] Include = /etc/pacman.d/mirrorlist
- Update your system database and install Wine:
sudo pacman -Syu wine
- Open
If you have a compiled .AppImage bundle:
- Make sure Wine 32-bit is installed using the instructions above.
- Right-click the
.AppImagefile -> Properties -> Permissions -> Check Allow executing file as program (or runchmod +x SubwaySurfers-x86_64.AppImage). - Double-click the AppImage to launch the game natively on your Linux desktop.
- Navigate to the
AppImagedirectory:cd AppImage - Make
build-appimage.shexecutable and run it to prepare the build structure:chmod +x build-appimage.sh ./build-appimage.sh
- Use the standard Linux
appimagetoolto bundle it:appimagetool SubwaySurfers.AppDir
Warning
This step overrides your current local save game. Backup your existing saves if you wish to preserve them!
- Go to your local game data folder (replace
YOURUSERNAMEwith your actual Windows username):C:\Users\YOURUSERNAME\AppData\LocalLow\Kiloo Games\- Note:
AppDatais hidden by default. Enable "Show hidden files, folders, and drives" in your File Explorer folder options.
- Note:
- Back up the existing
Subway Surfdirectory. - Copy the contents of the
Unlock All Charactersdirectory from this repository and replace theSubway Surffolder in yourLocalLow\Kiloo Gamespath.
- Navigate to your Wine prefix's local AppData folder (usually located at
~/.wine/drive_c/users/YOURUSERNAME/AppData/LocalLow/Kiloo Games/or under Bottles' user directory). - Back up and replace the
Subway Surfdirectory with the one fromUnlock All Characters.
Contributions are what make the open-source community an amazing place to learn, inspire, and create.
- Fork the Project.
- Create your Feature Branch (
git checkout -b feature/AmazingFeature). - Commit your Changes (
git commit -m 'Add some AmazingFeature'). - Push to the Branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
All feedback, bug reports, and pull requests are highly appreciated!
If you want to support the developer: