Skip to content

Commit 1795454

Browse files
committed
feat: Release version 1.0.0 with Asset Streaming Architecture and Unity Integration
This commit marks the release of version 1.0.0, introducing a comprehensive Asset Streaming Architecture for the Flutter Game Framework. Key features include: - **New Package**: `gameframework_stream` for on-demand asset downloading. - **Unity Addressables Integration**: Simplified setup and runtime management for Unity assets. - **CLI Support**: New commands for streaming status, analysis, and validation. - **Platform Integration**: Implementations for Android and iOS to manage streaming cache paths. - **Developer Experience Enhancements**: Streaming Analyzer window in Unity Editor and detailed migration guide. Breaking changes include a minimum Unity version requirement and updates to the `.game.yml` schema. A migration guide is provided for existing projects to facilitate the transition to the new architecture.
1 parent 476aac2 commit 1795454

49 files changed

Lines changed: 4978 additions & 43 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/publish.yml

Lines changed: 112 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,16 +112,124 @@ jobs:
112112
echo "version=$VERSION" >> $GITHUB_OUTPUT
113113
echo "Published gameframework v$VERSION"
114114
115+
# Publish Unity plugin individually (manual dispatch only)
116+
publish-unity:
117+
name: Publish gameframework_unity
118+
needs: [validate, publish-gameframework]
119+
runs-on: ubuntu-latest
120+
if: |
121+
always() &&
122+
github.event_name == 'workflow_dispatch' &&
123+
github.event.inputs.package == 'gameframework_unity'
124+
steps:
125+
- name: Checkout repository
126+
uses: actions/checkout@v4
127+
128+
- name: Setup Flutter
129+
uses: subosito/flutter-action@v2
130+
with:
131+
flutter-version: '3.27.x'
132+
channel: 'stable'
133+
cache: true
134+
135+
- name: Wait for gameframework availability
136+
if: github.event.inputs.dry_run != 'true'
137+
run: |
138+
echo "Waiting 60 seconds for gameframework to be available on pub.dev..."
139+
sleep 60
140+
141+
- name: Get dependencies
142+
working-directory: engines/unity/dart
143+
run: flutter pub get
144+
145+
- name: Setup pub credentials
146+
if: github.event.inputs.dry_run != 'true'
147+
run: |
148+
mkdir -p $HOME/.pub-cache
149+
echo '${{ secrets.PUB_CREDENTIALS }}' > $HOME/.pub-cache/credentials.json
150+
151+
- name: Publish to pub.dev (dry-run)
152+
if: github.event.inputs.dry_run == 'true'
153+
working-directory: engines/unity/dart
154+
run: dart pub publish --dry-run
155+
156+
- name: Publish to pub.dev
157+
if: github.event.inputs.dry_run != 'true'
158+
working-directory: engines/unity/dart
159+
run: dart pub publish --force
160+
161+
- name: Extract version
162+
if: github.event.inputs.dry_run != 'true'
163+
id: version
164+
working-directory: engines/unity/dart
165+
run: |
166+
VERSION=$(grep '^version:' pubspec.yaml | awk '{print $2}')
167+
echo "version=$VERSION" >> $GITHUB_OUTPUT
168+
echo "Published gameframework_unity v$VERSION"
169+
170+
# Publish Unreal plugin individually (manual dispatch only)
171+
publish-unreal:
172+
name: Publish gameframework_unreal
173+
needs: [validate, publish-gameframework]
174+
runs-on: ubuntu-latest
175+
if: |
176+
always() &&
177+
github.event_name == 'workflow_dispatch' &&
178+
github.event.inputs.package == 'gameframework_unreal'
179+
steps:
180+
- name: Checkout repository
181+
uses: actions/checkout@v4
182+
183+
- name: Setup Flutter
184+
uses: subosito/flutter-action@v2
185+
with:
186+
flutter-version: '3.27.x'
187+
channel: 'stable'
188+
cache: true
189+
190+
- name: Wait for gameframework availability
191+
if: github.event.inputs.dry_run != 'true'
192+
run: |
193+
echo "Waiting 60 seconds for gameframework to be available on pub.dev..."
194+
sleep 60
195+
196+
- name: Get dependencies
197+
working-directory: engines/unreal/dart
198+
run: flutter pub get
199+
200+
- name: Setup pub credentials
201+
if: github.event.inputs.dry_run != 'true'
202+
run: |
203+
mkdir -p $HOME/.pub-cache
204+
echo '${{ secrets.PUB_CREDENTIALS }}' > $HOME/.pub-cache/credentials.json
205+
206+
- name: Publish to pub.dev (dry-run)
207+
if: github.event.inputs.dry_run == 'true'
208+
working-directory: engines/unreal/dart
209+
run: dart pub publish --dry-run
210+
211+
- name: Publish to pub.dev
212+
if: github.event.inputs.dry_run != 'true'
213+
working-directory: engines/unreal/dart
214+
run: dart pub publish --force
215+
216+
- name: Extract version
217+
if: github.event.inputs.dry_run != 'true'
218+
id: version
219+
working-directory: engines/unreal/dart
220+
run: |
221+
VERSION=$(grep '^version:' pubspec.yaml | awk '{print $2}')
222+
echo "version=$VERSION" >> $GITHUB_OUTPUT
223+
echo "Published gameframework_unreal v$VERSION"
224+
115225
# Publish Unity and Unreal plugins in parallel (after core package)
116226
publish-engine-plugins:
117227
name: Publish ${{ matrix.package.name }}
118228
needs: publish-gameframework
119229
runs-on: ubuntu-latest
120230
if: |
121231
(github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')) ||
122-
(github.event_name == 'workflow_dispatch' &&
123-
(github.event.inputs.package == 'all' ||
124-
github.event.inputs.package == matrix.package.name))
232+
(github.event_name == 'workflow_dispatch' && github.event.inputs.package == 'all')
125233
strategy:
126234
matrix:
127235
package:
@@ -181,10 +289,7 @@ jobs:
181289
name: Create GitHub Release
182290
needs: [publish-gameframework, publish-engine-plugins]
183291
runs-on: ubuntu-latest
184-
if: |
185-
github.event_name == 'push' &&
186-
startsWith(github.ref, 'refs/tags/v') &&
187-
github.event.inputs.dry_run != 'true'
292+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
188293
steps:
189294
- name: Checkout repository
190295
uses: actions/checkout@v4

CHANGELOG.md

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,61 @@ All notable changes to the Flutter Game Framework will be documented in this fil
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [0.4.0] - 2024-01 (Current)
8+
## [1.0.0] - 2026-01 (Current)
9+
10+
### Added - Asset Streaming Architecture
11+
12+
- **New Package: `gameframework_stream`**
13+
- On-demand asset downloading from GameFramework Cloud
14+
- `GameStreamController` for managing streaming lifecycle
15+
- `ContentDownloader` with progress tracking and retry logic
16+
- `CacheManager` for local storage with SHA256 verification
17+
- Network-aware download strategies (WiFi-only, cellular allowed)
18+
- Background download support
19+
20+
- **Unity Addressables Integration**
21+
- `FlutterAddressablesSetup.cs` - One-click Addressables configuration
22+
- `FlutterAddressablesBuildScript.cs` - Automated build integration
23+
- `FlutterStreamingConfig.cs` - Project-level streaming configuration
24+
- `FlutterAddressablesManager.cs` - Runtime asset loading
25+
- `FlutterStreamingAnalyzer.cs` - Editor window for analysis
26+
27+
- **CLI Streaming Support**
28+
- `streaming status` - Show current configuration
29+
- `streaming analyze` - Analyze project readiness
30+
- `streaming estimate` - Estimate bundle sizes
31+
- `streaming validate` - Validate setup
32+
- Asset bundle chunking for upload
33+
- Chunked cloud API uploads
34+
35+
- **Platform Integration**
36+
- Android `setStreamingCachePath()` implementation
37+
- iOS `setStreamingCachePath()` implementation
38+
- Unity runtime cache path configuration
39+
40+
- **Developer Experience**
41+
- Streaming Analyzer window in Unity Editor
42+
- Validation warnings before build/publish
43+
- Size estimates and recommendations
44+
- Comprehensive documentation
45+
46+
### Breaking Changes
47+
48+
- Minimum Unity version: 2021.3 LTS (for Addressables support)
49+
- New `.game.yml` schema for streaming configuration
50+
- `GameEngineController` now includes `setStreamingCachePath()` method
51+
52+
### Migration Guide
53+
54+
For existing projects:
55+
1. Install Unity Addressables package
56+
2. Run "Game Framework > Streaming > Setup Addressables" in Unity
57+
3. Add streaming config to `.game.yml`
58+
4. Rebuild and republish
59+
60+
See [STREAMING_ARCHITECTURE.md](STREAMING_ARCHITECTURE.md) for details.
61+
62+
## [0.4.0] - 2024-01
963

1064
### Added - Phase 4: Unity Production Features
1165

0 commit comments

Comments
 (0)