Skip to content

Releases: heroiclabs/hiro

v1.21.0

01 Dec 22:54
Compare
Choose a tag to compare

Notable changes

Added

  • New Auctions lifecycle function hook for "OnCancel".
  • All Event Leaderboards can be listed (optionally) with scores.
  • Lifecycle hooks for Tutorials system which can be used to implement server-side rewards.

Changed

  • Update to Nakama 3.25.0 version on the nakama-common 1.35.0 release.
  • Incentive codes can be set never to expire with a 0 (zero) end time.
  • Stats with zero values are returned rather than assumed to be zeroed out on the client.
  • All definitions for gameplay systems are stripped of byte-order marker (BOM) for better Windows compatibility.
  • Event Leaderboards now use a content hash ID to allow easier changes to their configuration with LiveOps.
  • More efficient memory usage with cached Feature Flags in Satori Personalizer.

Fixed

  • Inventory items marked with keep zero are kept when granted with zero in initialize user.
  • (Unity) Use Energies dictionary keys only with applying offline updates.
  • Always set username, display name, and avatar URL with non-debug players in Event Leaderboard scores.
  • (Unity) Store Items which have the same SKU product ID are found through "WithStoreSpecificID".
  • Don't throw error when all reward tiers in an Event Leaderboard are empty.
  • Unlockable purchases to reduce time left should apply against final remainder cost.
  • Use If-None-Match OCC in Event Leaderboard roll when using a custom selection function.
  • Energy rewards should have "AvailableRewards" field returned when spend succeeds.
  • Inventory items which are rolled but not granted should increment grant count except if overflow is allowed.
  • Apply cohort selection storage bucket lock when using custom cohort selection function.

v1.20.0

28 Oct 08:46
Compare
Choose a tag to compare

Notable changes

Added

  • New Auctions lifecycle function hooks for "OnClaimBid", "OnClaimCreated", and "OnClaimCreatedFailed".
  • New "Publisher" interface which can be registered to provide analytics to a separate service.
  • Economy store items can be marked as "unavailable" which makes them visible to the player but not purchaseable.

Changed

  • Return more detailed error messages with malformed inputs in "StoragePersonalizer" upload RPC.
  • Cohort selection can force a new cohort and specific tier on fallback in Event Leaderboards.
  • "SatoriPersonalizer" type now also implements the "Publisher" type.
  • (Unity) Update "ExampleCoordinator" type to use refresh signal in Satori client.
  • Use any registered personalizers to apply definition changes in Leaderboards gameplay system.
  • Dynamically create Leaderboards if a personalizer has added ones not previously seen at server startup.
  • (Unity) Use "UnityPurchasingSystem" observer to fetch additional products on previously unseen store item SKUs.
  • Update to Achievement progress now act the same way as other gameplay systems by returning the latest state in the Ack returned.

Fixed

  • Improve how malformed input is handled in the "StoragePersonalizer" type with upload RPC.
  • (Unreal) Fix generated code on some non-map custom types in Hiro protocol.
  • Update Auctions definition JSON example to use correct format.
  • Trim older rewards which have already been claimed in a Streak.
  • Fix registration of Tutorials reset RPC function.

v1.19.0

06 Oct 19:42
Compare
Choose a tag to compare

Notable changes

Added

  • New Streaks gameplay system to allow players to accumulate rewards with win streaks.
  • A tutorial can now be reset so its steps can be played again.
  • (Unity) Subscribe to chat history and other updates in a Team with a "Nakama.ISocket".

Changed

  • A custom cohort created with Event Leaderboards can be forced to build a new cohort rather than fallback on the builtin matchmaker behaviour.
  • Inventory grant items now returns items which were not granted but generated as part of the reward roll for the player.
  • Teams can now be searched over by their language tag field.
  • Migrate to Buf tool for Protobuf Go code generation.

Fixed

  • Fix errors in JSON schema for Auctions feature.
  • Economy virtual store soft currency purchases did not generate "purchaseCompleted" events.
  • (Unity) Use a hash implementation with chat messages which can be compared for ordering.
  • (Unity) Update internal state when a join request which is accepted in Teams system.

v1.18.0

16 Sep 09:23
Compare
Choose a tag to compare

Notable changes

Added

  • New Auctions gameplay system to allow players to offer and bid on Inventory items.

Changed

  • The contents of the Energies sync sub-message had some fields renamed for clarity.
  • Inventory and Economy can now optionally grant over the max count defined against an Item.
  • Additional checks are used to perform Economy initialize user in case raw SQL has been used on account creation.
  • Godot support is now packaged within Hiro releases.

Fixed

  • Active modifiers are correctly returned in Economy refresh and ACKs.
  • (Unity) Team chat messages now use an appropriate IComparer for sorted order.

v1.17.0

05 Aug 20:52
Compare
Choose a tag to compare

Notable changes

Added

  • New "UnlockAdvance" function to advance the unlock of an active Unlockable.
  • Add OpenAPI v3 spec which can be used by API clients like Bruno, Insomnia, etc.
  • (Unity) Google Play Games and Apple Sign-in are included as new integrations.
  • Inventory items can be filtered by category.
  • Inventory items can be restricted when granted with category and item set limits.
  • Energy can now be granted to the player directly as well as part of a reward.

Changed

  • Expose the cohort ID which the user has been assigned to within the active phase of the Event Leaderboard.
  • Economy can now be configured to accept fake receipts and process grants for development.
  • Allow Achievements to have a max count of 0 (zero) and be claimable only after preconditions are completed.

