# Playable — guides # Halo CE in your browser: which version should you choose? Canonical: https://playable.wtf/guides/halo-ce-browser-versions/ Written: 2026-10-16 · Revised: 2026-10-17 Start with Hynes for desktop mouse play, HCEMobile for touch controls, or an OpenCE release for native desktop play. Bring your own original Xbox disc image. ## Choose a version Choose [Mitchell Hynes Web](https://playable.wtf/games/halo-combat-evolved/) for a desktop browser session with mouse aiming and a private match link. Choose [HCEMobile](https://playable.wtf/games/halo-ce-mobile/) for phone controls, an installable home-screen app and explicit save export. For an installed Windows or Linux game, use [OpenCE’s native releases](https://playable.wtf/games/opencommunityedition-opence/). Each asks for your own original Xbox game data. The decision is about the client around Halo CE: importing a disc, handling input, finding friends and keeping progress. These projects do not turn Halo into Anniversary, Halo Reach or Halo 3. Nor does installing a website on a phone make it the same application as a native Android release. What each creator documents | Version | Bring | Choose it for | | --- | --- | --- | | [Mitchell Hynes Web](https://playable.wtf/games/halo-combat-evolved/) | An XISO from your own Xbox Halo CE disc | Desktop controls and private invite rooms (Choose HCEMobile for documented phone controls.) | | [HCEMobile](https://playable.wtf/games/halo-ce-mobile/) | A verified original-Xbox `.iso` or `.xiso` | Touch play on iPhone, iPad or Android (The creator also documents controllers and desktop input.) | | [OpenCE native](https://playable.wtf/games/opencommunityedition-opence/) | Your own Xbox ISO/XISO and the platform’s release build | An installed desktop game and local split-screen campaign (A release build is the playing route; debug builds stop on assertions.) | For the fewest setup decisions on a desktop with an XISO ready, start with Hynes’s import screen. On a phone, HCEMobile’s editable touch layout is the stronger reason to choose it. Neither route supplies the original game. ## Get the right files Start with the **original Xbox edition of Halo: Combat Evolved**. A similarly named PC installation is not the Xbox disc image these launchers request. Renaming a file to `.xiso` does not convert it. Hynes asks specifically for an XISO made from your own Xbox copy and supplies no game data. His launch screen links to the OpenCE community’s disc-ripping help, but his website is independently maintained: send host-specific problems to Hynes, not OpenCE. [Check the import screen ↗](https://mitchellhynes.com/halo/halo.html) HCEMobile validates the imported disc and copies its maps into private browser storage, using up to **1.8 GB**. The host says this local import does not upload your data. Allow space for that copy as well as the image you selected. [See game-data requirements ↗](https://hcemobile.com/) HCEMobile accepts full-game and multiplayer-disc versions. Pick the full-game image for the campaign: importing a multiplayer disc does not add campaign maps. Keep track of which copy is selected, because each imported version keeps separate progress. ## Start on your device ### Desktop: Mitchell Hynes Web 1. Open the [Hynes project page](https://playable.wtf/games/halo-combat-evolved/) and follow Play to the host. 2. Use **Choose XISO**, select your owned disc image, and wait for loading. 3. Click the game or **Focus game** to capture the mouse. Move with WASD, aim with the mouse and fire with left click. On this host, Space jumps, F melees, E/R handles the Xbox X action/reload button, and Tab or the wheel switches weapons. Right click or G throws a grenade; it is not a modern shooter’s aim-down-sights button. Z or middle click supplies zoom. Escape opens the pause menu. ### Phone: HCEMobile 1. Open [HCEMobile](https://playable.wtf/games/halo-ce-mobile/) and follow its installation instructions. On iPhone/iPad, use Safari’s Share → Add to Home Screen. On Android, use the browser’s install option. 2. Import your verified disc image in the app you will use, let map copying finish, then choose Play. 3. Use the documented touch layout or a supported controller. Export saved games before changing your setup. HCEMobile’s left touch area moves and the right side aims. Choose Modern or Original Xbox layout, then use **Edit layout** to resize awkwardly placed buttons. Its [getting-started guide](https://hcemobile.com/guide/) also covers keyboard input and paired controllers. ## Play with friends Hynes documents map and mode selection followed by an invite link, with direct peer connections when possible. HCEMobile’s guide separates local modes from online play: campaign, split-screen and System Link need no account, while its online service requires a free account. Use Hynes for an agreed map and mode with a private invite. Use HCEMobile’s **Multiplayer → Matchmaking** for its playlists, or **Custom Games** for its lobbies. These are different services; agree on the host before sharing an invitation. HCEMobile’s troubleshooting guide asks both players to use the latest update and the same disc-image version. Try Wi-Fi if a mobile network blocks a direct connection. These instructions apply to HCEMobile’s service; a Hynes invite is a different route. ## Saves and common problems HCEMobile keeps saves with each imported game copy and offers export and restore. Select the right copy before looking for progress, and keep an export before moving devices. The [browser-save guide](https://playable.wtf/guides/browser-game-saves-backups/) explains how to check a restored copy without replacing your only working save. On HCEMobile, memory errors call for closing other apps and tabs; black levels have a Lower-resolution textures option in Settings and data. For input trouble, its guide documents iOS 17 or later, Chrome on Android and a button press on the start page to activate a paired controller. See [controller setup](https://playable.wtf/guides/browser-game-controller-setup/) before starting a longer session. On Hynes’s page, click the game or **Focus game** when the mouse is not captured. Keep host-specific troubleshooting with that host: changing a setting in HCEMobile does not change Hynes’s client. ## When native OpenCE fits better If you want to keep Halo outside browser storage, [OpenCE](https://playable.wtf/games/opencommunityedition-opence/) provides native Windows, Linux and Android downloads. Select the **release** package, launch it and import your owned Xbox ISO/XISO; on desktop it extracts `maps/` beside the executable. This is a separate installation from either web host. OpenCE’s desktop guide documents two-player local campaign: one keyboard-and-mouse player can share with a gamepad player. Co-op starts a selected level and difficulty, rather than continuing one player’s single-player save. If a PC-style menu has empty lists, its documented fallback is the Xbox menu setting. [OpenCE campaign, input and menu instructions ↗](https://github.com/OpenCommunityEdition/OpenCE/blob/HEAD/port/linux/README.md) The [Halo decompilation source project](https://playable.wtf/games/halo-ce-decompilation/) serves a different purpose: reconstructing build 2342 with its exact development inputs. Choose a player-facing host or OpenCE release when your goal is a session, rather than a source build. ## Project reading - [Mitchell Hynes · web build and controls](https://mitchellhynes.com/halo/halo.html) - [HCEMobile · game data and features](https://hcemobile.com/) - [HCEMobile · getting started](https://hcemobile.com/guide/) - [OpenCE · releases and disc import](https://github.com/OpenCommunityEdition/OpenCE#readme) - [OpenCE · local campaign and desktop controls](https://github.com/OpenCommunityEdition/OpenCE/blob/HEAD/port/linux/README.md) - [Halo decompilation · exact development target](https://github.com/punpckhdq/halo) --- # Diablo browser versions: choose a demo, retail game or Hellfire Canonical: https://playable.wtf/guides/diablo-browser-demo-game-files/ Written: 2026-10-16 · Revised: 2026-10-17 Try the original Diablo with a hosted demo, use your own MPQ for the retail game, or choose native DevilutionX for Hellfire and a controller-focused setup. ## Compare the projects For a first desktop session, choose [JohnImril’s Diablo Web](https://playable.wtf/games/diablo-web-modern/): its start screen separates the free demo, your own MPQ and save management. Choose [d07RiV’s DiabloWeb](https://playable.wtf/games/diablo-browser/) if you want the earlier browser client or already keep a character there. Choose [DevilutionX](https://playable.wtf/games/diasurgical-devilutionx/) for native installation, Hellfire or its documented controller scheme. Both web clients run the original Diablo through related WebAssembly work. JohnImril’s modernization changes the browser interface and storage management; it is not a remaster or an expansion. The choice of game data determines demo versus retail content, while the choice of client determines how you import and maintain it. Choose a route into the original Diablo | Project | Without retail files | With your own files | | --- | --- | --- | | [d07RiV’s DiabloWeb](https://playable.wtf/games/diablo-browser/) | Hosted shareware, using `spawn.mpq` | Import `DIABDAT.MPQ` for the retail game | | [JohnImril’s Diablo Web](https://playable.wtf/games/diablo-web-modern/) | Choose **Play Free Demo** | Choose **Load Your MPQ**, or drop your archive on the start screen | | [DevilutionX](https://playable.wtf/games/diasurgical-devilutionx/) (Separate native download) | Can use shareware data | Supports Diablo and optional Hellfire data | The easiest way to sample Diablo is either hosted demo: there is no disc import to prepare. For a long character run, pick the client whose save workflow you intend to keep using before committing progress. JohnImril’s online multiplayer remains experimental, so it is a single-player starting recommendation. ## Demo vs. retail files `spawn.mpq` is the shareware archive supplied by the demo route. In d07RiV’s DiabloWeb, it lets you play the **Warrior through the first two dungeon floors**. The project’s shareware engine blocks entry below floor two and reserves Rogue and Sorcerer for retail play. This is a small opening dungeon run, not the complete adventure. `DIABDAT.MPQ` is the original Diablo retail archive. It adds the Rogue and Sorcerer choices and the rest of the base game’s dungeon beyond the demo boundary. Use the copy from your own Diablo installation or disc; it is not a Diablo II or Diablo II: Resurrected file. Both browser projects require you to supply it for retail play. [d07RiV’s file guidance ↗](https://github.com/d07RiV/diabloweb#readme) 1. Try the shareware route to check whether the controls suit you. 2. For retail play, locate your owned `DIABDAT.MPQ` before opening the import picker. Select the archive itself, not an installer or a folder. 3. Keep your original archive. Importing it into one browser client does not prepare another client or device. ## Mouse, phone or controller Use a mouse and keyboard for JohnImril’s browser client; the creator explicitly recommends them. Touch input exists, but is still being improved. Landscape gives the interface more room without changing that limitation. d07RiV advertises mobile use, so its shareware route is another way to try the older touch interface before importing retail data. If direct stick movement is your priority, consider native [DevilutionX](https://playable.wtf/games/diasurgical-devilutionx/). Its controller scheme uses the left stick to move and face buttons for actions; the right stick can act as a mouse for inventory work. That is a different input approach from adapting clicks to a phone screen. Use the [DevilutionX controller reference](https://github.com/diasurgical/DevilutionX/wiki/Game-Controller-Scheme) for your pad’s labels. For Android, DevilutionX’s platform instructions provide an app installation and game-data location. iPhone/iPad setup instead involves a sideloaded IPA and copying the MPQs through the documented file-transfer route. If you only want a quick browser trial, those native steps are unnecessary; if touch controls are the obstacle, they are a concrete alternative. [Native platform installation ↗](https://github.com/diasurgical/DevilutionX/blob/master/docs/installing.md) ## Keep your saves JohnImril’s client stores saves in the current browser profile, without cloud sync. Use **Manage Saves** to export them before clearing data or changing devices. It also accepts `.sv` imports. Keep a downloaded backup even if you normally return to the same browser. For a first import, Manage Saves may not yet be visible. Drop your `.sv` file onto the start screen with Play Free Demo and Load Your MPQ; after the import, Manage Saves appears. Use its upload control for further saves. Keep the original export while you check that the intended character loads. If it says **Game already open**, finish saving in the other tab or installed app, close that window, then choose **Try Again**. Clearing browser data is not the fix. These instructions belong to JohnImril’s client; do not assume another Diablo host shares its storage or recovery controls. [Save and recovery instructions ↗](https://github.com/JohnImril/diablo_web#playing-and-saving) A copy of `DIABDAT.MPQ` contains game data, not your character’s progress. Export the save separately before moving to another profile or device. Follow the [backup and restore sequence](https://playable.wtf/guides/browser-game-saves-backups/) before removing the original installation. ## What about Hellfire? For Hellfire, choose the separate [DevilutionX download](https://playable.wtf/games/diasurgical-devilutionx/): its installation guide covers the expansion files. Follow the instructions for your platform. Its installation guide asks for `DIABDAT.MPQ` and, for Hellfire, `hellfire.mpq`, `hfmonk.mpq`, `hfmusic.mpq` and `hfvoice.mpq`. Supply your own expansion data and place it in the location specified for your platform. The engine download does not supply the retail game or expansion. [DevilutionX installation guide ↗](https://github.com/diasurgical/DevilutionX#how-to-install) Choose this route for the base game plus the expansion’s content, rather than trying to load Hellfire files into either browser client. DevilutionX also offers optional presentation and convenience changes; its widescreen view and extra health/experience bars are not mandatory. [Diablo II: Resurrected Mobile](https://playable.wtf/games/diablo-ii-resurrected-mobile/) is a separate game and personal-build project. Its Switch-version resources and phone signing workflow cannot replace `DIABDAT.MPQ`, and an original Diablo character is not a Diablo II character. ## Project reading - [d07RiV · DiabloWeb README](https://github.com/d07RiV/diabloweb#readme) - [JohnImril · playing and saving](https://github.com/JohnImril/diablo_web#playing-and-saving) - [DevilutionX · installation and Hellfire files](https://github.com/diasurgical/DevilutionX#how-to-install) - [DiabloWeb engine · two-floor shareware boundary](https://github.com/d07RiV/devilution/blob/a702a42b2f87880abfcaa2654b5ef701cf0b684f/Source/player.cpp#L1973-L1984) - [DiabloWeb engine · shareware classes](https://github.com/d07RiV/devilution/blob/a702a42b2f87880abfcaa2654b5ef701cf0b684f/Source/ui/workflow.cpp#L78-L90) - [DevilutionX · controller scheme](https://github.com/diasurgical/DevilutionX/wiki/Game-Controller-Scheme) - [DevilutionX · platform installation](https://github.com/diasurgical/DevilutionX/blob/master/docs/installing.md) - [Diablo II: Resurrected Mobile · separate game requirements](https://github.com/jhaizhou-ops/d2r-mobile) --- # Skate 3 versions: browser fan game, native ports or Rust rewrite? Canonical: https://playable.wtf/guides/skate-browser-vs-native-ports/ Written: 2026-10-16 · Revised: 2026-10-17 For an owned Xbox 360 disc image, Skate3Recomp offers the clearest desktop installer. The browser fan game needs already converted data; phone ports and the Rust rewrite have their own setup. ## Compare your options If you own the Xbox 360 game and want the clearest desktop installation path, start with [Skate3Recomp](https://playable.wtf/games/skate-3-native/): its release includes a disc-image installer, and Windows is the maintainer’s most-tested platform. Choose the [aaddpp browser fan game](https://playable.wtf/games/skate-3-browser/) only when you already have data converted for that project. A browser tab does not remove its missing conversion step. For a phone, use the separate Android or iOS instructions below. For experimenting with tricks, maps and a different implementation of skating, consider [SK8-ENGINE’s Rust rewrite](https://playable.wtf/games/skate-3-rust-engine/). Original assets can make these projects look related, but they do not establish identical physics, career content or controls. Different routes, different preparation | Project | Where it runs | Before you start | | --- | --- | --- | | [aaddpp fan game](https://playable.wtf/games/skate-3-browser/) | Browser | Your own data converted for this project; the public launcher has no disc-conversion walkthrough | | [Skate3Recomp](https://playable.wtf/games/skate-3-native/) | Windows, Linux, macOS | Install a release and import your own Xbox 360 disc data | | [Skate 3 Android](https://playable.wtf/games/andrewnakas-skate3-android/) | Native Android app | Your own Xbox 360 image and Title Update 3 | | [Skate 3 iOS](https://playable.wtf/games/andrewnakas-skate3-ios-setup/) | Signed iPhone app | Extracted disc files, Title Update 3, and sideloading or a Mac build | | [Skate 3 Rust Engine](https://playable.wtf/games/skate-3-rust-engine/) | Experimental Windows package | Your own Xbox 360 ISO or extracted files; a gamepad; first-run asset conversion | For the original game’s systems, a native recompilation is the more relevant starting point; it translates the game’s code. The Rust engine rebuilds systems and explicitly has unfinished gameplay parity. ## The browser fan game The aaddpp host identifies itself as a fan game and says it streams data from a converted copy you own. It warns that the first load is slow. Do not choose it expecting the full retail career. The practical appeal is entering the fan game from a browser once its specific data preparation is already solved. [Read the host’s current start screen ↗](https://skate.aaddpp.lol/) If you already have this project’s converted data, the [creator’s Game Server instructions](https://skate.aaddpp.lol/frontend.js?v=335e6b4e7f6b) describe this connection sequence: 1. Run `SERVE.bat` on the computer holding your converted copy and open the address it prints. 2. To point the launcher at that data, open **ONLINE → Game Server** and enter the server address. The panel also accepts a direct URL to a compatible hosted game-data ZIP. 3. Choose **Use this server**, then **Re-check** to refresh the data status. These steps connect prepared data; they do not convert a disc image. The public launcher does not provide the converter or a disc-to-data walkthrough. If you only have an ISO, you still need the conversion tools and instructions for this exact project. A recipe or data pack for another Skate port is not a documented substitute. ## Native desktop setup Skate3Recomp’s creator provides Windows, Linux and macOS releases. The project uses your own Xbox 360 game files; they are not included in its download. Its new renderer is still described as early, with visual issues, and the macOS ARM build is experimental. 1. Open the [Skate3Recomp listing](https://playable.wtf/games/skate-3-native/) and follow its download link. 2. Choose the release for your operating system and extract it to a folder you control. 3. Run the app, choose **Select ISO**, wait for extraction, then select **Start Game**. Current release builds also require Title Update 3; complete the app’s title-update setup before booting the game. The [README](https://github.com/mchughalex/skate3recomp#readme) describes the required update and platform steps. Use the release installer unless you specifically want to compile the project. For a broken scene, **F5** switches native and emulated rendering. This is a useful fallback for the listed skater-customization, Hall of Meat and park-editor visual problems. On Linux, the maintainer also suggests the Windows build through Proton when that suits the hardware better; macOS ARM remains experimental. ## Android and iPhone ### Android The separate [Android port](https://playable.wtf/games/andrewnakas-skate3-android/) packages the native recompilation. Its creator asks for your Xbox 360 disc image and Title Update 3. In the app’s disc-image installer, select the image and then the update; extraction uses about 6 GB. That is an Android installation workflow, not a mobile-browser mode. [Android setup ↗](https://github.com/andrewnakas/skate3-android#getting-the-game-onto-the-phone) ### iPhone The [iOS project](https://playable.wtf/games/andrewnakas-skate3-ios-setup/) documents an unsigned IPA for sideloading, or a build on your own Mac. The app needs signing with your Apple ID. A prebuilt IPA avoids compiling the engine, but still needs signing and your own game files. Neither route supplies the game. For the documented sideloaded setup, the app’s `game` folder needs `default.xex` and the `data/` directory from your extracted disc, about 6 GB. Title Update 3 is also required: copy the separate update package as instructed and select it in the app. The iOS installer cannot fetch it for you. Building yourself adds the Mac and full Xcode toolchain. [iOS files and installation ↗](https://github.com/andrewnakas/skate3-ios-setup#supplying-the-game) Android’s on-device image picker is the shorter documented phone data workflow. iOS involves extracted-file transfer and signing. Choose around the device you actually have; these native apps do not prove that the browser fan game has equivalent phone support. ## Saves and the Rust alternative Skate3Recomp’s Windows saves default to `%APPDATA%\skate3`. A `saves` folder created beside the executable before launch switches saved games to that location; existing saves are not moved automatically. An empty `portable.txt` beside the executable makes all user data portable. Copy your existing files before switching modes. The macOS guide keeps game files, saves and settings beside the app. Keep that folder together when moving or backing it up. These paths belong to Skate3Recomp; the browser fan game and the Rust engine have separate storage and setup. [SK8-ENGINE’s Rust project](https://playable.wtf/games/skate-3-rust-engine/) is another reimplementation, with unfinished original-game parity. Its current Windows instructions accept an owned Xbox 360 ISO or `default.xex` beside the extracted `data` folder, then prepare assets for gamepad play. This is not the same installer or save workflow as Skate3Recomp. For Skate3Recomp input, Xbox controls are preferred; its SDL backend supports additional controller types, and keyboard input can be enabled in settings. Escape or RB + Start opens settings. The Rust engine also expects a compatible gamepad, so it is an alternative for experimenting with a rewrite, rather than a shortcut around controller setup. [Skate × Rust](https://playable.wtf/games/skate-rust-browser/) is a different browser mashup with skating and gun modes, not the Rust-language Skate 3 engine. [SkateGM](https://playable.wtf/games/the-schwilliam-skategm/) is a Garry’s Mod project. Keep their game requirements and progression separate from a Skate 3 installation. The [project-label guide](https://playable.wtf/guides/ports-decompilations-emulators-explained/) explains the underlying distinctions. ## Project reading - [aaddpp · browser fan game](https://skate.aaddpp.lol/) - [Skate3Recomp · installation and limitations](https://github.com/mchughalex/skate3recomp#readme) - [Skate 3 Android · game data setup](https://github.com/andrewnakas/skate3-android#getting-the-game-onto-the-phone) - [Skate 3 iOS · supplying the game](https://github.com/andrewnakas/skate3-ios-setup#supplying-the-game) - [SK8-ENGINE · current Rust setup](https://github.com/SK8-ENGINE/skate-3-rust-engine#readme) - [aaddpp · prepared-data connection instructions](https://skate.aaddpp.lol/frontend.js?v=335e6b4e7f6b) - [SkateGM · Garry’s Mod requirements](https://github.com/The-Schwilliam/SkateGM) --- # Counter-Strike in a browser: 1.6 matches, bunnyhop or surf? Canonical: https://playable.wtf/guides/counter-strike-16-browser-setup/ Written: 2026-10-17 Choose CSJS for a 1.6 match with the least preparation, WebXash for your own files and server, or a dedicated movement game for hopping and surfing. ## Choose your client For a Counter-Strike 1.6 team match, start with [CSJS](https://playable.wtf/games/counter-strike-1-6/). Its live server list removes the need to prepare a server address or import your own folders. Choose [WebXash](https://playable.wtf/games/half-life-webxash/) when you already have your own game files and a compatible server to join. For a short solo movement session, choose [Surfd](https://playable.wtf/games/counter-strike-surf/) instead. CSJS and WebXash are separate browser clients for 1.6 using Xash3D work. [bunnyhop.lol](https://playable.wtf/games/counter-strike-bunnyhop/) and Surfd build games around Source-style movement. Their time trials are not Counter-Strike: Source’s complete team shooter, and none of these listings is Counter-Strike 2. Choose the session, then the client | Project | Choose it for | Main tradeoff | | --- | --- | --- | | [CSJS](https://playable.wtf/games/counter-strike-1-6/) | A 1.6 match from a live server list; desktop or touch controls | Available rooms, maps and rules depend on the server | | [WebXash](https://playable.wtf/games/half-life-webxash/) | Your own files and an explicitly chosen compatible server | Manual import and WebSocket address; keyboard and mouse recommended | | [bunnyhop.lol](https://playable.wtf/games/counter-strike-bunnyhop/) | Repeated jumping, timed routes and movement styles | Desktop keyboard and mouse; no phone/tablet support | | [Surfd](https://playable.wtf/games/counter-strike-surf/) | Ramp surfing, solo practice and checkpoint feedback | Keyboard and mouse; practice runs do not set public records | ## Join a CSJS server Open the [CSJS server browser](https://csjs.live/), select a server or Quick play, enter your player name and join. A named server is the clearer choice when meeting friends: tell them which one you picked. The list can change as servers come and go. Voice is optional. In the join dialog, enable it only if you want to speak, select your microphone and allow the browser’s microphone prompt. Hold **K** to talk and release it to mute. The voice room follows your game server; you can join without voice. If voice fails, check the selected input and site microphone permission before changing the rest of your setup. Do not confuse a working microphone with a successful server connection. For friends, agree on a named server rather than choosing Quick play separately. A server’s map and rules shape the match; switching client does not guarantee access to that same room. If the immediate goal is movement practice while waiting for friends, Surfd’s Solo option is a separate session you can start without arranging a team match. ## Desktop controls These are the defaults shipped with the current CSJS client. Saved settings or a custom configuration can change them, so check your bindings if a key behaves differently. Default keyboard and mouse bindings | Action | Default input | | --- | --- | | Move and aim | WASD and mouse movement | | Primary / secondary attack | Left / right mouse button | | Jump / crouch / walk | Space / Ctrl / Shift | | Reload / use | R / E | | Buy / choose team | B / M | | Last weapon / change weapon | Q / mouse wheel | | Scoreboard / optional voice | Tab / hold K to speak | The [voice setup](https://csjs.live/counter-strike-voice-chat) still needs a selected microphone and browser permission. The K binding alone does not enable it. ## Use the phone controls CSJS documents automatic touch detection and the Xash3D touch interface for movement, aiming and actions. Join from the same server list, rotate to landscape and accept fullscreen if offered. Fullscreen and orientation behavior depend on the browser. A phone-friendly launcher does not tell you how comfortable a long match will be. First check that you can move and aim together, reach the action buttons and return to the menu. See the [mobile setup guide](https://playable.wtf/guides/mobile-browser-games-setup/) for storage and screen-space preparation. CSJS is the phone choice among these clients because it explicitly enables the engine’s touch interface. WebXash’s own FAQ recommends keyboard and mouse and points mobile players toward native ports; it is not an equivalent touch fallback. Bunnyhop.lol excludes phones and tablets, and Surfd presents keyboard-and-mouse controls. ## Joining versus hosting Joining a listed CSJS server does not require you to run Docker. Hosting is a separate job: the creator’s guide requires an approved server credential and a TLS WebSocket gateway. Follow the [current hosting instructions](https://csjs.live/host-a-server) if that is your goal. For WebXash, select a root folder containing your own `valve` and `cstrike` data, or a ZIP preserving those directories. Its multiplayer guide uses a compatible WebSocket server, with port `27016` as the documented default, then the in-game LAN menu. An ordinary native server address alone is not that gateway. WebXash’s save manager is disabled for CS 1.6. Its single-player Half-Life save tools should not be read as a way to preserve an online Counter-Strike match. ## Bunnyhop, surf and records ### Choose bunnyhop.lol for hopping and air strafing Its Source-style 100-tick movement turns repeated jumps into timed courses. Hold jump for automatic hops, release W in the air, and match A or D to the direction of your mouse turn. Pick a movement style before comparing times; different styles have separate records. R restarts the attempt. [Bunnyhop controls and styles ↗](https://bunnyhop.lol/about) ### Choose Surfd for learning ramps Surfd uses 66-tick surfing. Release W on a ramp, hold the strafe key toward its face and steer gently with the mouse. **Watch route** helps you study a course; saved practice positions let you repeat a transfer. Loading one keeps the run in practice mode, outside leaderboard scoring. [Surfd’s controls and practice options ↗](https://surfd.net/) Neither has a campaign save to continue like a single-player shooter. Bunnyhop.lol offers linked-account progress across devices; Surfd stores local bests and preferences in the browser and uses sign-in for public records. In Surfd, a downloaded command replay records inputs rather than video, and a practice position is not a ranked finish. Keep those distinctions in mind before clearing site data. [Surfd record storage ↗](https://surfd.net/privacy.html) ## Project reading - [CSJS · server browser and current client defaults](https://csjs.live/) - [CSJS · mobile controls](https://csjs.live/play-counter-strike-on-your-phone) - [CSJS · voice chat](https://csjs.live/counter-strike-voice-chat) - [CSJS · server hosting](https://csjs.live/host-a-server) - [WebXash · files and multiplayer](https://github.com/x8BitRain/webXash#readme) - [bunnyhop.lol · controls and movement styles](https://bunnyhop.lol/about) - [Surfd · surfing and practice](https://surfd.net/) - [Surfd · record storage](https://surfd.net/privacy.html) --- # Back up browser game saves and check the restored game Canonical: https://playable.wtf/guides/browser-game-saves-backups/ Written: 2026-10-17 Save inside the game, export a separate backup, then import and load it before removing the original. Confirm the restored character, map or level inside the game. ## Find where progress lives Browser storage belongs to the site and browser profile that created it. A different browser, profile or host can open the same game with an empty save list. Private sessions usually discard their stored data when the session ends; ordinary browser storage can also be removed under storage pressure. Keep three things separate: **game data** such as `DIABDAT.MPQ`, an **in-game save** holding progress, and an **exported backup** stored outside the site. Copying the game archive does not automatically copy your character. Bookmarking a launcher usually does not back up its save database. A downloaded `.sv` or `.sav` is a separate file you can keep even after the site’s storage is cleared. Importing it puts a copy back into a client’s storage; loading it inside the game is the final step. PrinceJS is a different case: its full address preserves level settings instead of a downloadable save. ## Make a copy you can restore Use this sequence before changing browsers, uninstalling a web app or clearing a site’s data: 1. Save inside the game and wait for it to finish. 2. Return to that client’s save manager or download control. Export the save you want to keep. 3. Find the downloaded file. Keep the original export and filename unchanged; use a dated folder to distinguish backups. Record the project, host and game version beside it. 4. Where the client supports import, restore a copy in a separate browser profile. Start with the same project and game edition, a compatible version, and the required authorized game data. 5. Load the imported save inside the game. Check the character, level or map and a recognizable piece of progress, such as a road you built. A filename in a list is only the import step. 6. Keep the working original and downloaded backup until the restored game opens as expected. Changing host, engine or edition can change which saves work. Use the receiving project’s compatibility instructions before transferring between ports, and keep the source copy available while checking the destination. If the client offers no export, check its documentation before resetting anything; a universal browser-save download button does not exist. ## Use the right project workflow ### d07RiV’s DiabloWeb: restore a shareware character Use the [d07RiV client](https://playable.wtf/games/diablo-browser/) for this sequence. Its shareware character save is separate from the demo’s game data. 1. Choose **Play Shareware**. After playing, press Escape and choose **Save Game**. 2. Reload the host to return to the start screen. Open **Manage Saves** and use the download icon beside the character’s save, for example `spawn0.sv`. 3. Keep that exported filename when making a backup. In the destination browser profile, open the same host and select the `.sv` through the start-screen file picker. 4. Choose **Play Shareware**, select the imported character, then choose **Load Game**. Check the character and saved location in the game, then make sure you can continue playing. Keep the source character and export until that final load works. The [Diablo version guide](https://playable.wtf/guides/diablo-browser-demo-game-files/) explains the separate choices of browser client, demo data and retail `DIABDAT.MPQ`. ### JohnImril’s Diablo Web In [JohnImril’s separate client](https://playable.wtf/games/diablo-web-modern/), open **Manage Saves** on the start screen to export. To make the first import when that control is absent, drop a `.sv` file onto the start screen; after import, Manage Saves appears. Later imports can use its upload control. This client has no cloud-save service. Launch with the matching game data and load the character before treating the transfer as complete. ### WebXash The save manager groups saves by game or mod and downloads the selected save. Imported custom saves are placed in `xash-custom-saves` and made available when a game launches. Launch the matching game or mod, then use its load menu to check the saved scene. The manager is disabled for Counter-Strike 1.6. The [Half-Life version guide](https://playable.wtf/guides/half-life-browser-versions/) explains WebXash’s file and mod setup. ### PrinceJS [PrinceJS](https://playable.wtf/games/oklemenz-princejs/) records level, maximum health, remaining time and guard strength in URL parameters. Copy or bookmark the current full URL, including everything after `?`. Reopen it and check the level, health and time; expect to return to the level entrance rather than your previous position within a room. Refresh your saved link as the game updates its settings in the address. Keep the earlier bookmark until the new one opens as intended. This workflow belongs to PrinceJS; other ports use different progress systems. Compare them in the [Prince of Persia version guide](https://playable.wtf/guides/prince-of-persia-versions/). ### OpenTTD Online: save first, then export In [OpenTTD Online](https://playable.wtf/games/openttd-online-web/), saving inside the game and downloading a backup are separate actions. 1. Open the game’s floppy-disk menu, choose **Save game**, name the save and choose **Save**. 2. Open the host’s tools menu in the upper-left corner and choose **Export Save**. If several saves exist, select the one you want, then choose **Export**. Keep the downloaded `.sav` file somewhere safe. 3. To restore it, choose **Import Save** from the same tools menu and select your backup. Keep a separate copy before importing a file with the same name. 4. Open the game’s **Load Game** menu, select the imported file and choose **Load**. Once the map opens, find a recognizable road or station you built and check the company and date. Pan the map to confirm you have returned to the running game. Import confirmation and a save-list entry come before this final check. For example, a short road saved before export should still be present after you load the imported map. Use your own network as the reference before replacing an older backup. The [OpenTTD browser and native guide](https://playable.wtf/guides/openttd-browser-native/) covers version choice and compatible game setup. ![OpenTTD’s Save Game dialog with a filename field and the Save button.](https://playable.wtf/tutorials/openttd-save-export/save-game.webp) Save inside the game before using the host’s export tools. ![OpenTTD Online’s Export Save chooser with the tutorial save selected and an Export button.](https://playable.wtf/tutorials/openttd-save-export/export-save.webp) With several saves present, choose the file you want to download. ![OpenTTD’s Load Game dialog lists the imported tutorial save and shows its game details.](https://playable.wtf/tutorials/openttd-save-export/load-imported.webp) After importing, open the backup from Load Game. [Watch the OpenTTD save export demonstration](https://playable.wtf/tutorials/openttd-save-export/export-save.mp4). A short silent demonstration of the export step. [Read the transcript](https://playable.wtf/tutorials/openttd-save-export/transcript.txt). Playable captures with OpenTTD and OpenGFX2 Classic. [Media credits and sources](https://playable.wtf/tutorials/openttd-save-export/credits.txt) · [GPL-2.0 license](https://playable.wtf/tutorials/openttd-save-export/LICENSE.txt). ## Check before clearing anything If progress seems missing, reopen the exact host in the original browser profile. Check whether you switched between an installed web app and a browser tab, selected another imported game copy, or loaded a different mod. Keep any old export until the expected progress is visible. For Diablo Web’s **Game already open** message, save in the other tab or app, close it, then choose Try Again. Returning to the menu alone does not release that client’s save storage. Clearing data can remove the very files you are trying to recover. Reinstalling game data is not a recovery method for a deleted save. A backup is most useful when it is made before the change, while the original still opens. ## Project reading - [MDN · browser storage and eviction](https://developer.mozilla.org/en-US/docs/Web/API/Storage_API/Storage_quotas_and_eviction_criteria) - [d07RiV · DiabloWeb client and save tools](https://d07riv.github.io/diabloweb/) - [JohnImril · save import and export](https://github.com/JohnImril/diablo_web#playing-and-saving) - [WebXash · save manager](https://github.com/x8BitRain/webXash#save-manager) - [PrinceJS · progress in URL parameters](https://github.com/oklemenz/PrinceJS#options) - [OpenTTD Online · project and assets](https://github.com/swords02/openttd-online) - [OpenTTD Online · browser host and save tools](https://openttdonline.com/play/) --- # How to use a controller with a browser game Canonical: https://playable.wtf/guides/browser-game-controller-setup/ Written: 2026-10-17 Pairing a controller is only the first step. The browser must expose it, and the specific game must map its sticks and buttons. Start with a project that documents gamepad support. ## Choose a supported project [HCEMobile](https://playable.wtf/games/halo-ce-mobile/) documents controller input alongside touch and keyboard controls. [PrinceJS](https://playable.wtf/games/oklemenz-princejs/) documents its own button mappings. [Stunts HD](https://playable.wtf/games/stunts-hd-browser/) describes gamepad steering and triggers. These are useful starting points because the creators explain how to play. A controller label belongs to the listed implementation. Support in a native edition does not establish support in a browser port of the same game. Check the exact project before preparing game files or inviting another player. ## Connect and activate the pad Connect over USB or pair through your device’s Bluetooth settings. Open the game in a current browser, bring its tab to the foreground, then press a controller button. Browsers may wait for gamepad interaction before making a connected pad visible to a page. 1. Check that the operating system sees the controller. 2. Activate the game tab and press a button. 3. Open the game’s input settings, if available, and choose its controller mode. 4. Try movement, camera, confirm, cancel and pause before starting a long session. Keep a keyboard or touch route available for the launcher. A game can support controller gameplay while its file picker or browser permission prompt still needs another input. ## Check what the buttons do HCEMobile’s guide asks you to pair or plug in the controller and press a button on the start page. It lists Xbox, PlayStation, Switch Pro, MFi and Backbone input. For game-file preparation, use the [Halo version guide](https://playable.wtf/guides/halo-ce-browser-versions/). PrinceJS maps movement to the stick or D-pad. A/R/ZR performs jump, climb or block; B/Y/L/ZL handles potion, edge-grab or sword actions. Its Plus and Minus buttons change levels, so read the mapping before treating them as an ordinary pause shortcut. For Stunts HD, the stick or D-pad steers and the triggers drive. The keyboard remains useful for camera and menu commands. Different button labels across controllers make a quick check worthwhile even when a pad is detected. ## If input does not respond Work through one layer at a time: device connection, active browser tab, then game input settings. Reconnect the pad and press a button again. If the operating system sees it but the game does not, consult that client’s supported-controller notes before assuming a different port’s instructions apply. If menus work but an action is wrong, look for remapping or an alternate controller backend in the project. Do not use a controller test page as proof of complete game support: detection alone does not validate aiming, triggers, rumble or local multiplayer. ## Project reading - [MDN · using the Gamepad API](https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API) - [HCEMobile · controls](https://hcemobile.com/guide/) - [PrinceJS · controller mappings](https://github.com/oklemenz/PrinceJS#play-online) - [Stunts HD · controls](https://github.com/mr-finster/stunts-hd#controls) --- # Browser games on a phone: touch controls, files and saves Canonical: https://playable.wtf/guides/mobile-browser-games-setup/ Written: 2026-10-17 Choose a project with an actual touch layout before downloading large game files. A game that draws on a phone screen may still need a keyboard, mouse or controller. ## Start with a usable input scheme [HCEMobile](https://playable.wtf/games/halo-ce-mobile/) offers editable touch layouts; [CSJS](https://playable.wtf/games/counter-strike-1-6/) enables Xash3D’s touch interface; [PrinceJS](https://playable.wtf/games/oklemenz-princejs/) uses screen regions and drag gestures. Pick around the controls you want, as well as the game. Other ports need a different plan. JohnImril’s [Diablo Web](https://playable.wtf/games/diablo-web-modern/) describes touch controls as needing improvement. [Arxwasm](https://playable.wtf/games/arx-fatalis-browser/) explicitly lacks playable touch input. Opening either page on a phone does not remove that limitation. ## Prepare files and screen space Put any required owned files somewhere the phone’s file picker can reach. Check the exact edition before transferring a large archive: an Xbox Halo disc image, a Diablo MPQ and a native app package are not interchangeable. Follow the project’s installation route. HCEMobile recommends home-screen installation; PrinceJS documents landscape play and a home-screen option. CSJS requests landscape fullscreen where supported. Installing a web app does not automatically make every game work offline or preserve its saves in another browser. Rotate the device before arranging touch controls. Check that movement and action areas can be used together without obscuring the game. If the layout does not suit you, try the [controller setup guide](https://playable.wtf/guides/browser-game-controller-setup/) for projects that support a pad. ## Handle HCEMobile’s common problems The creator’s guide specifies iOS 17 or later for iPhone/iPad and Chrome for Android. Importing a disc can require up to 1.8 GB for maps, in addition to the image you selected. Leave the import open until it finishes. For memory errors, close other apps and tabs. For black levels, try Lower-resolution textures in Settings and data. If an iPhone is silent, check the hardware silent setting or the app’s sound-on-silent option. These settings belong to HCEMobile. Use the [Halo guide](https://playable.wtf/guides/halo-ce-browser-versions/) to distinguish it from Mitchell Hynes’s separate host before following its recovery instructions. ## Protect progress before switching After a short session, save, close the game normally and reopen the same client to check that you can continue. Export a backup where the project offers one, especially before changing browsers or reinstalling an app. See the [save and restore workflow](https://playable.wtf/guides/browser-game-saves-backups/). For a match with friends, confirm the same host and game version first. Phone fullscreen, touch comfort, network access and storage are separate requirements; solving one does not solve all four. Try a brief session before planning a long one. ## Project reading - [HCEMobile · phone setup and problems](https://hcemobile.com/guide/) - [CSJS · phone play](https://csjs.live/play-counter-strike-on-your-phone) - [PrinceJS · mobile gestures](https://github.com/oklemenz/PrinceJS#play-mobile) - [Diablo Web · touch limitations](https://github.com/JohnImril/diablo_web#playing-and-saving) - [Arxwasm · lack of touch input](https://github.com/gabrielcuvillier/arxwasm#port-status) --- # Port, recompilation, decompilation or emulator: what can you actually play? Canonical: https://playable.wtf/guides/ports-decompilations-emulators-explained/ Written: 2026-10-17 The project label explains how a game was adapted. The Play, Download or Build route tells you what you can do with it today. Check both before choosing a version. ## Read the launch route first A **browser launch** opens a hosted client. A **native download** runs an application on your device. A **source build** requires development tools and may require a particular original executable. None of those labels alone tells you whether commercial game data is included. Read the prerequisite beside the action. If a project asks for your own files, an open-source engine license does not supply the original artwork, sound or levels. A demo route may provide only a small portion of the game. ## Ports, decompilations and recompilations A **port** adapts software to another platform. A browser port may compile an engine to WebAssembly and adapt its graphics, input and file handling to browser APIs. WebAssembly describes how code runs; it does not by itself mean “emulator.” A **decompilation** reconstructs higher-level source from an existing program. The [Halo CE decompilation](https://playable.wtf/games/halo-ce-decompilation/) targets a particular debug executable. That source work is distinct from a hosted Halo client with its own launcher and support. A **recompilation** translates game code for a different target. It can still need replacement system services, graphics translation and original assets. [Stunts HD](https://playable.wtf/games/stunts-hd-browser/), for example, translates your own Stunts 1.1 copy and supplies the runtime around it. The label does not guarantee every version or feature works. ## Emulation and reimplementation An **emulator** reproduces enough of another machine or environment to run software made for it. A browser can host an emulator, but it can also run an engine adapted directly to the web. Hybrid approaches exist: a project may translate the CPU code while emulating or replacing other services. A **reimplementation** builds a new implementation of existing behavior. [LBA Remake](https://playable.wtf/games/little-big-adventure-browser/) describes a re-engineered engine and an unfinished adventure. A **recreation** may reproduce selected mechanics or scenes instead of every system. Read the actual scope before expecting a full campaign. A **remaster** usually describes changes to presentation or content, rather than one technical method. Better-looking footage cannot establish whether a project includes the complete game. ## Mashups and practical expectations A **mashup** combines games or their mechanics. [SMC64](https://playable.wtf/games/kodyjking-smc64/) is a LibSM64 mod for Halo CE in the Steam Master Chief Collection. Its Mario connection does not make it a standalone Super Mario 64 browser port. Before starting, answer three practical questions: which original game and edition does this project use, what files or tools does it need, and which modes does it actually provide? The [Skate comparison](https://playable.wtf/guides/skate-browser-vs-native-ports/) shows why similar names can lead to very different setups. ## Project reading - [Emscripten · porting code to the web](https://emscripten.org/docs/porting/guidelines/portability_guidelines.html) - [Halo CE · decompilation target and build](https://github.com/punpckhdq/halo#readme) - [Stunts HD · recompilation and runtime](https://github.com/mr-finster/stunts-hd#readme) - [LBA Remake · reimplementation goals](https://github.com/LBALab/lba2remake#readme) - [SMC64 · MCC mod identity](https://github.com/KodyJKing/smc64#readme) --- # Mush8 brings Mario Kart 8 Deluxe to Apple devices: what setup involves Canonical: https://playable.wtf/guides/mush8-mario-kart-8-deluxe-apple/ Written: 2026-10-17 Mush8 is C22’s native Apple project for Mario Kart 8 Deluxe. It requires building with your own game dump and keys; it is not a browser game or a Mario Party port. ## What the project changes [Mush8](https://playable.wtf/games/mush8/) adapts Mario Kart 8 Deluxe for Apple hardware. Its approach patches the game’s ARM64 code and supplies replacements for Switch system services, with graphics translated to Metal. On iOS, the game code becomes part of the app during the build. That makes preparation central to the experience: a project repository is the starting point, not an instantly playable web page. [Super Mario Bros. Wonder Recomp](https://playable.wtf/games/super-mario-wonder-recomp/) is a separate project for a different game, with its own platform work and requirements. ## Prepare the matching data The README asks for your own `prod.keys`, base-game `.nsp` and the **4.0.1 update** `.nsp`. Booster Course Pass data and firmware are optional additions. Use only files you are authorized to obtain and use. Keep the base game and update together as a matched set. An archive from Mario Party, the original Wii U Mario Kart 8 or another title cannot substitute for Mario Kart 8 Deluxe. Renaming an archive does not change its contents. ## Choose Mac or iOS before building The creator documents an Apple Silicon Mac, macOS 14 or later and Xcode 26 or later for preparation. The iOS route adds signing or IPA installation and device-memory requirements; check the current README before committing to a build. The project’s `build.sh` asks which platform to prepare and can install missing development tools. Read its steps before running it. This is a local software build, not a normal browser launch. Its diagnostics distinguish missing keys or the wrong update from Xcode signing errors, a locked device and insufficient disk space. Follow the message for the failing step. Repeating game extraction will not fix a signing identity problem, and changing a signing setting will not supply missing game data. ## Controls and multiplayer boundaries Mush8 documents controllers and iOS touch input. Multiplayer choices include local LAN, nearby wireless play and internet LAN-play servers. Nintendo’s online service is unavailable; the launcher’s Online choice refers to LAN-play. Agree on the intended mode before inviting friends. Someone expecting Nintendo matchmaking is expecting a different service. Check the current project limitations before planning a group session, especially when mixing devices or installation methods. For broader context, the [project-label guide](https://playable.wtf/guides/ports-decompilations-emulators-explained/) explains why native execution, system-service replacement and game-data requirements can coexist. ## Project reading - [C22 · Mush8 requirements and features](https://github.com/c22dev/mush8#readme) - [Mush8 · build assistant and diagnostics](https://github.com/c22dev/mush8/blob/HEAD/build.sh) --- # Doom in a browser or native port: WADs, demos and Doom 3 Canonical: https://playable.wtf/guides/doom-quake-browser-versions/ Written: 2026-10-17 For classic Doom, choose a WAD launcher or a native port. For Doom 3, separate the browser demo from an owned retail installation. ## Choose the game and client For classic Doom with your own WADs, start with [WAD Commander v1](https://playable.wtf/games/wad-commander-v1/) in a browser or [Chocolate Doom](https://playable.wtf/games/chocolate-doom-chocolate-doom/) as a native application. For Doom 3, choose between the [D3Wasm demo](https://playable.wtf/games/doom-3-browser/) and [dhewm3 with owned retail files](https://playable.wtf/games/dhewm-dhewm3/). These are two different generations of game: a Doom WAD cannot supply Doom 3. Choose by game and setup | Project | Choose it for | Prepare | | --- | --- | --- | | [WAD Commander v1](https://playable.wtf/games/wad-commander-v1/) | Classic Doom, Doom II and vanilla-compatible additions in a browser | Owned WADs, or the offered shareware/Freedoom choices | | [Chocolate Doom](https://playable.wtf/games/chocolate-doom-chocolate-doom/) | A native port preserving DOS behavior | The engine download plus matching game data | | [D3Wasm](https://playable.wtf/games/doom-3-browser/) | A browser taste of Doom 3 | Desktop keyboard/mouse and roughly 400 MB for demo data | | [dhewm3](https://playable.wtf/games/dhewm-dhewm3/) | Original Doom 3 as a native game | Original 1.3.1 data; BFG Edition files are incompatible | For a session with friends, [Silent Space Marine](https://playable.wtf/guides/doom-quake-browser-versions/#multiplayer) is a separate browser option. Looking for Quake instead? The [Quake campaign and multiplayer guide](https://playable.wtf/guides/quake-browser-native-versions/) compares its four browser clients. ## Classic Doom in a browser In [WAD Commander v1](https://v1.wadcmd.com/), choose **Open file(s)** or drop your files onto the page. Your base IWAD supplies the game; a PWAD adds content. Select the base game before its compatible patches. Without retail files, the welcome screen offers Doom shareware and Freedoom. Freedoom has its own levels and art; it is not the retail Doom campaign. Use fullscreen for desktop mouse control. Recognized controllers are supported. On a touchscreen, move through the play area and use the side buttons: hold **Use** to strafe, but double-tap it for doors and switches. Saves belong to the selected WAD/patch combination; return with the same files in the same order. Keep those originals outside browser storage. The [v1 help](https://v1.wadcmd.com/src.f5a9bab8.js) covers vanilla-compatible content, not every modern Doom mod. [Jacob Enget’s doom.wasm](https://playable.wtf/games/doom-wasm-browser/) serves a different purpose: a minimal engine demonstration with shareware as its default data. Arrows move and turn, **Ctrl** fires, **Space** uses switches, and comma/period strafe. It produces no music or sound effects, and its screen-melt transition can briefly appear frozen. Its programming interface supports custom WADs, but that does not make the example a full mod manager. See the [project’s controls and limitations](https://github.com/jacobenget/doom.wasm). ## Doom with friends [Silent Space Marine](https://playable.wtf/games/doom-multiplayer-browser/) wraps Chocolate Doom in Cloudflare’s browser multiplayer experiment. Choose **Play Solo**, or have one person select **Start Multiplayer** and share the invitation URL. Guests enter their names and wait for that host to start; opening separate games will not put everyone together. The creator documents up to four players, desktop mouse input, sound, **F** for fullscreen and virtual gamepads on phones. Everyone’s simulation waits for the group’s inputs, so the slowest connection affects the match. Abrupt disconnects and reconnections are a known weakness. Plan a live session with friends rather than relying on it as a durable multiplayer save. These limits come from [Cloudflare’s implementation guide](https://blog.cloudflare.com/doom-multiplayer-workers/). ## Classic Doom as a native game [Chocolate Doom](https://playable.wtf/games/chocolate-doom-chocolate-doom/) is the native choice when original DOS behavior matters, including compatibility with old demos and saves. Use the [platform download](https://www.chocolate-doom.org/wiki/index.php/Downloads), supply the matching game data, then run its setup utility to configure keyboard, mouse, sound or gamepad. The [setup menu](https://www.chocolate-doom.org/wiki/index.php/Setup) can also start a game or join a network session. Choose additions designed for vanilla Doom. A WAD requiring an advanced engine’s scripting or rendering is outside this port’s purpose. Some older total conversions need Chocolate Doom’s `-merge` option and their accompanying DeHackEd patch, as explained in its [total-conversion instructions](https://github.com/chocolate-doom/chocolate-doom#playing-tcs). Establish a working base game before adding them. ## Doom 3: demo or owned files [D3Wasm](https://playable.wtf/games/doom-3-browser/) uses dhewm3 as its engine basis, but its hosted route supplies only the Doom 3 demo. Allow roughly **400 MB** to download. The menu appears before all data arrives, so starting a new game can still leave you waiting for the rest. Use a desktop keyboard and mouse: **WASD** moves, **Home** opens the menu or skips cinematics, and **Insert** opens the console. Saves and configuration stay in IndexedDB in that browser profile. Avoid private browsing when keeping progress, and do not clear site storage to fix a slow initial load. The creator reports no usable phone touch scheme and a broken in-game brightness adjustment. Read the [D3Wasm guide](https://www.continuation-labs.com/projects/d3wasm/) before choosing this experimental renderer for a longer session. For owned retail Doom 3, [dhewm3](https://playable.wtf/games/dhewm-dhewm3/) offers a native route. With its official Windows/Linux build, place the original game’s patched PK4 files in `base/` beside the executable, then run dhewm3. It needs version 1.3.1, including `pak000.pk4` through `pak008.pk4`; the [installation guide](https://dhewm3.org/#how-to-install) covers other platform locations. A store bundle containing BFG Edition may also include the original; select that original installation. The port supports gamepads without rumble and opens its extra settings with **F10**. Its [README](https://github.com/dhewm/dhewm3) and supported-mod list govern compatibility. ## Quake and other fallbacks Quake’s files, campaigns and servers are separate. Use [the dedicated Quake guide](https://playable.wtf/guides/quake-browser-native-versions/) to choose NetQuake’s first-game campaign, Pieter’s QuakeWorld or Quake II multiplayer, or Q3JS’s Quake III arenas. If a Doom browser host is unavailable, your owned classic WADs can still be used with a compatible native engine such as Chocolate Doom; original Doom 3 files belong with dhewm3. That changes the application and storage location. Keep existing saves and use the [save and backup guide](https://playable.wtf/guides/browser-game-saves-backups/) before moving anything; one project’s save support does not promise transfer from another. ## Project reading - [WAD Commander v1 · launcher and help](https://v1.wadcmd.com/) - [doom.wasm · browser example and limits](https://github.com/jacobenget/doom.wasm) - [Cloudflare · Silent Space Marine multiplayer](https://blog.cloudflare.com/doom-multiplayer-workers/) - [Chocolate Doom · project and compatibility](https://github.com/chocolate-doom/chocolate-doom) - [D3Wasm · demo requirements and controls](https://www.continuation-labs.com/projects/d3wasm/) - [dhewm3 · original-game installation](https://dhewm3.org/#how-to-install) --- # Quake browser versions: campaign, QuakeWorld or Quake III? Canonical: https://playable.wtf/guides/quake-browser-native-versions/ Written: 2026-10-17 Choose a first-Quake campaign or an exact multiplayer host. Quake, Quake II and Quake III clients have different content and cannot share one session. ## Choose a campaign or a match Start with the game and the kind of session. [NetQuake.io](https://playable.wtf/games/netquake-browser/) is the campaign starting point for the first Quake. [Pieter’s FTE QuakeWorld](https://playable.wtf/games/quakeworld-browser/), [Pieter’s Quake II](https://playable.wtf/games/quake-2-browser/) and [Q3JS](https://playable.wtf/games/quake-3-browser/) are multiplayer destinations. Quake II’s Strogg setting and Quake III’s arenas are different games, not upgrades that can join the same match. Four clients, different sessions | Client | Useful starting point | Boundary | | --- | --- | --- | | [NetQuake.io](https://playable.wtf/games/netquake-browser/) | Quake’s shareware first episode | Own `pak1.pak` for registered content, custom maps and rooms | | [FTE QuakeWorld Web](https://playable.wtf/games/quakeworld-browser/) | First-Quake multiplayer for up to eight players | The host’s network session, not the modern retail package | | [Pieter’s Quake II](https://playable.wtf/games/quake-2-browser/) | Quake II multiplayer for up to eight players | Separate from QuakeWorld and the enhanced Quake II campaign | | [Q3JS](https://playable.wtf/games/quake-3-browser/) | Quake III Arena server list, including a touch layout | ioquake3 browser client using demo data | ## Start the first Quake campaign Open [NetQuake.io](https://www.netquake.io/) and begin with the shareware episode. For the rest of the original game, import your registered `pak1.pak` from the installation’s `id1` folder through **Setup → Packages**. Custom maps also require it: create a package, import its ZIP or BSP files, then choose a map under **Singleplayer → My Packages**. The recommended layout uses **WASD**, mouse aiming and **Space** to jump. If the mouse will not look vertically, add `+mlook` to `autoexec.cfg` in Setup. Use a desktop: this host describes its phone controls as limited. Its [FAQ](https://www.netquake.io/faq) explains the package and input choices. ## Meet friends on the same host For [Pieter’s QuakeWorld](https://q1.pieter.com/) or [Pieter’s Quake II](https://q2.pieter.com/), enter a player name and select **Play**. Both launch through FTE and advertise up to eight players. QuakeWorld highlights client-side prediction, which helps movement respond before every server update arrives; it cannot remove a slow connection. Agree on the exact game and host with friends before starting. NetQuake offers a different group setup: one player creates a room, shares its link or code, chooses settings and starts when everyone joins. Every participant needs the registered data. A room code is not an address for Pieter’s client, and a QuakeWorld session is not a Q3JS server. If a launcher loads but a server does not respond, confirm which host and session the group selected before changing files. An unavailable multiplayer service does not mean your campaign data is damaged. For the two compact Pieter launchers, check the in-game input menu after entry; their landing pages do not offer a shared desktop or phone control reference. ## Quake III and phone controls [Q3JS](https://q3js.com/) uses an ioquake3 browser build with the officially released demo data. Pick a live server, enter a name and join. Send friends the selected server, rather than merely the homepage. The demo client should not be mistaken for the entire retail Quake III Arena and Team Arena package. On compatible touch devices, controls appear automatically. Rotate to landscape: the left joystick handles movement, while dragging on the right aims. Separate controls fire, jump, crouch, switch weapons, show scores and open the menu. Fullscreen depends on browser support. The creator’s [phone guide](https://q3js.com/play-quake-3-on-your-phone) makes this the clearest documented touch route among these four clients; its layout does not apply to the other hosts. ## Keep progress and choose a fallback Keep NetQuake’s imported PAKs and map archives on your computer. Browser storage can be cleared or evicted, and the enhanced Quake re-release’s save format is incompatible with NetQuake’s importer. A purchase containing both versions does not make their saves interchangeable. See [browser saves and backups](https://playable.wtf/guides/browser-game-saves-backups/) before switching profiles or clearing data. If you want a locally installed campaign or a browser host is unavailable, use the corresponding native game from your owned installation. The [commercial Quake release](https://store.steampowered.com/app/2310/Quake/) and [enhanced Quake II release](https://store.steampowered.com/app/2320/Quake_II/) have their own included content and multiplayer arrangements. They are useful alternatives for those games, but they do not preserve a third-party browser room or automatically import its progress. For the other id Software family, compare [Doom’s WAD clients, Doom 3 demo and native ports](https://playable.wtf/guides/doom-quake-browser-versions/). ## Project reading - [NetQuake · files, packages and rooms](https://www.netquake.io/faq) - [Pieter · QuakeWorld launcher](https://q1.pieter.com/) - [Pieter · Quake II launcher](https://q2.pieter.com/) - [Q3JS · server browser](https://q3js.com/) - [Q3JS · phone controls](https://q3js.com/play-quake-3-on-your-phone) - [id Software · enhanced Quake II](https://store.steampowered.com/app/2320/Quake_II/) --- # Half-Life in a browser: choose WebXash or Pixelsuft Canonical: https://playable.wtf/guides/half-life-browser-versions/ Written: 2026-10-17 WebXash offers the clearer owned-file and save workflow. Pixelsuft’s older launcher exposes separate data and filesystem choices for a more manual setup. ## Choose a Half-Life frontend Choose [WebXash](https://playable.wtf/games/half-life-webxash/) when you have a legitimate Half-Life installation and want a browser frontend with folder selection and downloadable saves. [Pixelsuft’s em-xash](https://playable.wtf/games/half-life-pixelsuft/) exposes older data-loading and filesystem options; it is a more manual choice. Both are Xash-based projects for the original Half-Life generation, not Half-Life 2 or a promise that every GoldSrc mod works. Choose the frontend you can prepare | Project | Best reason to choose it | Prepare first | | --- | --- | --- | | [WebXash](https://playable.wtf/games/half-life-webxash/) | Owned files with a dedicated save manager | A root folder or ZIP containing `valve`; keyboard and mouse | | [Pixelsuft em-xash](https://playable.wtf/games/half-life-pixelsuft/) | Explicit data-source and storage choices | A compatible local ZIP and a persistent filesystem choice | For immediate Counter-Strike server browsing, use the separate [CSJS setup guide](https://playable.wtf/guides/counter-strike-16-browser-setup/). WebXash’s Counter-Strike option and CSJS’s curated server client share a lineage, but have different preparation and networking. ## Prepare the game and mod folders In [WebXash](https://x8bitrain.github.io/webXash/), select **Open game folder** and choose the parent containing `valve`, then select the game directory. With **Open ZIP**, preserve `valve` at the archive root. For a supported expansion or mod, keep its directory beside `valve` and set the matching option, such as `-game bshift`, before loading. Your files determine the content available. The engine and launcher do not supply a retail license or turn a demo into the full campaign. Check the [engine’s incompatible-mod list](https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/not-supported-mod-list-and-reasons-why.md) before preparing an expansion or total conversion: custom engine features, client libraries and missing source can prevent support. ## Keep WebXash saves recoverable WebXash reads the selected installation; it does not write saves back into it. Its save manager keeps progress in IndexedDB, grouped by game/mod, and lets you download selected saves. ZIP-loaded games use the same mechanism. Export before clearing site data. The manager is disabled for Counter-Strike 1.6. These details are in the [WebXash save instructions](https://github.com/x8BitRain/webXash#save-manager). Keep your original installation separately from exported saves. Reopen the same game/mod when continuing; the file selector remembering a folder is not a backup of either its contents or your progress. The [save and backup guide](https://playable.wtf/guides/browser-game-saves-backups/) explains this distinction. ## Pixelsuft: data and storage choices Pixelsuft’s [detailed launcher](https://pixelsuft.github.io/hl/xash.html) separates **game data source** from **filesystem**. Choose **Local ZIP file** for a compatible archive you already have. For progress you want to retain, choose IndexedDB and follow the instruction to exit correctly; **None (in RAM)** makes the session temporary. LocalStorage is explicitly marked as potentially too small. The server-package option can cache data, while the server-ZIP option is labelled uncached. Those choices concern loading, not a promise of persistent saves. This older frontend’s sparse [project documentation](https://github.com/Pixelsuft/hl) does not provide WebXash’s folder/import walkthrough. Choose WebXash if that preparation is the part you need help with; do not transfer its save-manager instructions to Pixelsuft. ## Controls, servers and native fallback WebXash requires keyboard and mouse for proper play. Use fullscreen and check in-game bindings: the browser can intercept **Ctrl+W** and close a tab. The creator directs phone players toward native Xash ports. A working phone launcher alone is not a usable touch-control scheme. For WebXash multiplayer, enter a compatible server’s WebSocket address before launch, then use **Multiplayer → LAN Game**, even over the internet. Automatic internet discovery is unavailable. Use the [client’s server instructions](https://github.com/x8BitRain/webXash#multiplayer) rather than a native server address alone. If the browser client fails on your game or mod, retain the files and use the original native installation. [Valve’s Half-Life](https://store.steampowered.com/app/70/HalfLife/) is the original game product; browser-specific mod limitations should not be treated as a fault in that installation. Preserve exported progress separately, since selecting a different engine is not a guaranteed save conversion. ## Project reading - [WebXash · files, mods, saves and servers](https://github.com/x8BitRain/webXash) - [Pixelsuft · em-xash project](https://github.com/Pixelsuft/hl) - [Pixelsuft · data and filesystem launcher](https://pixelsuft.github.io/hl/xash.html) - [Xash3D FWGS · incompatible mods](https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/not-supported-mod-list-and-reasons-why.md) - [Valve · Half-Life](https://store.steampowered.com/app/70/HalfLife/) --- # Call of Duty browser and native versions: Zombies or campaign? Canonical: https://playable.wtf/guides/call-of-duty-browser-native-versions/ Written: 2026-10-17 Pick the exact game and mode before the project: browser Zombies, the original COD4 campaign and native Xbox 360 recompilations need different preparation. ## Choose the exact game and mode Choose the exact game and mode first. [vel.gg’s BO1 Zombies](https://playable.wtf/games/black-ops-zombies/) and the [Nacht der Untoten fan remake](https://playable.wtf/games/nacht-der-untoten/) are browser Zombies projects. [KisakCOD Web](https://playable.wtf/games/modern-warfare-browser/) targets the original 2007 Modern Warfare campaign. Call of Duty 3 and Modern Warfare 2 (2009) have separate native projects with different file requirements. Pick the session, then the project | Project | Choose it for | Main constraint | | --- | --- | --- | | [BO1 Zombies / vel.gg](https://playable.wtf/games/black-ops-zombies/) | Zombies with Classic or Counter-Strike weapon rules | Selected maps/modes on this host; not the Black Ops campaign | | [Nacht fan remake](https://playable.wtf/games/nacht-der-untoten/) | A focused solo or two-to-four-player co-op session | Desktop play; separate from BO1’s version of the map | | [KisakCOD Web](https://playable.wtf/games/modern-warfare-browser/) | COD4’s campaign and Mile High Club | Own original Steam installation; no ISO import | | [MW2 Recompiled](https://playable.wtf/games/paulcombal-mw2-recompiled/) | The 2009 Xbox 360 game as a native PC application | Matching owned disc data, Windows/Linux and a controller | ## Set up BO1 Zombies Open [vel.gg’s BO1 Zombies launcher](https://vel.gg/bo1z). Enter a player name, select **Single player** or **Multiplayer**, choose the gun rules and graphics, then continue with **Choose map**. Pick an enabled map, such as Kino der Toten or Five. Multiplayer uses this host’s lobby invitation. Low graphics removes shadows and reduces resolution. **Classic** keeps Black Ops guns. **Counter-Strike** changes the guns, recoil and movement; it also changes useful keys. Both use WASD/mouse, left mouse to fire, **R** to reload, **Space** to jump and **Escape** for the menu. Classic uses **F** to interact, **Shift** to sprint and **C** to toggle crouch; Counter-Strike uses **E**, **Shift** to walk and held **Ctrl** to crouch. Saved rebindings can differ. The [shipped input mappings](https://vel.gg/bo1z/gamepad.js) document the distinction. Choose the rules before the map: the [launcher’s map rules](https://vel.gg/bo1z/choices.js) can disable Counter-Strike for a map, and Hell mode requires Classic. This browser project’s name does not include the Black Ops story campaign or establish that every retail Zombies feature is present. ## Nacht: a separate co-op remake The [Nacht der Untoten fan remake](https://zombies.bitcoinsapi.com/) offers **Play solo** or **Host co-op**. A host shares the invite link with up to three friends, then starts the session. Guests use that link or paste it into **Join co-op**. It is a separate remake; a BO1 lobby or map selection cannot join it. Use **WASD** to move, **Shift** to sprint and **Space** to jump. Mouse buttons fire/aim; **R** reloads, **F** interacts, **E** knives and **G** throws a grenade. **Q** or **1/2** swaps weapons. Click Play to capture the mouse; Escape releases it. The creator’s [compatibility guide](https://zombies.concentric.live/compatibility.html) recommends current desktop Chrome, Edge or Firefox. A controller activates with a button press and has settings under **Options → Controller**. Phones and tablets receive a scores page and computer-play link, not the desktop game. Choose Low graphics if the remake is too slow. ## COD4: import the Steam campaign [KisakCOD Web](https://playable.wtf/games/modern-warfare-browser/) is for **Call of Duty 4: Modern Warfare (2007)**. Its documented scope is the story campaign plus Mile High Club; multiplayer remains a plan. Neither Modern Warfare Remastered nor a later game sharing the Modern Warfare name is the requested data source. 1. Locate your own original COD4 Steam installation. 2. Open the [KisakCOD Web host](https://mw.slqnt.dev/) and select those files. 3. Select the parts to install, wait for copying, then choose Play. The [README](https://github.com/slqntdevss/kisakcod-port) specifically rejects ISO files. Self-hosting additionally needs the documented isolation headers for threading; it is not necessary for the hosted route. The maintainer warns that this is a new port with bugs. Keep the original installation available as the campaign fallback, and keep any progress before clearing browser data; this project does not provide a documented save-export procedure. ## COD3 and MW2 as native games [CoD3Recomp](https://playable.wtf/games/frankhun88453-cod3recomp/) translates the Xbox 360 Call of Duty 3 executable into a native Windows application. Run its release and let the first-run setup read your owned disc image, copy an extracted folder, or use that folder in place. Its [README](https://github.com/FrankHUN88453/CoD3Recomp) reports all fifteen levels loading and playing, while retaining a development warning. That is broader than a first-level demo, but not a promise of a faultless playthrough. CoD3Recomp maps movement to WASD, mouse buttons to fire/aim, **E/R** to use/reload, **Space** to jump and **C** to crouch. Escape pauses and releases the mouse. **F11** opens its settings; a connected pad also works. Saves live in `saves/` beside the executable. [MW2 Recompiled](https://playable.wtf/games/paulcombal-mw2-recompiled/) instead needs the Xbox 360 **2009** game, version **1.0.557 (USA/Europe)**. Choose the Steam or LAN release for Windows/Linux, extract it and run **mw2-launcher → INSTALL GAME** with your own disc data. The launcher applies title update 6; then choose campaign or multiplayer. Prepare a Vulkan 1.2 GPU, 8 GB of disk space and a controller: keyboard input only covers menus. Its [project guide](https://github.com/PaulCombal/mw2-recompiled) describes private matches/system link, no public matchmaking or ranked playlists, and untested Special Ops. Use the same build as friends. The creator warns about the unchanged 2009 network code, so keep online sessions to trusted players. Back up the native `saves/` folder beside the executables. These are native routes; neither is a phone browser alternative. ## Experiments and unavailable builds [IW4L](https://playable.wtf/games/modern-warfare-2-iw4l/) has a different purpose from MW2 Recompiled. Its Rust/Bevy runtime reads your owned PC MW2 installation to explore multiplayer maps, fight bots and record demos. The Windows release finds Steam data or uses a shortcut to a non-Steam installation. Gameplay remains incomplete and peers need the same build. Choose it for experimentation, not as a substitute for the console campaign port. Its [README](https://github.com/vladtrc/iw4L) and [run guide](https://github.com/vladtrc/iw4L/blob/HEAD/docs/RUN.md) explain the implemented features. [KisakBlack](https://playable.wtf/games/black-ops-kisakblack/) is a Windows source project for Black Ops’ multiplayer executable. Its [build instructions](https://github.com/SwagSoftware/KisakBlack) require Visual Studio, CMake, the DirectX SDK and an owned Steam installation. It is a developer choice, not the BO1 Zombies browser launcher. The cataloged Black Ops II browser project is withdrawn. It is not an alternate way into these BO1 sessions. If a listed host becomes unavailable, use the original game you own or a separately documented project for the exact edition; do not assume a mirror preserves its setup, saves or modes. For browser progress, read [the save and backup guide](https://playable.wtf/guides/browser-game-saves-backups/) before removing site data. ## Project reading - [vel.gg · BO1 Zombies setup](https://vel.gg/bo1z) - [vel.gg · Classic and Counter-Strike controls](https://vel.gg/bo1z/gamepad.js) - [Nacht fan remake · solo/co-op launcher](https://zombies.bitcoinsapi.com/) - [Nacht fan remake · device and controller help](https://zombies.concentric.live/compatibility.html) - [KisakCOD Web · Steam-file campaign setup](https://github.com/slqntdevss/kisakcod-port) - [CoD3Recomp · native setup and controls](https://github.com/FrankHUN88453/CoD3Recomp) - [MW2 Recompiled · editions, controller and matches](https://github.com/PaulCombal/mw2-recompiled) - [IW4L · experimental runtime](https://github.com/vladtrc/iw4L) - [KisakBlack · Windows source build](https://github.com/SwagSoftware/KisakBlack) --- # Mario platformer projects: choose SM64 co-op, Wonder Recomp or GalaxyPad Canonical: https://playable.wtf/guides/mario-platformer-versions/ Written: 2026-10-17 Start with the Mario game you want, then its project. SM64 co-op has native releases; Wonder and GalaxyPad ask you to build. Mario crossover mods still need their host game. ## Choose the game and project Choose [sm64coopdx](https://playable.wtf/games/coop-deluxe-sm64coopdx/) to share Super Mario 64’s worlds with friends. Choose [GalaxyPad](https://playable.wtf/games/super-mario-galaxy-galaxypad/) if you want to prepare a native iPhone or iPad app for Super Mario Galaxy. [Wonder Recomp](https://playable.wtf/games/super-mario-wonder-recomp/) is an earlier source-build project for a different game, with documented progress through the opening and course 1-1. These three projects run as installed applications. A Mario character inside Halo, Doom or Minecraft is a separate kind of experience: the surrounding game and its installation still matter. Choose the adventure before choosing the project | Game and project | Preparation | Reason to choose it | | --- | --- | --- | | [Super Mario 64 · sm64coopdx](https://playable.wtf/games/coop-deluxe-sm64coopdx/) | Native release; your own SM64 `.z64` ROM | Online co-op with synchronized enemies and level events, plus Lua mods | | [Super Mario Bros. Wonder · Wonder Recomp](https://playable.wtf/games/super-mario-wonder-recomp/) | Compile from source with your own Switch 1.0.0 data, keys and firmware | Explore an experimental native Wonder build (Early-course progress; rendering and stability work continues.) | | [Super Mario Galaxy · GalaxyPad](https://playable.wtf/games/super-mario-galaxy-galaxypad/) | Build on an Apple Silicon Mac, sign the app, then import your USA revision 0 WBFS | Galaxy with touch, controller and pointer controls on iPhone or iPad (Experimental; full-game completion remains open.) | ## Share Super Mario 64 with friends sm64coopdx’s useful difference is a shared world: another player can interact with the enemies and events you see. Its Lua mods can change the session further, so agree on ordinary star collecting or a particular mod before inviting a group. The [official site](https://sm64coopdx.com/) directs players to the native release and asks them to drag their own `.z64` ROM onto its window. 1. Download the release for your operating system through the [sm64coopdx project listing](https://playable.wtf/games/coop-deluxe-sm64coopdx/), open it and supply your ROM. 2. Use the N64 and Extras controls menus to review your bindings before starting a room. The v1.5.1 release adds reset buttons for both. 3. Choose **Host → CoopNet**. An empty password creates a public lobby; set a password for a private session. 4. Friends use **Join → Public Lobbies** or the private-lobby choice that matches your room. CoopNet avoids configuring a direct server on your home network. Direct Connection is another option with separate networking requirements; it is not necessary just to create a private CoopNet room. Discord invitations need Game Activity enabled and do not send while you appear offline. The [hosting guide](https://github.com/coop-deluxe/sm64coopdx/wiki/Hosting-and-joining) explains those alternatives. If you are updating a Linux or Mac installation to v1.5.1, the [release notes](https://github.com/coop-deluxe/sm64coopdx/releases/tag/v1.5.1) specifically require a manual update to replace the application and updater. ## Prepare an early Wonder build Wonder Recomp targets the Switch game’s **1.0.0 base release**. Prepare its ExeFS and RomFS from your own copy, with your own keys and firmware, before following the source build. A Nintendo 64 ROM or Galaxy disc image cannot supply this data. The [build guide](https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/7c2531d9bdce94506bad9bf53d8a9848b240f111/docs/BUILD.md) separates extraction, code recompilation, shader translation and the final platform build. The creator now documents Apple Silicon macOS, Windows, Linux x86-64 and Android arm64. Linux uses Vulkan 1.3; Android remains experimental. Desktop keyboard and gamepad input are documented, while Android adds an on-screen stick, A to jump and Y to dash. Touch controls hide when a Bluetooth or USB controller is in use. The useful expectation is an early native build reaching the opening, map and course 1-1. Rendering issues and a reported Windows crash after character selection remain in the [project’s current limitations](https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/7c2531d9bdce94506bad9bf53d8a9848b240f111/README.md). Raising the display rate above 60 does not provide a normal unlocked mode: the creator warns that it changes game speed. ## Build GalaxyPad for iPhone or iPad GalaxyPad’s current iPhone/iPad route uses its New engine, based on MacioGalaxy and Petari. Its older engine and Mac development tools have a different setup. For a phone or tablet, use the [current PadMint installation guide](https://github.com/chrissotraidis/galaxypad/blob/d7ad659fd823002a958023aecede11a6f41ac470/docs/INSTALL_IPAD.md). 1. On an Apple Silicon Mac, prepare full Xcode 26 or later with the iOS platform and about 20 GB of build space. 2. In PadMint 0.5.2 or later, choose **GalaxyPad → iPhone / iPad**. It builds your personal IPA; the project does not provide a ready-made public IPA. 3. Sign and install that IPA using the documented sideloading workflow. 4. In GalaxyPad, open **Game Data & Saves → Import or Reimport Game Data**. Select your own USA `RMGE01` revision 0 single-file WBFS and allow at least 9 GiB free on the device. Galaxy’s pointer has a job separate from movement. For a Pull Star, aim until the hand appears and hold A. The default controller mapping also puts A on the right shoulder so your thumb can keep aiming. The New engine uses the main stick for Star Ball and Ray rides; older tilt-stick instructions describe the deprecated engine. See the [control guide](https://github.com/chrissotraidis/galaxypad/blob/d7ad659fd823002a958023aecede11a6f41ac470/README.md#controls-and-the-three-dot-menu) before changing layouts. Update in place with the same signing tool, Apple ID and app identifier. Deleting the app can remove local progress. Keep a backup before changing that installation boundary, using the project’s [save guidance](https://github.com/chrissotraidis/galaxypad/blob/d7ad659fd823002a958023aecede11a6f41ac470/docs/SAVE-AND-NAND.md). ## Mario inside another game For Mario’s movement inside a game you already own, start with the host game. [G64](https://playable.wtf/games/ckosmic-g64/) adds Mario to 64-bit Garry’s Mod on Windows; [SMC64](https://playable.wtf/games/kodyjking-smc64/) targets Halo CE in the Steam Master Chief Collection. Neither is a standalone Super Mario 64 campaign. The [libsm64 project](https://github.com/libsm64/libsm64) supplies Mario’s movement and rendering for use inside other engines. The same distinction applies to [sm64-san-andreas](https://playable.wtf/games/headshot2017-sm64-san-andreas/), [gzdoom-sm64](https://playable.wtf/games/headshot2017-gzdoom-sm64/) and [ER Mario](https://playable.wtf/games/deltarooo-er-mario/): choose them for a crossover in San Andreas, Doom or Elden Ring. Their base-game and Mario-file requirements belong to each mod. [Retro64](https://playable.wtf/games/retro64-minecraft/) is a separate unfinished Minecraft mod source project. For racing, [the Mush8 guide](https://playable.wtf/guides/mush8-mario-kart-8-deluxe-apple/) covers Mario Kart 8 Deluxe on Apple devices. Its Switch files, controls and multiplayer setup do not apply to these platformers. For another adventure, compare the different game editions and setups in [the Zelda project guide](https://playable.wtf/guides/zelda-game-versions/). ## Project reading - [Coop Deluxe · release and ROM import](https://sm64coopdx.com/) - [sm64coopdx · co-op and modding](https://github.com/coop-deluxe/sm64coopdx) - [sm64coopdx · hosting and joining](https://github.com/coop-deluxe/sm64coopdx/wiki/Hosting-and-joining) - [sm64coopdx · v1.5.1 update notes](https://github.com/coop-deluxe/sm64coopdx/releases/tag/v1.5.1) - [Wonder Recomp · platforms and current scope](https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/7c2531d9bdce94506bad9bf53d8a9848b240f111/README.md) - [Wonder Recomp · source-build workflow](https://github.com/BelmanteGu/SuperMarioWonderRecomp/blob/7c2531d9bdce94506bad9bf53d8a9848b240f111/docs/BUILD.md) - [GalaxyPad · installation and game import](https://github.com/chrissotraidis/galaxypad/blob/d7ad659fd823002a958023aecede11a6f41ac470/docs/INSTALL_IPAD.md) - [GalaxyPad · engine, controls and save guidance](https://github.com/chrissotraidis/galaxypad/blob/d7ad659fd823002a958023aecede11a6f41ac470/README.md) - [libsm64 · Mario inside other engines](https://github.com/libsm64/libsm64) --- # Zelda projects compared: Ocarina, Majora, Link’s Awakening and more Canonical: https://playable.wtf/guides/zelda-game-versions/ Written: 2026-10-17 Choose the adventure first. Ocarina of Time, Majora’s Mask and later Zelda games need their own native projects and files. Zelda II’s unavailable browser host has a separately documented desktop fallback. ## Match the Zelda game and edition For the Nintendo 64 adventures, choose [Ship of Harkinian for Ocarina of Time](https://playable.wtf/games/harbourmasters-shipwright/) or [Zelda64Recomp for Majora’s Mask](https://playable.wtf/games/zelda64recomp-zelda64recomp/). For the Switch Link’s Awakening remake, consider the native LAS Recomp beta. Those are different adventures with separate files, controls and saves. Remake names also matter. Ocarina of Time 3D is the Nintendo 3DS edition; Link’s Awakening (2019) is the Switch remake. Neither uses the original cartridge files expected by an NES or Nintendo 64 project. Three native starting points for different Zelda games | Game and project | Where and what to bring | Useful difference | | --- | --- | --- | | [Ocarina of Time · Ship of Harkinian](https://playable.wtf/games/harbourmasters-shipwright/) | Native release; a ROM accepted by its compatibility checker | Ocarina’s original adventure with configurable input and custom asset support | | [Majora’s Mask · Zelda64Recomp](https://playable.wtf/games/zelda64recomp-zelda64recomp/) | Native release; your North American Majora’s Mask ROM | Optional dual-stick camera, gyro aiming and autosave | | [Link’s Awakening (2019) · LAS Recomp](https://playable.wtf/games/zelda-links-awakening-2019-lasrecomp/) | Native beta; your extracted Switch 1.0.0 files | Original progression or separate randomizer seeds (Known crashes and rendering issues remain.) | ## Ocarina and Majora need different projects ### Ocarina of Time: Ship of Harkinian First check your own ROM with [Ship’s compatibility checker](https://ship.equipment/), then obtain the native release. On Windows, extract it and run `soh.exe`; Linux and macOS have their own packages. The app prepares the game resources from the supported ROM. The default keyboard maps movement to WASD, A to X, B to C, Z-targeting to Z, Start to Space and the C buttons to the arrows. Escape opens Ship’s menu. Review those bindings before assigning items: an N64 A-button prompt means keyboard X with the default layout. Custom asset archives go in the project’s mods folder. See [Ship’s configuration reference](https://github.com/HarbourMasters/Shipwright#configuration). ### Majora’s Mask: Zelda64Recomp Zelda64Recomp currently takes the **North American Majora’s Mask ROM** through its main menu. Ocarina of Time remains a planned addition to this project, so use Ship for that game today. Its optional dual-analog layout moves camera control onto the right stick. Map the C buttons elsewhere too; the project preserves right-stick ocarina input when the instrument is out. Supported motion controllers can supply gyro aiming. The in-game configuration menu works with a mouse, keyboard or controller. Autosaving replaces the previous autosave or owl save rather than creating an unlimited history. It can be disabled for the original save behavior. Before moving an installation, copy the saves from the location listed in the [save-file FAQ](https://github.com/Zelda64Recomp/Zelda64Recomp#where-is-the-savefile-stored); an Ocarina save is not Majora progress. ## The 3DS and Switch remakes [LAS Recomp](https://playable.wtf/games/zelda-links-awakening-2019-lasrecomp/) uses the 2019 Switch Link’s Awakening, with your own **version 1.0.0** files and no update applied. On its start screen, select the folder containing the extracted ExeFS and RomFS. The application performs the local preparation; its download does not include Nintendo’s game assets. Choose vanilla progression for an ordinary adventure, or a randomizer seed for shuffled content. Seeds have separate saves. The more disruptive room-shuffle options can produce unsolvable runs, so they are a different commitment from starting the familiar game. Remap gameplay controls in Settings; F1 or Minus + Plus opens the overlay. Keep a keyboard or mouse available for setup because the [README’s known issues](https://github.com/peiikai/LASRecomp#status) include a start-screen controller problem. [TriAevum — Echoes of Time](https://playable.wtf/games/coccofresco-triaevum/) instead targets **Ocarina of Time 3D**. It needs a supported decrypted European or US 3DS image and prepares it through Forge. Its single-screen presentation is an alternative to the 3DS layout, not a mode in Ship of Harkinian. Avoid the withdrawn alpha.3/alpha.3b builds and read the [release-specific instructions](https://github.com/coccofresco/TriAevum/releases) for a later beta. ## Zelda II: unavailable browser host, native fallback The [z2rs browser host](https://playable.wtf/games/zelda-2-browser/) is unavailable. Its creator also documents a separate [native release for Windows, macOS and Linux](https://github.com/troyedwardsjr/z2rs/releases) using your own supported USA Zelda II ROM. Unpack the archive, open `z2rs-launcher.exe`, `z2rs.app` or `z2rs-launcher` for your system, choose your ROM and press Play. Renaming an unsupported ROM does not make it compatible; the check depends on the game data. The [creator’s setup reference](https://github.com/troyedwardsjr/z2rs/blob/4fe7a35f8ccfdccdf32421badf97b48b02d0127f/README.md) documents arrows to move, **Z to jump**, **X to attack**, Enter for Start and Shift for Select, with gamepad support. The native launcher offers screen-layout and feature choices before starting. That desktop route is separate from the unavailable browser host and the Android app, whose touch controls come with different feature limits. ## A Link to the Past, Twilight and Wind Waker [zelda3](https://playable.wtf/games/snesrev-zelda3/) is the A Link to the Past route. Its creator describes the game as playable from start to end, with optional widescreen, shaders and item switching. The documented setup is a native source build: put your USA ROM in the project as `zelda3.sfc`, extract its resources, then compile. Its keyboard mapping differs from z2rs: arrows move, X is SNES A and Z is SNES B. Check the [build and controls instructions](https://github.com/snesrev/zelda3#building) before following another Zelda project’s shortcuts. For Twilight Princess, [Dusklight](https://playable.wtf/games/twilitrealm-dusklight/) accepts commercial GameCube and Wii discs except the Korean Wii release. Even with a Wii disc, it presents the GameCube HUD and other GameCube-specific behavior. Start with the [official installation guide](https://twilitrealm.dev/install/) for your platform; a Wii input expectation should not be carried into that setup. For The Wind Waker, [BlueWake](https://playable.wtf/games/chrissotraidis-bluewake/) requires the USA GameCube edition, `GZLE01` revision 0. Windows has a prepared application package; Apple device routes involve building your personal app. It documents remappable controls and save backups. The project remains experimental, with brief stalls possible at area changes. Use [BlueWake’s platform selector](https://github.com/chrissotraidis/bluewake#get-bluewake) before preparing a disc or signing an app. ## Keep each adventure’s progress Choose the game, edition and project before making a long-term save. A Majora’s Mask autosave, an LAS randomizer seed and a BlueWake memory card belong to different games and storage formats. Even the two Ocarina projects target different editions. A shared title does not provide a save-conversion method. When changing a device or reinstalling, follow that project’s backup path and keep the original copy until you have loaded the replacement. For browser storage, use the [browser-save guide](https://playable.wtf/guides/browser-game-saves-backups/) to distinguish local progress from an exported file. For another family with a browser option and separate native ports, see [the Sonic comparison](https://playable.wtf/guides/sonic-game-versions/). ## Project reading - [z2rs · supported ROM, editions and input](https://github.com/troyedwardsjr/z2rs) - [Ship of Harkinian · setup and controls](https://github.com/HarbourMasters/Shipwright) - [Zelda64Recomp · Majora’s Mask, controls and saves](https://github.com/Zelda64Recomp/Zelda64Recomp) - [LAS Recomp · Switch files and randomizer limits](https://github.com/peiikai/LASRecomp) - [TriAevum · release status](https://github.com/coccofresco/TriAevum/releases) - [zelda3 · resource extraction and controls](https://github.com/snesrev/zelda3) - [Dusklight · supported discs and setup](https://github.com/TwilitRealm/dusklight) - [BlueWake · platform and disc requirements](https://github.com/chrissotraidis/bluewake) --- # Sonic projects compared: Sonic 3 A.I.R., Mania and Unleashed Canonical: https://playable.wtf/guides/sonic-game-versions/ Written: 2026-10-17 Use Sonic 3 A.I.R.’s official beta for a web app, or choose the native project for the Sonic game you own. Unleashed’s desktop and Android installations have different import and control workflows. ## Choose the Sonic game and device For Sonic 3 & Knuckles in a browser, choose [Sonic 3 A.I.R.’s official web beta](https://playable.wtf/games/sonic-3-air-web/) and bring a compatible ROM. For Sonic Unleashed on a Windows or Linux computer, choose [Unleashed Recompiled](https://playable.wtf/games/hedge-dev-unleashedrecomp/) with your Xbox 360 game data. Its [Android fork](https://playable.wtf/games/sansnope-unleashedrecomp-android/) has its own installer, touch layout and device limitations. Sonic Mania and Sonic the Hedgehog (2006) are separate games again. A Mania asset pack cannot supply Sonic 3, and the Unleashed Wii edition cannot supply a project built around the Xbox 360 release. Match the game, edition and device | Game and project | Prepare | Choose it for | | --- | --- | --- | | [Sonic 3 & Knuckles · A.I.R. web beta](https://playable.wtf/games/sonic-3-air-web/) | Compatible `Sonic_Knuckles_wSonic3.bin`; browser or iOS home-screen setup | A widescreen Sonic 3 remaster in a web app, with a save-file manager | | [Sonic Mania · RSDK decompilation](https://playable.wtf/games/rsdkmodding-sonic-mania-decompilation/) | Native setup and assets from a supported official Mania or Plus release | Mania with a built-in mod loader (The Netflix edition is unsupported.) | | [Sonic Unleashed · Unleashed Recompiled](https://playable.wtf/games/hedge-dev-unleashedrecomp/) | Native Windows/Linux release; US or EU Xbox 360 game and title update | The Xbox 360 adventure with a guided data installer and configurable graphics | | [Sonic Unleashed · Android fork](https://playable.wtf/games/sansnope-unleashedrecomp-android/) | Android 10+, supported 64-bit device and your Xbox 360 data | Editable touch controls or a physical controller (Experimental; GPU and driver compatibility matter.) | ## Set up Sonic 3 A.I.R. on the web The [Sonic 3 A.I.R. project site](https://sonic3air.org/) links Sappharad’s iOS/web beta separately from its native downloads. It requires a compatible Sonic 3 & Knuckles ROM. The former Steam ROM is no longer sold; owning a differently packaged Sonic collection does not automatically supply the file this project accepts. 1. Open the [web beta installation page](https://projects.sappharad.com/s3air_ios/20260328_beta/) on the device you will use. 2. On iPhone or iPad, use Safari’s **Share → Add to Home Screen**, then open that app. Other devices can use the page’s web-browser link. 3. Keep the device awake during the first data download. When asked, select your own `Sonic_Knuckles_wSonic3.bin`. 4. Use the basic setup before adding optional soundtrack data or mods. The web port keeps its content in memory, so the remastered soundtrack adds a meaningful load. Its [web-specific known issues](https://projects.sappharad.com/s3air_ios/todoList.html) warn that more installed data can cause stuttering on low-memory devices. They also say **switching to the software renderer can lock the game**. The desktop site’s software-renderer troubleshooting advice does not apply to this web build. ## Export A.I.R. saves before switching In A.I.R.’s web beta, open **Options → file manager** to download save data or upload an existing file. Transfers are one file at a time; zipped mods are a separate supported convenience. The same manager can import PC save data, as described on the [beta setup page](https://projects.sappharad.com/s3air_ios/20260328_beta/). Keep the old web installation until you have checked your progress in a new one. Several beta versions can be installed together, so the presence of a newer home-screen icon does not by itself tell you which copy contains your save. Export before removing a version or clearing its site data. The [browser-save guide](https://playable.wtf/guides/browser-game-saves-backups/) covers that distinction. ## Unleashed on desktop or Android ### Windows or Linux Unleashed Recompiled accepts the **US or EU Xbox 360 version**, with its title update; the Japanese version is excluded by the installation guide. Adventure Pack DLC is optional. It does not accept the Wii game as an equivalent edition. After preparing your own files using the [official installation instructions](https://github.com/hedge-dev/UnleashedRecomp#how-to-install), run the native application’s installer. **Add Files** accepts supported Xbox 360 containers; **Add Folder** expects the requested content’s already-extracted directory and does not search nested folders for you. Modified files fail its integrity checks. The desktop project needs an AVX-capable CPU, 8 GB of memory and a Direct3D 12 or Vulkan 1.2 GPU. Its keyboard defaults use arrows for movement, S for A and D for B; change bindings in `config.toml`. The creator recommends a controller while action remapping is still planned. ### Android The Android fork adds an APK, an in-app **Install game / DLC (.zip / folder)** action and a separate route for game, update and DLC packages. Its importer can locate the game within a ZIP, unlike the desktop Add Folder workflow. Start with the defaults, then arrange the on-screen controls through the launcher’s Controls editor. The touch layout includes a movement stick and right-side camera gestures; it changes to a directional pad in menus. Physical-controller input hides the overlay, and touching the screen brings it back. This is documented Android behavior, not a feature automatically inherited by the desktop project. Check the [Android requirements and GPU notes](https://github.com/SansNope/UnleashedRecomp-Android#before-you-install) before copying several gigabytes. Adreno is the main target; recent Mali support is experimental and older Mali generations are excluded. The fork remains experimental even when a supported phone can install it. ## Prepare Sonic Mania’s own assets [RSDK Sonic Mania](https://playable.wtf/games/rsdkmodding-sonic-mania-decompilation/) is useful when you specifically want Mania and its modding environment. It needs assets from a supported official Mania or Mania Plus release; the Netflix version is explicitly unsupported. Its build options distinguish the original console release, original PC release and Plus update, so choose the target that matches your data. For a source build, clone the repository with its submodules rather than using GitHub’s source ZIP, which omits required dependencies. The README includes native platform instructions and the integrated RSDK engine build. Existing official PC save data can be copied into the folder containing the decompilation. Keep a separate copy before doing so; Sonic 3 A.I.R.’s file manager is a different game’s workflow. See [Mania’s build instructions](https://github.com/RSDKModding/Sonic-Mania-Decompilation#how-to-build). ## Where Sonic 2006 fits [Marathon Recompiled](https://playable.wtf/games/sonicnext-dev-marathonrecomp/) targets the Xbox 360 Sonic the Hedgehog (2006). Its maintainers still mark it under active development and not intended for public use. Treat the repository as a development project to follow, not a substitute download for one of the released choices above. The PlayStation 3 edition cannot supply its required Xbox 360 files. For another family with native releases and experimental source builds, compare [the Mario platformer projects](https://playable.wtf/guides/mario-platformer-versions/). ## Project reading - [Sonic 3 A.I.R. · official ports and ROM requirements](https://sonic3air.org/) - [Sonic 3 A.I.R. web beta · installation and file manager](https://projects.sappharad.com/s3air_ios/20260328_beta/) - [Sonic 3 A.I.R. web beta · renderer and memory limits](https://projects.sappharad.com/s3air_ios/todoList.html) - [Unleashed Recompiled · desktop installation](https://github.com/hedge-dev/UnleashedRecomp) - [Unleashed for Android · importing files and controls](https://github.com/SansNope/UnleashedRecomp-Android) - [RSDK Sonic Mania · supported editions and building](https://github.com/RSDKModding/Sonic-Mania-Decompilation) - [Marathon Recompiled · development status](https://github.com/sonicnext-dev/MarathonRecomp) --- # GTA projects compared: GTA III in a browser, LCS Recomp and Theft4 Canonical: https://playable.wtf/guides/gta-game-versions/ Written: 2026-10-17 Start with the GTA installment you want. GTA III’s web host, the PSP-based Liberty City Stories port and GTA IV’s experimental iOS app use different data and save workflows. ## Choose the GTA installment For GTA III in a tab, [WASM Arcade’s re3 host](https://playable.wtf/games/gta-iii-re3-web/) documents browser controls and save exports. For Liberty City Stories, [LCS Recomp](https://playable.wtf/games/elmasas-lcs-recomp/) is a native project requiring a specific PSP release. For GTA IV on an iPhone or iPad, [Theft4](https://playable.wtf/games/koreanseats1-theft4/) is an experimental signed-app setup using Xbox 360 files. These are different games, even when they share Liberty City as a setting. They have different missions, game data and save formats. A GTA III browser host does not supply GTA IV or validate a GTA V-branded site. Available routes with documented setup | Game and project | Delivery and files | Choose it for | | --- | --- | --- | | [GTA III · WASM Arcade host](https://playable.wtf/games/gta-iii-re3-web/) | Browser; host-streamed data and WebGL 2 | A documented desktop browser start and local save manager (Play can open a sponsor tab.) | | [Liberty City Stories · LCS Recomp](https://playable.wtf/games/elmasas-lcs-recomp/) | Native; your PSP US v1.05 `EBOOT.ELF` and `PSP_GAME` folder | That specific PSP adventure with configurable keyboard, mouse and controller input | | [GTA IV · Theft4](https://playable.wtf/games/koreanseats1-theft4/) | iOS/iPadOS app; supported USA Xbox 360 base game and matching TU8 | An experimental native Apple-device project (Signing, data preparation and substantial device storage are required.) | ## GTA III: distinguish engine and host **re3 is the engine project; WASM Arcade is the web host.** The host identifies its GTA III build as re3 compiled to WebAssembly. Its streaming, browser save manager and advertising are host features, not promises made by every project using re3. WASM Arcade is unofficial and separately maintained. The host’s start flow supplies streamed assets rather than asking you to import a local installation. Engine and game data still travel to your browser; “no installer” does not mean no download or storage use. Its [hosting explanation](https://wasmarcade.com/about) also says Play, or the first page click, can open a sponsor tab. Use WASD or the arrows to move and steer, the mouse to aim and fire, and F or Enter to enter or leave a vehicle. Space acts as the handbrake while driving. Escape releases the captured pointer. The [host’s control reference](https://wasmarcade.com/gta3) also lists a gamepad mapping; it does not make another GTA site’s input scheme equivalent. Save in a safehouse, then use the host’s **Saves** manager to download the slot as a `.b` file. Import restores a file into browser storage. Keep that export before clearing site data or moving devices; this local progress is not an account-based cloud save. ## Prepare Liberty City Stories LCS Recomp targets **Liberty City Stories, PSP US v1.05 (ULUS-10041)**. Supply your own decrypted `EBOOT.ELF` and disc `PSP_GAME` folder. The release uses a `game/` directory; a source checkout uses `lcs/game/`. Files from GTA III or GTA IV cannot replace these, and the project does not include the game data. The [current input instructions](https://github.com/elmasas/lcs-recomp#mouse-and-keyboard) map movement to WASD, attack to left mouse, aim to right mouse and vehicle entry to F or Enter. **Shift jumps on foot; Space sprints on foot and becomes the handbrake in a vehicle.** That is worth checking if you have just used another GTA client. Edit bindings in `LCSNative.ini` and restart to apply them. F10 opens the host settings and F11 toggles fullscreen. Controller names follow the Xbox layout, with a PlayStation equivalent shown in the README. Windows source builds require Visual Studio and LLVM; the separate Linux instructions use Vulkan and SDL2. Choose the release or build path before arranging your game directory. ## GTA IV on iPhone or iPad Theft4 uses GTA IV’s **Xbox 360 USA retail base 0.0.0.5 and matching TU8 to 0.0.8.5**. The PC edition and unrelated title updates do not satisfy that input. Its unsigned IPA is the application; your game data and update must be prepared separately. The [installation guide](https://github.com/KoreanSeats1/Theft4/blob/88115fefad59cfcb62d17c0c9548a7a900c01a23/docs/IOS_SIDELOAD_INSTALL.md) requires iOS/iPadOS 26 or later, a signing method and about 7 GB for the prepared game, plus app and transfer space. GPUs needing ASTC texture preparation require about 2.4 GB more. This is a native app installation, not a Safari launch. 1. Choose the official release IPA and sign it with your existing sideloading setup. 2. Prepare and validate your supported game and update using the creator’s documented staging workflow. 3. Copy the prepared folder’s complete contents, including its installation manifest, into the app’s `game` folder. 4. Use **System → Check Game Files**, then finish any required texture preparation before Play. The app offers touch controls and physical-controller input. Its current limitations include freezes during extended play and app switching, so treat it as an experimental choice. For backups, quit the game and reopen the app, then choose **System → Export Saves to Files**. Copy the entire dated save-export folder elsewhere. **Import Saves from Files** restores that folder after validation. Update the app in place: the old development Lab app has a separate data container. The [save instructions](https://github.com/KoreanSeats1/Theft4#move-or-back-up-saves-with-files) explain the boundary. ## Vice City, Fiveplay and crossover limits ### Vice City is not an available recommendation here The [Joncode Vice City listing](https://playable.wtf/games/gta-vice-city-browser/) remains unavailable. Its local-import client asks for a `game.tar.gz` from a legitimate copy, but its advertised asset-download route remains unresolved. Playable therefore offers no Play shortcut for it. Another host carrying a Vice City label does not remove that limitation. ### Fiveplay is not a verified full GTA V port [Fiveplay](https://playable.wtf/games/gta-v-fiveplay/) is a GTA V-themed browser listing with Sandbox and Story menu labels. Those labels do not establish the retail GTA V campaign, its mission coverage or GTA Online. It is not a supported recommendation here for someone seeking the full GTA V game. ### Mario in San Andreas is a mod [sm64-san-andreas](https://playable.wtf/games/headshot2017-sm64-san-andreas/) adds Mario to an existing compatible San Andreas installation, using a separate US Super Mario 64 ROM. Its creator distinguishes the old Steam edition from the Definitive Edition. It neither supplies San Andreas nor turns it into a browser game. The [Mario comparison](https://playable.wtf/guides/mario-platformer-versions/) explains that crossover alongside the standalone Mario projects. ## Keep saves with the right game Choose your route according to the game you want and the files you already have. A GTA III `.b` export, a PSP game directory and Theft4’s save-export folder serve different purposes. Do not import one as another project’s game data or assume two Liberty City games share progress. Before changing devices, make the backup offered by the exact client and keep its original installation until the restored save opens. The [browser-save guide](https://playable.wtf/guides/browser-game-saves-backups/) covers local browser data; the [project-label guide](https://playable.wtf/guides/ports-decompilations-emulators-explained/) explains why a web host, native recompilation and source repository need different preparation. ## Project reading - [WASM Arcade · GTA III controls and save manager](https://wasmarcade.com/gta3) - [WASM Arcade · hosting, upstream engines and advertising](https://wasmarcade.com/about) - [LCS Recomp · required PSP edition and controls](https://github.com/elmasas/lcs-recomp) - [Theft4 · Xbox 360 input and save exports](https://github.com/KoreanSeats1/Theft4) - [Theft4 · signing, storage and prepared files](https://github.com/KoreanSeats1/Theft4/blob/88115fefad59cfcb62d17c0c9548a7a900c01a23/docs/IOS_SIDELOAD_INSTALL.md) - [sm64-san-andreas · host-game and Mario requirements](https://github.com/headshot2017/sm64-san-andreas) --- # Command & Conquer: choose Chrono Divide, GeneralsX or OpenRA Canonical: https://playable.wtf/guides/command-and-conquer-versions/ Written: 2026-10-17 Start with the game you want: Red Alert 2, Generals Zero Hour and OpenRA’s earlier Westwood games have different armies, rules and setup. ## Choose the game first Choose the battlefield before choosing the engine. [Chrono Divide](https://playable.wtf/games/red-alert-2-browser/) recreates vanilla **Red Alert 2** for browser play. [GeneralsX Web](https://playable.wtf/games/generals-zero-hour-browser/) runs **Generals: Zero Hour** using your installation. [OpenRA](https://playable.wtf/games/openra-openra/) is an installed collection with its own interpretations of earlier Westwood games. Three routes with different games and requirements | Project | Choose it for | Prepare first | | --- | --- | --- | | [Chrono Divide](https://playable.wtf/games/red-alert-2-browser/) | Red Alert 2 multiplayer in a browser (A beta aiming for vanilla-engine feature parity.) | A supported browser; complete the client's game-data setup. | | [GeneralsX Web](https://playable.wtf/games/generals-zero-hour-browser/) | The later 3D Zero Hour game (The creator describes complete-game scope.) | Your installed Zero Hour copy and a WebGPU browser. | | [OpenRA](https://playable.wtf/games/openra-openra/) | Revised Tiberian Dawn, Red Alert or Dune 2000 rules (OpenRA's Red Alert is the first game, not Red Alert 2.) | A Windows, macOS or Linux release and its first-run asset setup. | All three ask you to manage an economy while commanding units. The choice changes the armies and rules you learn, not merely the way the same executable launches. Agree on the project with friends before installing anything. ## Start Red Alert 2 in Chrono Divide Use [Play Beta on Chrono Divide's site](https://chronodivide.com/), complete the client setup, and choose classic left-click or modern right-click commands before a match. The creator documents multiplayer, original maps and replays. Its vanilla Red Alert 2 goal does not make this a complete Yuri's Revenge package. For a local import, use your original Red Alert 2 installation's MIX files. The [project's storage guide](https://github.com/chronodivide/mod-sdk#file-and-folder-structure) identifies `ra2.mix`, `multi.mix` and `language.mix`; Zero Hour's BIG archives are a different format. The client supports drag-and-drop and archives with a single nested directory. Keep file import separate from account setup. The [client notes](https://chronodivide.com/patch-notes.html) describe a global account with regional nicknames; an existing nickname can be linked from the nickname screen. In Quick Match, use **Invite Player…** for a party. Replays let you revisit a match; they are not a save from which to resume commanding. If an import fails silently or Quick Match stays unavailable after visiting the ladder, the 0.84.1 notes specifically address those problems. Reload to pick up the current client before repeating the same failed step. ## Bring Zero Hour to GeneralsX Choose GeneralsX Web when you specifically want Zero Hour's USA, China and GLA armies. The [creator's requirements](https://github.com/origami-ltd/wasm-generals#requirements-to-play) call for your installed Steam, EA app or disc copy. An unopened installer, a Red Alert 2 folder or a renamed archive is not that installation. 1. Open [generals.wasm.ltd](https://generals.wasm.ltd/) over HTTPS in a WebGPU-capable Chrome or Edge browser. 2. Point the launcher at your installed Zero Hour directory. The engine reads its `.big` archives from your disk as needed. 3. Enter the game's own menus; **Esc** opens its original pause menu. The project targets the complete game and distributes no game assets. Its documented multiplayer uses a WebSocket relay and a shared link for players on your network. Arrange that LAN setup explicitly; Chrono Divide invitations and OpenRA servers belong to other games. ## Install an OpenRA mod OpenRA is the choice for a modern interpretation of earlier RTS games: production queues, attack-move, stances, fog of war and ongoing balance changes. Its [three official mods](https://www.openra.net/about/) are Tiberian Dawn, Red Alert and Dune 2000. Tiberian Sun remains a separate development effort. 1. Choose **Release** on the [OpenRA download page](https://www.openra.net/download/) for ordinary online play. Playtest is a separate preview channel. 2. Install the package for your computer and open the desired mod. On Linux, the official AppImages are supplied per mod. 3. Let that mod download its original assets or copy them from your discs when prompted. Then choose the left-click or right-click control scheme you prefer. For friends who cannot join one another, compare both the mod and release channel. A Red Alert match and a Tiberian Dawn match use different rules even inside OpenRA. Replays and observers help you study those rules after a match. ## Match the device to the session Chrono Divide advertises phone and tablet access, but also gives a minimum display size of **1024×768**, 4 GB RAM and a 64-bit browser. That is a reason to prefer a roomy screen for its battlefield and sidebar. Its own performance advice favors the other listed browsers over Firefox. Plan GeneralsX around a desktop with access to your installed files and WebGPU. OpenRA's supported downloads are desktop applications. If your only device is a phone, these two routes do not provide the same documented mobile starting point as Chrono Divide. Keep saves, replays and accounts with the project that created them. For a different kind of strategy session, the [OpenTTD comparison](https://playable.wtf/guides/openttd-browser-native/) explains a browser route with explicit save-file transfers to a native application. ## Project reading - [Chrono Divide · features and device requirements](https://chronodivide.com/) - [Chrono Divide · imports, accounts and client updates](https://chronodivide.com/patch-notes.html) - [GeneralsX Web · Zero Hour requirements and scope](https://github.com/origami-ltd/wasm-generals#readme) - [OpenRA · games and revised rules](https://www.openra.net/about/) - [OpenRA · releases and first-run assets](https://www.openra.net/download/) - [Chrono Divide · original MIX assets and browser storage](https://github.com/chronodivide/mod-sdk#file-and-folder-structure) --- # Tomb Raider: OpenLara’s browser demo or TRX for the full adventures? Canonical: https://playable.wtf/guides/tomb-raider-versions/ Written: 2026-10-17 Try a demo level in OpenLara, or prepare your owned Tomb Raider I–III files for an installed TRX adventure. The browser demo and trilogy engine have different scope. ## Choose a demo or an adventure For a quick encounter with classic Lara movement, start with [OpenLara's WebGL demo](https://playable.wtf/games/openlara/). For an installed adventure through games you own, choose [TRX Community Edition](https://playable.wtf/games/lostartefacts-trx/). Both replace a classic engine, but their linked starting points have very different scope. A hosted demonstration or an installed trilogy engine | Project | What you start with | Reason to choose it | | --- | --- | --- | | [OpenLara WebGL](https://playable.wtf/games/openlara/) | The creator's included demo level | Try the engine in a browser before preparing a native setup. | | [TRX](https://playable.wtf/games/lostartefacts-trx/) | Your original Tomb Raider I, II or III files (A TR1 PC demo is also offered.) | Play the supported adventures with configurable controls, UI and rendering. | TRX's creators report all three games playable from beginning to end. That claim stops at I–III: Tomb Raider IV is still in development. OpenLara's repository screenshots of later games do not expand the content supplied by its browser demo. ## Try OpenLara and learn the controls Follow the [WebGL demo link in OpenLara's README](https://github.com/XProger/OpenLara#openlara) using a WebGL-capable browser. The demo level is supplied; a standalone download is a separate link. For a full adventure from an owned installation, TRX offers the more explicit setup described below. OpenLara's engine defines these default keyboard bindings. If you have already changed its settings, use your configured layout: OpenLara engine defaults | Action | Input | | --- | --- | | Move / turn | Arrow keys | | Jump / walk | Alt / Shift | | Action / draw weapons | Ctrl / Space | | Look / roll | C / A | | Inventory | Esc | Practice walking, turning and jumping before combining them near a drop. The [engine's input definitions](https://github.com/XProger/OpenLara/blob/master/src/core.h) are the basis for these defaults; they do not establish a particular phone's touch layout. ## Prepare the TRX game files Use original **TR1, TR2 or TR3** files from an owned Steam, GOG or disc installation. Keep each game's files separate. TRX's combined layout uses `games/tr1/`, `games/tr2/` and `games/tr3/`, with game-specific subfolders. 1. **Windows installer:** choose a destination, select your owned game packs or the TR1 PC demo, and let the installer remap the files. 2. **Windows/Linux archive:** extract the combined package, then copy the original files into the matching hierarchy shown in the [installation guide](https://github.com/LostArtefacts/TRX/blob/trx-1.11.1/docs/trx/INSTALLING.md). 3. **macOS:** copy `TRX.app` from the disk image into Applications and run it once. For the full games, use Show Package Contents and place the files under `Contents/Resources/games//` as the guide specifies. Do not merge an old per-game installation into the new layout blindly. If TRX reports a legacy layout, back up saves, then use a fresh combined extraction and copy the owned data into the new game directories. ## Set up TRX controls and options In TRX, open **Controls** before committing to a long level. Keyboard and controller layouts are configurable, with two bindings per action. Set movement, walk, jump and action where you can reach them together; a comfortable action key matters for grabbing ledges as well as interacting. Choose it for specific conveniences such as UI scaling, photo mode and adjustable draw distance. It is not an HD texture-pack system: the [project FAQ](https://github.com/LostArtefacts/TRX/blob/trx-1.11.1/README.md#qa) says that support is not planned. Its supported platforms are Windows, Linux and macOS. TRX remembers the last game or expansion selected. If it opens the demo when you wanted a full game, change the selection in the passport. A shortcut can choose a game explicitly with `--mod tr1`, `--mod tr2` or `--mod tr3`. The [creator's command-line guide](https://lostartefacts.dev/trx/docs/) lists the separate expansion identifiers. ## Keep the right saves OpenLara's web save slots live in the current browser profile's IndexedDB storage. Keep that profile and site's data if you want to return to them. The [web save implementation](https://github.com/XProger/OpenLara/blob/master/src/platform/web/main.cpp) does not turn those slots into a TRX save import. For a bundled Windows/Linux TRX installation, the default save directory is `saves/` beside the application; custom installations can override it with `TRX_SAVES_DIR`. Preserve the actual save directory before replacing the installation. Keep the original backup until a restored slot loads in the correct game. For phone play, neither the linked OpenLara demo nor TRX supplies a confirmed mobile route in this comparison. [PrinceJS offers documented touch controls](https://playable.wtf/guides/prince-of-persia-versions/) if a classic traversal game on a phone is the priority. ## Project reading - [OpenLara · WebGL demo and standalone route](https://github.com/XProger/OpenLara#readme) - [OpenLara · default keyboard layout](https://github.com/XProger/OpenLara/blob/master/src/core.h) - [OpenLara · browser save implementation](https://github.com/XProger/OpenLara/blob/master/src/platform/web/main.cpp) - [TRX 1.11.1 · games, controls and scope](https://github.com/LostArtefacts/TRX/blob/trx-1.11.1/README.md) - [TRX 1.11.1 · installation and save directories](https://github.com/LostArtefacts/TRX/blob/trx-1.11.1/docs/trx/INSTALLING.md) - [TRX · game and expansion selection](https://lostartefacts.dev/trx/docs/) --- # Prince of Persia: PrinceJS in a browser or SDLPoP on desktop? Canonical: https://playable.wtf/guides/prince-of-persia-versions/ Written: 2026-10-17 PrinceJS starts in a browser and preserves level settings in a link. SDLPoP is an installed DOS-based port with exact-state quicksaves and replays. ## Choose how you want to practice Choose [PrinceJS](https://playable.wtf/games/oklemenz-princejs/) for a direct browser start and documented phone controls. Choose [SDLPoP](https://playable.wtf/games/nagyd-sdlpop/) for an installed DOS-based port with exact-state quicksaves and replays. These projects follow the first Prince of Persia, not The Shadow and the Flame or The Sands of Time. The original game's attraction is deliberate movement: crossing a room means judging a run, jump or sword exchange. Jordan Mechner built its animation from filmed human motion. Both routes retain that emphasis on timing; the meaningful choice is how you want to practice and preserve progress. Choose a session and save style | Project | Start with | Progress | | --- | --- | --- | | [PrinceJS](https://playable.wtf/games/oklemenz-princejs/) | A browser; no original-file import | A URL containing level and starting conditions. | | [SDLPoP](https://playable.wtf/games/nagyd-sdlpop/) | The linked package for your computer | Classic level saves, exact-state quicksaves and replay files. | ## Start PrinceJS Open [princejs.com](https://princejs.com/), press to start, and use Enter to continue. The project's standard level range is 1–14. On a phone, use landscape; its touch guide shows how dragging between regions chains a running jump into a grab. PrinceJS keyboard reference | Input | Action | | --- | --- | | Left / Right | Move; advance or retreat with sword drawn | | Up | Jump, climb or block an attack | | Down | Crouch, descend or sheathe sword | | Shift | Grab a ledge, drink or strike | | Space / Enter | Show time / continue | For a pad, consult [PrinceJS's controller map](https://github.com/oklemenz/PrinceJS#play-online): its action buttons differ from SDLPoP's. Converted custom levels also have a specific limit: special events are unsupported. ## Install and control SDLPoP The [download page linked by SDLPoP](https://www.popot.org/get_the_games.php?game=SDLPoP) offers version 1.23 for Windows/Linux and 1.20 for macOS. Choose by platform, and keep the complete package together. The Mac disk image is an older release, so a feature mentioned in current development documentation may not be in that package. On Windows, run `prince.exe`. Linux builds run `./prince`; the [README](https://github.com/NagyD/SDLPoP/blob/v1.23/README.md#running-the-game) also gives platform build instructions. The source tree and compiled downloads are different starting points. Arrows move, Up jumps or climbs, Shift acts and strikes, and Shift plus Left/Right takes careful steps. In combat, Up blocks and Down sheathes. Esc pauses. SDLPoP's gamepad defaults use Y for Up, A for Down and X or triggers for Shift. ## Preserve a level or an exact moment In PrinceJS, copy or bookmark the current address. It records level, maximum health, remaining minutes and guard strength; it is not an exact mid-jump snapshot. Restore by opening that address. A plain link to the homepage does not carry your progress parameters. SDLPoP's **Ctrl+G** save works on levels 3–13 and resumes at the beginning of the saved level; use **Ctrl+L** during the intro to load it. **F6** quicksaves the exact state and **F9** restores it. Replays use `.P1R` files in `replays/`, and mod saves remain with their mod. Check the quickload setting before using it to rehearse a difficult room. SDLPoP's [configuration](https://github.com/NagyD/SDLPoP/blob/v1.23/SDLPoP.ini) enables a penalty that can deduct up to one minute when quickloading. That makes a restored position different from a promise of cost-free retries. Keep a backup before experimenting with save or mod settings. ## Keep practice settings consistent Choose a consistent ruleset while learning. SDLPoP's configuration separates gameplay fixes from the base behavior, with `use_fixes_and_enhancements` controlling the group. Individual changes can affect jumping and enemy behavior. A trick learned under one setup may therefore need different timing under another. If a pad behaves strangely in SDLPoP, its README points to a controller mapping file configured through `SDLPoP.ini`. Start with keyboard input to distinguish a mapping problem from the game's deliberate movement. For browser pairing and activation, see the [controller guide](https://playable.wtf/guides/browser-game-controller-setup/). For a short phone session, PrinceJS's documented touch regions make it the relevant option here. For practicing one troublesome jump, SDLPoP's exact-state save is the stronger reason to install it. Neither choice requires you to treat a URL bookmark, a native save and a replay as interchangeable files. ## Project reading - [Jordan Mechner · the original Prince of Persia](https://www.jordanmechner.com/en/games-movies/prince-of-persia/) - [PrinceJS · controls, mobile input and URL progress](https://github.com/oklemenz/PrinceJS#readme) - [SDLPoP · controls, saves and running the game](https://github.com/NagyD/SDLPoP/blob/v1.23/README.md) - [SDLPoP · linked platform downloads](https://www.popot.org/get_the_games.php?game=SDLPoP) - [SDLPoP 1.23 · quickload penalty and gameplay settings](https://github.com/NagyD/SDLPoP/blob/v1.23/SDLPoP.ini) --- # OpenTTD in a browser or on desktop: start a route and move your saves Canonical: https://playable.wtf/guides/openttd-browser-native/ Written: 2026-10-17 OpenTTD Online offers a browser session with free assets and save transfers. Native OpenTTD adds the upstream desktop file and multiplayer workflow. ## Choose the host or desktop application Start with [Owen Gerke's OpenTTD Online](https://playable.wtf/games/openttd-online-web/) to build a transport network in a tab. Choose [native OpenTTD](https://playable.wtf/games/openttd-openttd/) when desktop file management or multiplayer is central to the session. The browser host is an independent port at **openttdonline.com**; it is not the official OpenTTD download site. Two ways to build the same kind of network | Route | Starting point | Choose it for | | --- | --- | --- | | [OpenTTD Online](https://playable.wtf/games/openttd-online-web/) | The host identifies OpenTTD 15.3 with free base assets included. | A browser session with explicit save import/export tools. | | [Native OpenTTD](https://playable.wtf/games/openttd-openttd/) | A stable Windows, macOS or Linux installation. | Normal local files and the upstream multiplayer workflow. | Both routes can begin with replacement assets instead of a Transport Tycoon Deluxe disc: OpenGFX supplies graphics, OpenSFX effects and OpenMSX music. The browser build bundles them. A native installer may fetch them, or you can follow the [upstream base-set instructions](https://github.com/OpenTTD/OpenTTD#14-installing-and-running-openttd). ## Build a first bus route For the browser route, open [OpenTTD Online's player](https://openttdonline.com/play/), allow its engine and resources to finish loading, then start a new game. For native play, install the stable package from [OpenTTD](https://www.openttd.org/) and select your base sets. Stable is the upstream recommendation for ordinary play; nightly builds are a separate choice. Build a small bus service first. It teaches the essential loop—stations, depot, vehicle and orders—without the junctions and signalling of a railway. Following the [official bus tutorial](https://wiki.openttd.org/en/Manual/Tutorial/Buses): 1. Find a town and open **Road construction**. Place two bus stops in different parts of it, with entrances connected to the road. 2. Build a connected road depot, open it, select **New Vehicles** and buy a bus. 3. Open the bus's **Orders**. Use **Go To** and click the first stop, then repeat for the second. 4. Click the vehicle's **Stopped** status to start it, and unpause the game. If the bus stays put, inspect the depot's road connection, both stop orientations and the orders before buying another vehicle. A short line is a learning exercise, not a guarantee of strong profit. ## Controls, add-ons and multiplayer Use a mouse or trackpad for the dense building interface. Right-drag pans the map; the browser host documents wheel or trackpad zoom. Hover for tooltips. In OpenTTD's standard keyboard layout, **F1** pauses and **Esc** cancels an active tool; a Mac keyboard may require Fn for function keys. The [hotkey reference](https://wiki.openttd.org/en/Manual/Hotkeys) covers construction shortcuts. The browser site's **Online Content** support refers to add-ons such as AIs, graphics and scenarios. It does not establish multiplayer support for this host. Its separately linked iOS build is a test route. Prefer a desktop-sized screen and precise pointer for the main player; fitting the canvas onto a phone does not make all its menus comfortable to use. For native multiplayer, open **Multiplayer**, search the internet list or add a friend's invite code, then join the matching server. The [upstream manual](https://github.com/OpenTTD/OpenTTD/blob/master/docs/multiplayer.md) identifies red server indicators as a version mismatch and yellow ones as missing NewGRFs. Resolve the indicated mismatch before changing network settings. ## Move a save between installations A save inside the browser and a downloaded backup are separate steps. Use the host's own toolbar, not the browser's Save Page command: 1. Save the current game through OpenTTD's in-game save menu, using a name you will recognize. 2. Open the player toolbar and choose **Export Save**. Select that file in the export dialog and download it. 3. On another browser installation, use **Import Save**, select the downloaded file, then open it through the game's load menu. 4. For native OpenTTD, put the exported save in its `save/` directory and load it. Keep the original export until the restored game opens correctly. The [host toolbar](https://openttdonline.com/play/) has separate scenario and heightmap controls; use the matching file type. Its Drive buttons are optional alternatives to local file transfer. The basic export/import route needs no cloud-account setup. Native saves commonly sit under Documents/OpenTTD on Windows and macOS, or the OpenTTD data directory on Linux. The [directory guide](https://github.com/OpenTTD/OpenTTD/blob/master/docs/directory_structure.md) identifies `save/` and `save/autosave/`, including portable-installation differences. ## Recover from common mismatches Check versions before moving a growing company back and forth. Upstream OpenTTD promises that newer revisions load older uncorrupted saves; the reverse is not promised. A save made by a newer native build may therefore be too new for the browser host's advertised 15.3 build. Keep the NewGRFs and other content a saved game depends on. When a load reports missing content, check those dependencies rather than overwriting your working save. Use the client's Online Content route where the required add-ons are available. If an export list has no current game, make an in-game save first and reopen Export Save. If progress disappears after changing profiles or devices, return to the original browser and export from there. Clearing site data removes the local working copy; the [browser-save guide](https://playable.wtf/guides/browser-game-saves-backups/) explains how to preserve an independent backup before cleanup. ## Project reading - [Owen Gerke · unofficial browser port and bundled assets](https://github.com/swords02/openttd-online#readme) - [OpenTTD Online · version, tutorial and iOS test route](https://openttdonline.com/) - [OpenTTD Online · save import and export toolbar](https://openttdonline.com/play/) - [OpenTTD · native installation and save compatibility](https://github.com/OpenTTD/OpenTTD#readme) - [OpenTTD · first bus route](https://wiki.openttd.org/en/Manual/Tutorial/Buses) - [OpenTTD · keyboard shortcuts](https://wiki.openttd.org/en/Manual/Hotkeys) - [OpenTTD · local directories](https://github.com/OpenTTD/OpenTTD/blob/master/docs/directory_structure.md) - [OpenTTD · multiplayer and mismatch indicators](https://github.com/OpenTTD/OpenTTD/blob/master/docs/multiplayer.md)