[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92757":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":38,"discoverSource":39},92757,"ra-port","dk8827\u002Fra-port","dk8827","Unofficial working port of Command & Conquer: Red Alert running natively on macOS and Android. SDL2 video\u002Faudio\u002Finput. No game data included.","",null,"C++",148,15,2,0,31,46.71,"Other",false,"main",true,[23,24,25,26,27,28,29,30,31,32,33,34],"android-game","apple-silicon","classic-games","command-and-conquer","game-port","macos","macos-game","open-source-game","red-alert","rts","sdl2","source-port","2026-07-22 04:02:07","# ra-port\n\n**Native macOS, Android, and iOS source port of Command & Conquer: Red Alert.**\n\n[![macOS](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FmacOS-native-111111?logo=apple&logoColor=white)](#quick-start)\n[![Android](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAndroid-debug%20APK-3ddc84?logo=android&logoColor=white)](#android-debug-apk)\n[![iOS](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FiOS-debug%20app-111111?logo=apple&logoColor=white)](#ios-debug-app)\n[![Build](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbuild-CMake%20%2B%20Ninja-064f8c)](#build-from-source)\n[![Runtime](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fruntime-SDL2-cc3333)](#current-status)\n[![Source-only](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fsource--only-no%20game%20data-lightgrey)](#game-data)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-GPLv3%20with%20additional%20terms-blue)](#license-and-notice)\n\n`ra-port` lets you play Red Alert (1996) on modern platforms. It currently runs as a native macOS executable, a local Android debug APK, and an iOS debug app, with SDL2 providing the platform layer.\n\n![Red Alert running natively in a macOS window](docs\u002Fimages\u002Fra-port-macos-window.png)\n\nThe repository contains only source code and build tooling. No game assets are included in the repository. To play, provide legally obtained Red Alert assets from your own discs, mounted images, or local backups.\n\n## Why This Exists\n\nRed Alert was released for a very different desktop world. This project keeps the original code recognizable while supporting macOS, Android, and iOS.\n\nThis is an unofficial source port based on the source code Electronic Arts released under GPLv3 with additional terms: \u003Chttps:\u002F\u002Fgithub.com\u002Felectronicarts\u002FCnC_Red_Alert>.\n\n## Current Status\n\n| Status | Feature | Notes |\n| --- | --- | --- |\n| :white_check_mark: | macOS on Apple Silicon | Builds and runs with CMake\u002FNinja. |\n| :white_check_mark: | Android debug APK | Builds a local landscape APK for arm64-v8a devices and emulators. |\n| :white_check_mark: | iOS debug app | Builds a landscape simulator\u002Fdevice app with CMake\u002FXcode. |\n| :white_check_mark: | Campaign | Allied and Soviet campaigns are fully working. |\n| :white_check_mark: | Skirmish | Local skirmish is fully working. |\n| :white_check_mark: | Videos | Videos are playing with sound. |\n| :white_check_mark: | Controls and audio | macOS keyboard\u002Fmouse plus Android and iOS touch\u002Faudio work. |\n| :x: | Online\u002Fnetwork multiplayer | Not wired up yet. |\n| :x: | Launcher\u002Fsetup tools | Not ported. |\n| :x: | Expansion packs | Not a focus yet. |\n| :x: | `.app` bundle | Not packaged yet; the build creates a normal macOS executable. |\n| :x: | Android release build | Only local debug APKs are supported right now. |\n| :x: | iOS release build | Only local debug simulator\u002Fdevice builds are supported right now. |\n\n## Quick Start\n\nInstall the macOS build tools:\n\n```sh\nbrew install cmake ninja pkg-config sdl2\nxcode-select --install\n```\n\nBuild the port:\n\n```sh\ncmake -S . -B build -G Ninja\ncmake --build build --target redalert_mac -j 8\n```\n\nPrepare local game data:\n\n```sh\nscripts\u002Fprepare_assets_from_local.sh \\\n  --allies \u002Fpath\u002Fto\u002Fallies-disc \\\n  --soviet \u002Fpath\u002Fto\u002Fsoviet-disc\n```\n\nRun:\n\n```sh\nscripts\u002Frun_mac_dev.sh --no-build\n```\n\nTo build and run the Android debug APK, install the Android prerequisites listed below, keep the same prepared local game data under `assets\u002Fredalert`, then run:\n\n```sh\nscripts\u002Fbuild_android_debug.sh\nscripts\u002Frun_android_debug.sh --no-build\n```\n\nTo build and run the iOS simulator debug app, install full Xcode, keep the same prepared local game data under `assets\u002Fredalert`, then run:\n\n```sh\nscripts\u002Fbuild_ios_debug.sh\nscripts\u002Frun_ios_simulator.sh --no-build\n```\n\n## Game Data\n\nThe repository contains only source code and build tooling. It does not contain game data, movies, music, disc images, archives, installers, generated palettes, or packaged executables.\n\nThe asset preparation script copies from local paths that you provide:\n\n- `assets\u002Fredalert\u002Fallies`\n- `assets\u002Fredalert\u002Fsoviet`\n\nThose directories are ignored by git. They should contain original disc-root style files such as `INSTALL\u002FREDALERT.INI` and the base-game `.MIX` files.\n\nThe Android and iOS debug builds use the same ignored `assets\u002Fredalert` tree. Gradle copies those local files into generated Android debug assets, and the iOS CMake target copies them into the debug app bundle. They are not checked in and they are not used for release packaging.\n\n## Build From Source\n\nConfigure and build:\n\n```sh\ncmake -S . -B build -G Ninja\ncmake --build build --target redalert_mac -j 8\n```\n\nIf you do not have Ninja installed, omit `-G Ninja` and CMake will choose the default generator.\n\nThe build currently creates a raw macOS executable:\n\n```sh\nbuild\u002Fredalert_mac\n```\n\nIt is not packaged as a `.app` bundle yet.\n\n## Run\n\nThe normal development run command builds if needed, verifies local assets, codesigns the executable, and launches from the repository root:\n\n```sh\nscripts\u002Frun_mac_dev.sh\n```\n\nUseful variants:\n\n```sh\nscripts\u002Frun_mac_dev.sh --no-build\nscripts\u002Frun_mac_dev.sh --prepare-only\n```\n\nYou can also run the built executable directly after codesigning:\n\n```sh\ncodesign --force --sign - build\u002Fredalert_mac\n.\u002Fbuild\u002Fredalert_mac\n```\n\nRuntime files such as `SAVEGAME.*`, `OPTIONS.INI`, `ASSERT.TXT`, screenshots, logs, and generated palette caches are ignored by git.\n\n## Android Debug APK\n\nThe Android target is for local development and testing only. It builds an arm64-v8a debug APK, locks the activity to landscape, uses touch-native input, and extracts the bundled debug assets into app storage on first launch.\n\nInstall Android tooling:\n\n- JDK 17\n- Gradle compatible with Android Gradle Plugin 9.2.0\n- Android SDK Platform 36\n- Android SDK Build Tools\n- Android NDK `28.2.13676358`\n- Android CMake package\n- Android platform-tools for `adb`\n\nAndroid Studio is the easiest way to install the SDK, NDK, CMake, emulator, and platform-tools. On Homebrew-based macOS setups, the helper scripts auto-detect common `openjdk@17` and Android SDK locations when `JAVA_HOME`, `ANDROID_HOME`, or `ANDROID_SDK_ROOT` are not already set.\n\nBuild the debug APK:\n\n```sh\nscripts\u002Fbuild_android_debug.sh\n```\n\nThe first build downloads SDL2 sources into ignored local storage under `android\u002Fthird_party\u002F`. The APK is written to:\n\n```text\nandroid\u002Fapp\u002Fbuild\u002Foutputs\u002Fapk\u002Fdebug\u002Fapp-debug.apk\n```\n\nInstall and launch on a connected device or emulator:\n\n```sh\nscripts\u002Frun_android_debug.sh --no-build\n```\n\nIf an emulator is low on space and in-place install fails, uninstall the old debug app first:\n\n```sh\nscripts\u002Frun_android_debug.sh --no-build --fresh-install\n```\n\n`--fresh-install` removes existing app data, including extracted assets and saves.\n\nBuild, install, launch, and tail Android logs:\n\n```sh\nscripts\u002Frun_android_debug.sh --logcat\n```\n\nUseful direct commands:\n\n```sh\nadb install -r android\u002Fapp\u002Fbuild\u002Foutputs\u002Fapk\u002Fdebug\u002Fapp-debug.apk\nadb shell am start -n com.raport.redalert\u002F.RedAlertActivity\n```\n\nThe debug APK intentionally includes your local ignored game data so the app can run on the device without external storage setup. Do not distribute that APK.\n\n## iOS Debug App\n\nThe iOS target is for local development and testing only. It builds a landscape app for the iOS simulator by default, or for a signed arm64 device build when you provide an Apple development team.\n\nInstall iOS tooling:\n\n- Full Xcode, not only Command Line Tools\n- CMake\n- Local Red Alert assets prepared under `assets\u002Fredalert`\n\nBuild the simulator app:\n\n```sh\nscripts\u002Fbuild_ios_debug.sh\n```\n\nThe first build downloads SDL2 sources into ignored local storage under `ios\u002Fthird_party\u002F`. The app is written under:\n\n```text\nios\u002Fbuild-simulator\u002FDebug-iphonesimulator\u002Fredalert_ios.app\n```\n\nInstall and launch on the booted iOS simulator:\n\n```sh\nscripts\u002Frun_ios_simulator.sh --no-build\n```\n\nBuild a signed device app for iPhone or iPad:\n\n```sh\nRA_IOS_DEVELOPMENT_TEAM=TEAMID scripts\u002Fbuild_ios_debug.sh --device\n```\n\nThe debug iOS app intentionally includes your local ignored game data. On first launch it copies that bundled data into app-writable storage before starting the game, so saves and options can be written inside the iOS sandbox. Do not distribute that app bundle.\n\n## Fullscreen\n\nStart fullscreen:\n\n```sh\nRA_FULLSCREEN=1 scripts\u002Frun_mac_dev.sh\n```\n\nToggle fullscreen while running:\n\n```text\nCommand+Return\n```\n\n## Tests\n\nRun the source-level tests and script checks:\n\n```sh\ntests\u002Frun_script_tests.sh\n```\n\nValidate a fresh checkout with a full build first:\n\n```sh\ncmake -S . -B build -G Ninja\ncmake --build build --target redalert_mac -j 8\ntests\u002Frun_script_tests.sh\n```\n\n## Project Layout\n\n| Path | Purpose |\n| --- | --- |\n| `CODE\u002F` | Main Red Alert game code |\n| `PORT\u002FMAC\u002F` | macOS runtime, compatibility shims, SDL2 integration |\n| `PORT\u002FANDROID\u002F` | Android entrypoint and platform-specific resource setup |\n| `PORT\u002FIOS\u002F` | iOS entrypoint and writable sandbox resource setup |\n| `android\u002F` | Gradle Android app that builds the debug APK |\n| `ios\u002F` | CMake\u002FXcode iOS app target |\n| `WIN32LIB\u002F`, `WINVQ\u002F` | Legacy support libraries used by the port |\n| `scripts\u002F` | Asset preparation, run helpers, smoke capture |\n| `tests\u002F` | Focused source-level and shim tests |\n| `docs\u002Fimages\u002F` | README images only, not game data |\n\n## Contributing\n\nThe port is intentionally conservative: keep original source layout and behavior recognizable, and prefer small platform-specific support files over broad rewrites. Good next areas are macOS `.app` packaging, Android\u002FiOS release packaging, physical device validation, Intel macOS validation, save\u002Fload hardening, expansion support, CI coverage, and mobile input\u002FUI polish.\n\nNetwork and online multiplayer are out of scope for the current milestone.\n\n## License And Notice\n\nThe source code is distributed under GPLv3 with additional terms. See `LICENSE.md`.\n\nThis is an unofficial modified source port. It is not affiliated with, endorsed by, sponsored by, or supported by Electronic Arts or any other rights holder. See `NOTICE.md`.\n","这是一个将经典即时战略游戏《命令与征服：红色警戒》（1996）非官方移植至现代平台的开源项目，支持 macOS（含 Apple Silicon）、Android 和 iOS 原生运行。基于 EA 公开的 GPLv3 源码，采用 SDL2 实现跨平台图形、音频与输入抽象，完整支持单机战役与对战模式，但不包含游戏数据文件，需用户自行提供合法获取的原始资源。适用于怀旧玩家在新设备上本地运行原版 Red Alert，尤其适合 macOS 和移动平台爱好者进行轻量级经典 RTS 体验。","2026-07-10 02:30:22","CREATED_QUERY"]