Fixed

  • Progression counts on top level entities were not set in some API responses.
  • Handle "null" description and avatar URL with Teams search gracefully.
  • Purchased unlocks should also contribute towards the next queued unlockable start.
  • Use substitute transaction ID for Discord test purchases.

v1.16.0

07 Jul 13:14
Compare
Choose a tag to compare

Notable changes

Added

  • Virtual store now supports Discord In-App Purchases.
  • Event Leaderboard debug functions can now use "targetCount", "subscoreMin", and "subscoreMax" as optional parameters.

Changed

  • Inventory system will keep zero count items in the player's storage if "keep_zero" is enabled.
  • Use named return arguments in Go interfaces for improved readability.
  • Any active reward modifiers are returned in "EconomyUpdateAck" responses.
  • Unlockables which have completed but are not yet claimed do not count towards the active (in-use) slots.
  • Fake users in Event Leaderboards are given zero scores rather than have no score set.
  • (Unity) Update "ExampleCoordinator" for improved offline mode example.
  • Stats system now observes "resolveCollection" for gameplay system's state.

Fixed

  • (Unity) Confirm pending purchase even if non-consumable products exist on an Apple ID but are not known to the Virtual Store.
  • (Unity) Fix queued unlocks which are not updated in the gameplay system's state.
  • Fix "RewardGrant" error when energy system is not in use.
  • (Unity) Remove various usages of "System.Linq" from codebase.
  • Fix error on publish of Satori events about store items with no rewards.
  • Fix energy "Spend" did not return aggregate rewards in response.

Upgrade Notes

When working with Offline Mode in Unity projects, to ensure the NetworkMonitor never checks for online connectivity, update your code as follows:

Instead of using:

var monitor = new NetworkMonitor(new ForceNetworkProbe(true), ...);

Simply avoid passing any probes into the NetworkMonitor to completely disable network connectivity checks:

var monitor = new NetworkMonitor();

v1.15.0

22 Jun 12:04
Compare
Choose a tag to compare

Notable changes

Added

  • Unlockables can now be queued to unlock when stored within slots.
  • New "max_queued_unlocks" param to restrict how many Unlockables can be queued to unlock.
  • Add "metadata" field to Event Leaderboard score updates.

Changed

  • The "OnReward" hooks now include the ID of the gameplay system entity which is the source of the reward.
  • "PlacementStart" can take additional metadata as the context of what started the rewarded video placement.
  • (Unity) (TypeScript) (CPP) (Unreal) Add functions for new queued Unlockables.
  • Do not return an error when Inventory grant operations result in no change.
  • (Unity) Switch over all enumerable data types to use "IReadOnlyCollection" to expose the "Count" field.
  • A small Unlockable gameplay system design changed so an Unlockable can be started even if another Unlockable which was active is completed but not claimed yet.

Fixed

  • Any active Reward Modifiers are returned in various gameplay system ACK responses.
  • The Unlockables state now retains "null" in the list to indicate their position in the available slots.

v1.14.0

09 Jun 20:41
Compare
Choose a tag to compare

Notable changes

Changed

  • Update to Nakama 3.22.0 version on the nakama-common 1.32.0 release.
  • Update dependency which include Protobuf 1.34.1 release.
  • Leaderboard record metadata can be passed into score writes with Event Leaderboards.
  • (Unity) Fix request object sent with "DebugRandomScores" function in Event Leaderboards.
  • (Unity) Handle edge case where incorrectly defined Rewards within a hard currency purchase could leave the purchase in pending state.
  • (Unity) Rename "DebugRandomScores" to "DebugRandomScoresAsync" to follow C# naming conventions.

Fixed

  • Prevent a panic when consuming an Inventory Item but the Energy system has not been initialized.
  • Fix non-stackable Inventory Item grants which could go beyond the max count defined.
  • Use "reward" key name in Achievements JSON schema definition.

v1.13.0

02 Jun 22:15
Compare
Choose a tag to compare

Notable changes

Added

  • A Nakama Console import file to make it easy to set up storage objects for the "StoragePersonalizer" type.
  • Add debug functions to help with QA on Event Leaderboards.
  • Add "UnregisterDebugRpc" to clear the implementation of all debug functions across gameplay systems.

Changed

  • (Unity) When the "NakamaSystem" is refreshed, reauthenticate if needed. This is useful when a logout has been performed or auto refresh in the "Nakama.Client" has been disabled.
  • (Unity) The Nakama and Satori client dependencies are updated to their 3.12.0 releases.
  • Refactor the "SatoriPersonalizer" for more modularity.
  • An Event Leaderboard now contains "CurrentTimeSec" (UNIX time) same as an Achievement type.

Fixed

  • In some reward types ensure we create multiple Inventory items when "non-stackable" is enabled.
  • Don't return stale wallet values in sync RPC responses.

v1.12.0

26 May 21:14
Compare
Choose a tag to compare

Notable changes

Added

  • Support custom matchmaker properties with Event Leaderboards.
  • Inventory items and Economy store items can be disabled.
  • (Unity) Add "GetWallet" by enum as an extension to the "IApiAccount" type.
  • (Unity) Add "GetPublicStats" by enum as an extension to the "IApiUser" type.
  • (Unity) Add "GetPrivateStats" by enum as an extension to the "IApiUser" type.

Changed

  • (Unity) "GetRecordsAsync" in "LeaderboardsSystem" can now return more than 100 records.
  • (Unity) "GetItemCodexAsync" in "InventorySystem" can now take category as an optional input.

Fixed

  • Fix JSON schema "tier_change" validation rule in Event Leaderboards.