Top Related Projects
Host for Moonlight Streaming Client
Gamestream client for embedded systems
GameStream client for PCs (Windows, Mac, Linux, and Steam Link)
Gamestream client for embedded systems
Quick Overview
Moonlight-iOS is an open-source iOS client for NVIDIA GameStream and Sunshine, allowing users to stream games from their PC to their iOS devices. It leverages the Moonlight streaming protocol to provide low-latency, high-quality game streaming on iPhones and iPads.
Pros
- Enables PC gaming on iOS devices with minimal latency
- Supports both NVIDIA GameStream and Sunshine streaming protocols
- Free and open-source software
- Regular updates and active community support
Cons
- Requires a compatible gaming PC with NVIDIA GPU or Sunshine setup
- Performance may vary depending on network conditions
- Limited to iOS devices, not available for other mobile platforms
- Some advanced features may require jailbreaking (e.g., controller support for older iOS versions)
Getting Started
To get started with Moonlight-iOS:
- Ensure your gaming PC meets the requirements (NVIDIA GPU for GameStream or Sunshine setup).
- Download and install the Moonlight app from the App Store.
- Launch the app and follow the on-screen instructions to pair with your PC.
- Select a game from the list of available games on your PC.
- Enjoy gaming on your iOS device!
Note: For the best experience, use a 5GHz Wi-Fi network or wired Ethernet connection for your iOS device and gaming PC.
Competitor Comparisons
Host for Moonlight Streaming Client
Pros of Sunshine
- Cross-platform support for Windows, Linux, and macOS
- Open-source and self-hosted solution for game streaming
- Customizable streaming settings and advanced features
Cons of Sunshine
- Requires more setup and configuration compared to Moonlight iOS
- May have less optimized performance on iOS devices
- Smaller community and potentially slower development cycle
Code Comparison
Sunshine (C++):
void Stream::sendAudioFrame(const int16_t *pcm_data, int sample_count) {
std::vector<uint8_t> opus_packet(1024);
opus_int32 opus_length = opus_encode(_audio_encoder, pcm_data, sample_count, opus_packet.data(), opus_packet.size());
// ... (sending audio data)
}
Moonlight iOS (Objective-C):
- (void)connectionStarted {
[self.streamManager startAudioRendering];
[self.streamManager startVideoDecoderWithVideoFormat:self.streamConfig.videoFormat];
// ... (starting stream components)
}
The code snippets show different approaches to handling audio streaming and connection initialization, reflecting the distinct architectures and platforms of the two projects.
Gamestream client for embedded systems
Pros of moonlight-embedded
- Supports a wider range of platforms, including Linux, Raspberry Pi, and embedded devices
- More customizable and flexible for advanced users
- Potentially lower resource usage on supported devices
Cons of moonlight-embedded
- Requires more technical knowledge to set up and configure
- May have a less polished user interface compared to the iOS version
- Limited to devices that can run the embedded software
Code Comparison
moonlight-embedded:
int main(int argc, char* argv[]) {
CONFIGURATION config;
config_parse(argc, argv, &config);
connection_init(&config);
// ... (additional setup and main loop)
}
moonlight-ios:
@main
struct MoonlightApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
The moonlight-embedded project uses C for low-level system access and performance, while moonlight-ios uses Swift for iOS app development. The embedded version requires manual configuration and initialization, whereas the iOS app leverages the SwiftUI framework for a more streamlined setup.
Both projects aim to provide game streaming capabilities using the Moonlight protocol, but they target different platforms and use cases. moonlight-embedded is better suited for DIY and embedded projects, while moonlight-ios offers a more user-friendly experience for iOS devices.
GameStream client for PCs (Windows, Mac, Linux, and Steam Link)
Pros of moonlight-qt
- Cross-platform support (Windows, macOS, Linux) vs. iOS-only
- More customizable settings and advanced features
- Supports keyboard and mouse input for a wider range of games
Cons of moonlight-qt
- Requires more setup and configuration compared to the iOS app
- May have higher system requirements for optimal performance
- Less optimized for touch input compared to the iOS version
Code Comparison
moonlight-qt:
void StreamingPreferences::retranslate()
{
m_Ui.bitrateLabel->setText(tr("Video bitrate:"));
m_Ui.framerateLabel->setText(tr("Preferred FPS:"));
m_Ui.resolutionLabel->setText(tr("Resolution:"));
}
moonlight-ios:
func updateStreamConfig() {
streamConfig.bitRate = Int32(bitRate)
streamConfig.frameRate = Int32(frameRate)
streamConfig.width = Int32(resolution.width)
streamConfig.height = Int32(resolution.height)
}
The code snippets show differences in language (C++ vs. Swift) and approach to handling stream configuration. moonlight-qt focuses on UI translation, while moonlight-ios directly updates stream settings.
Gamestream client for embedded systems
Pros of moonlight-embedded
- Supports a wider range of platforms, including Linux, Raspberry Pi, and embedded devices
- More customizable and flexible for advanced users
- Potentially lower resource usage on supported devices
Cons of moonlight-embedded
- Requires more technical knowledge to set up and configure
- May have a less polished user interface compared to the iOS version
- Limited to devices that can run the embedded software
Code Comparison
moonlight-embedded:
int main(int argc, char* argv[]) {
CONFIGURATION config;
config_parse(argc, argv, &config);
connection_init(&config);
// ... (additional setup and main loop)
}
moonlight-ios:
@main
struct MoonlightApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
The moonlight-embedded project uses C for low-level system access and performance, while moonlight-ios uses Swift for iOS app development. The embedded version requires manual configuration and initialization, whereas the iOS app leverages the SwiftUI framework for a more streamlined setup.
Both projects aim to provide game streaming capabilities using the Moonlight protocol, but they target different platforms and use cases. moonlight-embedded is better suited for DIY and embedded projects, while moonlight-ios offers a more user-friendly experience for iOS devices.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Moonlight iOS/tvOS
Moonlight for iOS/tvOS is an open source client for Sunshine and NVIDIA GameStream. Moonlight for iOS/tvOS allows you to stream your full collection of games and apps from your powerful desktop computer to your iOS device or Apple TV.
Moonlight also has a PC client and Android client.
Check out the Moonlight wiki for more detailed project information, setup guide, or troubleshooting steps.
Building
- Install Xcode from the App Store page
- Run
git clone --recursive https://github.com/moonlight-stream/moonlight-ios.git
- If you've already clone the repo without
--recursive
, rungit submodule update --init --recursive
- If you've already clone the repo without
- Open Moonlight.xcodeproj in Xcode
- To run on a real device, you will need to locally modify the signing options:
- Click on "Moonlight" at the top of the left sidebar
- Click on the "Signing & Capabilities" tab
- Under "Targets", select "Moonlight" (for iOS/iPadOS) or "Moonlight TV" (for tvOS)
- In the "Team" dropdown, select your name. If your name doesn't appear, you may need to sign into Xcode with your Apple account.
- Change the "Bundle Identifier" to something different. You can add your name or some random letters to make it unique.
- Now you can select your Apple device in the top bar as a target and click the Play button to run.
Top Related Projects
Host for Moonlight Streaming Client
Gamestream client for embedded systems
GameStream client for PCs (Windows, Mac, Linux, and Steam Link)
Gamestream client for embedded systems
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot