app.hypergames.hypersdk 1.11.0-beta.22 → 1.11.0-beta.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # [1.11.0-beta.24](https://github.com/mvmhyper/hyper-sdk/compare/v1.11.0-beta.23...v1.11.0-beta.24) (2026-09-04)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **replay:** add 1.5x playback speed ([3f7875f](https://github.com/mvmhyper/hyper-sdk/commit/3f7875fcc4934ed01aaa521dce45327a177f67a6))
7
+
8
+ # [1.11.0-beta.23](https://github.com/mvmhyper/hyper-sdk/compare/v1.11.0-beta.22...v1.11.0-beta.23) (2026-09-03)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **replay:** smooth read-only progress display ([ead4579](https://github.com/mvmhyper/hyper-sdk/commit/ead45798883b24e4b4354f3aab22400a1399e212))
14
+
1
15
  # [1.11.0-beta.22](https://github.com/mvmhyper/hyper-sdk/compare/v1.11.0-beta.21...v1.11.0-beta.22) (2026-09-03)
2
16
 
3
17
 
@@ -19,8 +19,9 @@ namespace Hyper.Internal
19
19
  [SerializeField] private Button pauseButton;
20
20
  [SerializeField] private Button playbackSpeedButton;
21
21
  [SerializeField] private TextMeshProUGUI playbackSpeedLabel;
22
- [SerializeField] private float[] playbackSpeeds = { 1f, 1.25f, 1.75f, 2f, 0.5f };
22
+ [SerializeField] private float[] playbackSpeeds = { 1f, 1.25f, 1.5f, 1.75f, 2f, 0.5f };
23
23
  [SerializeField, Min(1f)] private float seekPlaybackSpeed = 10f;
24
+ [SerializeField, Min(0f)] private float readOnlyProgressSmoothTime = 0.08f;
24
25
  [SerializeField, Range(0.25f, 1f)] private float seekSnapshotScale = 0.55f;
25
26
  [SerializeField, Range(0f, 0.5f)] private float seekPreparationProgress = 0.2f;
26
27
  [SerializeField, Range(0f, 0.15f)] private float seekPreparationProgressVariation = 0.05f;
@@ -35,6 +36,8 @@ namespace Hyper.Internal
35
36
  private bool wasSeeking;
36
37
  private bool isCapturingSeek;
37
38
  private float pendingSeekTarget;
39
+ private float displayedReadOnlyProgress;
40
+ private float readOnlyProgressVelocity;
38
41
  private Texture2D seekSnapshotTexture;
39
42
  private Image seekOverlayBackground;
40
43
  private Color seekOverlayBackgroundColor;
@@ -76,7 +79,7 @@ namespace Hyper.Internal
76
79
  float displayedProgress = seekingAllowed && ReplaySessionState.IsSeeking
77
80
  ? ReplaySessionState.SeekTarget01
78
81
  : ReplaySessionState.Progress01;
79
- progressSlider.SetValueWithoutNotify(displayedProgress);
82
+ SetProgressSliderValue(displayedProgress);
80
83
  }
81
84
  UpdatePlaybackSpeedLabel(ReplaySessionState.UserPlaybackSpeed);
82
85
  SetSeekingPresentation(seekingAllowed && ReplaySessionState.IsSeeking);
@@ -112,7 +115,7 @@ namespace Hyper.Internal
112
115
  : isSeeking
113
116
  ? ReplaySessionState.SeekTarget01
114
117
  : ReplaySessionState.Progress01;
115
- progressSlider.SetValueWithoutNotify(displayedProgress);
118
+ SetProgressSliderValue(displayedProgress, !seekingAllowed);
116
119
  }
117
120
 
118
121
  wasSeeking = isSeeking;
@@ -155,7 +158,7 @@ namespace Hyper.Internal
155
158
  if (progressSlider != null) progressSlider.interactable = false;
156
159
  if (seekLoadingOverlay != null) seekLoadingOverlay.SetActive(false);
157
160
  ClearSeekSnapshot();
158
- if (progressSlider != null) progressSlider.SetValueWithoutNotify(1f);
161
+ SetProgressSliderValue(1f);
159
162
  }
160
163
 
