SeasonEngine 0.0.3
dotnet add package SeasonEngine --version 0.0.3
NuGet\Install-Package SeasonEngine -Version 0.0.3
<PackageReference Include="SeasonEngine" Version="0.0.3" />
<PackageVersion Include="SeasonEngine" Version="0.0.3" />
<PackageReference Include="SeasonEngine" />
paket add SeasonEngine --version 0.0.3
#r "nuget: SeasonEngine, 0.0.3"
#:package SeasonEngine@0.0.3
#addin nuget:?package=SeasonEngine&version=0.0.3
#tool nuget:?package=SeasonEngine&version=0.0.3
SeasonEngine
A cross-platform application framework built for understanding and rapid development.
Samples: https://github.com/SeasonRealms/SeasonEngine
Overview
SeasonEngine provides a unified abstraction layer for building applications that run seamlessly across Windows, Linux, macOS, Android, and iOS. It handles platform-specific implementations behind clean interfaces, allowing developers to focus on application logic rather than platform differences.
Supported Platforms
| Platform | Status | Entry Point |
|---|---|---|
| Windows | ✅ Supported | WindowsApp.Run() |
| Linux | ✅ Supported | LinuxApp.Run() |
| macOS (Catalyst) | ✅ Supported | MacCatalystApp.Run() |
| Android | ✅ Supported | AndroidApp.Run() |
| iOS | ✅ Supported | iOSApp.Run() |
Architecture
┌─────────────────────────────────────────────────────┐
│ Your Application │
│ (BaseApp) │
├─────────────────────────────────────────────────────┤
│ DeviceServices │
│ Core │ Media │ Dialog │ File │ Gallery │ Store │
├─────────────────────────────────────────────────────┤
│ Platform Implementations │
│ Windows │ Linux │ macOS │ Android │ iOS │
└─────────────────────────────────────────────────────┘
Installation
NuGet Package
dotnet add package SeasonEngine
Quick Start
1. Create Your Application
using Season.Basic;
public class MyApp : BaseApp
{
public MyApp()
{
Title = "My Application";
FullScreen = false;
BasicResolution = new Vector2(1280, 720);
}
public override async void Create()
{
// Your application initialization logic here
}
}
2. Launch on Your Target Platform
Windows:
WindowsApp.Run(new MyApp());
Linux:
LinuxApp.Run(new MyApp());
Android (MainActivity.cs):
AndroidApp.Run(new MyApp());
Core Services
SeasonEngine provides the following services through DeviceServices:
| Service | Interface | Description |
|---|---|---|
| Core | IDeviceCore |
Platform info, orientation, dark mode detection |
| Media | IMediaPlayer |
Audio playback and volume control |
| Dialog | IDialogService |
Message boxes and keyboard input dialogs |
| File | IFileService |
File/folder picker, open and save operations |
| Gallery | IGalleryService |
Media gallery access and management |
| Record | IRecordService |
Camera and audio recording |
| Download | IDownloadService |
Background download management |
| Store | IStoreService |
In-app purchases and app store integration |
| Ads | IAds |
Advertisement integration |
Usage Examples
Get Platform Information:
var platform = DeviceServices.Core.Platform; // e.g., Platform.Windows
var orientation = DeviceServices.Core.Orientation; // e.g., Orientation.LandscapeLeft
var isDark = DeviceServices.Core.IsDarkMode(); // true or false
Play Audio:
DeviceServices.Media.PlayMedia("Music", "path/to/audio.mp3", "80");
DeviceServices.Media.SetVolume(music: 80, sound: 100);
Show Dialog:
var result = await DeviceServices.Dialog.ShowMessage(
title: "Confirm",
desc: "Are you sure?",
buttons: new[] { "Yes", "No" },
text: "This action cannot be undone."
);
Pick Files:
var files = await DeviceServices.File.PickFiles(
fileType: FileType.Image,
exts: new[] { ".png", ".jpg" },
multiple: true,
open: true
);
Access Media Gallery:
var assets = await DeviceServices.Gallery.MediaGallery();
foreach (var asset in assets)
{
Console.WriteLine($"{asset.Name} - {asset.Type}");
}
Project Structure
src/
├── Basic/ # Core abstractions and interfaces
│ └── DeviceServices.cs # Central service registry
├── Platforms/ # Platform-specific implementations
│ ├── Windows/
│ ├── Linux/
│ ├── MacCatalyst/
│ ├── Android/
│ ├── iOS/
│ └── Shared/ # Shared code between platforms
├── Storage/ # Database, localization, and storage
├── Net/ # HTTP client with progress support
└── Utils/ # Extension methods and utilities
Platform-Specific Features
For Windows-only features, use IWindowsFeatures:
if (DeviceServices.WindowsFeatures != null)
{
var volume = DeviceServices.WindowsFeatures.GetVolume();
DeviceServices.WindowsFeatures.SetVolume(50);
var apps = DeviceServices.WindowsFeatures.ListApps(ids: null, copyLogo: true);
}
Requirements
- .NET 10.0 or later
- Windows: Windows 10 version 1809 (10.0.17763.0) or later
- Android: API Level 21 (Android 5.0) or later
- iOS/macOS: iOS 15.0 / macOS 15.0 or later
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Links
- Repository: https://github.com/SeasonRealms/SeasonEngine
- Issues: https://github.com/SeasonRealms/SeasonEngine/issues
Built with ❤️ for cross-platform development
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-android36.0 is compatible. net10.0-browser was computed. net10.0-ios was computed. net10.0-ios26.0 is compatible. net10.0-maccatalyst was computed. net10.0-maccatalyst26.0 is compatible. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. net10.0-windows10.0.19041 is compatible. |
-
net10.0
- FontStashSharp.Rasterizers.StbTrueTypeSharp (>= 1.2.2)
- GtkSharp (>= 3.24.24.117-develop)
- SharpGLTF.Core (>= 1.0.6)
- SharpGLTF.Toolkit (>= 1.0.6)
- StbImageSharp (>= 2.30.15)
- System.Runtime.Caching (>= 10.0.1)
-
net10.0-android36.0
- FontStashSharp.Rasterizers.StbTrueTypeSharp (>= 1.2.2)
- Microsoft.Maui.Controls (>= 10.0.20)
- SharpGLTF.Core (>= 1.0.6)
- SharpGLTF.Toolkit (>= 1.0.6)
- StbImageSharp (>= 2.30.15)
- System.Runtime.Caching (>= 10.0.1)
- Xamarin.Android.Google.BillingClient (>= 8.0.0)
- Xamarin.Build.Download (>= 0.11.4)
- Xamarin.GooglePlayServices.Ads.Lite (>= 124.0.0.3)
-
net10.0-ios26.0
- FontStashSharp.Rasterizers.StbTrueTypeSharp (>= 1.2.2)
- Jc.GMA.iOS (>= 12.7.0)
- Jc.UMP.iOS (>= 2.7.4)
- Microsoft.Maui.Controls (>= 10.0.20)
- SharpGLTF.Core (>= 1.0.6)
- SharpGLTF.Toolkit (>= 1.0.6)
- StbImageSharp (>= 2.30.15)
- System.Runtime.Caching (>= 10.0.1)
- Xamarin.Build.Download (>= 0.11.4)
-
net10.0-maccatalyst26.0
- FontStashSharp.Rasterizers.StbTrueTypeSharp (>= 1.2.2)
- Microsoft.Maui.Controls (>= 10.0.20)
- SharpGLTF.Core (>= 1.0.6)
- SharpGLTF.Toolkit (>= 1.0.6)
- StbImageSharp (>= 2.30.15)
- System.Runtime.Caching (>= 10.0.1)
- Xamarin.Build.Download (>= 0.11.4)
-
net10.0-windows10.0.19041
- FontStashSharp.Rasterizers.StbTrueTypeSharp (>= 1.2.2)
- Microsoft.Maui.Controls (>= 10.0.20)
- SharpGLTF.Core (>= 1.0.6)
- SharpGLTF.Toolkit (>= 1.0.6)
- Silk.NET.Direct3D.Compilers (>= 2.22.0)
- Silk.NET.Direct3D12 (>= 2.22.0)
- StbImageSharp (>= 2.30.15)
- System.Drawing.Common (>= 10.0.1)
- System.Runtime.Caching (>= 10.0.1)
- Xamarin.Build.Download (>= 0.11.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.