Quake 2 port for Apple Watch
03.09.2023
Watch_Quake2 is a Quake 2 port specifically designed for Apple Watch, incorporating software rendering and working video and audio playback capabilities.
About
Changes by ByteOverlord
Features
Changelog
Game Size
Battery Usage
Benchmark
Known Issues
Building Requirements
Building the Watch_Quake2
Adding music to Watch_Quake2 (Optional)
Credits
License
Following the successful release of the Quake 1 port for Apple Watch, our team set an ambitious objective: to bring Quake 2 to this portable device. However, porting the 1997 release of Quake posed significant challenges. We encountered initial setbacks that considerably delayed the release schedule for several months. ByteOverlord made commendable progress early in the porting process, but crashing issues persisted. After a brief hiatus, we resumed our efforts and focused on improving the stability of the game port, ultimately achieving a more reliable and robust build.
The primary objective of this project was to demonstrate the remarkable capabilities of the Apple Watch, even when operating in software rendering mode. This project serves as a glimpse into the untapped potential that could be unlocked if we were granted access to the device's GPU. Just envision the possibilities that could be achieved with such resources at our disposal.
Previous port:
Quake 1 for Apple Watch https://github.com/ByteOverlord/Watch_Quake 18.11.2022
10.10.2023
08.10.2023
06.09.2023
Complete game with optional video and music takes ~ 403,4 MB on the watch.
pak0.pak is 184 MB
pak1.pak is 13 MB
pak2.pak is 45 KB
Video Files 163,7 MB
Music Tracks are 38,7 MB (converted with Audacity (Mono, 22050 Hz, WAV, IMA ADPCM))
Usage listed as % the charge dropped during the test.
Model | Battery Health | 30 min | 60 min |
---|---|---|---|
S4 40mm | - | - | - |
S4 44mm | - | - | - |
S5 40mm | - | - | - |
S5 44mm | 95% | 17% | 33% |
SE (1st Gen) 40mm | - | - | - |
SE (1st Gen) 44mm | - | - | - |
S6 40mm | - | - | - |
S6 44mm | - | - | - |
S7 41mm | - | - | - |
S7 45mm | - | - | - |
SE (2nd Gen) 40mm | - | - | - |
SE (2nd Gen) 44mm | - | - | - |
S8 41mm | - | - | - |
S8 45mm | - | - | - |
Ultra | - | - | - |
S9 41mm | - | - | - |
S9 45mm | - | - | - |
Ultra 2 | - | - | - |
Results are only indicative.
Good | Moderate | Bad |
---|---|---|
≤ 5 ms | 6-12 ms | > 16 ms |
DEMO1 | Avg | Low | High |
---|---|---|---|
S4 40mm | 6.80 | 2.85 | 12.96 |
S4 44mm | 7.12 | 2.90 | 14.08 |
S5 40mm | 6.95 | 2.55 | 16.72 |
S5 44mm | 7.28 | 3.19 | 14.89 |
SE (1st Gen) 40mm | - | - | - |
SE (1st Gen) 44mm | - | - | - |
S6 40mm | - | - | - |
S6 44mm | - | - | - |
S7 41mm | - | - | - |
S7 45mm | - | - | - |
SE (2nd Gen) 40mm | - | - | - |
SE (2nd Gen) 44mm | 7.71 | 2.57 | 14.29 |
S8 41mm | - | - | - |
S8 45mm | - | - | - |
Ultra | - | - | - |
S9 41mm | - | - | - |
S9 45mm | - | - | - |
Ultra 2 | - | - | - |
DEMO2 | Avg | Low | High |
---|---|---|---|
S4 40mm | 7.10 | 2.93 | 15.36 |
S4 44mm | 7.58 | 4.31 | 16.79 |
S5 40mm | 7.23 | 3.35 | 14.50 |
S5 44mm | 7.20 | 4.17 | 14.43 |
SE (1st Gen) 40mm | - | - | - |
SE (1st Gen) 44mm | - | - | - |
S6 40mm | - | - | - |
S6 44mm | - | - | - |
S7 41mm | - | - | - |
S7 45mm | - | - | - |
SE (2nd Gen) 40mm | - | - | - |
SE (2nd Gen) 44mm | 7.96 | 3.45 | 18.13 |
S8 41mm | - | - | - |
S8 45mm | - | - | - |
Ultra | - | - | - |
S9 41mm | - | - | - |
S9 45mm | - | - | - |
Ultra 2 | - | - | - |
Benchmarks are only indicative.
Get Quake II (Original) through gog.com
Download the Quake II (Original) installer from your gog.com profile:
"gog.com Profile" -> Games -> Quake II (Original) -> View Downloads -> Download Offline Backup Game Installers -> Quake II (Original)
Install Homebrew from terminal:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/homebrew/go/install)"
Install innoextract from Homebrew:
brew update
brew install innoextract
innoextract “downloaded setup_quake2_quad_damage_2.0.0.3.exe file location”
(innoextract will extract an “app” and "tmp" folders in current working directory.) "app" folder has the needed PAK files (app/baseq2/), optional video (app/baseq2/video/) and optional audio (app/music/).
/WatchQuake2 Watch App/Resources/baseq2/
Optional video files can be placed in:
/WatchQuake2 Watch App/Resources/baseq2/video/
Open the GitHub WatchQuake Xcode project.
In WatchQuake2 project file go to:
WatchQuake2 -> Targets -> WatchQuake2 -> Signing & Capabilities
Select your "Team" and write a unique “Bundle Identifier”.
Then in WatchQuake2 project file go to:
WatchQuake2 -> Targets -> WatchQuake2 Watch App -> Signing & Capabilities
Select your "Team" and use the same “Bundle Identifier” as previously but with “.watchkitapp” added at the end.
After building, the game will start and playback demo1.
Click the game view to go to main menu.
After testing connect iPhone to the Mac with a cable and make sure Apple Watch has a connection to iPhone.
Set the iPhone and Apple Watch in to "Developer" mode.
On iPhone:
Settings -> Privacy & Security -> Developer Mode (SECURITY) -> Developer Mode
On Apple Watch:
Settings -> Privacy & Security -> Developer Mode (SECURITY) -> Developer Mode
After the devices have restarted.
Transfer times:
2 min (iPhone X & S4 40mm)
2 min (iPhone X & S4 44mm)
7 min (game, music), 10 min (game, videos, music), (iPhone X & S5 44mm))
15 min (iPhone 12 mini & S5 40mm)
Locate the music tracks (track02 - track21.ogg) that where extracted from the Quake 2 installer (app/music/).
Open Audacity and drag the tracks to it. Edit the tracks to Mono.
Select -> All
Tracks -> Mix -> Mix Stereo Down to Mono
Place the exported audio files (track02 - track21.wav) inside the WatchQuake2 project:
“WatchQuake2 Watch App/Resources/baseq2/music/”
From Xcode build the Watch_Quake2 to the watch.
Transfer times:
2 min (iPhone X & S4 40mm)
2 min (iPhone X & S4 44mm)
7 min (game, music), 10 min (game, videos, music), (iPhone X & S5 44mm))
15 min (iPhone 12 mini & S5 40mm)
quake_watch https://github.com/MyOwnClone/quake_watch
Quake 2 source code by Id Software. https://github.com/id-Software/Quake-2
Yamagi Quake II (game saving) https://github.com/yquake2/yquake2
App icon, images and documentation by IdeaVoid
This software is released under the terms of the GNU General Public License v2.