161
164
  internal void ResetForReplayRestart()
@@ -174,10 +177,7 @@ namespace Hyper.Internal
174
177
  : 0f;
175
178
  wasSeeking = ReplaySessionState.IsSeeking;
176
179
 
177
- if (progressSlider != null)
178
- {
179
- progressSlider.SetValueWithoutNotify(pendingSeekTarget);
180
- }
180
+ SetProgressSliderValue(pendingSeekTarget);
181
181
 
182
182
  UpdatePlaybackSpeedLabel(playbackSpeed);
183
183
  AlignPlaybackSpeedIndex(playbackSpeed);
@@ -412,7 +412,7 @@ namespace Hyper.Internal
412
412
  float displayedProgress = seekingAllowed && ReplaySessionState.IsSeeking
413
413
  ? ReplaySessionState.SeekTarget01
414
414
  : ReplaySessionState.Progress01;
415
- progressSlider.SetValueWithoutNotify(displayedProgress);
415
+ SetProgressSliderValue(displayedProgress);
416
416
 
417
417
  if (!seekingAllowed) return;
418
418
 
@@ -421,6 +421,37 @@ namespace Hyper.Internal
421
421
  seekInput.Initialize(progressSlider, SeekTo);
422
422
  }
423
423
 
424
+ private void SetProgressSliderValue(float targetProgress, bool smoothReadOnly = false)
425
+ {
426
+ if (progressSlider == null) return;
427
+
428
+ targetProgress = Mathf.Clamp01(targetProgress);
429
+ if (!smoothReadOnly || readOnlyProgressSmoothTime <= 0f ||
430
+ targetProgress < displayedReadOnlyProgress)
431
+ {
432
+ displayedReadOnlyProgress = targetProgress;
433
+ readOnlyProgressVelocity = 0f;
434
+ }
435
+ else
436
+ {
437
+ displayedReadOnlyProgress = Mathf.SmoothDamp(
438
+ displayedReadOnlyProgress,
439
+ targetProgress,
440
+ ref readOnlyProgressVelocity,
441
+ readOnlyProgressSmoothTime,
442
+ Mathf.Infinity,
443
+ Time.unscaledDeltaTime);
444
+
445
+ if (Mathf.Abs(targetProgress - displayedReadOnlyProgress) < 0.0001f)
446
+ {
447
+ displayedReadOnlyProgress = targetProgress;
448
+ readOnlyProgressVelocity = 0f;
449
+ }
450
+ }
451
+
452
+ progressSlider.SetValueWithoutNotify(displayedReadOnlyProgress);
453
+ }
454
+
424
455
  private void ConfigureSeekOverlay()
425
456
  {
426
457
  if (seekLoadingOverlay == null)
@@ -14,7 +14,7 @@ namespace Hyper.Internal
14
14
  [SerializeField] private BlinkingText blinkingText;
15
15
  [SerializeField] private RectTransform swipeGif;
16
16
  [SerializeField] private RectTransform handSpriteInGif;
17
- [SerializeField] private float replayAutoStartDelay = 1f;
17
+ [SerializeField] private float replayAutoStartDelay = 2f;
18
18
  private GameManager _gameManager;
19
19
  private StartCTA _currentCTA;
20
20
  private SwipeDirection _swipeDirection;
@@ -351,10 +351,12 @@ MonoBehaviour:
351
351
  playbackSpeeds:
352
352
  - 1
353
353
  - 1.25
354
+ - 1.5
354
355
  - 1.75
355
356
  - 2
356
357
  - 0.5
357
358
  seekPlaybackSpeed: 10
359
+ readOnlyProgressSmoothTime: 0.08
358
360
  seekSnapshotScale: 0.725
359
361
  seekPreparationProgress: 0.2
360
362
  seekPreparationProgressVariation: 0.05
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "app.hypergames.hypersdk",
3
- "version": "1.11.0-beta.22",
3
+ "version": "1.11.0-beta.24",
4
4
  "displayName": "HyperSDK",
5
5
  "description": "Official Unity SDK for Hyper: multiplayer battles, leaderboards, deterministic RNG, session management, tutorials, and WebGL optimizations for production-ready games.",
6
6
  "unity": "6000.0",